mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
00e623ddbb
Summary: Migrates `ScrollView` (and its related native components) to use `NativeComponentRegistry`. This will enable it to be configured using experiments to conditionally use the native `ViewConfig` or verify the static `ViewConfig`. This also cleans up a bunch of the modules and types related to defining the native `ScrollView` component. This also proposes adopting the same module naming protocol was has been adopted for TurboModules (i.e. `NativeScrollView` instead of `ScrollViewNativeComponent`). Changelog: [Internal] Reviewed By: JoshuaGross Differential Revision: D25098530 fbshipit-source-id: ff1394bfac023daf58e85d5f9068e4f8da3538be
88 lines
2.5 KiB
JavaScript
88 lines
2.5 KiB
JavaScript
/**
|
|
* 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
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
import {type ScrollViewNativeProps as Props} from './ScrollViewNativeComponentType';
|
|
import {type HostComponent} from '../../Renderer/shims/ReactNativeTypes';
|
|
import * as NativeComponentRegistry from '../../NativeComponent/NativeComponentRegistry';
|
|
|
|
const NativeScrollView: HostComponent<Props> = NativeComponentRegistry.get<Props>(
|
|
'RCTScrollView',
|
|
() => ({
|
|
uiViewClassName: 'RCTScrollView',
|
|
bubblingEventTypes: {},
|
|
directEventTypes: {
|
|
topScrollToTop: {
|
|
registrationName: 'onScrollToTop',
|
|
},
|
|
},
|
|
validAttributes: {
|
|
alwaysBounceHorizontal: true,
|
|
alwaysBounceVertical: true,
|
|
automaticallyAdjustContentInsets: true,
|
|
bounces: true,
|
|
bouncesZoom: true,
|
|
canCancelContentTouches: true,
|
|
centerContent: true,
|
|
contentInset: {
|
|
diff: require('../../Utilities/differ/pointsDiffer'),
|
|
},
|
|
contentOffset: {
|
|
diff: require('../../Utilities/differ/pointsDiffer'),
|
|
},
|
|
contentInsetAdjustmentBehavior: true,
|
|
decelerationRate: true,
|
|
directionalLockEnabled: true,
|
|
disableIntervalMomentum: true,
|
|
endFillColor: {
|
|
process: require('../../StyleSheet/processColor'),
|
|
},
|
|
fadingEdgeLength: true,
|
|
indicatorStyle: true,
|
|
inverted: true,
|
|
keyboardDismissMode: true,
|
|
maintainVisibleContentPosition: true,
|
|
maximumZoomScale: true,
|
|
minimumZoomScale: true,
|
|
nestedScrollEnabled: true,
|
|
onMomentumScrollBegin: true,
|
|
onMomentumScrollEnd: true,
|
|
onScroll: true,
|
|
onScrollBeginDrag: true,
|
|
onScrollEndDrag: true,
|
|
onScrollToTop: true,
|
|
overScrollMode: true,
|
|
pagingEnabled: true,
|
|
persistentScrollbar: true,
|
|
pinchGestureEnabled: true,
|
|
scrollEnabled: true,
|
|
scrollEventThrottle: true,
|
|
scrollIndicatorInsets: {
|
|
diff: require('../../Utilities/differ/pointsDiffer'),
|
|
},
|
|
scrollPerfTag: true,
|
|
scrollToOverflowEnabled: true,
|
|
scrollsToTop: true,
|
|
sendMomentumEvents: true,
|
|
showsHorizontalScrollIndicator: true,
|
|
showsVerticalScrollIndicator: true,
|
|
snapToAlignment: true,
|
|
snapToEnd: true,
|
|
snapToInterval: true,
|
|
snapToOffsets: true,
|
|
snapToStart: true,
|
|
zoomScale: true,
|
|
},
|
|
}),
|
|
);
|
|
|
|
export default NativeScrollView;
|