From 5f3afb9fe55ffdc726c64874d7c898cbed43d5ce Mon Sep 17 00:00:00 2001 From: Nick Bell Date: Wed, 16 Jan 2019 13:19:57 -0800 Subject: [PATCH] #22990 add RCTDatePickerNativeComponent types (#23013) 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: Changelog: ---------- [iOS] [Changed] - As mentioned in #22990, I have moved native components required by DatePickerIOS.ios.js into separate files and added Flow Typing. Pull Request resolved: https://github.com/facebook/react-native/pull/23013 Differential Revision: D13697591 Pulled By: TheSavior fbshipit-source-id: 5aec5a2270cbfc708f3e3a67662abd8071f1333f --- .../DatePicker/DatePickerIOS.ios.js | 7 ++-- .../RCTDatePickerNativeComponent.js | 41 +++++++++++++++++++ 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js diff --git a/Libraries/Components/DatePicker/DatePickerIOS.ios.js b/Libraries/Components/DatePicker/DatePickerIOS.ios.js index 6ab037f28..0442cf395 100644 --- a/Libraries/Components/DatePicker/DatePickerIOS.ios.js +++ b/Libraries/Components/DatePicker/DatePickerIOS.ios.js @@ -18,12 +18,11 @@ const StyleSheet = require('StyleSheet'); const View = require('View'); const invariant = require('invariant'); -const requireNativeComponent = require('requireNativeComponent'); import type {ViewProps} from 'ViewPropTypes'; import type {SyntheticEvent} from 'CoreEventTypes'; -const RCTDatePickerIOS = requireNativeComponent('RCTDatePicker'); +const RCTDatePickerNativeComponent = require('RCTDatePickerNativeComponent'); type Event = SyntheticEvent< $ReadOnly<{| @@ -119,7 +118,7 @@ class DatePickerIOS extends React.Component { }; // $FlowFixMe How to type a native component to be able to call setNativeProps - _picker: ?React.ElementRef = null; + _picker: ?React.ElementRef = null; componentDidUpdate() { if (this.props.date) { @@ -147,7 +146,7 @@ class DatePickerIOS extends React.Component { ); return ( - { this._picker = picker; diff --git a/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js b/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js new file mode 100644 index 000000000..137d88351 --- /dev/null +++ b/Libraries/Components/DatePicker/RCTDatePickerNativeComponent.js @@ -0,0 +1,41 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + * @flow + */ + +'use strict'; + +const requireNativeComponent = require('requireNativeComponent'); + +import type {SyntheticEvent} from 'CoreEventTypes'; +import type {ViewProps} from 'ViewPropTypes'; +import type {NativeComponent} from 'ReactNative'; + +type Event = SyntheticEvent< + $ReadOnly<{| + timestamp: number, + |}>, +>; + +type NativeProps = $ReadOnly<{| + ...ViewProps, + date?: ?number, + initialDate?: ?Date, + locale?: ?string, + maximumDate?: ?number, + minimumDate?: ?number, + minuteInterval?: ?(1 | 2 | 3 | 4 | 5 | 6 | 10 | 12 | 15 | 20 | 30), + mode?: ?('date' | 'time' | 'datetime'), + onChange?: ?(event: Event) => void, + timeZoneOffsetInMinutes?: ?number, +|}>; +type RCTDatePickerNativeType = Class>; + +module.exports = ((requireNativeComponent( + 'RCTDatePicker', +): any): RCTDatePickerNativeType);