diff --git a/Libraries/Components/View/ReactNativeViewViewConfig.js b/Libraries/Components/View/ReactNativeViewViewConfig.js index d723f2797e7..942a269790f 100644 --- a/Libraries/Components/View/ReactNativeViewViewConfig.js +++ b/Libraries/Components/View/ReactNativeViewViewConfig.js @@ -10,12 +10,12 @@ 'use strict'; +const ReactNativeViewConfigRegistry = require('ReactNativeViewConfigRegistry'); +const verifyComponentAttributeEquivalence = require('verifyComponentAttributeEquivalence'); + const ReactNativeViewConfig = { uiViewClassName: 'RCTView', - baseModuleName: null, - Manager: 'ViewManager', Commands: {}, - Constants: {}, bubblingEventTypes: { topBlur: { phasedRegistrationNames: { @@ -53,6 +53,12 @@ const ReactNativeViewConfig = { captured: 'onPressCapture', }, }, + topSelect: { + phasedRegistrationNames: { + bubbled: 'onSelect', + captured: 'onSelectCapture', + }, + }, topSubmitEditing: { phasedRegistrationNames: { bubbled: 'onSubmitEditing', @@ -85,6 +91,9 @@ const ReactNativeViewConfig = { }, }, directEventTypes: { + performAction: { + registrationName: 'onAccessibilityAction', + }, topAccessibilityAction: { registrationName: 'onAccessibilityAction', }, @@ -94,12 +103,48 @@ const ReactNativeViewConfig = { topAccessibilityTap: { registrationName: 'onAccessibilityTap', }, + topClick: { + registrationName: 'onClick', + }, + topContentSizeChange: { + registrationName: 'onContentSizeChange', + }, topLayout: { registrationName: 'onLayout', }, + topLoadingError: { + registrationName: 'onLoadingError', + }, + topLoadingFinish: { + registrationName: 'onLoadingFinish', + }, + topLoadingStart: { + registrationName: 'onLoadingStart', + }, topMagicTap: { registrationName: 'onMagicTap', }, + topMessage: { + registrationName: 'onMessage', + }, + topMomentumScrollBegin: { + registrationName: 'onMomentumScrollBegin', + }, + topMomentumScrollEnd: { + registrationName: 'onMomentumScrollEnd', + }, + topScroll: { + registrationName: 'onScroll', + }, + topScrollBeginDrag: { + registrationName: 'onScrollBeginDrag', + }, + topScrollEndDrag: { + registrationName: 'onScrollEndDrag', + }, + topSelectionChange: { + registrationName: 'onSelectionChange', + }, }, validAttributes: { accessibilityActions: true, @@ -156,6 +201,7 @@ const ReactNativeViewConfig = { flexGrow: true, flexShrink: true, flexWrap: true, + hasTVPreferredFocus: true, height: true, hitSlop: {diff: (require('../../Utilities/differ/insetsDiffer'): any)}, importantForAccessibility: true, @@ -174,8 +220,15 @@ const ReactNativeViewConfig = { maxWidth: true, minHeight: true, minWidth: true, + nativeBackgroundAndroid: true, + nativeForegroundAndroid: true, nativeID: true, needsOffscreenAlphaCompositing: true, + nextFocusDown: true, + nextFocusForward: true, + nextFocusLeft: true, + nextFocusRight: true, + nextFocusUp: true, onAccessibilityAction: true, onAccessibilityEscape: true, onAccessibilityTap: true, @@ -326,4 +379,8 @@ const ReactNativeViewConfig = { }, }; +verifyComponentAttributeEquivalence('RCTView', ReactNativeViewConfig); + +ReactNativeViewConfigRegistry.register('RCTView', () => ReactNativeViewConfig); + module.exports = ReactNativeViewConfig; diff --git a/Libraries/Components/View/ViewNativeComponent.js b/Libraries/Components/View/ViewNativeComponent.js index 21e57c8a437..aa7ea2b5021 100644 --- a/Libraries/Components/View/ViewNativeComponent.js +++ b/Libraries/Components/View/ViewNativeComponent.js @@ -12,12 +12,10 @@ const ReactNative = require('../../Renderer/shims/ReactNative'); -const requireNativeComponent = require('../../ReactNative/requireNativeComponent'); - import type {ViewProps} from './ViewPropTypes'; type ViewNativeComponentType = Class>; -const NativeViewComponent = requireNativeComponent('RCTView'); +require('ReactNativeViewViewConfig'); -module.exports = ((NativeViewComponent: any): ViewNativeComponentType); +module.exports = (('RCTView': any): ViewNativeComponentType); diff --git a/Libraries/Utilities/verifyComponentAttributeEquivalence.js b/Libraries/Utilities/verifyComponentAttributeEquivalence.js index 296b7837cbd..63c66445a15 100644 --- a/Libraries/Utilities/verifyComponentAttributeEquivalence.js +++ b/Libraries/Utilities/verifyComponentAttributeEquivalence.js @@ -14,7 +14,7 @@ const getNativeComponentAttributes = require('../ReactNative/getNativeComponentA import type {ReactNativeBaseComponentViewConfig} from '../Renderer/shims/ReactNativeTypes'; -const IGNORED_KEYS = ['transform']; +const IGNORED_KEYS = ['transform', 'hitSlop']; /** * The purpose of this function is to validate that the view config that * native exposes for a given view manager is the same as the view config