@lodev09/react-native-true-sheet 4.0.0-beta.2 → 4.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContainerView.kt +28 -4
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentView.kt +206 -149
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetContentViewManager.kt +5 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetFooterView.kt +6 -17
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +73 -13
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +101 -18
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewManager.kt +25 -1
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetCoordinatorLayout.kt +3 -3
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetDetentCalculator.kt +14 -24
- package/android/src/main/java/com/lodev09/truesheet/utils/ViewUtils.kt +0 -7
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewShadowNode.cpp +50 -4
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewShadowNode.h +7 -0
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewState.cpp +2 -1
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetContentViewState.h +11 -3
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetFooterViewShadowNode.cpp +7 -0
- package/ios/TrueSheetContainerView.h +18 -5
- package/ios/TrueSheetContainerView.mm +10 -6
- package/ios/TrueSheetContentView.h +31 -10
- package/ios/TrueSheetContentView.mm +137 -162
- package/ios/TrueSheetFooterView.h +6 -0
- package/ios/TrueSheetFooterView.mm +48 -2
- package/ios/TrueSheetView.mm +95 -21
- package/ios/TrueSheetViewController.h +9 -0
- package/ios/TrueSheetViewController.mm +108 -25
- package/ios/utils/UIView+ScrollEdgeInteraction.h +1 -0
- package/ios/utils/UIView+ScrollEdgeInteraction.mm +24 -2
- package/lib/module/TrueSheet.js +77 -11
- package/lib/module/TrueSheet.js.map +1 -1
- package/lib/module/TrueSheet.web.js +26 -24
- package/lib/module/TrueSheet.web.js.map +1 -1
- package/lib/module/fabric/TrueSheetContentViewNativeComponent.ts +1 -1
- package/lib/module/fabric/TrueSheetViewNativeComponent.ts +4 -0
- package/lib/typescript/src/TrueSheet.d.ts +4 -0
- package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
- package/lib/typescript/src/TrueSheet.types.d.ts +50 -1
- package/lib/typescript/src/TrueSheet.types.d.ts.map +1 -1
- package/lib/typescript/src/TrueSheet.web.d.ts.map +1 -1
- package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts +3 -0
- package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/navigation/types.d.ts +1 -1
- package/lib/typescript/src/navigation/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TrueSheet.tsx +78 -9
- package/src/TrueSheet.types.ts +53 -1
- package/src/TrueSheet.web.tsx +37 -23
- package/src/fabric/TrueSheetContentViewNativeComponent.ts +1 -1
- package/src/fabric/TrueSheetViewNativeComponent.ts +4 -0
- package/src/navigation/types.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheet.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAGb,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"TrueSheet.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentType, ReactElement } from 'react';
|
|
1
|
+
import type { Component, ComponentType, ReactElement, RefObject } from 'react';
|
|
2
2
|
import type { ColorValue, NativeSyntheticEvent, StyleProp, ViewProps, ViewStyle } from 'react-native';
|
|
3
3
|
export interface DetentInfoEventPayload {
|
|
4
4
|
/**
|
|
@@ -152,12 +152,44 @@ export type ScrollEdgeEffect = 'automatic' | 'hard' | 'soft' | 'hidden';
|
|
|
152
152
|
* Options for scrollable behavior.
|
|
153
153
|
*/
|
|
154
154
|
export interface ScrollableOptions {
|
|
155
|
+
/**
|
|
156
|
+
* Applies the bottom safe-area inset to the scroll content automatically
|
|
157
|
+
* while the content can scroll, so the last item clears the home indicator
|
|
158
|
+
* (iOS) and navigation bar (Android).
|
|
159
|
+
*
|
|
160
|
+
* - **iOS**: Sets the scroll view's native
|
|
161
|
+
* [`contentInsetAdjustmentBehavior`](https://developer.apple.com/documentation/uikit/uiscrollview/contentinsetadjustmentbehavior)
|
|
162
|
+
* to `automatic` while it's plugged into the sheet — no need to set React
|
|
163
|
+
* Native's iOS-only prop yourself.
|
|
164
|
+
* - **Android**: Pads the scroll content with the bottom window inset,
|
|
165
|
+
* mirroring iOS's `automatic` behavior — parity React Native's iOS-only
|
|
166
|
+
* prop can't provide.
|
|
167
|
+
* - **Web**: Lifts the content above the safe area
|
|
168
|
+
* (`env(safe-area-inset-bottom)`).
|
|
169
|
+
*
|
|
170
|
+
* Only applies while the sheet's `insetAdjustment` is `'automatic'`. When
|
|
171
|
+
* the sheet has a relative footer, the footer absorbs the inset instead.
|
|
172
|
+
*
|
|
173
|
+
* @default true
|
|
174
|
+
*/
|
|
175
|
+
contentInsetAdjustmentBehavior?: boolean;
|
|
155
176
|
/**
|
|
156
177
|
* Extra offset when scrolling to the focused input when keyboard appears.
|
|
157
178
|
*
|
|
158
179
|
* @default 0
|
|
159
180
|
*/
|
|
160
181
|
keyboardScrollOffset?: number;
|
|
182
|
+
/**
|
|
183
|
+
* Adjusts the bottom inset applied to the scrollable when the keyboard is shown.
|
|
184
|
+
* Positive values increase the inset; negative values reduce it.
|
|
185
|
+
* Pass `-insets.bottom` to cancel out safe-area padding already included in
|
|
186
|
+
* the content's `paddingBottom`.
|
|
187
|
+
* Does not affect the auto scroll of the focused input — it always targets
|
|
188
|
+
* the keyboard edge.
|
|
189
|
+
*
|
|
190
|
+
* @default 0
|
|
191
|
+
*/
|
|
192
|
+
keyboardOffset?: number;
|
|
161
193
|
/**
|
|
162
194
|
* Whether scrolling the content expands the sheet to the next detent.
|
|
163
195
|
* When `false`, only the grabber can expand the sheet.
|
|
@@ -495,8 +527,25 @@ export interface TrueSheetProps extends ViewProps {
|
|
|
495
527
|
* Style for the footer container.
|
|
496
528
|
*/
|
|
497
529
|
footerStyle?: StyleProp<ViewStyle>;
|
|
530
|
+
/**
|
|
531
|
+
* A ref to the scrollable component (e.g. `ScrollView`, `FlatList`)
|
|
532
|
+
* rendered within the sheet content.
|
|
533
|
+
* Required for scrollable handling — nested scrolling, keyboard insets,
|
|
534
|
+
* and `auto` detent sizing are wired to this scrollable.
|
|
535
|
+
*
|
|
536
|
+
* Example:
|
|
537
|
+
* ```tsx
|
|
538
|
+
* const scrollableRef = useRef<ScrollView>(null)
|
|
539
|
+
*
|
|
540
|
+
* <TrueSheet scrollableRef={scrollableRef}>
|
|
541
|
+
* <ScrollView ref={scrollableRef} />
|
|
542
|
+
* </TrueSheet>
|
|
543
|
+
* ```
|
|
544
|
+
*/
|
|
545
|
+
scrollableRef?: RefObject<Component<unknown> | null>;
|
|
498
546
|
/**
|
|
499
547
|
* Options for scrollable behavior.
|
|
548
|
+
* Applies to the scrollable provided via `scrollableRef`.
|
|
500
549
|
*/
|
|
501
550
|
scrollableOptions?: ScrollableOptions;
|
|
502
551
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheet.types.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TrueSheet.types.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheet.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.web.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAaV,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AAiC3B,QAAA,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"TrueSheet.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.web.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAaV,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AAiC3B,QAAA,MAAM,kBAAkB,6GA2tCtB,CAAC;AAsDH,eAAO,MAAM,SAAS,EAAyB,OAAO,kBAAkB,GAAG,sBAAsB,CAAC"}
|
|
@@ -24,7 +24,9 @@ type BlurOptionsType = Readonly<{
|
|
|
24
24
|
}>;
|
|
25
25
|
type ScrollEdgeEffect = 'automatic' | 'hard' | 'soft' | 'hidden';
|
|
26
26
|
type ScrollableOptionsType = Readonly<{
|
|
27
|
+
contentInsetAdjustmentBehavior?: WithDefault<boolean, true>;
|
|
27
28
|
keyboardScrollOffset?: WithDefault<Double, 0>;
|
|
29
|
+
keyboardOffset?: WithDefault<Double, 0>;
|
|
28
30
|
scrollingExpandsSheet?: WithDefault<boolean, true>;
|
|
29
31
|
topScrollEdgeEffect?: WithDefault<ScrollEdgeEffect, 'hidden'>;
|
|
30
32
|
bottomScrollEdgeEffect?: WithDefault<ScrollEdgeEffect, 'hidden'>;
|
|
@@ -68,6 +70,7 @@ export interface NativeProps extends ViewProps {
|
|
|
68
70
|
draggable?: WithDefault<boolean, true>;
|
|
69
71
|
dimmed?: WithDefault<boolean, true>;
|
|
70
72
|
initialDetentAnimated?: WithDefault<boolean, true>;
|
|
73
|
+
scrollableHandle?: WithDefault<Int32, -1>;
|
|
71
74
|
scrollableOptions?: ScrollableOptionsType;
|
|
72
75
|
headerOptions?: HeaderOptionsType;
|
|
73
76
|
footerOptions?: FooterOptionsType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrueSheetViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/fabric/TrueSheetViewNativeComponent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TrueSheetViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/fabric/TrueSheetViewNativeComponent.ts"],"names":[],"mappings":"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"}
|
|
@@ -125,7 +125,7 @@ export type TrueSheetScreenProps<ParamList extends ParamListBase, RouteName exte
|
|
|
125
125
|
route: RouteProp<ParamList, RouteName>;
|
|
126
126
|
};
|
|
127
127
|
export type TrueSheetNavigationHelpers = NavigationHelpers<ParamListBase, TrueSheetNavigationEventMap>;
|
|
128
|
-
export type TrueSheetNavigationSheetProps = Pick<TrueSheetProps, 'detents' | 'backgroundColor' | 'cornerRadius' | 'dismissible' | 'draggable' | 'grabber' | 'grabberOptions' | 'accessibilityOptions' | 'dimmed' | 'dimmedDetentIndex' | 'backgroundBlur' | 'blurOptions' | 'maxContentHeight' | 'maxContentWidth' | 'presentation' | 'style' | 'header' | 'headerStyle' | 'headerOptions' | 'footer' | 'footerStyle' | 'footerOptions' | 'scrollableOptions' | 'insetAdjustment' | 'anchor' | 'anchorOffset' | 'elevation' | 'detached' | 'detachedOffset'>;
|
|
128
|
+
export type TrueSheetNavigationSheetProps = Pick<TrueSheetProps, 'detents' | 'backgroundColor' | 'cornerRadius' | 'dismissible' | 'draggable' | 'grabber' | 'grabberOptions' | 'accessibilityOptions' | 'dimmed' | 'dimmedDetentIndex' | 'backgroundBlur' | 'blurOptions' | 'maxContentHeight' | 'maxContentWidth' | 'presentation' | 'style' | 'header' | 'headerStyle' | 'headerOptions' | 'footer' | 'footerStyle' | 'footerOptions' | 'scrollableRef' | 'scrollableOptions' | 'insetAdjustment' | 'anchor' | 'anchorOffset' | 'elevation' | 'detached' | 'detachedOffset'>;
|
|
129
129
|
/**
|
|
130
130
|
* Screen options for TrueSheet navigator screens.
|
|
131
131
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/navigation/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/navigation/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/TrueSheet.tsx
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
type ComponentRef,
|
|
7
7
|
isValidElement,
|
|
8
8
|
createElement,
|
|
9
|
+
useEffect,
|
|
9
10
|
} from 'react';
|
|
10
11
|
|
|
11
12
|
import type {
|
|
@@ -58,17 +59,41 @@ if (!TrueSheetModule) {
|
|
|
58
59
|
|
|
59
60
|
type NativeRef = ComponentRef<typeof TrueSheetViewNativeComponent>;
|
|
60
61
|
|
|
61
|
-
// Claim touches that no descendant claimed so the responder negotiation
|
|
62
|
-
// doesn't bubble up to touchables outside the sheet
|
|
63
|
-
const absorbUnclaimedTouches = () => true;
|
|
64
|
-
|
|
65
62
|
// Stop raw touch events from bubbling past the sheet to outside ancestors
|
|
66
63
|
const stopTouchPropagation = (event: GestureResponderEvent) => event.stopPropagation();
|
|
67
64
|
|
|
65
|
+
// Stop the responder negotiation at the sheet boundary without claiming the
|
|
66
|
+
// responder. Views inside the sheet are asked before this one, so in-sheet
|
|
67
|
+
// touchables work normally; views outside are asked after, so stopping here
|
|
68
|
+
// keeps unclaimed touches from leaking to touchables behind the sheet.
|
|
69
|
+
// Claiming instead (returning true) would steal the responder from a pressed
|
|
70
|
+
// touchable whenever the negotiation re-runs mid-gesture — e.g. a second
|
|
71
|
+
// finger, or the duplicate touch stream from a nested react-native-screens
|
|
72
|
+
// screen that attaches its own touch handler inside the sheet.
|
|
73
|
+
const stopResponderNegotiation = (event: GestureResponderEvent) => {
|
|
74
|
+
event.stopPropagation();
|
|
75
|
+
return false;
|
|
76
|
+
};
|
|
77
|
+
|
|
68
78
|
interface TrueSheetState {
|
|
69
79
|
shouldRenderNativeView: boolean;
|
|
80
|
+
initialPresentReady: boolean;
|
|
81
|
+
scrollableHandle: number | null;
|
|
70
82
|
}
|
|
71
83
|
|
|
84
|
+
// Gates auto-present (initialDetentIndex) by one commit. Rendered last in the
|
|
85
|
+
// sheet subtree so its mount effect runs after the content's mount effects —
|
|
86
|
+
// updates they schedule (e.g. a navigation footer via setOptions) batch with
|
|
87
|
+
// onReady's, so native receives initialDetentIndex together with the settled
|
|
88
|
+
// tree and presents at the final height instead of resizing mid-flight.
|
|
89
|
+
const InitialPresentGate = ({ onReady }: { onReady: () => void }) => {
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
onReady();
|
|
92
|
+
}, [onReady]);
|
|
93
|
+
|
|
94
|
+
return null;
|
|
95
|
+
};
|
|
96
|
+
|
|
72
97
|
export class TrueSheet
|
|
73
98
|
extends PureComponent<TrueSheetProps, TrueSheetState>
|
|
74
99
|
implements TrueSheetMethods
|
|
@@ -111,6 +136,8 @@ export class TrueSheet
|
|
|
111
136
|
|
|
112
137
|
this.state = {
|
|
113
138
|
shouldRenderNativeView: shouldRenderImmediately,
|
|
139
|
+
initialPresentReady: false,
|
|
140
|
+
scrollableHandle: null,
|
|
114
141
|
};
|
|
115
142
|
|
|
116
143
|
this.onMount = this.onMount.bind(this);
|
|
@@ -129,6 +156,22 @@ export class TrueSheet
|
|
|
129
156
|
this.onDidBlur = this.onDidBlur.bind(this);
|
|
130
157
|
this.handleBackPress = this.handleBackPress.bind(this);
|
|
131
158
|
this.onVisibilityChange = this.onVisibilityChange.bind(this);
|
|
159
|
+
this.onInitialPresentReady = this.onInitialPresentReady.bind(this);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
private onInitialPresentReady(): void {
|
|
163
|
+
this.setState({ initialPresentReady: true });
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Resolves after commit (didMount/didUpdate) — the scrollable mounts with the
|
|
167
|
+
// sheet content, so its ref is only populated once the native tree renders.
|
|
168
|
+
private updateScrollableHandle(): void {
|
|
169
|
+
const { scrollableRef } = this.props;
|
|
170
|
+
const scrollableHandle = scrollableRef?.current ? findNodeHandle(scrollableRef.current) : null;
|
|
171
|
+
|
|
172
|
+
if (scrollableHandle !== this.state.scrollableHandle) {
|
|
173
|
+
this.setState({ scrollableHandle });
|
|
174
|
+
}
|
|
132
175
|
}
|
|
133
176
|
|
|
134
177
|
private validateDetents(): void {
|
|
@@ -434,15 +477,30 @@ export class TrueSheet
|
|
|
434
477
|
|
|
435
478
|
componentDidMount(): void {
|
|
436
479
|
this.registerInstance();
|
|
480
|
+
this.updateScrollableHandle();
|
|
437
481
|
}
|
|
438
482
|
|
|
439
483
|
componentDidUpdate(prevProps: TrueSheetProps): void {
|
|
440
484
|
this.registerInstance();
|
|
485
|
+
this.updateScrollableHandle();
|
|
441
486
|
|
|
442
487
|
// Validate when detents prop changes
|
|
443
488
|
if (prevProps.detents !== this.props.detents) {
|
|
444
489
|
this.validateDetents();
|
|
445
490
|
}
|
|
491
|
+
|
|
492
|
+
// initialDetentIndex set at runtime on a lazily-mounted sheet: render the
|
|
493
|
+
// native tree so InitialPresentGate can deliver the index (constructor
|
|
494
|
+
// only computes this for the initial prop).
|
|
495
|
+
const prevInitialDetentIndex = prevProps.initialDetentIndex ?? -1;
|
|
496
|
+
const initialDetentIndex = this.props.initialDetentIndex ?? -1;
|
|
497
|
+
if (
|
|
498
|
+
prevInitialDetentIndex < 0 &&
|
|
499
|
+
initialDetentIndex >= 0 &&
|
|
500
|
+
!this.state.shouldRenderNativeView
|
|
501
|
+
) {
|
|
502
|
+
this.setState({ shouldRenderNativeView: true });
|
|
503
|
+
}
|
|
446
504
|
}
|
|
447
505
|
|
|
448
506
|
componentWillUnmount(): void {
|
|
@@ -498,6 +556,12 @@ export class TrueSheet
|
|
|
498
556
|
return Math.min(1, detent);
|
|
499
557
|
});
|
|
500
558
|
|
|
559
|
+
// Hold initialDetentIndex back from native until the gate's effect flushes
|
|
560
|
+
// (see InitialPresentGate) — native presents when the prop lands.
|
|
561
|
+
const autoPresent = initialDetentIndex >= 0;
|
|
562
|
+
const gatedInitialDetentIndex =
|
|
563
|
+
autoPresent && !this.state.initialPresentReady ? -1 : initialDetentIndex;
|
|
564
|
+
|
|
501
565
|
// Cache grabberOptions to avoid creating a new object every render
|
|
502
566
|
if (grabberOptions !== this.cachedGrabberOptions) {
|
|
503
567
|
this.cachedGrabberOptions = grabberOptions;
|
|
@@ -522,7 +586,7 @@ export class TrueSheet
|
|
|
522
586
|
accessibilityOptions={accessibilityOptions}
|
|
523
587
|
dimmed={dimmed}
|
|
524
588
|
dimmedDetentIndex={dimmedDetentIndex}
|
|
525
|
-
initialDetentIndex={
|
|
589
|
+
initialDetentIndex={gatedInitialDetentIndex}
|
|
526
590
|
initialDetentAnimated={initialDetentAnimated}
|
|
527
591
|
dismissible={dismissible}
|
|
528
592
|
draggable={draggable}
|
|
@@ -530,6 +594,7 @@ export class TrueSheet
|
|
|
530
594
|
maxContentWidth={maxContentWidth}
|
|
531
595
|
anchor={anchor}
|
|
532
596
|
anchorOffset={anchorOffset}
|
|
597
|
+
scrollableHandle={this.state.scrollableHandle ?? -1}
|
|
533
598
|
scrollableOptions={scrollableOptions}
|
|
534
599
|
headerOptions={headerOptions}
|
|
535
600
|
footerOptions={{
|
|
@@ -555,10 +620,11 @@ export class TrueSheet
|
|
|
555
620
|
onVisibilityChange={this.onVisibilityChange}
|
|
556
621
|
// These must stay on this host view, not on the container. The container is
|
|
557
622
|
// reparented into the native sheet, so this view is never a native ancestor of
|
|
558
|
-
// the sheet content
|
|
559
|
-
//
|
|
560
|
-
//
|
|
561
|
-
onStartShouldSetResponder={
|
|
623
|
+
// the sheet content — this is the React-tree boundary between the sheet and
|
|
624
|
+
// the presenting screen, where both the responder negotiation and raw touch
|
|
625
|
+
// bubbling must stop.
|
|
626
|
+
onStartShouldSetResponder={stopResponderNegotiation}
|
|
627
|
+
onMoveShouldSetResponder={stopResponderNegotiation}
|
|
562
628
|
onTouchStart={stopTouchPropagation}
|
|
563
629
|
onTouchMove={stopTouchPropagation}
|
|
564
630
|
onTouchEnd={stopTouchPropagation}
|
|
@@ -594,6 +660,9 @@ export class TrueSheet
|
|
|
594
660
|
{isValidElement(footer) ? footer : createElement(footer)}
|
|
595
661
|
</TrueSheetFooterViewNativeComponent>
|
|
596
662
|
)}
|
|
663
|
+
{autoPresent && !this.state.initialPresentReady && (
|
|
664
|
+
<InitialPresentGate onReady={this.onInitialPresentReady} />
|
|
665
|
+
)}
|
|
597
666
|
</TrueSheetContainerViewNativeComponent>
|
|
598
667
|
)}
|
|
599
668
|
</TrueSheetViewNativeComponent>
|
package/src/TrueSheet.types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ComponentType, ReactElement } from 'react';
|
|
1
|
+
import type { Component, ComponentType, ReactElement, RefObject } from 'react';
|
|
2
2
|
import type {
|
|
3
3
|
ColorValue,
|
|
4
4
|
NativeSyntheticEvent,
|
|
@@ -165,6 +165,28 @@ export type ScrollEdgeEffect = 'automatic' | 'hard' | 'soft' | 'hidden';
|
|
|
165
165
|
* Options for scrollable behavior.
|
|
166
166
|
*/
|
|
167
167
|
export interface ScrollableOptions {
|
|
168
|
+
/**
|
|
169
|
+
* Applies the bottom safe-area inset to the scroll content automatically
|
|
170
|
+
* while the content can scroll, so the last item clears the home indicator
|
|
171
|
+
* (iOS) and navigation bar (Android).
|
|
172
|
+
*
|
|
173
|
+
* - **iOS**: Sets the scroll view's native
|
|
174
|
+
* [`contentInsetAdjustmentBehavior`](https://developer.apple.com/documentation/uikit/uiscrollview/contentinsetadjustmentbehavior)
|
|
175
|
+
* to `automatic` while it's plugged into the sheet — no need to set React
|
|
176
|
+
* Native's iOS-only prop yourself.
|
|
177
|
+
* - **Android**: Pads the scroll content with the bottom window inset,
|
|
178
|
+
* mirroring iOS's `automatic` behavior — parity React Native's iOS-only
|
|
179
|
+
* prop can't provide.
|
|
180
|
+
* - **Web**: Lifts the content above the safe area
|
|
181
|
+
* (`env(safe-area-inset-bottom)`).
|
|
182
|
+
*
|
|
183
|
+
* Only applies while the sheet's `insetAdjustment` is `'automatic'`. When
|
|
184
|
+
* the sheet has a relative footer, the footer absorbs the inset instead.
|
|
185
|
+
*
|
|
186
|
+
* @default true
|
|
187
|
+
*/
|
|
188
|
+
contentInsetAdjustmentBehavior?: boolean;
|
|
189
|
+
|
|
168
190
|
/**
|
|
169
191
|
* Extra offset when scrolling to the focused input when keyboard appears.
|
|
170
192
|
*
|
|
@@ -172,6 +194,18 @@ export interface ScrollableOptions {
|
|
|
172
194
|
*/
|
|
173
195
|
keyboardScrollOffset?: number;
|
|
174
196
|
|
|
197
|
+
/**
|
|
198
|
+
* Adjusts the bottom inset applied to the scrollable when the keyboard is shown.
|
|
199
|
+
* Positive values increase the inset; negative values reduce it.
|
|
200
|
+
* Pass `-insets.bottom` to cancel out safe-area padding already included in
|
|
201
|
+
* the content's `paddingBottom`.
|
|
202
|
+
* Does not affect the auto scroll of the focused input — it always targets
|
|
203
|
+
* the keyboard edge.
|
|
204
|
+
*
|
|
205
|
+
* @default 0
|
|
206
|
+
*/
|
|
207
|
+
keyboardOffset?: number;
|
|
208
|
+
|
|
175
209
|
/**
|
|
176
210
|
* Whether scrolling the content expands the sheet to the next detent.
|
|
177
211
|
* When `false`, only the grabber can expand the sheet.
|
|
@@ -568,8 +602,26 @@ export interface TrueSheetProps extends ViewProps {
|
|
|
568
602
|
*/
|
|
569
603
|
footerStyle?: StyleProp<ViewStyle>;
|
|
570
604
|
|
|
605
|
+
/**
|
|
606
|
+
* A ref to the scrollable component (e.g. `ScrollView`, `FlatList`)
|
|
607
|
+
* rendered within the sheet content.
|
|
608
|
+
* Required for scrollable handling — nested scrolling, keyboard insets,
|
|
609
|
+
* and `auto` detent sizing are wired to this scrollable.
|
|
610
|
+
*
|
|
611
|
+
* Example:
|
|
612
|
+
* ```tsx
|
|
613
|
+
* const scrollableRef = useRef<ScrollView>(null)
|
|
614
|
+
*
|
|
615
|
+
* <TrueSheet scrollableRef={scrollableRef}>
|
|
616
|
+
* <ScrollView ref={scrollableRef} />
|
|
617
|
+
* </TrueSheet>
|
|
618
|
+
* ```
|
|
619
|
+
*/
|
|
620
|
+
scrollableRef?: RefObject<Component<unknown> | null>;
|
|
621
|
+
|
|
571
622
|
/**
|
|
572
623
|
* Options for scrollable behavior.
|
|
624
|
+
* Applies to the scrollable provided via `scrollableRef`.
|
|
573
625
|
*/
|
|
574
626
|
scrollableOptions?: ScrollableOptions;
|
|
575
627
|
|
package/src/TrueSheet.web.tsx
CHANGED
|
@@ -55,15 +55,15 @@ import { getDOMElement } from './web/dom';
|
|
|
55
55
|
import { Drawer } from './web/vaul';
|
|
56
56
|
import { DEFAULT_PEEK_HEIGHT, TRANSITIONS } from './web/vaul/constants';
|
|
57
57
|
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
66
|
-
return null;
|
|
58
|
+
// Resolves the user's `scrollableRef` to its scrollable DOM element — RN-web
|
|
59
|
+
// ScrollView refs expose the scroll node directly (with helpers attached);
|
|
60
|
+
// list refs (e.g. FlatList) expose it via getScrollableNode(). The node's
|
|
61
|
+
// first child is the content container.
|
|
62
|
+
const getScrollableElement = (scrollable: unknown): HTMLElement | null => {
|
|
63
|
+
if (!scrollable) return null;
|
|
64
|
+
if (scrollable instanceof HTMLElement) return scrollable;
|
|
65
|
+
const node = (scrollable as { getScrollableNode?: () => unknown }).getScrollableNode?.();
|
|
66
|
+
return node instanceof HTMLElement ? node : null;
|
|
67
67
|
};
|
|
68
68
|
|
|
69
69
|
const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props, ref) => {
|
|
@@ -79,6 +79,8 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
79
79
|
maxContentWidth,
|
|
80
80
|
anchor = 'center',
|
|
81
81
|
anchorOffset = DEFAULT_ANCHOR_OFFSET,
|
|
82
|
+
scrollableRef,
|
|
83
|
+
scrollableOptions,
|
|
82
84
|
grabber = true,
|
|
83
85
|
grabberOptions,
|
|
84
86
|
accessibilityOptions,
|
|
@@ -323,9 +325,9 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
323
325
|
// `naturalHeight`.
|
|
324
326
|
const [hasBoundedScrollable, setHasBoundedScrollable] = useState(false);
|
|
325
327
|
const [scrollableAutoHeight, setScrollableAutoHeight] = useState(0);
|
|
326
|
-
const
|
|
328
|
+
const detectedScrollerRef = useRef<HTMLElement | null>(null);
|
|
327
329
|
|
|
328
|
-
// Natural content height (header + content + footer, with a
|
|
330
|
+
// Natural content height (header + content + footer, with a detected
|
|
329
331
|
// scrollable's viewport replaced by its content size) — the height the
|
|
330
332
|
// content wants regardless of the sheet's bounds.
|
|
331
333
|
const measureNaturalHeight = useCallback(() => {
|
|
@@ -335,7 +337,7 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
335
337
|
const footerEl = absoluteFooterRef.current ? null : getDOMElement(footerElRef.current);
|
|
336
338
|
let height =
|
|
337
339
|
(headerEl?.offsetHeight ?? 0) + (footerEl?.offsetHeight ?? 0) + contentEl.offsetHeight;
|
|
338
|
-
const scroller =
|
|
340
|
+
const scroller = detectedScrollerRef.current;
|
|
339
341
|
const scrollContent = scroller?.firstElementChild;
|
|
340
342
|
if (scroller?.isConnected && scrollContent instanceof HTMLElement) {
|
|
341
343
|
height += scrollContent.offsetHeight - scroller.clientHeight;
|
|
@@ -369,7 +371,7 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
369
371
|
scrollContent: Element | null;
|
|
370
372
|
} | null = null;
|
|
371
373
|
|
|
372
|
-
// (Re)
|
|
374
|
+
// (Re)resolve the plugged scrollable and observe the nodes whose size
|
|
373
375
|
// feeds the natural height — content growth inside a bounded scroller is
|
|
374
376
|
// invisible to the sheet's own layout (mirrors native's contentSize
|
|
375
377
|
// observation). Resolves the content node live: the layout-branch swap
|
|
@@ -379,10 +381,8 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
379
381
|
const headerEl = getDOMElement(headerElRef.current);
|
|
380
382
|
|
|
381
383
|
// Skip mutations that don't change the observed topology — e.g. a
|
|
382
|
-
// virtualized list mounting rows inside the
|
|
383
|
-
//
|
|
384
|
-
// resolves computed styles) on every scroll frame. Size changes are
|
|
385
|
-
// already covered by the ResizeObserver.
|
|
384
|
+
// virtualized list mounting rows inside the plugged scroller. Size
|
|
385
|
+
// changes are already covered by the ResizeObserver.
|
|
386
386
|
if (
|
|
387
387
|
observed &&
|
|
388
388
|
observed.contentEl === contentEl &&
|
|
@@ -394,9 +394,10 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
394
394
|
return;
|
|
395
395
|
}
|
|
396
396
|
|
|
397
|
-
const
|
|
398
|
-
contentEl && contentEl.isConnected ?
|
|
399
|
-
|
|
397
|
+
const resolved =
|
|
398
|
+
contentEl && contentEl.isConnected ? getScrollableElement(scrollableRef?.current) : null;
|
|
399
|
+
const scroller = resolved?.isConnected ? resolved : null;
|
|
400
|
+
detectedScrollerRef.current = scroller;
|
|
400
401
|
setHasBoundedScrollable(scroller != null);
|
|
401
402
|
observed = scroller
|
|
402
403
|
? { contentEl, headerEl, scroller, scrollContent: scroller.firstElementChild }
|
|
@@ -429,7 +430,7 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
429
430
|
mutationObserver?.disconnect();
|
|
430
431
|
resizeObserver?.disconnect();
|
|
431
432
|
};
|
|
432
|
-
}, [isOpen, hasAutoDetent, measureNaturalHeight]);
|
|
433
|
+
}, [isOpen, hasAutoDetent, measureNaturalHeight, scrollableRef]);
|
|
433
434
|
|
|
434
435
|
// Below the last detent a vertical touch pan moves the sheet, not the
|
|
435
436
|
// content — `[data-vaul-scroll-locked]` disables vertical touch panning on
|
|
@@ -1069,12 +1070,25 @@ const TrueSheetComponent = forwardRef<TrueSheetMethods, TrueSheetProps>((props,
|
|
|
1069
1070
|
// Lift content above iOS home indicator / bottom safe area when enabled.
|
|
1070
1071
|
// A relative footer owns the inset instead (see resolvedFooterStyle); an
|
|
1071
1072
|
// absolute footer floats over the content, so the content keeps its lift.
|
|
1073
|
+
// A plugged scrollable keeps the lift too (contentInsetAdjustmentBehavior,
|
|
1074
|
+
// default on) — disable it to scroll edge-to-edge behind the indicator
|
|
1075
|
+
// with user-applied content padding.
|
|
1072
1076
|
paddingBottom:
|
|
1073
|
-
insetAdjustment === 'automatic' &&
|
|
1077
|
+
insetAdjustment === 'automatic' &&
|
|
1078
|
+
!(footerOwnsInset && !absoluteFooter) &&
|
|
1079
|
+
(!scrollableRef || (scrollableOptions?.contentInsetAdjustmentBehavior ?? true))
|
|
1074
1080
|
? 'env(safe-area-inset-bottom, 0px)'
|
|
1075
1081
|
: 0,
|
|
1076
1082
|
}),
|
|
1077
|
-
[
|
|
1083
|
+
[
|
|
1084
|
+
backgroundColor,
|
|
1085
|
+
effectiveCornerRadius,
|
|
1086
|
+
insetAdjustment,
|
|
1087
|
+
footerOwnsInset,
|
|
1088
|
+
absoluteFooter,
|
|
1089
|
+
scrollableRef,
|
|
1090
|
+
scrollableOptions,
|
|
1091
|
+
]
|
|
1078
1092
|
);
|
|
1079
1093
|
|
|
1080
1094
|
const defaultGrabberColor =
|
|
@@ -6,7 +6,7 @@ export interface NativeProps extends ViewProps {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
// interfaceOnly: shadow node/state/descriptor are custom (common/cpp) so the
|
|
9
|
-
// content can be bounded to the container when a ScrollView is
|
|
9
|
+
// content can be bounded to the container when a ScrollView is detected
|
|
10
10
|
export default codegenNativeComponent<NativeProps>('TrueSheetContentView', {
|
|
11
11
|
interfaceOnly: true,
|
|
12
12
|
});
|
|
@@ -35,7 +35,9 @@ type BlurOptionsType = Readonly<{
|
|
|
35
35
|
type ScrollEdgeEffect = 'automatic' | 'hard' | 'soft' | 'hidden';
|
|
36
36
|
|
|
37
37
|
type ScrollableOptionsType = Readonly<{
|
|
38
|
+
contentInsetAdjustmentBehavior?: WithDefault<boolean, true>;
|
|
38
39
|
keyboardScrollOffset?: WithDefault<Double, 0>;
|
|
40
|
+
keyboardOffset?: WithDefault<Double, 0>;
|
|
39
41
|
scrollingExpandsSheet?: WithDefault<boolean, true>;
|
|
40
42
|
topScrollEdgeEffect?: WithDefault<ScrollEdgeEffect, 'hidden'>;
|
|
41
43
|
bottomScrollEdgeEffect?: WithDefault<ScrollEdgeEffect, 'hidden'>;
|
|
@@ -122,6 +124,8 @@ export interface NativeProps extends ViewProps {
|
|
|
122
124
|
draggable?: WithDefault<boolean, true>;
|
|
123
125
|
dimmed?: WithDefault<boolean, true>;
|
|
124
126
|
initialDetentAnimated?: WithDefault<boolean, true>;
|
|
127
|
+
// React tag of the scrollable component within the content (see scrollableRef)
|
|
128
|
+
scrollableHandle?: WithDefault<Int32, -1>;
|
|
125
129
|
scrollableOptions?: ScrollableOptionsType;
|
|
126
130
|
headerOptions?: HeaderOptionsType;
|
|
127
131
|
footerOptions?: FooterOptionsType;
|