From ea9e0d4fcbb4702cb2e764485452589ef1c7962c 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 6ab037f28bf9cb..0442cf395a0cf6 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 00000000000000..137d88351314c7 --- /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);