Skip to content

Commit

Permalink
Adding a locale prop to DatePickerIOS exporting the prop in RCTDatePi…
Browse files Browse the repository at this point in the history
…ckerManager. Adding an NSLocale conversion method to RCTConver.
  • Loading branch information
robertpaul01 committed Nov 2, 2017
1 parent cf8dc89 commit 8ede1ce
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 0 deletions.
7 changes: 7 additions & 0 deletions Libraries/Components/DatePicker/DatePickerIOS.ios.js
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -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,
Expand Down
1 change: 1 addition & 0 deletions React/Base/RCTConvert.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
14 changes: 14 additions & 0 deletions React/Base/RCTConvert.m
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,20 @@ + (NSDate *)NSDate:(id)json
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)

Expand Down
1 change: 1 addition & 0 deletions React/Views/RCTDatePickerManager.m
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ - (UIView *)view
}

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)
Expand Down

0 comments on commit 8ede1ce

Please sign in to comment.