@lodev09/react-native-true-sheet 4.0.0-beta.23 → 4.0.0-beta.25
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/README.md +3 -2
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetModule.kt +13 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetOverlayView.kt +11 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +89 -9
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +100 -24
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewManager.kt +13 -10
- package/android/src/main/java/com/lodev09/truesheet/core/RNScreensEventObserver.kt +31 -6
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetBottomSheetView.kt +3 -8
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetCoordinatorLayout.kt +14 -1
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetDimView.kt +11 -17
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetGrabberView.kt +2 -4
- package/android/src/main/java/com/lodev09/truesheet/utils/ColorUtils.kt +19 -0
- package/ios/TrueSheetModule.mm +11 -2
- package/ios/TrueSheetView.h +2 -0
- package/ios/TrueSheetView.mm +62 -7
- package/ios/TrueSheetViewController.h +2 -0
- package/ios/TrueSheetViewController.mm +158 -4
- package/ios/core/RNScreensEventObserver.mm +18 -1
- package/ios/core/TrueSheetDimView.h +27 -0
- package/ios/core/TrueSheetDimView.mm +41 -0
- package/ios/core/TrueSheetKeyboardObserver.mm +11 -8
- package/lib/module/TrueSheet.js +88 -17
- package/lib/module/TrueSheet.js.map +1 -1
- package/lib/module/TrueSheet.web.js +150 -37
- package/lib/module/TrueSheet.web.js.map +1 -1
- package/lib/module/TrueSheetProvider.web.js +13 -9
- package/lib/module/TrueSheetProvider.web.js.map +1 -1
- package/lib/module/fabric/TrueSheetFooterViewNativeComponent.ts +2 -3
- package/lib/module/fabric/TrueSheetViewNativeComponent.ts +76 -71
- package/lib/module/navigation/createTrueSheetRouter.js +114 -91
- package/lib/module/navigation/createTrueSheetRouter.js.map +1 -1
- package/lib/module/navigation/expo-router/extendTrueSheetRouter.js +43 -0
- package/lib/module/navigation/expo-router/extendTrueSheetRouter.js.map +1 -0
- package/lib/module/navigation/expo-router/index.js +9 -4
- package/lib/module/navigation/expo-router/index.js.map +1 -1
- package/lib/module/scrollable.js +28 -0
- package/lib/module/scrollable.js.map +1 -0
- package/lib/module/web/keyboard.js +69 -0
- package/lib/module/web/keyboard.js.map +1 -0
- package/lib/module/web/layout.js +1 -1
- package/lib/module/web/layout.js.map +1 -1
- package/lib/module/web/vaul/context.js.map +1 -1
- package/lib/module/web/vaul/index.js +18 -8
- package/lib/module/web/vaul/index.js.map +1 -1
- package/lib/module/web/vaul/use-snap-points.js +15 -10
- package/lib/module/web/vaul/use-snap-points.js.map +1 -1
- package/lib/typescript/src/TrueSheet.d.ts +14 -1
- package/lib/typescript/src/TrueSheet.d.ts.map +1 -1
- package/lib/typescript/src/TrueSheet.types.d.ts +23 -3
- 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/TrueSheetProvider.web.d.ts +5 -1
- package/lib/typescript/src/TrueSheetProvider.web.d.ts.map +1 -1
- package/lib/typescript/src/fabric/TrueSheetFooterViewNativeComponent.d.ts +2 -3
- package/lib/typescript/src/fabric/TrueSheetFooterViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts +67 -66
- package/lib/typescript/src/fabric/TrueSheetViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/navigation/createTrueSheetRouter.d.ts +27 -0
- package/lib/typescript/src/navigation/createTrueSheetRouter.d.ts.map +1 -1
- package/lib/typescript/src/navigation/expo-router/extendTrueSheetRouter.d.ts +29 -0
- package/lib/typescript/src/navigation/expo-router/extendTrueSheetRouter.d.ts.map +1 -0
- package/lib/typescript/src/navigation/expo-router/index.d.ts +3 -2
- package/lib/typescript/src/navigation/expo-router/index.d.ts.map +1 -1
- package/lib/typescript/src/navigation/expo-router/types.d.ts +1 -1
- package/lib/typescript/src/navigation/types.d.ts +3 -2
- package/lib/typescript/src/navigation/types.d.ts.map +1 -1
- package/lib/typescript/src/scrollable.d.ts +2 -0
- package/lib/typescript/src/scrollable.d.ts.map +1 -0
- package/lib/typescript/src/web/keyboard.d.ts +15 -0
- package/lib/typescript/src/web/keyboard.d.ts.map +1 -0
- package/lib/typescript/src/web/layout.d.ts +1 -0
- package/lib/typescript/src/web/layout.d.ts.map +1 -1
- package/lib/typescript/src/web/vaul/context.d.ts +2 -1
- package/lib/typescript/src/web/vaul/context.d.ts.map +1 -1
- package/lib/typescript/src/web/vaul/index.d.ts +8 -1
- package/lib/typescript/src/web/vaul/index.d.ts.map +1 -1
- package/lib/typescript/src/web/vaul/types.d.ts +9 -0
- package/lib/typescript/src/web/vaul/types.d.ts.map +1 -1
- package/lib/typescript/src/web/vaul/use-snap-points.d.ts +3 -2
- package/lib/typescript/src/web/vaul/use-snap-points.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/TrueSheet.tsx +93 -14
- package/src/TrueSheet.types.ts +27 -2
- package/src/TrueSheet.web.tsx +170 -41
- package/src/TrueSheetProvider.web.tsx +22 -13
- package/src/fabric/TrueSheetFooterViewNativeComponent.ts +2 -3
- package/src/fabric/TrueSheetViewNativeComponent.ts +76 -71
- package/src/navigation/createTrueSheetRouter.ts +149 -113
- package/src/navigation/expo-router/extendTrueSheetRouter.ts +71 -0
- package/src/navigation/expo-router/index.ts +14 -6
- package/src/navigation/expo-router/types.ts +1 -1
- package/src/navigation/types.ts +5 -1
- package/src/scrollable.ts +25 -0
- package/src/web/keyboard.ts +79 -0
- package/src/web/layout.ts +1 -1
- package/src/web/vaul/context.ts +2 -1
- package/src/web/vaul/index.tsx +20 -5
- package/src/web/vaul/types.ts +10 -0
- package/src/web/vaul/use-snap-points.ts +19 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/navigation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EACV,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EACV,uBAAuB,EACvB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,aAAa,EACb,SAAS,EACT,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,0BAA0B,KAAK,IAAI,CAAC;AAElF,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,gBAAgB,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IACnD;;OAEG;IACH,eAAe,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAClD;;OAEG;IACH,gBAAgB,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACtC;;OAEG;IACH,eAAe,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACrC;;OAEG;IACH,mBAAmB,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACzC;;OAEG;IACH,iBAAiB,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IACpD;;OAEG;IACH,cAAc,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IACjD;;OAEG;IACH,eAAe,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAClD;;OAEG;IACH,YAAY,EAAE;QAAE,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAC/C;;OAEG;IACH,mBAAmB,EAAE;QAAE,IAAI,EAAE,0BAA0B,CAAA;KAAE,CAAC;IAC1D;;OAEG;IACH,cAAc,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACpC;;OAEG;IACH,aAAa,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACnC;;OAEG;IACH,aAAa,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IACnC;;OAEG;IACH,YAAY,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS;IAAE,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,IAAI,IAAI,CAC/E,KAAK,EACL,QAAQ,CACT,GAAG;IACF,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG;QACjC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/navigation/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollable.d.ts","sourceRoot":"","sources":["../../../src/scrollable.ts"],"names":[],"mappings":"AASA,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAe9D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { KeyboardViewport } from './vaul/types';
|
|
2
|
+
/**
|
|
3
|
+
* Tracks the visual viewport while a soft keyboard shrinks it. iOS Safari and
|
|
4
|
+
* Chrome (default `interactive-widget`) keep the layout viewport — and every
|
|
5
|
+
* fixed element — full height under the keyboard, so the sheet has to be laid
|
|
6
|
+
* out against the visual viewport instead.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useKeyboardViewport(enabled: boolean): KeyboardViewport | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Scrolls the focused field in `container` back above its scroll parent's
|
|
11
|
+
* bottom edge, clearing a floating footer. The browser only reveals it on
|
|
12
|
+
* focus — before the sheet fits above the keyboard.
|
|
13
|
+
*/
|
|
14
|
+
export declare function revealFocusedElement(container: HTMLElement): void;
|
|
15
|
+
//# sourceMappingURL=keyboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../../../../src/web/keyboard.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAuBrD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CA2BlF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,WAAW,QAU1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/web/layout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/web/layout.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,6BAA6B,CAAC;AAEvD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACpC,aAAa,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IACxC,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,MAAM,EACN,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,cAAc,GACf,EAAE,kBAAkB;;;EAqKpB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { DrawerDirection } from './types';
|
|
2
|
+
import type { DrawerDirection, KeyboardViewport } from './types';
|
|
3
3
|
export interface DragEvent {
|
|
4
4
|
target: EventTarget;
|
|
5
5
|
pageX: number;
|
|
@@ -49,6 +49,7 @@ interface DrawerContextValue {
|
|
|
49
49
|
detachedOffset: number;
|
|
50
50
|
detachedRadius: number;
|
|
51
51
|
detachedWrapperStyle?: React.CSSProperties;
|
|
52
|
+
keyboardViewport?: KeyboardViewport;
|
|
52
53
|
}
|
|
53
54
|
export declare const DrawerContext: React.Context<DrawerContextValue>;
|
|
54
55
|
export declare const useDrawerContext: () => DrawerContextValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
3
3
|
import './style.css';
|
|
4
|
+
import type { KeyboardViewport } from './types';
|
|
4
5
|
export interface WithFadeFromProps {
|
|
5
6
|
/**
|
|
6
7
|
* Array of numbers from 0 to 100 that corresponds to % of the screen a given snap point should take up.
|
|
@@ -187,8 +188,14 @@ export type DialogProps = {
|
|
|
187
188
|
* from natural flow.
|
|
188
189
|
*/
|
|
189
190
|
contentHeight?: number;
|
|
191
|
+
/**
|
|
192
|
+
* Lays the drawer out in the visual viewport above a soft keyboard. The
|
|
193
|
+
* wrapper and snap offsets fit the visible area, while fractional snap
|
|
194
|
+
* points keep scaling against the full layout height.
|
|
195
|
+
*/
|
|
196
|
+
keyboardViewport?: KeyboardViewport;
|
|
190
197
|
} & (WithFadeFromProps | WithoutFadeFromProps);
|
|
191
|
-
export declare function Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRelease: onReleaseProp, snapPoints, shouldScaleBackground, setBackgroundColorOnScale, closeThreshold, scrollLockTimeout, dismissible, dismissThreshold, onDismissAttempt, draggable, handleOnly, fadeFromIndex, activeSnapPoint: activeSnapPointProp, setActiveSnapPoint: setActiveSnapPointProp, fixed, modal, onClose, nested, noBodyStyles, direction, defaultOpen, disablePreventScroll, snapToSequentialPoint, preventScrollRestoration, repositionInputs, onAnimationEnd, onPositionChange, container, autoFocus, detached, detachedOffset, detachedRadius, detachedWrapperStyle, maxContentHeight, peekHeight, initialAnimated, onContentHeightChange, contentHeight: contentHeightProp, }: DialogProps): import("react/jsx-runtime").JSX.Element;
|
|
198
|
+
export declare function Root({ open: openProp, onOpenChange, children, onDrag: onDragProp, onRelease: onReleaseProp, snapPoints, shouldScaleBackground, setBackgroundColorOnScale, closeThreshold, scrollLockTimeout, dismissible, dismissThreshold, onDismissAttempt, draggable, handleOnly, fadeFromIndex, activeSnapPoint: activeSnapPointProp, setActiveSnapPoint: setActiveSnapPointProp, fixed, modal, onClose, nested, noBodyStyles, direction, defaultOpen, disablePreventScroll, snapToSequentialPoint, preventScrollRestoration, repositionInputs, onAnimationEnd, onPositionChange, container, autoFocus, detached, detachedOffset, detachedRadius, detachedWrapperStyle, maxContentHeight, peekHeight, initialAnimated, onContentHeightChange, contentHeight: contentHeightProp, keyboardViewport, }: DialogProps): import("react/jsx-runtime").JSX.Element;
|
|
192
199
|
export declare const Overlay: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
193
200
|
export type ContentProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {
|
|
194
201
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAI1D,OAAO,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,13 @@ export interface SnapPoint {
|
|
|
4
4
|
height: number;
|
|
5
5
|
}
|
|
6
6
|
export type AnyFunction = (...args: any) => any;
|
|
7
|
+
/**
|
|
8
|
+
* The visual viewport while a soft keyboard shrinks it, in layout-viewport px.
|
|
9
|
+
* `layoutHeight` is the full (keyboard-free) height.
|
|
10
|
+
*/
|
|
11
|
+
export interface KeyboardViewport {
|
|
12
|
+
top: number;
|
|
13
|
+
height: number;
|
|
14
|
+
layoutHeight: number;
|
|
15
|
+
}
|
|
7
16
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAClE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAClE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { DrawerDirection } from './types';
|
|
3
|
-
export declare function useSnapPoints({ activeSnapPointProp, setActiveSnapPointProp, snapPoints, drawerRef, overlayRef, fadeFromIndex, onSnapPointChange, direction, container, snapToSequentialPoint, isOpen, contentHeight, detachedOffset, maxContentHeight, peekHeight, initialAnimated, }: {
|
|
2
|
+
import type { DrawerDirection, KeyboardViewport } from './types';
|
|
3
|
+
export declare function useSnapPoints({ activeSnapPointProp, setActiveSnapPointProp, snapPoints, drawerRef, overlayRef, fadeFromIndex, onSnapPointChange, direction, container, snapToSequentialPoint, isOpen, contentHeight, detachedOffset, maxContentHeight, peekHeight, initialAnimated, keyboardViewport, }: {
|
|
4
4
|
activeSnapPointProp?: number | string | null;
|
|
5
5
|
setActiveSnapPointProp?(snapPoint: number | null | string): void;
|
|
6
6
|
snapPoints?: (number | string)[];
|
|
@@ -17,6 +17,7 @@ export declare function useSnapPoints({ activeSnapPointProp, setActiveSnapPointP
|
|
|
17
17
|
maxContentHeight?: number;
|
|
18
18
|
peekHeight?: number;
|
|
19
19
|
initialAnimated?: boolean;
|
|
20
|
+
keyboardViewport?: KeyboardViewport;
|
|
20
21
|
}): {
|
|
21
22
|
isLastSnapPoint: true | null;
|
|
22
23
|
activeSnapPoint: string | number | null | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-snap-points.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/use-snap-points.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"use-snap-points.d.ts","sourceRoot":"","sources":["../../../../../src/web/vaul/use-snap-points.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEjE,wBAAgB,aAAa,CAAC,EAC5B,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,SAAoB,EACpB,SAAS,EACT,qBAAqB,EACrB,MAAM,EACN,aAAa,EACb,cAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,eAAsB,EACtB,gBAAgB,GACjB,EAAE;IACD,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7C,sBAAsB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACjE,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAClD,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACnD,iBAAiB,CAAC,oBAAoB,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;;;;+CAuYmD,MAAM,kBAAkB,OAAO;;;4FA9I9E;QACD,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC;QACrB,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;KACpC;kCA6FoC;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE;;EA8GjE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodev09/react-native-true-sheet",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.25",
|
|
4
4
|
"description": "The true native bottom sheet experience for your React Native Apps.",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"main": "./lib/module/index.js",
|
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
"scripts": {
|
|
54
54
|
"bare": "yarn workspace @example/bare",
|
|
55
55
|
"expo": "yarn workspace @example/expo",
|
|
56
|
+
"expo-58": "yarn workspace @example/expo-58",
|
|
56
57
|
"docs": "yarn workspace docs",
|
|
57
58
|
"test": "jest",
|
|
58
59
|
"typecheck": "tsc",
|
|
@@ -128,9 +129,7 @@
|
|
|
128
129
|
},
|
|
129
130
|
"resolutions": {
|
|
130
131
|
"@types/react": "~19.2.14",
|
|
131
|
-
"react-native-
|
|
132
|
-
"react-native-worklets": "0.10.1",
|
|
133
|
-
"react-native-screens": "patch:react-native-screens@npm%3A4.26.2#~/.yarn/patches/react-native-screens-npm-4.26.2.patch"
|
|
132
|
+
"react-native-screens@npm:^4.26.0": "patch:react-native-screens@npm%3A4.26.2#~/.yarn/patches/react-native-screens-npm-4.26.2.patch"
|
|
134
133
|
},
|
|
135
134
|
"peerDependencies": {
|
|
136
135
|
"@radix-ui/react-dialog": ">=1",
|
|
@@ -173,6 +172,7 @@
|
|
|
173
172
|
"workspaces": [
|
|
174
173
|
"example/bare",
|
|
175
174
|
"example/expo",
|
|
175
|
+
"example/expo-58",
|
|
176
176
|
"example/shared",
|
|
177
177
|
"docs"
|
|
178
178
|
],
|
|
@@ -188,6 +188,7 @@
|
|
|
188
188
|
"modulePathIgnorePatterns": [
|
|
189
189
|
"<rootDir>/example/bare/node_modules",
|
|
190
190
|
"<rootDir>/example/expo/node_modules",
|
|
191
|
+
"<rootDir>/example/expo-58/node_modules",
|
|
191
192
|
"<rootDir>/example/shared/node_modules",
|
|
192
193
|
"<rootDir>/lib/",
|
|
193
194
|
"<rootDir>/docs/node_modules",
|
package/src/TrueSheet.tsx
CHANGED
|
@@ -39,6 +39,7 @@ import TrueSheetFooterViewNativeComponent from './fabric/TrueSheetFooterViewNati
|
|
|
39
39
|
import TrueSheetModule from './specs/NativeTrueSheetModule';
|
|
40
40
|
import { TrueSheetBackground } from './TrueSheetBackground';
|
|
41
41
|
import { normalizeDetentBackground } from './detentBackgrounds';
|
|
42
|
+
import { resolveScrollable } from './scrollable';
|
|
42
43
|
|
|
43
44
|
import {
|
|
44
45
|
Platform,
|
|
@@ -139,9 +140,19 @@ export class TrueSheet
|
|
|
139
140
|
private static readonly instances: { [name: string]: TrueSheet } = {};
|
|
140
141
|
|
|
141
142
|
/**
|
|
142
|
-
*
|
|
143
|
+
* All mounted sheets, named or not.
|
|
143
144
|
*/
|
|
144
|
-
private
|
|
145
|
+
private static readonly mountedInstances = new Set<TrueSheet>();
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Resolver to be called when mount event is received, or with `false` when the present is cancelled
|
|
149
|
+
*/
|
|
150
|
+
private presentationResolver: ((mounted: boolean) => void) | null = null;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Settles once a scheduled lazy unmount has committed
|
|
154
|
+
*/
|
|
155
|
+
private nativeViewUnmount: Promise<void> | null = null;
|
|
145
156
|
|
|
146
157
|
/**
|
|
147
158
|
* Tracks if a present operation is in progress
|
|
@@ -197,12 +208,18 @@ export class TrueSheet
|
|
|
197
208
|
let scrollableHandle: number | null = null;
|
|
198
209
|
if (scrollableRef?.current) {
|
|
199
210
|
try {
|
|
200
|
-
scrollableHandle = findNodeHandle(
|
|
211
|
+
scrollableHandle = findNodeHandle(
|
|
212
|
+
resolveScrollable(scrollableRef.current) as Parameters<typeof findNodeHandle>[0]
|
|
213
|
+
);
|
|
201
214
|
} catch (error) {
|
|
202
|
-
//
|
|
203
|
-
//
|
|
215
|
+
// findNodeHandle throws on a stale ref (e.g. a wrapper that never clears
|
|
216
|
+
// it on unmount) or a handle with no usable scroll accessor. Treat it as
|
|
217
|
+
// no scrollable instead of crashing.
|
|
204
218
|
if (__DEV__) {
|
|
205
|
-
console.warn(
|
|
219
|
+
console.warn(
|
|
220
|
+
'TrueSheet: scrollableRef could not be resolved to a native view. It may be stale or expose no scroll node.',
|
|
221
|
+
error
|
|
222
|
+
);
|
|
206
223
|
}
|
|
207
224
|
}
|
|
208
225
|
}
|
|
@@ -341,6 +358,7 @@ export class TrueSheet
|
|
|
341
358
|
* @returns Promise that resolves when all sheets are dismissed
|
|
342
359
|
*/
|
|
343
360
|
public static async dismissAll(animated: boolean = true): Promise<void> {
|
|
361
|
+
TrueSheet.mountedInstances.forEach((sheet) => sheet.cancelPendingPresent());
|
|
344
362
|
return TrueSheetModule?.dismissAll(animated);
|
|
345
363
|
}
|
|
346
364
|
|
|
@@ -394,16 +412,17 @@ export class TrueSheet
|
|
|
394
412
|
|
|
395
413
|
// Non-lazy content stays mounted; otherwise clean it up unless another presentation is active.
|
|
396
414
|
if (!this.isPresenting && this.props.lazy !== false) {
|
|
397
|
-
this.
|
|
415
|
+
this.unmountNativeView();
|
|
398
416
|
}
|
|
399
417
|
|
|
400
418
|
this.props.onDidDismiss?.(event);
|
|
401
419
|
}
|
|
402
420
|
|
|
403
421
|
private onMount(event: MountEvent): void {
|
|
404
|
-
// Resolve the mount promise if waiting
|
|
405
|
-
|
|
406
|
-
|
|
422
|
+
// Resolve the mount promise if waiting. While an unmount is pending, the event is from
|
|
423
|
+
// the outgoing view — present() waits for the remount instead.
|
|
424
|
+
if (this.presentationResolver && !this.nativeViewUnmount) {
|
|
425
|
+
this.presentationResolver(true);
|
|
407
426
|
this.presentationResolver = null;
|
|
408
427
|
}
|
|
409
428
|
|
|
@@ -463,7 +482,9 @@ export class TrueSheet
|
|
|
463
482
|
return onBackPress?.() ?? onDismissAttempt != null;
|
|
464
483
|
}
|
|
465
484
|
|
|
466
|
-
|
|
485
|
+
// Rejects when the native view is gone but JS hasn't unmounted yet (e.g. the surface
|
|
486
|
+
// stopped while this back press was queued). Nothing is left to dismiss.
|
|
487
|
+
TrueSheetModule?.handleBackPress(nodeHandle).catch(() => {});
|
|
467
488
|
return this.props.onBackPress?.() ?? true;
|
|
468
489
|
}
|
|
469
490
|
|
|
@@ -480,20 +501,67 @@ export class TrueSheet
|
|
|
480
501
|
);
|
|
481
502
|
}
|
|
482
503
|
|
|
504
|
+
// Still waiting on the lazy mount — like native, a second present is a no-op
|
|
505
|
+
if (this.presentationResolver) {
|
|
506
|
+
console.warn('TrueSheet: sheet is already presented. Use resize() to change detent.');
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
|
|
483
510
|
this.isPresenting = true;
|
|
484
511
|
|
|
485
512
|
// Lazy load: render native view if not already rendered
|
|
486
|
-
|
|
487
|
-
|
|
513
|
+
const unmount = this.nativeViewUnmount;
|
|
514
|
+
if (unmount || !this.state.shouldRenderNativeView) {
|
|
515
|
+
const mounted = await new Promise<boolean>((resolve) => {
|
|
488
516
|
this.presentationResolver = resolve;
|
|
489
|
-
|
|
517
|
+
|
|
518
|
+
const mount = () => {
|
|
519
|
+
if (this.presentationResolver === resolve) {
|
|
520
|
+
this.setState({ shouldRenderNativeView: true });
|
|
521
|
+
}
|
|
522
|
+
};
|
|
523
|
+
|
|
524
|
+
// An unmount from the last dismiss may not have committed yet — state still reads
|
|
525
|
+
// mounted, and presenting now would lose the sheet when it lands. Remount after it.
|
|
526
|
+
if (unmount) {
|
|
527
|
+
unmount.then(mount);
|
|
528
|
+
} else {
|
|
529
|
+
mount();
|
|
530
|
+
}
|
|
490
531
|
});
|
|
532
|
+
|
|
533
|
+
// Dismissed before the native view mounted
|
|
534
|
+
if (!mounted) {
|
|
535
|
+
this.isPresenting = false;
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
491
538
|
}
|
|
492
539
|
|
|
493
540
|
await TrueSheetModule?.presentByRef(this.handle, index, animated);
|
|
494
541
|
this.isPresenting = false;
|
|
495
542
|
}
|
|
496
543
|
|
|
544
|
+
/**
|
|
545
|
+
* Cancels a present still waiting on the lazy mount. Returns whether one was pending.
|
|
546
|
+
*/
|
|
547
|
+
private cancelPendingPresent(): boolean {
|
|
548
|
+
if (!this.presentationResolver) return false;
|
|
549
|
+
|
|
550
|
+
this.presentationResolver(false);
|
|
551
|
+
this.presentationResolver = null;
|
|
552
|
+
this.unmountNativeView();
|
|
553
|
+
return true;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
private unmountNativeView(): void {
|
|
557
|
+
this.nativeViewUnmount = new Promise((resolve) => {
|
|
558
|
+
this.setState({ shouldRenderNativeView: false }, () => {
|
|
559
|
+
this.nativeViewUnmount = null;
|
|
560
|
+
resolve();
|
|
561
|
+
});
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
|
|
497
565
|
/**
|
|
498
566
|
* Resize the sheet to a given detent index.
|
|
499
567
|
* @param index - The detent index to resize to
|
|
@@ -507,6 +575,9 @@ export class TrueSheet
|
|
|
507
575
|
* @param animated - Whether to animate the dismissal (default: true)
|
|
508
576
|
*/
|
|
509
577
|
public async dismiss(animated: boolean = true): Promise<void> {
|
|
578
|
+
// Dismissing before the lazy mount finishes cancels the present — nothing was presented
|
|
579
|
+
if (this.cancelPendingPresent()) return;
|
|
580
|
+
|
|
510
581
|
return TrueSheetModule?.dismissByRef(this.handle, animated);
|
|
511
582
|
}
|
|
512
583
|
|
|
@@ -520,6 +591,7 @@ export class TrueSheet
|
|
|
520
591
|
}
|
|
521
592
|
|
|
522
593
|
componentDidMount(): void {
|
|
594
|
+
TrueSheet.mountedInstances.add(this);
|
|
523
595
|
this.registerInstance();
|
|
524
596
|
this.updateScrollableHandle();
|
|
525
597
|
}
|
|
@@ -556,9 +628,12 @@ export class TrueSheet
|
|
|
556
628
|
}
|
|
557
629
|
|
|
558
630
|
componentWillUnmount(): void {
|
|
631
|
+
TrueSheet.mountedInstances.delete(this);
|
|
559
632
|
this.unregisterInstance();
|
|
560
633
|
this.backHandlerSubscription?.remove();
|
|
561
634
|
this.backHandlerSubscription = null;
|
|
635
|
+
// Don't leave a present waiting on the lazy mount hanging
|
|
636
|
+
this.presentationResolver?.(false);
|
|
562
637
|
this.presentationResolver = null;
|
|
563
638
|
}
|
|
564
639
|
|
|
@@ -576,6 +651,8 @@ export class TrueSheet
|
|
|
576
651
|
grabberOptions,
|
|
577
652
|
accessibilityOptions,
|
|
578
653
|
dimmed = true,
|
|
654
|
+
dimColor,
|
|
655
|
+
dimOpacity,
|
|
579
656
|
initialDetentIndex = -1,
|
|
580
657
|
initialDetentAnimated = true,
|
|
581
658
|
dimmedDetentIndex,
|
|
@@ -684,6 +761,8 @@ export class TrueSheet
|
|
|
684
761
|
grabberOptions={this.resolvedGrabberOptions}
|
|
685
762
|
accessibilityOptions={accessibilityOptions}
|
|
686
763
|
dimmed={dimmed}
|
|
764
|
+
dimColor={dimColor}
|
|
765
|
+
dimOpacity={dimOpacity}
|
|
687
766
|
dimmedDetentIndex={dimmedDetentIndex}
|
|
688
767
|
initialDetentIndex={gatedInitialDetentIndex}
|
|
689
768
|
initialDetentAnimated={initialDetentAnimated}
|
package/src/TrueSheet.types.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Component, ComponentType, ReactElement, ReactNode, RefObject } from 'react';
|
|
2
2
|
import type {
|
|
3
3
|
ColorValue,
|
|
4
|
+
HostInstance,
|
|
4
5
|
NativeSyntheticEvent,
|
|
5
6
|
StyleProp,
|
|
6
7
|
ViewProps,
|
|
@@ -438,6 +439,22 @@ export interface TrueSheetProps extends ViewProps {
|
|
|
438
439
|
*/
|
|
439
440
|
dimmed?: boolean;
|
|
440
441
|
|
|
442
|
+
/**
|
|
443
|
+
* The color of the dim overlay behind the sheet.
|
|
444
|
+
* This is ignored if `dimmed` is set to `false`.
|
|
445
|
+
*
|
|
446
|
+
* @default '#000000'
|
|
447
|
+
*/
|
|
448
|
+
dimColor?: ColorValue;
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* The maximum opacity of the dim overlay behind the sheet (0 to 1).
|
|
452
|
+
* This is ignored if `dimmed` is set to `false`.
|
|
453
|
+
*
|
|
454
|
+
* @default 0.5
|
|
455
|
+
*/
|
|
456
|
+
dimOpacity?: number;
|
|
457
|
+
|
|
441
458
|
/**
|
|
442
459
|
* Initially present the sheet, after mounting, at a given detent index.
|
|
443
460
|
*
|
|
@@ -676,7 +693,9 @@ export interface TrueSheetProps extends ViewProps {
|
|
|
676
693
|
|
|
677
694
|
/**
|
|
678
695
|
* A ref to the scrollable component (e.g. `ScrollView`, `FlatList`)
|
|
679
|
-
* rendered within the sheet content.
|
|
696
|
+
* rendered within the sheet content. Lists that expose an imperative handle
|
|
697
|
+
* (e.g. `LegendList`, `FlashList`) work too, through their
|
|
698
|
+
* `getScrollableNode()` or `getNativeScrollRef()`.
|
|
680
699
|
* Required for scrollable handling — nested scrolling, keyboard insets,
|
|
681
700
|
* and `auto` detent sizing are wired to this scrollable.
|
|
682
701
|
*
|
|
@@ -689,7 +708,13 @@ export interface TrueSheetProps extends ViewProps {
|
|
|
689
708
|
* </TrueSheet>
|
|
690
709
|
* ```
|
|
691
710
|
*/
|
|
692
|
-
scrollableRef?: RefObject<
|
|
711
|
+
scrollableRef?: RefObject<
|
|
712
|
+
| Component<unknown>
|
|
713
|
+
| HostInstance
|
|
714
|
+
| { getScrollableNode(): unknown }
|
|
715
|
+
| { getNativeScrollRef(): unknown }
|
|
716
|
+
| null
|
|
717
|
+
>;
|
|
693
718
|
|
|
694
719
|
/**
|
|
695
720
|
* Options for scrollable behavior.
|