diff --git a/Libraries/Components/Picker/PickerIOS.ios.js b/Libraries/Components/Picker/PickerIOS.ios.js index 787126356a4974..1f47a53a97a11e 100644 --- a/Libraries/Components/Picker/PickerIOS.ios.js +++ b/Libraries/Components/Picker/PickerIOS.ios.js @@ -18,7 +18,7 @@ const ReactNative = require('ReactNative'); const StyleSheet = require('StyleSheet'); const View = require('View'); const processColor = require('processColor'); -const requireNativeComponent = require('requireNativeComponent'); +const RCTPickerNativeComponent = require('RCTPickerNativeComponent'); import type {SyntheticEvent} from 'CoreEventTypes'; import type {ColorValue} from 'StyleSheetTypes'; @@ -52,10 +52,6 @@ type RCTPickerIOSType = Class< >, >; -const RCTPickerIOS: RCTPickerIOSType = (requireNativeComponent( - 'RCTPicker', -): any); - type Label = Stringish | number; type Props = $ReadOnly<{| @@ -111,7 +107,7 @@ class PickerIOS extends React.Component { render() { return ( - { this._picker = picker; }} diff --git a/Libraries/Components/Picker/RCTPickerNativeComponent.js b/Libraries/Components/Picker/RCTPickerNativeComponent.js new file mode 100644 index 00000000000000..2a3e8b5e0d6af0 --- /dev/null +++ b/Libraries/Components/Picker/RCTPickerNativeComponent.js @@ -0,0 +1,47 @@ +/** + * 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. + * + * @flow + * @format + */ +'use strict'; + +const requireNativeComponent = require('requireNativeComponent'); + +import type {SyntheticEvent} from 'CoreEventTypes'; +import type {TextStyleProp} from 'StyleSheet'; +import type {NativeComponent} from 'ReactNative'; + +type PickerIOSChangeEvent = SyntheticEvent< + $ReadOnly<{| + newValue: number | string, + newIndex: number, + |}>, +>; + +type RCTPickerIOSItemType = $ReadOnly<{| + label: ?Label, + value: ?(number | string), + textColor: ?number, +|}>; + +type Label = Stringish | number; + +type RCTPickerIOSType = Class< + NativeComponent< + $ReadOnly<{| + items: $ReadOnlyArray, + onChange: (event: PickerIOSChangeEvent) => void, + onResponderTerminationRequest: () => boolean, + onStartShouldSetResponder: () => boolean, + selectedIndex: number, + style?: ?TextStyleProp, + testID?: ?string, + |}>, + >, +>; + +module.exports = ((requireNativeComponent('RCTPicker'): any): RCTPickerIOSType);