1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | import type * as React from 'react';
|
11 | import {Constructor} from '../../../types/private/Utilities';
|
12 | import {Insets} from '../../../types/public/Insets';
|
13 | import {ColorValue, StyleProp} from '../../StyleSheet/StyleSheet';
|
14 | import {ViewStyle} from '../../StyleSheet/StyleSheetTypes';
|
15 | import {
|
16 | NativeSyntheticEvent,
|
17 | NativeTouchEvent,
|
18 | } from '../../Types/CoreEventTypes';
|
19 | import {RefreshControlProps} from '../RefreshControl/RefreshControl';
|
20 | import {Touchable} from '../Touchable/Touchable';
|
21 | import {ViewProps} from '../View/ViewPropTypes';
|
22 |
|
23 |
|
24 | export interface PointProp {
|
25 | x: number;
|
26 | y: number;
|
27 | }
|
28 |
|
29 | export interface ScrollResponderEvent
|
30 | extends NativeSyntheticEvent<NativeTouchEvent> {}
|
31 |
|
32 | interface SubscribableMixin {
|
33 | |
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 | addListenerOn(
|
47 | eventEmitter: any,
|
48 | eventType: string,
|
49 | listener: () => any,
|
50 | context: any,
|
51 | ): void;
|
52 | }
|
53 |
|
54 | interface ScrollResponderMixin extends SubscribableMixin {
|
55 | |
56 |
|
57 |
|
58 | scrollResponderHandleScrollShouldSetResponder(): boolean;
|
59 |
|
60 | |
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 | scrollResponderHandleStartShouldSetResponder(): boolean;
|
86 |
|
87 | |
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 | scrollResponderHandleStartShouldSetResponderCapture(
|
99 | e: ScrollResponderEvent,
|
100 | ): boolean;
|
101 |
|
102 | |
103 |
|
104 |
|
105 |
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 | scrollResponderHandleResponderReject(): any;
|
113 |
|
114 | |
115 |
|
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 |
|
123 |
|
124 |
|
125 |
|
126 |
|
127 |
|
128 |
|
129 | scrollResponderHandleTerminationRequest(): boolean;
|
130 |
|
131 | |
132 |
|
133 |
|
134 |
|
135 |
|
136 | scrollResponderHandleTouchEnd(e: ScrollResponderEvent): void;
|
137 |
|
138 | |
139 |
|
140 |
|
141 | scrollResponderHandleResponderRelease(e: ScrollResponderEvent): void;
|
142 |
|
143 | scrollResponderHandleScroll(e: ScrollResponderEvent): void;
|
144 |
|
145 | |
146 |
|
147 |
|
148 | scrollResponderHandleResponderGrant(e: ScrollResponderEvent): void;
|
149 |
|
150 | |
151 |
|
152 |
|
153 |
|
154 |
|
155 |
|
156 |
|
157 | scrollResponderHandleScrollBeginDrag(e: ScrollResponderEvent): void;
|
158 |
|
159 | |
160 |
|
161 |
|
162 | scrollResponderHandleScrollEndDrag(e: ScrollResponderEvent): void;
|
163 |
|
164 | |
165 |
|
166 |
|
167 | scrollResponderHandleMomentumScrollBegin(e: ScrollResponderEvent): void;
|
168 |
|
169 | |
170 |
|
171 |
|
172 | scrollResponderHandleMomentumScrollEnd(e: ScrollResponderEvent): void;
|
173 |
|
174 | |
175 |
|
176 |
|
177 |
|
178 |
|
179 |
|
180 |
|
181 |
|
182 |
|
183 |
|
184 |
|
185 | scrollResponderHandleTouchStart(e: ScrollResponderEvent): void;
|
186 |
|
187 | |
188 |
|
189 |
|
190 |
|
191 |
|
192 |
|
193 |
|
194 |
|
195 |
|
196 |
|
197 |
|
198 | scrollResponderHandleTouchMove(e: ScrollResponderEvent): void;
|
199 |
|
200 | |
201 |
|
202 |
|
203 |
|
204 |
|
205 | scrollResponderIsAnimating(): boolean;
|
206 |
|
207 | |
208 |
|
209 |
|
210 |
|
211 |
|
212 | scrollResponderGetScrollableNode(): any;
|
213 |
|
214 | |
215 |
|
216 |
|
217 |
|
218 |
|
219 |
|
220 |
|
221 |
|
222 |
|
223 |
|
224 |
|
225 | scrollResponderScrollTo(
|
226 | x?:
|
227 | | number
|
228 | | {
|
229 | x?: number | undefined;
|
230 | y?: number | undefined;
|
231 | animated?: boolean | undefined;
|
232 | },
|
233 | y?: number,
|
234 | animated?: boolean,
|
235 | ): void;
|
236 |
|
237 | |
238 |
|
239 |
|
240 |
|
241 |
|
242 |
|
243 | scrollResponderZoomTo(
|
244 | rect: {
|
245 | x: number;
|
246 | y: number;
|
247 | width: number;
|
248 | height: number;
|
249 | animated?: boolean | undefined;
|
250 | },
|
251 | animated?: boolean,
|
252 | ): void;
|
253 |
|
254 | |
255 |
|
256 |
|
257 |
|
258 |
|
259 |
|
260 |
|
261 |
|
262 |
|
263 |
|
264 | scrollResponderScrollNativeHandleToKeyboard(
|
265 | nodeHandle: any,
|
266 | additionalOffset?: number,
|
267 | preventNegativeScrollOffset?: boolean,
|
268 | ): void;
|
269 |
|
270 | |
271 |
|
272 |
|
273 |
|
274 |
|
275 |
|
276 |
|
277 |
|
278 |
|
279 |
|
280 | scrollResponderInputMeasureAndScrollToKeyboard(
|
281 | left: number,
|
282 | top: number,
|
283 | width: number,
|
284 | height: number,
|
285 | ): void;
|
286 |
|
287 | scrollResponderTextInputFocusError(e: ScrollResponderEvent): void;
|
288 |
|
289 | |
290 |
|
291 |
|
292 |
|
293 |
|
294 |
|
295 | componentWillMount(): void;
|
296 |
|
297 | |
298 |
|
299 |
|
300 |
|
301 |
|
302 |
|
303 |
|
304 |
|
305 |
|
306 |
|
307 |
|
308 |
|
309 |
|
310 |
|
311 |
|
312 |
|
313 |
|
314 |
|
315 |
|
316 |
|
317 |
|
318 |
|
319 |
|
320 |
|
321 |
|
322 |
|
323 |
|
324 |
|
325 | scrollResponderKeyboardWillShow(e: ScrollResponderEvent): void;
|
326 |
|
327 | scrollResponderKeyboardWillHide(e: ScrollResponderEvent): void;
|
328 |
|
329 | scrollResponderKeyboardDidShow(e: ScrollResponderEvent): void;
|
330 |
|
331 | scrollResponderKeyboardDidHide(e: ScrollResponderEvent): void;
|
332 | }
|
333 |
|
334 | export interface ScrollViewPropsIOS {
|
335 | |
336 |
|
337 |
|
338 |
|
339 |
|
340 | alwaysBounceHorizontal?: boolean | undefined;
|
341 | |
342 |
|
343 |
|
344 |
|
345 |
|
346 | alwaysBounceVertical?: boolean | undefined;
|
347 |
|
348 | |
349 |
|
350 |
|
351 |
|
352 | automaticallyAdjustContentInsets?: boolean | undefined;
|
353 |
|
354 | |
355 |
|
356 |
|
357 |
|
358 | automaticallyAdjustKeyboardInsets?: boolean | undefined;
|
359 |
|
360 | |
361 |
|
362 |
|
363 |
|
364 | automaticallyAdjustsScrollIndicatorInsets?: boolean | undefined;
|
365 |
|
366 | |
367 |
|
368 |
|
369 |
|
370 |
|
371 |
|
372 | bounces?: boolean | undefined;
|
373 | |
374 |
|
375 |
|
376 |
|
377 |
|
378 | bouncesZoom?: boolean | undefined;
|
379 |
|
380 | |
381 |
|
382 |
|
383 |
|
384 | canCancelContentTouches?: boolean | undefined;
|
385 |
|
386 | |
387 |
|
388 |
|
389 |
|
390 |
|
391 |
|
392 | centerContent?: boolean | undefined;
|
393 |
|
394 | |
395 |
|
396 |
|
397 |
|
398 | contentInset?: Insets | undefined;
|
399 |
|
400 | |
401 |
|
402 |
|
403 |
|
404 | contentOffset?: PointProp | undefined;
|
405 |
|
406 | |
407 |
|
408 |
|
409 |
|
410 | contentInsetAdjustmentBehavior?:
|
411 | | 'automatic'
|
412 | | 'scrollableAxes'
|
413 | | 'never'
|
414 | | 'always'
|
415 | | undefined;
|
416 |
|
417 | |
418 |
|
419 |
|
420 |
|
421 | directionalLockEnabled?: boolean | undefined;
|
422 |
|
423 | |
424 |
|
425 |
|
426 |
|
427 |
|
428 |
|
429 |
|
430 |
|
431 | indicatorStyle?: 'default' | 'black' | 'white' | undefined;
|
432 |
|
433 | |
434 |
|
435 |
|
436 |
|
437 |
|
438 |
|
439 |
|
440 |
|
441 |
|
442 |
|
443 |
|
444 |
|
445 |
|
446 |
|
447 |
|
448 |
|
449 |
|
450 |
|
451 |
|
452 |
|
453 |
|
454 |
|
455 | maintainVisibleContentPosition?:
|
456 | | null
|
457 | | {
|
458 | autoscrollToTopThreshold?: number | null | undefined;
|
459 | minIndexForVisible: number;
|
460 | }
|
461 | | undefined;
|
462 | |
463 |
|
464 |
|
465 | maximumZoomScale?: number | undefined;
|
466 |
|
467 | |
468 |
|
469 |
|
470 | minimumZoomScale?: number | undefined;
|
471 |
|
472 | |
473 |
|
474 |
|
475 | onScrollAnimationEnd?: (() => void) | undefined;
|
476 |
|
477 | /**
|
478 | * When true, ScrollView allows use of pinch gestures to zoom in and out.
|
479 | * The default value is true.
|
480 | */
|
481 | pinchGestureEnabled?: boolean | undefined;
|
482 |
|
483 | /**
|
484 | * Limits how often scroll events will be fired while scrolling, specified as
|
485 | * a time interval in ms. This may be useful when expensive work is performed
|
486 | * in response to scrolling. Values <= `16` will disable throttling,
|
487 | * regardless of the refresh rate of the device.
|
488 | */
|
489 | scrollEventThrottle?: number | undefined;
|
490 |
|
491 | /**
|
492 | * The amount by which the scroll view indicators are inset from the edges of the scroll view.
|
493 | * This should normally be set to the same value as the contentInset.
|
494 | * Defaults to {0, 0, 0, 0}.
|
495 | */
|
496 | scrollIndicatorInsets?: Insets | undefined; //zeroes
|
497 |
|
498 | /**
|
499 | * When true, the scroll view can be programmatically scrolled beyond its
|
500 | * content size. The default value is false.
|
501 | * @platform ios
|
502 | */
|
503 | scrollToOverflowEnabled?: boolean | undefined;
|
504 |
|
505 | /**
|
506 | * When true the scroll view scrolls to top when the status bar is tapped.
|
507 | * The default value is true.
|
508 | */
|
509 | scrollsToTop?: boolean | undefined;
|
510 |
|
511 | /**
|
512 | * When `snapToInterval` is set, `snapToAlignment` will define the relationship of the snapping to the scroll view.
|
513 | * - `start` (the default) will align the snap at the left (horizontal) or top (vertical)
|
514 | * - `center` will align the snap in the center
|
515 | * - `end` will align the snap at the right (horizontal) or bottom (vertical)
|
516 | */
|
517 | snapToAlignment?: 'start' | 'center' | 'end' | undefined;
|
518 |
|
519 | /**
|
520 | * Fires when the scroll view scrolls to top after the status bar has been tapped
|
521 | * @platform ios
|
522 | */
|
523 | onScrollToTop?:
|
524 | | ((event: NativeSyntheticEvent<NativeScrollEvent>) => void)
|
525 | | undefined;
|
526 |
|
527 | /**
|
528 | * The current scale of the scroll view content. The default value is 1.0.
|
529 | */
|
530 | zoomScale?: number | undefined;
|
531 | }
|
532 |
|
533 | export interface ScrollViewPropsAndroid {
|
534 | /**
|
535 | * Sometimes a scrollview takes up more space than its content fills.
|
536 | * When this is the case, this prop will fill the rest of the
|
537 | * scrollview with a color to avoid setting a background and creating
|
538 | * unnecessary overdraw. This is an advanced optimization that is not
|
539 | * needed in the general case.
|
540 | */
|
541 | endFillColor?: ColorValue | undefined;
|
542 |
|
543 | /**
|
544 | * Tag used to log scroll performance on this scroll view. Will force
|
545 | * momentum events to be turned on (see sendMomentumEvents). This doesn't do
|
546 | * anything out of the box and you need to implement a custom native
|
547 | * FpsListener for it to be useful.
|
548 | * @platform android
|
549 | */
|
550 | scrollPerfTag?: string | undefined;
|
551 |
|
552 | /**
|
553 | * Used to override default value of overScroll mode.
|
554 |
|
555 | * Possible values:
|
556 | * - 'auto' - Default value, allow a user to over-scroll this view only if the content is large enough to meaningfully scroll.
|
557 | * - 'always' - Always allow a user to over-scroll this view.
|
558 | * - 'never' - Never allow a user to over-scroll this view.
|
559 | */
|
560 | overScrollMode?: 'auto' | 'always' | 'never' | undefined;
|
561 |
|
562 | /**
|
563 | * Enables nested scrolling for Android API level 21+. Nested scrolling is supported by default on iOS.
|
564 | */
|
565 | nestedScrollEnabled?: boolean | undefined;
|
566 |
|
567 | /**
|
568 | * Fades out the edges of the scroll content.
|
569 | *
|
570 | * If the value is greater than 0, the fading edges will be set accordingly
|
571 | * to the current scroll direction and position,
|
572 | * indicating if there is more content to show.
|
573 | *
|
574 | * The default value is 0.
|
575 | * @platform android
|
576 | */
|
577 | fadingEdgeLength?: number | undefined;
|
578 |
|
579 | /**
|
580 | * Causes the scrollbars not to turn transparent when they are not in use. The default value is false.
|
581 | */
|
582 | persistentScrollbar?: boolean | undefined;
|
583 | }
|
584 |
|
585 | export interface ScrollViewProps
|
586 | extends ViewProps,
|
587 | ScrollViewPropsIOS,
|
588 | ScrollViewPropsAndroid,
|
589 | Touchable {
|
590 | /**
|
591 | * These styles will be applied to the scroll view content container which
|
592 | * wraps all of the child views. Example:
|
593 | *
|
594 | * return (
|
595 | * <ScrollView contentContainerStyle={styles.contentContainer}>
|
596 | * </ScrollView>
|
597 | * );
|
598 | * ...
|
599 | * const styles = StyleSheet.create({
|
600 | * contentContainer: {
|
601 | * paddingVertical: 20
|
602 | * }
|
603 | * });
|
604 | */
|
605 | contentContainerStyle?: StyleProp<ViewStyle> | undefined;
|
606 |
|
607 | /**
|
608 | * A floating-point number that determines how quickly the scroll view
|
609 | * decelerates after the user lifts their finger. You may also use string
|
610 | * shortcuts `"normal"` and `"fast"` which match the underlying iOS settings
|
611 | * for `UIScrollViewDecelerationRateNormal` and
|
612 | * `UIScrollViewDecelerationRateFast` respectively.
|
613 | *
|
614 | * - `'normal'`: 0.998 on iOS, 0.985 on Android (the default)
|
615 | * - `'fast'`: 0.99 on iOS, 0.9 on Android
|
616 | */
|
617 | decelerationRate?: 'fast' | 'normal' | number | undefined;
|
618 |
|
619 | /**
|
620 | * When true the scroll view's children are arranged horizontally in a row
|
621 | * instead of vertically in a column. The default value is false.
|
622 | */
|
623 | horizontal?: boolean | null | undefined;
|
624 |
|
625 | /**
|
626 | * If sticky headers should stick at the bottom instead of the top of the
|
627 | * ScrollView. This is usually used with inverted ScrollViews.
|
628 | */
|
629 | invertStickyHeaders?: boolean | undefined;
|
630 |
|
631 | /**
|
632 | * Determines whether the keyboard gets dismissed in response to a drag.
|
633 | * - 'none' (the default) drags do not dismiss the keyboard.
|
634 | * - 'onDrag' the keyboard is dismissed when a drag begins.
|
635 | * - 'interactive' the keyboard is dismissed interactively with the drag
|
636 | * and moves in synchrony with the touch; dragging upwards cancels the
|
637 | * dismissal.
|
638 | */
|
639 | keyboardDismissMode?: 'none' | 'interactive' | 'on-drag' | undefined;
|
640 |
|
641 | /**
|
642 | * Determines when the keyboard should stay visible after a tap.
|
643 | * - '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.
|
644 | * - 'always', the keyboard will not dismiss automatically, and the scroll view will not catch taps, but children of the scroll view can catch taps.
|
645 | * - 'handled', the keyboard will not dismiss automatically when the tap was handled by a children, (or captured by an ancestor).
|
646 | * - false, deprecated, use 'never' instead
|
647 | * - true, deprecated, use 'always' instead
|
648 | */
|
649 | keyboardShouldPersistTaps?:
|
650 | | boolean
|
651 | | 'always'
|
652 | | 'never'
|
653 | | 'handled'
|
654 | | undefined;
|
655 |
|
656 | /**
|
657 | * Called when scrollable content view of the ScrollView changes.
|
658 | * Handler function is passed the content width and content height as parameters: (contentWidth, contentHeight)
|
659 | * It's implemented using onLayout handler attached to the content container which this ScrollView renders.
|
660 | *
|
661 | */
|
662 | onContentSizeChange?: ((w: number, h: number) => void) | undefined;
|
663 |
|
664 | /**
|
665 | * Fires at most once per frame during scrolling.
|
666 | */
|
667 | onScroll?:
|
668 | | ((event: NativeSyntheticEvent<NativeScrollEvent>) => void)
|
669 | | undefined;
|
670 |
|
671 | /**
|
672 | * Fires if a user initiates a scroll gesture.
|
673 | */
|
674 | onScrollBeginDrag?:
|
675 | | ((event: NativeSyntheticEvent<NativeScrollEvent>) => void)
|
676 | | undefined;
|
677 |
|
678 | /**
|
679 | * Fires when a user has finished scrolling.
|
680 | */
|
681 | onScrollEndDrag?:
|
682 | | ((event: NativeSyntheticEvent<NativeScrollEvent>) => void)
|
683 | | undefined;
|
684 |
|
685 | /**
|
686 | * Fires when scroll view has finished moving
|
687 | */
|
688 | onMomentumScrollEnd?:
|
689 | | ((event: NativeSyntheticEvent<NativeScrollEvent>) => void)
|
690 | | undefined;
|
691 |
|
692 | /**
|
693 | * Fires when scroll view has begun moving
|
694 | */
|
695 | onMomentumScrollBegin?:
|
696 | | ((event: NativeSyntheticEvent<NativeScrollEvent>) => void)
|
697 | | undefined;
|
698 |
|
699 | /**
|
700 | * When true the scroll view stops on multiples of the scroll view's size
|
701 | * when scrolling. This can be used for horizontal pagination. The default
|
702 | * value is false.
|
703 | */
|
704 | pagingEnabled?: boolean | undefined;
|
705 |
|
706 | /**
|
707 | * When false, the content does not scroll. The default value is true
|
708 | */
|
709 | scrollEnabled?: boolean | undefined; // true
|
710 |
|
711 | /**
|
712 | * Experimental: When true offscreen child views (whose `overflow` value is
|
713 | * `hidden`) are removed from their native backing superview when offscreen.
|
714 | * This can improve scrolling performance on long lists. The default value is
|
715 | * false.
|
716 | */
|
717 | removeClippedSubviews?: boolean | undefined;
|
718 |
|
719 | /**
|
720 | * When true, shows a horizontal scroll indicator.
|
721 | */
|
722 | showsHorizontalScrollIndicator?: boolean | undefined;
|
723 |
|
724 | /**
|
725 | * When true, shows a vertical scroll indicator.
|
726 | */
|
727 | showsVerticalScrollIndicator?: boolean | undefined;
|
728 |
|
729 | /**
|
730 | * When true, Sticky header is hidden when scrolling down, and dock at the top when scrolling up.
|
731 | */
|
732 | stickyHeaderHiddenOnScroll?: boolean | undefined;
|
733 |
|
734 | /**
|
735 | * Style
|
736 | */
|
737 | style?: StyleProp<ViewStyle> | undefined;
|
738 |
|
739 | /**
|
740 | * A RefreshControl component, used to provide pull-to-refresh
|
741 | * functionality for the ScrollView.
|
742 | */
|
743 | refreshControl?: React.ReactElement<RefreshControlProps> | undefined;
|
744 |
|
745 | /**
|
746 | * When set, causes the scroll view to stop at multiples of the value of `snapToInterval`.
|
747 | * This can be used for paginating through children that have lengths smaller than the scroll view.
|
748 | * Used in combination with `snapToAlignment` and `decelerationRate="fast"`. Overrides less
|
749 | * configurable `pagingEnabled` prop.
|
750 | */
|
751 | snapToInterval?: number | undefined;
|
752 |
|
753 | /**
|
754 | * When set, causes the scroll view to stop at the defined offsets. This can be used for
|
755 | * paginating through variously sized children that have lengths smaller than the scroll view.
|
756 | * Typically used in combination with `decelerationRate="fast"`. Overrides less configurable
|
757 | * `pagingEnabled` and `snapToInterval` props.
|
758 | */
|
759 | snapToOffsets?: number[] | undefined;
|
760 |
|
761 | /**
|
762 | * Use in conjunction with `snapToOffsets`. By default, the beginning of the list counts as a
|
763 | * snap offset. Set `snapToStart` to false to disable this behavior and allow the list to scroll
|
764 | * freely between its start and the first `snapToOffsets` offset. The default value is true.
|
765 | */
|
766 | snapToStart?: boolean | undefined;
|
767 |
|
768 | /**
|
769 | * Use in conjunction with `snapToOffsets`. By default, the end of the list counts as a snap
|
770 | * offset. Set `snapToEnd` to false to disable this behavior and allow the list to scroll freely
|
771 | * between its end and the last `snapToOffsets` offset. The default value is true.
|
772 | */
|
773 | snapToEnd?: boolean | undefined;
|
774 |
|
775 | /**
|
776 | * An array of child indices determining which children get docked to the
|
777 | * top of the screen when scrolling. For example passing
|
778 | * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the
|
779 | * top of the scroll view. This property is not supported in conjunction
|
780 | * with `horizontal={true}`.
|
781 | */
|
782 | stickyHeaderIndices?: number[] | undefined;
|
783 |
|
784 | /**
|
785 | * When true, the scroll view stops on the next index (in relation to scroll position at release)
|
786 | * regardless of how fast the gesture is. This can be used for horizontal pagination when the page
|
787 | * is less than the width of the ScrollView. The default value is false.
|
788 | */
|
789 | disableIntervalMomentum?: boolean | undefined;
|
790 |
|
791 | /**
|
792 | * When true, the default JS pan responder on the ScrollView is disabled, and full control over
|
793 | * touches inside the ScrollView is left to its child components. This is particularly useful
|
794 | * if `snapToInterval` is enabled, since it does not follow typical touch patterns. Do not use
|
795 | * this on regular ScrollView use cases without `snapToInterval` as it may cause unexpected
|
796 | * touches to occur while scrolling. The default value is false.
|
797 | */
|
798 | disableScrollViewPanResponder?: boolean | undefined;
|
799 |
|
800 | /**
|
801 | * A React Component that will be used to render sticky headers, should be used together with
|
802 | * stickyHeaderIndices. You may need to set this component if your sticky header uses custom
|
803 | * transforms, for example, when you want your list to have an animated and hidable header.
|
804 | * If component have not been provided, the default ScrollViewStickyHeader component will be used.
|
805 | */
|
806 | StickyHeaderComponent?: React.ComponentType<any> | undefined;
|
807 | }
|
808 |
|
809 | declare class ScrollViewComponent extends React.Component<ScrollViewProps> {}
|
810 | export declare const ScrollViewBase: Constructor<ScrollResponderMixin> &
|
811 | typeof ScrollViewComponent;
|
812 | export class ScrollView extends ScrollViewBase {
|
813 | /**
|
814 | * Scrolls to a given x, y offset, either immediately or with a smooth animation.
|
815 | * Syntax:
|
816 | *
|
817 | * scrollTo(options: {x: number = 0; y: number = 0; animated: boolean = true})
|
818 | *
|
819 | * Note: The weird argument signature is due to the fact that, for historical reasons,
|
820 | * the function also accepts separate arguments as an alternative to the options object.
|
821 | * This is deprecated due to ambiguity (y before x), and SHOULD NOT BE USED.
|
822 | */
|
823 | scrollTo(
|
824 | y?:
|
825 | | number
|
826 | | {
|
827 | x?: number | undefined;
|
828 | y?: number | undefined;
|
829 | animated?: boolean | undefined;
|
830 | },
|
831 | deprecatedX?: number,
|
832 | deprecatedAnimated?: boolean,
|
833 | ): void;
|
834 |
|
835 | /**
|
836 | * A helper function that scrolls to the end of the scrollview;
|
837 | * If this is a vertical ScrollView, it scrolls to the bottom.
|
838 | * If this is a horizontal ScrollView scrolls to the right.
|
839 | *
|
840 | * The options object has an animated prop, that enables the scrolling animation or not.
|
841 | * The animated prop defaults to true
|
842 | */
|
843 | scrollToEnd(options?: {animated?: boolean | undefined}): void;
|
844 |
|
845 | /**
|
846 | * Displays the scroll indicators momentarily.
|
847 | */
|
848 | flashScrollIndicators(): void;
|
849 |
|
850 | /**
|
851 | * Returns a reference to the underlying scroll responder, which supports
|
852 | * operations like `scrollTo`. All ScrollView-like components should
|
853 | * implement this method so that they can be composed while providing access
|
854 | * to the underlying scroll responder's methods.
|
855 | */
|
856 | getScrollResponder(): ScrollResponderMixin;
|
857 |
|
858 | getScrollableNode(): any;
|
859 |
|
860 | // Undocumented
|
861 | getInnerViewNode(): any;
|
862 |
|
863 | /**
|
864 | * @deprecated Use scrollTo instead
|
865 | */
|
866 | scrollWithoutAnimationTo?: ((y: number, x: number) => void) | undefined;
|
867 |
|
868 | /**
|
869 | * This function sends props straight to native. They will not participate in
|
870 | * future diff process - this means that if you do not include them in the
|
871 | * next render, they will remain active (see [Direct
|
872 | * Manipulation](https:
|
873 | */
|
874 | setNativeProps(nativeProps: object): void;
|
875 | }
|
876 |
|
877 | export interface NativeScrollRectangle {
|
878 | left: number;
|
879 | top: number;
|
880 | bottom: number;
|
881 | right: number;
|
882 | }
|
883 |
|
884 | export interface NativeScrollPoint {
|
885 | x: number;
|
886 | y: number;
|
887 | }
|
888 |
|
889 | export interface NativeScrollVelocity {
|
890 | x: number;
|
891 | y: number;
|
892 | }
|
893 |
|
894 | export interface NativeScrollSize {
|
895 | height: number;
|
896 | width: number;
|
897 | }
|
898 |
|
899 | export interface NativeScrollEvent {
|
900 | contentInset: NativeScrollRectangle;
|
901 | contentOffset: NativeScrollPoint;
|
902 | contentSize: NativeScrollSize;
|
903 | layoutMeasurement: NativeScrollSize;
|
904 | velocity?: NativeScrollVelocity | undefined;
|
905 | zoomScale: number;
|
906 | |
907 |
|
908 |
|
909 | targetContentOffset?: NativeScrollPoint | undefined;
|
910 | }
|
911 |
|
\ | No newline at end of file |