From ce0b7e080b1c2e09cf46795c4d412399fa69a81a Mon Sep 17 00:00:00 2001 From: David Vacca Date: Thu, 4 Mar 2021 13:51:50 -0800 Subject: [PATCH] Migrate RCTPicker to use NativeComponentRegistry instead of requireNativeComponent Summary: This diff migrates RCTPicker to use NativeComponentRegistry instead of requireNativeComponent. The intention is to unify the way the component is registered and enable StaticViewConfigs for this component changelog: [internal] internal Reviewed By: yungsters Differential Revision: D26799477 fbshipit-source-id: 2f5935e0a4796c7a76921762a087cf7823ebd62e --- .../Picker/RCTPickerNativeComponent.js | 42 +++++++++++++------ .../Components/Picker/RCTPickerViewConfig.js | 39 ----------------- 2 files changed, 29 insertions(+), 52 deletions(-) delete mode 100644 Libraries/Components/Picker/RCTPickerViewConfig.js diff --git a/Libraries/Components/Picker/RCTPickerNativeComponent.js b/Libraries/Components/Picker/RCTPickerNativeComponent.js index a3396e0e5c4..647a8abc841 100644 --- a/Libraries/Components/Picker/RCTPickerNativeComponent.js +++ b/Libraries/Components/Picker/RCTPickerNativeComponent.js @@ -8,15 +8,13 @@ * @format */ -const requireNativeComponent = require('../../ReactNative/requireNativeComponent'); -const ReactNativeViewConfigRegistry = require('../../Renderer/shims/ReactNativeViewConfigRegistry'); - +import * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry'; +import ReactNativeViewViewConfig from '../../Components/View/ReactNativeViewViewConfig'; import type {HostComponent} from '../../Renderer/shims/ReactNativeTypes'; import type {SyntheticEvent} from '../../Types/CoreEventTypes'; import type {TextStyleProp} from '../../StyleSheet/StyleSheet'; import type {ProcessedColorValue} from '../../StyleSheet/processColor'; import codegenNativeCommands from '../../Utilities/codegenNativeCommands'; -import RCTPickerViewConfig from './RCTPickerViewConfig'; import * as React from 'react'; type PickerIOSChangeEvent = SyntheticEvent< @@ -56,15 +54,33 @@ export const Commands: NativeCommands = codegenNativeCommands({ supportedCommands: ['setNativeSelectedIndex'], }); -let RCTPickerNativeComponent; -if (global.RN$Bridgeless) { - ReactNativeViewConfigRegistry.register('RCTPicker', () => { - return RCTPickerViewConfig; - }); - RCTPickerNativeComponent = 'RCTPicker'; -} else { - RCTPickerNativeComponent = requireNativeComponent('RCTPicker'); -} +const RCTPickerNativeComponent: HostComponent = NativeComponentRegistry.get( + 'RCTPicker', + () => ({ + uiViewClassName: 'RCTPicker', + bubblingEventTypes: { + topChange: { + phasedRegistrationNames: { + bubbled: 'onChange', + captured: 'onChangeCapture', + }, + }, + }, + directEventTypes: {}, + validAttributes: { + ...ReactNativeViewViewConfig.validAttributes, + color: {process: require('../../StyleSheet/processColor')}, + fontFamily: true, + fontSize: true, + fontStyle: true, + fontWeight: true, + items: true, + onChange: true, + selectedIndex: true, + textAlign: true, + }, + }), +); // flowlint-next-line unclear-type:off export default ((RCTPickerNativeComponent: any): HostComponent); diff --git a/Libraries/Components/Picker/RCTPickerViewConfig.js b/Libraries/Components/Picker/RCTPickerViewConfig.js deleted file mode 100644 index fc44b0b9b4c..00000000000 --- a/Libraries/Components/Picker/RCTPickerViewConfig.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * 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 strict-local - * @format - */ - -import ReactNativeViewViewConfig from '../../Components/View/ReactNativeViewViewConfig'; -import {type ViewConfig} from '../../Renderer/shims/ReactNativeTypes'; - -const RCTPickerViewConfig = { - uiViewClassName: 'RCTPicker', - bubblingEventTypes: { - topChange: { - phasedRegistrationNames: { - bubbled: 'onChange', - captured: 'onChangeCapture', - }, - }, - }, - directEventTypes: {}, - validAttributes: { - ...ReactNativeViewViewConfig.validAttributes, - color: {process: require('../../StyleSheet/processColor')}, - fontFamily: true, - fontSize: true, - fontStyle: true, - fontWeight: true, - items: true, - onChange: true, - selectedIndex: true, - textAlign: true, - }, -}; - -module.exports = (RCTPickerViewConfig: ViewConfig);