mirror of
https://github.com/status-im/react-native.git
synced 2025-02-25 15:45:32 +00:00
- Adding locale prop to DatePickerIOS
Summary: <!-- Thank you for sending the PR! We appreciate you spending the time to work on these changes. Help us understand your motivation by explaining why you decided to make this change. You can learn more about contributing to React Native here: http://facebook.github.io/react-native/docs/contributing.html Happy contributing! --> While building a React Native application, I've come across the use case of wanting to set a specific locale for DatePickers irrespective of the users OS region setting. Since this is a feature available to native DatePicker components, I think it would be helpful to expose this in React Native as well. Testing can be done by passing a `locale` prop to a DatePickerIOS. Example: ``` <DatePickerIOS date={this.state.date} mode="date" locale="fr_FR" onDateChange={date => this.setState({ date: date })} /> ``` <!-- Help reviewers and the release process by writing your own release notes **INTERNAL and MINOR tagged notes will not be included in the next version's final release notes.** CATEGORY [----------] TYPE [ CLI ] [-------------] LOCATION [ DOCS ] [ BREAKING ] [-------------] [ GENERAl ] [ BUGFIX ] [-{Component}-] [ INTERNAL ] [ ENHANCEMENT ] [ {File} ] [ IOS ] [ FEATURE ] [ {Directory} ] |-----------| [ ANDROID ] [ MINOR ] [ {Framework} ] - | {Message} | [----------] [-------------] [-------------] |-----------| [CATEGORY] [TYPE] [LOCATION] - MESSAGE EXAMPLES: [IOS] [BREAKING] [FlatList] - Change a thing that breaks other things [ANDROID] [BUGFIX] [TextInput] - Did a thing to TextInput [CLI] [FEATURE] [local-cli/info/info.js] - CLI easier to do things with [DOCS] [BUGFIX] [GettingStarted.md] - Accidentally a thing/word [GENERAL] [ENHANCEMENT] [Yoga] - Added new yoga thing/position [INTERNAL] [FEATURE] [./scripts] - Added thing to script that nobody will see --> [IOS][ENHANCEMENT][DatePickerIOS] - Adding a locale prop. Closes https://github.com/facebook/react-native/pull/16639 Differential Revision: D6241981 Pulled By: hramos fbshipit-source-id: 77b1b85c09f3e12d6b3e103b3d1ffd1f12e2cea9
This commit is contained in:
parent
38b96cd7bb
commit
fd9c3618fc
@ -78,6 +78,11 @@ const DatePickerIOS = createReactClass({
|
||||
*/
|
||||
mode: PropTypes.oneOf(['date', 'time', 'datetime']),
|
||||
|
||||
/**
|
||||
* The date picker locale.
|
||||
*/
|
||||
locale: PropTypes.string,
|
||||
|
||||
/**
|
||||
* The interval at which minutes can be selected.
|
||||
*/
|
||||
@ -127,6 +132,7 @@ const DatePickerIOS = createReactClass({
|
||||
ref={ picker => { this._picker = picker; } }
|
||||
style={styles.datePickerIOS}
|
||||
date={props.date.getTime()}
|
||||
locale={props.locale ? props.locale : undefined}
|
||||
maximumDate={
|
||||
props.maximumDate ? props.maximumDate.getTime() : undefined
|
||||
}
|
||||
@ -155,6 +161,7 @@ const RCTDatePickerIOS = requireNativeComponent('RCTDatePicker', {
|
||||
propTypes: {
|
||||
...DatePickerIOS.propTypes,
|
||||
date: PropTypes.number,
|
||||
locale: PropTypes.string,
|
||||
minimumDate: PropTypes.number,
|
||||
maximumDate: PropTypes.number,
|
||||
onDateChange: () => null,
|
||||
|
@ -55,6 +55,7 @@ typedef NSURL RCTFileURL;
|
||||
+ (RCTFileURL *)RCTFileURL:(id)json;
|
||||
|
||||
+ (NSDate *)NSDate:(id)json;
|
||||
+ (NSLocale *)NSLocale:(id)json;
|
||||
+ (NSTimeZone *)NSTimeZone:(id)json;
|
||||
+ (NSTimeInterval)NSTimeInterval:(id)json;
|
||||
|
||||
|
@ -222,6 +222,20 @@ RCT_ENUM_CONVERTER(NSURLRequestCachePolicy, (@{
|
||||
return nil;
|
||||
}
|
||||
|
||||
+ (NSLocale *)NSLocale:(id)json
|
||||
{
|
||||
if ([json isKindOfClass:[NSString class]]) {
|
||||
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:json];
|
||||
if (!locale) {
|
||||
RCTLogError(@"JSON String '%@' could not be interpreted as a valid locale. ", json);
|
||||
}
|
||||
return locale;
|
||||
} else if (json) {
|
||||
RCTLogConvertError(json, @"a locale");
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
// JS Standard for time is milliseconds
|
||||
RCT_CUSTOM_CONVERTER(NSTimeInterval, NSTimeInterval, [self double:json] / 1000.0)
|
||||
|
||||
|
@ -35,6 +35,7 @@ RCT_EXPORT_MODULE()
|
||||
}
|
||||
|
||||
RCT_EXPORT_VIEW_PROPERTY(date, NSDate)
|
||||
RCT_EXPORT_VIEW_PROPERTY(locale, NSLocale)
|
||||
RCT_EXPORT_VIEW_PROPERTY(minimumDate, NSDate)
|
||||
RCT_EXPORT_VIEW_PROPERTY(maximumDate, NSDate)
|
||||
RCT_EXPORT_VIEW_PROPERTY(minuteInterval, NSInteger)
|
||||
|
Loading…
x
Reference in New Issue
Block a user