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
This commit is contained in:
David Vacca
2021-03-04 13:54:45 -08:00
committed by Facebook GitHub Bot
parent e6931caca4
commit ce0b7e080b
2 changed files with 29 additions and 52 deletions
@@ -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<NativeCommands>({
supportedCommands: ['setNativeSelectedIndex'],
});
let RCTPickerNativeComponent;
if (global.RN$Bridgeless) {
ReactNativeViewConfigRegistry.register('RCTPicker', () => {
return RCTPickerViewConfig;
});
RCTPickerNativeComponent = 'RCTPicker';
} else {
RCTPickerNativeComponent = requireNativeComponent<NativeProps>('RCTPicker');
}
const RCTPickerNativeComponent: HostComponent<NativeProps> = NativeComponentRegistry.get<NativeProps>(
'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<NativeProps>);
@@ -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);