mirror of
https://github.com/status-im/react-native.git
synced 2025-01-16 04:24:15 +00:00
Move ScrollView prop comments from propTypes to flow types
Summary: Next step: make propTypes `__DEV__` only. Reviewed By: TheSavior Differential Revision: D8721300 fbshipit-source-id: 066b495836a87ea92d370728911e7b7ba6566c53
This commit is contained in:
parent
fff43614aa
commit
2424ef5654
@ -76,49 +76,263 @@ type TouchableProps = $ReadOnly<{|
|
|||||||
|}>;
|
|}>;
|
||||||
|
|
||||||
type IOSProps = $ReadOnly<{|
|
type IOSProps = $ReadOnly<{|
|
||||||
|
/**
|
||||||
|
* Controls whether iOS should automatically adjust the content inset
|
||||||
|
* for scroll views that are placed behind a navigation bar or
|
||||||
|
* tab bar/ toolbar. The default value is true.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
automaticallyAdjustContentInsets?: ?boolean,
|
automaticallyAdjustContentInsets?: ?boolean,
|
||||||
|
/**
|
||||||
|
* The amount by which the scroll view content is inset from the edges
|
||||||
|
* of the scroll view. Defaults to `{top: 0, left: 0, bottom: 0, right: 0}`.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
contentInset?: ?EdgeInsetsProp,
|
contentInset?: ?EdgeInsetsProp,
|
||||||
|
/**
|
||||||
|
* Used to manually set the starting scroll offset.
|
||||||
|
* The default value is `{x: 0, y: 0}`.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
contentOffset?: ?PointProp,
|
contentOffset?: ?PointProp,
|
||||||
|
/**
|
||||||
|
* When true, the scroll view bounces when it reaches the end of the
|
||||||
|
* content if the content is larger then the scroll view along the axis of
|
||||||
|
* the scroll direction. When false, it disables all bouncing even if
|
||||||
|
* the `alwaysBounce*` props are true. The default value is true.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
bounces?: ?boolean,
|
bounces?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When true, gestures can drive zoom past min/max and the zoom will animate
|
||||||
|
* to the min/max value at gesture end, otherwise the zoom will not exceed
|
||||||
|
* the limits.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
bouncesZoom?: ?boolean,
|
bouncesZoom?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When true, the scroll view bounces horizontally when it reaches the end
|
||||||
|
* even if the content is smaller than the scroll view itself. The default
|
||||||
|
* value is true when `horizontal={true}` and false otherwise.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
alwaysBounceHorizontal?: ?boolean,
|
alwaysBounceHorizontal?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When true, the scroll view bounces vertically when it reaches the end
|
||||||
|
* even if the content is smaller than the scroll view itself. The default
|
||||||
|
* value is false when `horizontal={true}` and true otherwise.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
alwaysBounceVertical?: ?boolean,
|
alwaysBounceVertical?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When true, the scroll view automatically centers the content when the
|
||||||
|
* content is smaller than the scroll view bounds; when the content is
|
||||||
|
* larger than the scroll view, this property has no effect. The default
|
||||||
|
* value is false.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
centerContent?: ?boolean,
|
centerContent?: ?boolean,
|
||||||
|
/**
|
||||||
|
* A floating-point number that determines how quickly the scroll view
|
||||||
|
* decelerates after the user lifts their finger. You may also use string
|
||||||
|
* shortcuts `"normal"` and `"fast"` which match the underlying iOS settings
|
||||||
|
* for `UIScrollViewDecelerationRateNormal` and
|
||||||
|
* `UIScrollViewDecelerationRateFast` respectively.
|
||||||
|
*
|
||||||
|
* - `'normal'`: 0.998 (the default)
|
||||||
|
* - `'fast'`: 0.99
|
||||||
|
*
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
decelerationRate?: ?('fast' | 'normal' | number),
|
decelerationRate?: ?('fast' | 'normal' | number),
|
||||||
|
/**
|
||||||
|
* The style of the scroll indicators.
|
||||||
|
*
|
||||||
|
* - `'default'` (the default), same as `black`.
|
||||||
|
* - `'black'`, scroll indicator is black. This style is good against a light background.
|
||||||
|
* - `'white'`, scroll indicator is white. This style is good against a dark background.
|
||||||
|
*
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
indicatorStyle?: ?('default' | 'black' | 'white'),
|
indicatorStyle?: ?('default' | 'black' | 'white'),
|
||||||
|
/**
|
||||||
|
* When true, the ScrollView will try to lock to only vertical or horizontal
|
||||||
|
* scrolling while dragging. The default value is false.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
directionalLockEnabled?: ?boolean,
|
directionalLockEnabled?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When false, once tracking starts, won't try to drag if the touch moves.
|
||||||
|
* The default value is true.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
canCancelContentTouches?: ?boolean,
|
canCancelContentTouches?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When set, the scroll view will adjust the scroll position so that the first child that is
|
||||||
|
* currently visible and at or beyond `minIndexForVisible` will not change position. This is
|
||||||
|
* useful for lists that are loading content in both directions, e.g. a chat thread, where new
|
||||||
|
* messages coming in might otherwise cause the scroll position to jump. A value of 0 is common,
|
||||||
|
* but other values such as 1 can be used to skip loading spinners or other content that should
|
||||||
|
* not maintain position.
|
||||||
|
*
|
||||||
|
* The optional `autoscrollToTopThreshold` can be used to make the content automatically scroll
|
||||||
|
* to the top after making the adjustment if the user was within the threshold of the top before
|
||||||
|
* the adjustment was made. This is also useful for chat-like applications where you want to see
|
||||||
|
* new messages scroll into place, but not if the user has scrolled up a ways and it would be
|
||||||
|
* disruptive to scroll a bunch.
|
||||||
|
*
|
||||||
|
* Caveat 1: Reordering elements in the scrollview with this enabled will probably cause
|
||||||
|
* jumpiness and jank. It can be fixed, but there are currently no plans to do so. For now,
|
||||||
|
* don't re-order the content of any ScrollViews or Lists that use this feature.
|
||||||
|
*
|
||||||
|
* Caveat 2: This simply uses `contentOffset` and `frame.origin` in native code to compute
|
||||||
|
* visibility. Occlusion, transforms, and other complexity won't be taken into account as to
|
||||||
|
* whether content is "visible" or not.
|
||||||
|
*
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
maintainVisibleContentPosition?: ?$ReadOnly<{|
|
maintainVisibleContentPosition?: ?$ReadOnly<{|
|
||||||
minIndexForVisible: number,
|
minIndexForVisible: number,
|
||||||
autoscrollToTopThreshold?: ?number,
|
autoscrollToTopThreshold?: ?number,
|
||||||
|}>,
|
|}>,
|
||||||
|
/**
|
||||||
|
* The maximum allowed zoom scale. The default value is 1.0.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
maximumZoomScale?: ?number,
|
maximumZoomScale?: ?number,
|
||||||
|
/**
|
||||||
|
* The minimum allowed zoom scale. The default value is 1.0.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
minimumZoomScale?: ?number,
|
minimumZoomScale?: ?number,
|
||||||
|
/**
|
||||||
|
* When true, ScrollView allows use of pinch gestures to zoom in and out.
|
||||||
|
* The default value is true.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
pinchGestureEnabled?: ?boolean,
|
pinchGestureEnabled?: ?boolean,
|
||||||
|
/**
|
||||||
|
* This controls how often the scroll event will be fired while scrolling
|
||||||
|
* (as a time interval in ms). A lower number yields better accuracy for code
|
||||||
|
* that is tracking the scroll position, but can lead to scroll performance
|
||||||
|
* problems due to the volume of information being send over the bridge.
|
||||||
|
* You will not notice a difference between values set between 1-16 as the
|
||||||
|
* JS run loop is synced to the screen refresh rate. If you do not need precise
|
||||||
|
* scroll position tracking, set this value higher to limit the information
|
||||||
|
* being sent across the bridge. The default value is zero, which results in
|
||||||
|
* the scroll event being sent only once each time the view is scrolled.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
scrollEventThrottle?: ?number,
|
scrollEventThrottle?: ?number,
|
||||||
|
/**
|
||||||
|
* The amount by which the scroll view indicators are inset from the edges
|
||||||
|
* of the scroll view. This should normally be set to the same value as
|
||||||
|
* the `contentInset`. Defaults to `{0, 0, 0, 0}`.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
scrollIndicatorInsets?: ?EdgeInsetsProp,
|
scrollIndicatorInsets?: ?EdgeInsetsProp,
|
||||||
|
/**
|
||||||
|
* When true, the scroll view scrolls to top when the status bar is tapped.
|
||||||
|
* The default value is true.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
scrollsToTop?: ?boolean,
|
scrollsToTop?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When true, shows a horizontal scroll indicator.
|
||||||
|
* The default value is true.
|
||||||
|
*/
|
||||||
showsHorizontalScrollIndicator?: ?boolean,
|
showsHorizontalScrollIndicator?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When `snapToInterval` is set, `snapToAlignment` will define the relationship
|
||||||
|
* of the snapping to the scroll view.
|
||||||
|
*
|
||||||
|
* - `'start'` (the default) will align the snap at the left (horizontal) or top (vertical)
|
||||||
|
* - `'center'` will align the snap in the center
|
||||||
|
* - `'end'` will align the snap at the right (horizontal) or bottom (vertical)
|
||||||
|
*
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
snapToAlignment?: ?('start' | 'center' | 'end'),
|
snapToAlignment?: ?('start' | 'center' | 'end'),
|
||||||
|
/**
|
||||||
|
* The current scale of the scroll view content. The default value is 1.0.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
zoomScale?: ?number,
|
zoomScale?: ?number,
|
||||||
|
/**
|
||||||
|
* This property specifies how the safe area insets are used to modify the
|
||||||
|
* content area of the scroll view. The default value of this property is
|
||||||
|
* "never". Available on iOS 11 and later.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
contentInsetAdjustmentBehavior?: ?(
|
contentInsetAdjustmentBehavior?: ?(
|
||||||
| 'automatic'
|
| 'automatic'
|
||||||
| 'scrollableAxes'
|
| 'scrollableAxes'
|
||||||
| 'never'
|
| 'never'
|
||||||
| 'always'
|
| 'always'
|
||||||
),
|
),
|
||||||
|
/**
|
||||||
|
* When true, ScrollView will emit updateChildFrames data in scroll events,
|
||||||
|
* otherwise will not compute or emit child frame data. This only exists
|
||||||
|
* to support legacy issues, `onLayout` should be used instead to retrieve
|
||||||
|
* frame data.
|
||||||
|
* The default value is false.
|
||||||
|
* @platform ios
|
||||||
|
*/
|
||||||
DEPRECATED_sendUpdatedChildFrames?: ?boolean,
|
DEPRECATED_sendUpdatedChildFrames?: ?boolean,
|
||||||
|}>;
|
|}>;
|
||||||
|
|
||||||
type AndroidProps = $ReadOnly<{|
|
type AndroidProps = $ReadOnly<{|
|
||||||
|
/**
|
||||||
|
* Enables nested scrolling for Android API level 21+.
|
||||||
|
* Nested scrolling is supported by default on iOS
|
||||||
|
* @platform android
|
||||||
|
*/
|
||||||
nestedScrollEnabled?: ?boolean,
|
nestedScrollEnabled?: ?boolean,
|
||||||
|
/**
|
||||||
|
* Sometimes a scrollview takes up more space than its content fills. When this is
|
||||||
|
* the case, this prop will fill the rest of the scrollview with a color to avoid setting
|
||||||
|
* a background and creating unnecessary overdraw. This is an advanced optimization
|
||||||
|
* that is not needed in the general case.
|
||||||
|
* @platform android
|
||||||
|
*/
|
||||||
endFillColor?: ?ColorValue,
|
endFillColor?: ?ColorValue,
|
||||||
|
/**
|
||||||
|
* Tag used to log scroll performance on this scroll view. Will force
|
||||||
|
* momentum events to be turned on (see sendMomentumEvents). This doesn't do
|
||||||
|
* anything out of the box and you need to implement a custom native
|
||||||
|
* FpsListener for it to be useful.
|
||||||
|
* @platform android
|
||||||
|
*/
|
||||||
scrollPerfTag?: ?string,
|
scrollPerfTag?: ?string,
|
||||||
|
/**
|
||||||
|
* Used to override default value of overScroll mode.
|
||||||
|
*
|
||||||
|
* Possible values:
|
||||||
|
*
|
||||||
|
* - `'auto'` - Default value, allow a user to over-scroll
|
||||||
|
* this view only if the content is large enough to meaningfully scroll.
|
||||||
|
* - `'always'` - Always allow a user to over-scroll this view.
|
||||||
|
* - `'never'` - Never allow a user to over-scroll this view.
|
||||||
|
*
|
||||||
|
* @platform android
|
||||||
|
*/
|
||||||
overScrollMode?: ?('auto' | 'always' | 'never'),
|
overScrollMode?: ?('auto' | 'always' | 'never'),
|
||||||
|}>;
|
|}>;
|
||||||
|
|
||||||
type VRProps = $ReadOnly<{|
|
type VRProps = $ReadOnly<{|
|
||||||
scrollBarThumbImage?: ?($ReadOnly<{||}> | number),
|
/**
|
||||||
|
* Optionally an image can be used for the scroll bar thumb. This will
|
||||||
|
* override the color. While the image is loading or the image fails to
|
||||||
|
* load the color will be used instead. Use an alpha of 0 in the color
|
||||||
|
* to avoid seeing it while the image is loading.
|
||||||
|
*
|
||||||
|
* - `uri` - a string representing the resource identifier for the image, which
|
||||||
|
* should be either a local file path or the name of a static image resource
|
||||||
|
* - `number` - Opaque type returned by something like
|
||||||
|
* `import IMAGE from './image.jpg'`.
|
||||||
|
* @platform vr
|
||||||
|
*/
|
||||||
|
scrollBarThumbImage?: ?($ReadOnly<{||}> | number), // Opaque type returned by import IMAGE from './image.jpg'
|
||||||
|}>;
|
|}>;
|
||||||
|
|
||||||
export type Props = $ReadOnly<{|
|
export type Props = $ReadOnly<{|
|
||||||
@ -128,30 +342,153 @@ export type Props = $ReadOnly<{|
|
|||||||
...AndroidProps,
|
...AndroidProps,
|
||||||
...VRProps,
|
...VRProps,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* These styles will be applied to the scroll view content container which
|
||||||
|
* wraps all of the child views. Example:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* return (
|
||||||
|
* <ScrollView contentContainerStyle={styles.contentContainer}>
|
||||||
|
* </ScrollView>
|
||||||
|
* );
|
||||||
|
* ...
|
||||||
|
* const styles = StyleSheet.create({
|
||||||
|
* contentContainer: {
|
||||||
|
* paddingVertical: 20
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
contentContainerStyle?: ?ViewStyleProp,
|
contentContainerStyle?: ?ViewStyleProp,
|
||||||
|
/**
|
||||||
|
* When true, the scroll view's children are arranged horizontally in a row
|
||||||
|
* instead of vertically in a column. The default value is false.
|
||||||
|
*/
|
||||||
horizontal?: ?boolean,
|
horizontal?: ?boolean,
|
||||||
|
/**
|
||||||
|
* If sticky headers should stick at the bottom instead of the top of the
|
||||||
|
* ScrollView. This is usually used with inverted ScrollViews.
|
||||||
|
*/
|
||||||
invertStickyHeaders?: ?boolean,
|
invertStickyHeaders?: ?boolean,
|
||||||
|
/**
|
||||||
|
* Determines whether the keyboard gets dismissed in response to a drag.
|
||||||
|
*
|
||||||
|
* *Cross platform*
|
||||||
|
*
|
||||||
|
* - `'none'` (the default), drags do not dismiss the keyboard.
|
||||||
|
* - `'on-drag'`, the keyboard is dismissed when a drag begins.
|
||||||
|
*
|
||||||
|
* *iOS Only*
|
||||||
|
*
|
||||||
|
* - `'interactive'`, the keyboard is dismissed interactively with the drag and moves in
|
||||||
|
* synchrony with the touch; dragging upwards cancels the dismissal.
|
||||||
|
* On android this is not supported and it will have the same behavior as 'none'.
|
||||||
|
*/
|
||||||
keyboardDismissMode?: ?(
|
keyboardDismissMode?: ?(
|
||||||
| 'none' // default
|
| 'none' // default
|
||||||
| 'on-drag' // cross-platform
|
| 'on-drag' // cross-platform
|
||||||
| 'interactive'
|
| 'interactive'
|
||||||
), // ios only
|
), // ios only
|
||||||
|
/**
|
||||||
|
* Determines when the keyboard should stay visible after a tap.
|
||||||
|
*
|
||||||
|
* - `'never'` (the default), tapping outside of the focused text input when the keyboard
|
||||||
|
* is up dismisses the keyboard. When this happens, children won't receive the tap.
|
||||||
|
* - `'always'`, the keyboard will not dismiss automatically, and the scroll view will not
|
||||||
|
* catch taps, but children of the scroll view can catch taps.
|
||||||
|
* - `'handled'`, the keyboard will not dismiss automatically when the tap was handled by
|
||||||
|
* a children, (or captured by an ancestor).
|
||||||
|
* - `false`, deprecated, use 'never' instead
|
||||||
|
* - `true`, deprecated, use 'always' instead
|
||||||
|
*/
|
||||||
// $FlowFixMe Issues found when typing ScrollView
|
// $FlowFixMe Issues found when typing ScrollView
|
||||||
keyboardShouldPersistTaps?: ?('always' | 'never' | 'handled' | false | true),
|
keyboardShouldPersistTaps?: ?('always' | 'never' | 'handled' | false | true),
|
||||||
|
/**
|
||||||
|
* Called when the momentum scroll starts (scroll which occurs as the ScrollView glides to a stop).
|
||||||
|
*/
|
||||||
onMomentumScrollBegin?: ?Function,
|
onMomentumScrollBegin?: ?Function,
|
||||||
|
/**
|
||||||
|
* Called when the momentum scroll ends (scroll which occurs as the ScrollView glides to a stop).
|
||||||
|
*/
|
||||||
onMomentumScrollEnd?: ?Function,
|
onMomentumScrollEnd?: ?Function,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fires at most once per frame during scrolling. The frequency of the
|
||||||
|
* events can be controlled using the `scrollEventThrottle` prop.
|
||||||
|
*/
|
||||||
onScroll?: ?Function,
|
onScroll?: ?Function,
|
||||||
|
/**
|
||||||
|
* Called when the user begins to drag the scroll view.
|
||||||
|
*/
|
||||||
onScrollBeginDrag?: ?Function,
|
onScrollBeginDrag?: ?Function,
|
||||||
|
/**
|
||||||
|
* Called when the user stops dragging the scroll view and it either stops
|
||||||
|
* or begins to glide.
|
||||||
|
*/
|
||||||
onScrollEndDrag?: ?Function,
|
onScrollEndDrag?: ?Function,
|
||||||
|
/**
|
||||||
|
* Called when scrollable content view of the ScrollView changes.
|
||||||
|
*
|
||||||
|
* Handler function is passed the content width and content height as parameters:
|
||||||
|
* `(contentWidth, contentHeight)`
|
||||||
|
*
|
||||||
|
* It's implemented using onLayout handler attached to the content container
|
||||||
|
* which this ScrollView renders.
|
||||||
|
*/
|
||||||
onContentSizeChange?: ?Function,
|
onContentSizeChange?: ?Function,
|
||||||
onKeyboardDidShow?: (event: PressEvent) => void,
|
onKeyboardDidShow?: (event: PressEvent) => void,
|
||||||
|
/**
|
||||||
|
* When true, the scroll view stops on multiples of the scroll view's size
|
||||||
|
* when scrolling. This can be used for horizontal pagination. The default
|
||||||
|
* value is false.
|
||||||
|
*
|
||||||
|
* Note: Vertical pagination is not supported on Android.
|
||||||
|
*/
|
||||||
pagingEnabled?: ?boolean,
|
pagingEnabled?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When false, the view cannot be scrolled via touch interaction.
|
||||||
|
* The default value is true.
|
||||||
|
*
|
||||||
|
* Note that the view can always be scrolled by calling `scrollTo`.
|
||||||
|
*/
|
||||||
scrollEnabled?: ?boolean,
|
scrollEnabled?: ?boolean,
|
||||||
|
/**
|
||||||
|
* When true, shows a vertical scroll indicator.
|
||||||
|
* The default value is true.
|
||||||
|
*/
|
||||||
showsVerticalScrollIndicator?: ?boolean,
|
showsVerticalScrollIndicator?: ?boolean,
|
||||||
|
/**
|
||||||
|
* An array of child indices determining which children get docked to the
|
||||||
|
* top of the screen when scrolling. For example, passing
|
||||||
|
* `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the
|
||||||
|
* top of the scroll view. This property is not supported in conjunction
|
||||||
|
* with `horizontal={true}`.
|
||||||
|
*/
|
||||||
stickyHeaderIndices?: ?$ReadOnlyArray<number>,
|
stickyHeaderIndices?: ?$ReadOnlyArray<number>,
|
||||||
|
/**
|
||||||
|
* When set, causes the scroll view to stop at multiples of the value of
|
||||||
|
* `snapToInterval`. This can be used for paginating through children
|
||||||
|
* that have lengths smaller than the scroll view. Typically used in
|
||||||
|
* combination with `snapToAlignment` and `decelerationRate="fast"` on ios.
|
||||||
|
* Overrides less configurable `pagingEnabled` prop.
|
||||||
|
*
|
||||||
|
* Supported for horizontal scrollview on android.
|
||||||
|
*/
|
||||||
snapToInterval?: ?number,
|
snapToInterval?: ?number,
|
||||||
|
/**
|
||||||
|
* Experimental: When true, offscreen child views (whose `overflow` value is
|
||||||
|
* `hidden`) are removed from their native backing superview when offscreen.
|
||||||
|
* This can improve scrolling performance on long lists. The default value is
|
||||||
|
* true.
|
||||||
|
*/
|
||||||
removeClippedSubviews?: ?boolean,
|
removeClippedSubviews?: ?boolean,
|
||||||
|
/**
|
||||||
|
* A RefreshControl component, used to provide pull-to-refresh
|
||||||
|
* functionality for the ScrollView. Only works for vertical ScrollViews
|
||||||
|
* (`horizontal` prop must be `false`).
|
||||||
|
*
|
||||||
|
* See [RefreshControl](docs/refreshcontrol.html).
|
||||||
|
*/
|
||||||
refreshControl?: ?React.Element<any>,
|
refreshControl?: ?React.Element<any>,
|
||||||
style?: ?ViewStyleProp,
|
style?: ?ViewStyleProp,
|
||||||
children?: React.Node,
|
children?: React.Node,
|
||||||
@ -196,163 +533,33 @@ const ScrollView = createReactClass({
|
|||||||
displayName: 'ScrollView',
|
displayName: 'ScrollView',
|
||||||
propTypes: {
|
propTypes: {
|
||||||
...ViewPropTypes,
|
...ViewPropTypes,
|
||||||
/**
|
|
||||||
* Controls whether iOS should automatically adjust the content inset
|
|
||||||
* for scroll views that are placed behind a navigation bar or
|
|
||||||
* tab bar/ toolbar. The default value is true.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
automaticallyAdjustContentInsets: PropTypes.bool,
|
automaticallyAdjustContentInsets: PropTypes.bool,
|
||||||
/**
|
|
||||||
* The amount by which the scroll view content is inset from the edges
|
|
||||||
* of the scroll view. Defaults to `{top: 0, left: 0, bottom: 0, right: 0}`.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
contentInset: EdgeInsetsPropType,
|
contentInset: EdgeInsetsPropType,
|
||||||
/**
|
|
||||||
* Used to manually set the starting scroll offset.
|
|
||||||
* The default value is `{x: 0, y: 0}`.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
contentOffset: PointPropType,
|
contentOffset: PointPropType,
|
||||||
/**
|
|
||||||
* When true, the scroll view bounces when it reaches the end of the
|
|
||||||
* content if the content is larger then the scroll view along the axis of
|
|
||||||
* the scroll direction. When false, it disables all bouncing even if
|
|
||||||
* the `alwaysBounce*` props are true. The default value is true.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
bounces: PropTypes.bool,
|
bounces: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, gestures can drive zoom past min/max and the zoom will animate
|
|
||||||
* to the min/max value at gesture end, otherwise the zoom will not exceed
|
|
||||||
* the limits.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
bouncesZoom: PropTypes.bool,
|
bouncesZoom: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, the scroll view bounces horizontally when it reaches the end
|
|
||||||
* even if the content is smaller than the scroll view itself. The default
|
|
||||||
* value is true when `horizontal={true}` and false otherwise.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
alwaysBounceHorizontal: PropTypes.bool,
|
alwaysBounceHorizontal: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, the scroll view bounces vertically when it reaches the end
|
|
||||||
* even if the content is smaller than the scroll view itself. The default
|
|
||||||
* value is false when `horizontal={true}` and true otherwise.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
alwaysBounceVertical: PropTypes.bool,
|
alwaysBounceVertical: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, the scroll view automatically centers the content when the
|
|
||||||
* content is smaller than the scroll view bounds; when the content is
|
|
||||||
* larger than the scroll view, this property has no effect. The default
|
|
||||||
* value is false.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
centerContent: PropTypes.bool,
|
centerContent: PropTypes.bool,
|
||||||
/**
|
|
||||||
* These styles will be applied to the scroll view content container which
|
|
||||||
* wraps all of the child views. Example:
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
* return (
|
|
||||||
* <ScrollView contentContainerStyle={styles.contentContainer}>
|
|
||||||
* </ScrollView>
|
|
||||||
* );
|
|
||||||
* ...
|
|
||||||
* const styles = StyleSheet.create({
|
|
||||||
* contentContainer: {
|
|
||||||
* paddingVertical: 20
|
|
||||||
* }
|
|
||||||
* });
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
contentContainerStyle: StyleSheetPropType(ViewStylePropTypes),
|
contentContainerStyle: StyleSheetPropType(ViewStylePropTypes),
|
||||||
/**
|
|
||||||
* A floating-point number that determines how quickly the scroll view
|
|
||||||
* decelerates after the user lifts their finger. You may also use string
|
|
||||||
* shortcuts `"normal"` and `"fast"` which match the underlying iOS settings
|
|
||||||
* for `UIScrollViewDecelerationRateNormal` and
|
|
||||||
* `UIScrollViewDecelerationRateFast` respectively.
|
|
||||||
*
|
|
||||||
* - `'normal'`: 0.998 (the default)
|
|
||||||
* - `'fast'`: 0.99
|
|
||||||
*
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
decelerationRate: PropTypes.oneOfType([
|
decelerationRate: PropTypes.oneOfType([
|
||||||
PropTypes.oneOf(['fast', 'normal']),
|
PropTypes.oneOf(['fast', 'normal']),
|
||||||
PropTypes.number,
|
PropTypes.number,
|
||||||
]),
|
]),
|
||||||
/**
|
|
||||||
* When true, the scroll view's children are arranged horizontally in a row
|
|
||||||
* instead of vertically in a column. The default value is false.
|
|
||||||
*/
|
|
||||||
horizontal: PropTypes.bool,
|
horizontal: PropTypes.bool,
|
||||||
/**
|
|
||||||
* The style of the scroll indicators.
|
|
||||||
*
|
|
||||||
* - `'default'` (the default), same as `black`.
|
|
||||||
* - `'black'`, scroll indicator is black. This style is good against a light background.
|
|
||||||
* - `'white'`, scroll indicator is white. This style is good against a dark background.
|
|
||||||
*
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
indicatorStyle: PropTypes.oneOf([
|
indicatorStyle: PropTypes.oneOf([
|
||||||
'default', // default
|
'default', // default
|
||||||
'black',
|
'black',
|
||||||
'white',
|
'white',
|
||||||
]),
|
]),
|
||||||
/**
|
|
||||||
* If sticky headers should stick at the bottom instead of the top of the
|
|
||||||
* ScrollView. This is usually used with inverted ScrollViews.
|
|
||||||
*/
|
|
||||||
invertStickyHeaders: PropTypes.bool,
|
invertStickyHeaders: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, the ScrollView will try to lock to only vertical or horizontal
|
|
||||||
* scrolling while dragging. The default value is false.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
directionalLockEnabled: PropTypes.bool,
|
directionalLockEnabled: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When false, once tracking starts, won't try to drag if the touch moves.
|
|
||||||
* The default value is true.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
canCancelContentTouches: PropTypes.bool,
|
canCancelContentTouches: PropTypes.bool,
|
||||||
/**
|
|
||||||
* Determines whether the keyboard gets dismissed in response to a drag.
|
|
||||||
*
|
|
||||||
* *Cross platform*
|
|
||||||
*
|
|
||||||
* - `'none'` (the default), drags do not dismiss the keyboard.
|
|
||||||
* - `'on-drag'`, the keyboard is dismissed when a drag begins.
|
|
||||||
*
|
|
||||||
* *iOS Only*
|
|
||||||
*
|
|
||||||
* - `'interactive'`, the keyboard is dismissed interactively with the drag and moves in
|
|
||||||
* synchrony with the touch; dragging upwards cancels the dismissal.
|
|
||||||
* On android this is not supported and it will have the same behavior as 'none'.
|
|
||||||
*/
|
|
||||||
keyboardDismissMode: PropTypes.oneOf([
|
keyboardDismissMode: PropTypes.oneOf([
|
||||||
'none', // default
|
'none', // default
|
||||||
'on-drag', // Cross-platform
|
'on-drag', // Cross-platform
|
||||||
'interactive', // iOS-only
|
'interactive', // iOS-only
|
||||||
]),
|
]),
|
||||||
/**
|
|
||||||
* Determines when the keyboard should stay visible after a tap.
|
|
||||||
*
|
|
||||||
* - `'never'` (the default), tapping outside of the focused text input when the keyboard
|
|
||||||
* is up dismisses the keyboard. When this happens, children won't receive the tap.
|
|
||||||
* - `'always'`, the keyboard will not dismiss automatically, and the scroll view will not
|
|
||||||
* catch taps, but children of the scroll view can catch taps.
|
|
||||||
* - `'handled'`, the keyboard will not dismiss automatically when the tap was handled by
|
|
||||||
* a children, (or captured by an ancestor).
|
|
||||||
* - `false`, deprecated, use 'never' instead
|
|
||||||
* - `true`, deprecated, use 'always' instead
|
|
||||||
*/
|
|
||||||
keyboardShouldPersistTaps: PropTypes.oneOf([
|
keyboardShouldPersistTaps: PropTypes.oneOf([
|
||||||
'always',
|
'always',
|
||||||
'never',
|
'never',
|
||||||
@ -360,257 +567,50 @@ const ScrollView = createReactClass({
|
|||||||
false,
|
false,
|
||||||
true,
|
true,
|
||||||
]),
|
]),
|
||||||
/**
|
|
||||||
* When set, the scroll view will adjust the scroll position so that the first child that is
|
|
||||||
* currently visible and at or beyond `minIndexForVisible` will not change position. This is
|
|
||||||
* useful for lists that are loading content in both directions, e.g. a chat thread, where new
|
|
||||||
* messages coming in might otherwise cause the scroll position to jump. A value of 0 is common,
|
|
||||||
* but other values such as 1 can be used to skip loading spinners or other content that should
|
|
||||||
* not maintain position.
|
|
||||||
*
|
|
||||||
* The optional `autoscrollToTopThreshold` can be used to make the content automatically scroll
|
|
||||||
* to the top after making the adjustment if the user was within the threshold of the top before
|
|
||||||
* the adjustment was made. This is also useful for chat-like applications where you want to see
|
|
||||||
* new messages scroll into place, but not if the user has scrolled up a ways and it would be
|
|
||||||
* disruptive to scroll a bunch.
|
|
||||||
*
|
|
||||||
* Caveat 1: Reordering elements in the scrollview with this enabled will probably cause
|
|
||||||
* jumpiness and jank. It can be fixed, but there are currently no plans to do so. For now,
|
|
||||||
* don't re-order the content of any ScrollViews or Lists that use this feature.
|
|
||||||
*
|
|
||||||
* Caveat 2: This simply uses `contentOffset` and `frame.origin` in native code to compute
|
|
||||||
* visibility. Occlusion, transforms, and other complexity won't be taken into account as to
|
|
||||||
* whether content is "visible" or not.
|
|
||||||
*
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
maintainVisibleContentPosition: PropTypes.shape({
|
maintainVisibleContentPosition: PropTypes.shape({
|
||||||
minIndexForVisible: PropTypes.number.isRequired,
|
minIndexForVisible: PropTypes.number.isRequired,
|
||||||
autoscrollToTopThreshold: PropTypes.number,
|
autoscrollToTopThreshold: PropTypes.number,
|
||||||
}),
|
}),
|
||||||
/**
|
|
||||||
* The maximum allowed zoom scale. The default value is 1.0.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
maximumZoomScale: PropTypes.number,
|
maximumZoomScale: PropTypes.number,
|
||||||
/**
|
|
||||||
* The minimum allowed zoom scale. The default value is 1.0.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
minimumZoomScale: PropTypes.number,
|
minimumZoomScale: PropTypes.number,
|
||||||
/**
|
|
||||||
* Enables nested scrolling for Android API level 21+.
|
|
||||||
* Nested scrolling is supported by default on iOS
|
|
||||||
* @platform android
|
|
||||||
*/
|
|
||||||
nestedScrollEnabled: PropTypes.bool,
|
nestedScrollEnabled: PropTypes.bool,
|
||||||
/**
|
|
||||||
* Called when the momentum scroll starts (scroll which occurs as the ScrollView glides to a stop).
|
|
||||||
*/
|
|
||||||
onMomentumScrollBegin: PropTypes.func,
|
onMomentumScrollBegin: PropTypes.func,
|
||||||
/**
|
|
||||||
* Called when the momentum scroll ends (scroll which occurs as the ScrollView glides to a stop).
|
|
||||||
*/
|
|
||||||
onMomentumScrollEnd: PropTypes.func,
|
onMomentumScrollEnd: PropTypes.func,
|
||||||
/**
|
|
||||||
* Fires at most once per frame during scrolling. The frequency of the
|
|
||||||
* events can be controlled using the `scrollEventThrottle` prop.
|
|
||||||
*/
|
|
||||||
onScroll: PropTypes.func,
|
onScroll: PropTypes.func,
|
||||||
/**
|
|
||||||
* Called when the user begins to drag the scroll view.
|
|
||||||
*/
|
|
||||||
onScrollBeginDrag: PropTypes.func,
|
onScrollBeginDrag: PropTypes.func,
|
||||||
/**
|
|
||||||
* Called when the user stops dragging the scroll view and it either stops
|
|
||||||
* or begins to glide.
|
|
||||||
*/
|
|
||||||
onScrollEndDrag: PropTypes.func,
|
onScrollEndDrag: PropTypes.func,
|
||||||
/**
|
|
||||||
* Called when scrollable content view of the ScrollView changes.
|
|
||||||
*
|
|
||||||
* Handler function is passed the content width and content height as parameters:
|
|
||||||
* `(contentWidth, contentHeight)`
|
|
||||||
*
|
|
||||||
* It's implemented using onLayout handler attached to the content container
|
|
||||||
* which this ScrollView renders.
|
|
||||||
*/
|
|
||||||
onContentSizeChange: PropTypes.func,
|
onContentSizeChange: PropTypes.func,
|
||||||
/**
|
|
||||||
* When true, the scroll view stops on multiples of the scroll view's size
|
|
||||||
* when scrolling. This can be used for horizontal pagination. The default
|
|
||||||
* value is false.
|
|
||||||
*
|
|
||||||
* Note: Vertical pagination is not supported on Android.
|
|
||||||
*/
|
|
||||||
pagingEnabled: PropTypes.bool,
|
pagingEnabled: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, ScrollView allows use of pinch gestures to zoom in and out.
|
|
||||||
* The default value is true.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
pinchGestureEnabled: PropTypes.bool,
|
pinchGestureEnabled: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When false, the view cannot be scrolled via touch interaction.
|
|
||||||
* The default value is true.
|
|
||||||
*
|
|
||||||
* Note that the view can always be scrolled by calling `scrollTo`.
|
|
||||||
*/
|
|
||||||
scrollEnabled: PropTypes.bool,
|
scrollEnabled: PropTypes.bool,
|
||||||
/**
|
|
||||||
* This controls how often the scroll event will be fired while scrolling
|
|
||||||
* (as a time interval in ms). A lower number yields better accuracy for code
|
|
||||||
* that is tracking the scroll position, but can lead to scroll performance
|
|
||||||
* problems due to the volume of information being send over the bridge.
|
|
||||||
* You will not notice a difference between values set between 1-16 as the
|
|
||||||
* JS run loop is synced to the screen refresh rate. If you do not need precise
|
|
||||||
* scroll position tracking, set this value higher to limit the information
|
|
||||||
* being sent across the bridge. The default value is zero, which results in
|
|
||||||
* the scroll event being sent only once each time the view is scrolled.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
scrollEventThrottle: PropTypes.number,
|
scrollEventThrottle: PropTypes.number,
|
||||||
/**
|
|
||||||
* The amount by which the scroll view indicators are inset from the edges
|
|
||||||
* of the scroll view. This should normally be set to the same value as
|
|
||||||
* the `contentInset`. Defaults to `{0, 0, 0, 0}`.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
scrollIndicatorInsets: EdgeInsetsPropType,
|
scrollIndicatorInsets: EdgeInsetsPropType,
|
||||||
/**
|
|
||||||
* When true, the scroll view scrolls to top when the status bar is tapped.
|
|
||||||
* The default value is true.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
scrollsToTop: PropTypes.bool,
|
scrollsToTop: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, shows a horizontal scroll indicator.
|
|
||||||
* The default value is true.
|
|
||||||
*/
|
|
||||||
showsHorizontalScrollIndicator: PropTypes.bool,
|
showsHorizontalScrollIndicator: PropTypes.bool,
|
||||||
/**
|
|
||||||
* When true, shows a vertical scroll indicator.
|
|
||||||
* The default value is true.
|
|
||||||
*/
|
|
||||||
showsVerticalScrollIndicator: PropTypes.bool,
|
showsVerticalScrollIndicator: PropTypes.bool,
|
||||||
/**
|
|
||||||
* An array of child indices determining which children get docked to the
|
|
||||||
* top of the screen when scrolling. For example, passing
|
|
||||||
* `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the
|
|
||||||
* top of the scroll view. This property is not supported in conjunction
|
|
||||||
* with `horizontal={true}`.
|
|
||||||
*/
|
|
||||||
stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number),
|
stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number),
|
||||||
/**
|
|
||||||
* When set, causes the scroll view to stop at multiples of the value of
|
|
||||||
* `snapToInterval`. This can be used for paginating through children
|
|
||||||
* that have lengths smaller than the scroll view. Typically used in
|
|
||||||
* combination with `snapToAlignment` and `decelerationRate="fast"` on ios.
|
|
||||||
* Overrides less configurable `pagingEnabled` prop.
|
|
||||||
*
|
|
||||||
* Supported for horizontal scrollview on android.
|
|
||||||
*/
|
|
||||||
snapToInterval: PropTypes.number,
|
snapToInterval: PropTypes.number,
|
||||||
/**
|
|
||||||
* When `snapToInterval` is set, `snapToAlignment` will define the relationship
|
|
||||||
* of the snapping to the scroll view.
|
|
||||||
*
|
|
||||||
* - `'start'` (the default) will align the snap at the left (horizontal) or top (vertical)
|
|
||||||
* - `'center'` will align the snap in the center
|
|
||||||
* - `'end'` will align the snap at the right (horizontal) or bottom (vertical)
|
|
||||||
*
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
snapToAlignment: PropTypes.oneOf([
|
snapToAlignment: PropTypes.oneOf([
|
||||||
'start', // default
|
'start', // default
|
||||||
'center',
|
'center',
|
||||||
'end',
|
'end',
|
||||||
]),
|
]),
|
||||||
/**
|
|
||||||
* Experimental: When true, offscreen child views (whose `overflow` value is
|
|
||||||
* `hidden`) are removed from their native backing superview when offscreen.
|
|
||||||
* This can improve scrolling performance on long lists. The default value is
|
|
||||||
* true.
|
|
||||||
*/
|
|
||||||
removeClippedSubviews: PropTypes.bool,
|
removeClippedSubviews: PropTypes.bool,
|
||||||
/**
|
|
||||||
* The current scale of the scroll view content. The default value is 1.0.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
zoomScale: PropTypes.number,
|
zoomScale: PropTypes.number,
|
||||||
/**
|
|
||||||
* This property specifies how the safe area insets are used to modify the
|
|
||||||
* content area of the scroll view. The default value of this property is
|
|
||||||
* "never". Available on iOS 11 and later.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
contentInsetAdjustmentBehavior: PropTypes.oneOf([
|
contentInsetAdjustmentBehavior: PropTypes.oneOf([
|
||||||
'automatic',
|
'automatic',
|
||||||
'scrollableAxes',
|
'scrollableAxes',
|
||||||
'never', // default
|
'never', // default
|
||||||
'always',
|
'always',
|
||||||
]),
|
]),
|
||||||
/**
|
|
||||||
* A RefreshControl component, used to provide pull-to-refresh
|
|
||||||
* functionality for the ScrollView. Only works for vertical ScrollViews
|
|
||||||
* (`horizontal` prop must be `false`).
|
|
||||||
*
|
|
||||||
* See [RefreshControl](docs/refreshcontrol.html).
|
|
||||||
*/
|
|
||||||
refreshControl: PropTypes.element,
|
refreshControl: PropTypes.element,
|
||||||
|
|
||||||
/**
|
|
||||||
* Sometimes a scrollview takes up more space than its content fills. When this is
|
|
||||||
* the case, this prop will fill the rest of the scrollview with a color to avoid setting
|
|
||||||
* a background and creating unnecessary overdraw. This is an advanced optimization
|
|
||||||
* that is not needed in the general case.
|
|
||||||
* @platform android
|
|
||||||
*/
|
|
||||||
endFillColor: ColorPropType,
|
endFillColor: ColorPropType,
|
||||||
|
|
||||||
/**
|
|
||||||
* Tag used to log scroll performance on this scroll view. Will force
|
|
||||||
* momentum events to be turned on (see sendMomentumEvents). This doesn't do
|
|
||||||
* anything out of the box and you need to implement a custom native
|
|
||||||
* FpsListener for it to be useful.
|
|
||||||
* @platform android
|
|
||||||
*/
|
|
||||||
scrollPerfTag: PropTypes.string,
|
scrollPerfTag: PropTypes.string,
|
||||||
|
|
||||||
/**
|
|
||||||
* Used to override default value of overScroll mode.
|
|
||||||
*
|
|
||||||
* Possible values:
|
|
||||||
*
|
|
||||||
* - `'auto'` - Default value, allow a user to over-scroll
|
|
||||||
* this view only if the content is large enough to meaningfully scroll.
|
|
||||||
* - `'always'` - Always allow a user to over-scroll this view.
|
|
||||||
* - `'never'` - Never allow a user to over-scroll this view.
|
|
||||||
*
|
|
||||||
* @platform android
|
|
||||||
*/
|
|
||||||
overScrollMode: PropTypes.oneOf(['auto', 'always', 'never']),
|
overScrollMode: PropTypes.oneOf(['auto', 'always', 'never']),
|
||||||
/**
|
|
||||||
* When true, ScrollView will emit updateChildFrames data in scroll events,
|
|
||||||
* otherwise will not compute or emit child frame data. This only exists
|
|
||||||
* to support legacy issues, `onLayout` should be used instead to retrieve
|
|
||||||
* frame data.
|
|
||||||
* The default value is false.
|
|
||||||
* @platform ios
|
|
||||||
*/
|
|
||||||
DEPRECATED_sendUpdatedChildFrames: PropTypes.bool,
|
DEPRECATED_sendUpdatedChildFrames: PropTypes.bool,
|
||||||
/**
|
|
||||||
* Optionally an image can be used for the scroll bar thumb. This will
|
|
||||||
* override the color. While the image is loading or the image fails to
|
|
||||||
* load the color will be used instead. Use an alpha of 0 in the color
|
|
||||||
* to avoid seeing it while the image is loading.
|
|
||||||
*
|
|
||||||
* - `uri` - a string representing the resource identifier for the image, which
|
|
||||||
* should be either a local file path or the name of a static image resource
|
|
||||||
* - `number` - Opaque type returned by something like
|
|
||||||
* `import IMAGE from './image.jpg'`.
|
|
||||||
* @platform vr
|
|
||||||
*/
|
|
||||||
scrollBarThumbImage: PropTypes.oneOfType([
|
scrollBarThumbImage: PropTypes.oneOfType([
|
||||||
PropTypes.shape({
|
PropTypes.shape({
|
||||||
uri: PropTypes.string,
|
uri: PropTypes.string,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user