@lodev09/react-native-true-sheet 3.3.1 → 3.3.2

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.
@@ -328,6 +328,18 @@ class TrueSheetView(private val reactContext: ThemedReactContext) :
328
328
 
329
329
  @UiThread
330
330
  fun dismiss(animated: Boolean = true, promiseCallback: () -> Unit) {
331
+ // iOS-like behavior: calling dismiss on a presenting controller dismisses
332
+ // its presented controller (and everything above it), but NOT itself.
333
+ // See: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss
334
+ val sheetsAbove = TrueSheetDialogObserver.getSheetsAbove(this)
335
+ if (sheetsAbove.isNotEmpty()) {
336
+ for (sheet in sheetsAbove) {
337
+ sheet.viewController.dismiss(animated)
338
+ }
339
+ promiseCallback()
340
+ return
341
+ }
342
+
331
343
  viewController.dismissPromise = promiseCallback
332
344
  viewController.dismiss(animated)
333
345
  }
@@ -514,9 +514,10 @@ class TrueSheetViewController(private val reactContext: ThemedReactContext) :
514
514
 
515
515
  if (!animated) {
516
516
  dialog?.window?.setWindowAnimations(0)
517
+ post { dialog?.dismiss() }
518
+ } else {
519
+ dialog?.dismiss()
517
520
  }
518
-
519
- dialog?.dismiss()
520
521
  }
521
522
 
522
523
  // ====================================================================
@@ -54,6 +54,19 @@ object TrueSheetDialogObserver {
54
54
  }
55
55
  }
56
56
 
57
+ /**
58
+ * Returns all sheets presented on top of the given sheet (children/descendants).
59
+ * Returns them in reverse order (top-most first) for proper dismissal.
60
+ */
61
+ @JvmStatic
62
+ fun getSheetsAbove(sheetView: TrueSheetView): List<TrueSheetView> {
63
+ synchronized(presentedSheetStack) {
64
+ val index = presentedSheetStack.indexOf(sheetView)
65
+ if (index < 0 || index >= presentedSheetStack.size - 1) return emptyList()
66
+ return presentedSheetStack.subList(index + 1, presentedSheetStack.size).reversed()
67
+ }
68
+ }
69
+
57
70
  @JvmStatic
58
71
  fun removeSheet(sheetView: TrueSheetView) {
59
72
  synchronized(presentedSheetStack) {
@@ -142,6 +142,9 @@ export const TrueSheet = /*#__PURE__*/forwardRef((props, ref) => {
142
142
  }
143
143
  }, [detents, animatedPosition]);
144
144
  const handleDismiss = useCallback(() => {
145
+ // Remove from stack when dismissed
146
+ bottomSheetContext?.removeFromStack(sheetName);
147
+
145
148
  // Resolve dismiss promise
146
149
  if (dismissResolver.current) {
147
150
  dismissResolver.current();
@@ -155,7 +158,7 @@ export const TrueSheet = /*#__PURE__*/forwardRef((props, ref) => {
155
158
  isMinimized.current = false;
156
159
  isDismissing.current = false;
157
160
  isDragging.current = false;
158
- }, []);
161
+ }, [sheetName]);
159
162
  const handleAnimate = useCallback((_fromIndex, toIndex) => {
160
163
  // Detect drag begin (when not presenting or dismissing)
161
164
  if (!isPresenting.current && !isDismissing.current && !isDragging.current && toIndex >= 0) {
@@ -251,22 +254,38 @@ export const TrueSheet = /*#__PURE__*/forwardRef((props, ref) => {
251
254
 
252
255
  // For scrollable, we render the child directly
253
256
  const ContainerComponent = scrollable ? Fragment : BottomSheetView;
257
+ const dismissInternal = useCallback(() => {
258
+ return new Promise(resolve => {
259
+ dismissResolver.current = resolve;
260
+ isDismissing.current = true;
261
+ modalRef.current?.dismiss();
262
+ });
263
+ }, []);
254
264
  const sheetMethodsRef = useRef({
255
265
  present: (index = 0) => {
256
266
  return new Promise(resolve => {
257
267
  presentResolver.current = resolve;
258
268
  setSnapIndex(index);
259
269
  isPresenting.current = true;
270
+ bottomSheetContext?.pushToStack(sheetName);
260
271
  modalRef.current?.present();
261
272
  });
262
273
  },
263
274
  dismiss: () => {
264
275
  return new Promise(resolve => {
265
- dismissResolver.current = resolve;
266
- isDismissing.current = true;
267
- modalRef.current?.dismiss();
276
+ // iOS-like behavior: dismiss sheets above, but not itself.
277
+ // See: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss
278
+ const sheetsAbove = bottomSheetContext?.getSheetsAbove(sheetName) ?? [];
279
+ const immediateChild = sheetsAbove[sheetsAbove.length - 1];
280
+ if (immediateChild) {
281
+ // Dismiss the immediate child - gorhom will dismiss all sheets above it
282
+ bottomSheetContext?.dismissDirect(immediateChild).then(resolve);
283
+ return;
284
+ }
285
+ dismissInternal().then(resolve);
268
286
  });
269
287
  },
288
+ dismissDirect: () => dismissInternal(),
270
289
  resize: async index => {
271
290
  modalRef.current?.snapToIndex(index);
272
291
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createElement","Fragment","forwardRef","isValidElement","useCallback","useContext","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","View","StyleSheet","useWindowDimensions","BottomSheetBackdrop","BottomSheetFooter","BottomSheetHandle","BottomSheetModal","BottomSheetView","useDerivedValue","useSharedValue","BottomSheetContext","jsx","_jsx","jsxs","_jsxs","DEFAULT_CORNER_RADIUS","DEFAULT_GRABBER_COLOR","DEFAULT_GRABBER_WIDTH","DEFAULT_GRABBER_HEIGHT","renderSlot","slot","TrueSheet","props","ref","name","detents","dismissible","draggable","dimmed","dimmedDetentIndex","children","scrollable","initialDetentIndex","backgroundColor","cornerRadius","grabber","grabberOptions","maxHeight","header","footer","onMount","onWillPresent","onDidPresent","onWillDismiss","onDidDismiss","onDetentChange","onPositionChange","onDragBegin","onDragChange","onDragEnd","onWillFocus","onDidFocus","onWillBlur","onDidBlur","stackBehavior","style","height","windowHeight","defaultName","sheetName","bottomSheetContext","modalRef","initialDetentIndexRef","currentIndexRef","isPresenting","isDismissing","isMinimized","isDragging","presentResolver","dismissResolver","animatedPosition","animatedIndex","snapIndex","setSnapIndex","isMounted","setIsMounted","nativeEvent","position","value","index","detent","realtime","hasAutoDetent","includes","containerHeight","snapPoints","filter","map","Math","min","max","handleChange","_position","_type","previousIndex","current","handleDismiss","handleAnimate","_fromIndex","toIndex","backdropComponent","backdropProps","opacity","appearsOnIndex","disappearsOnIndex","pressBehavior","handleComponent","handleProps","borderRadius","styles","handle","paddingTop","topMargin","indicatorStyle","width","color","footerComponent","footerProps","undefined","ContainerComponent","sheetMethodsRef","present","Promise","resolve","dismiss","resize","snapToIndex","register","unregister","root","borderTopLeftRadius","borderTopRightRadius","animateOnMount","enablePanDownToClose","enableContentPanningGesture","enableHandlePanningGesture","onChange","onAnimate","enableDynamicSizing","maxDynamicContentSize","length","onDismiss","backgroundComponent","create","overflow","top","left","right","zIndex","paddingVertical","pointerEvents"],"sourceRoot":"../../src","sources":["TrueSheet.web.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createElement","Fragment","forwardRef","isValidElement","useCallback","useContext","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","View","StyleSheet","useWindowDimensions","BottomSheetBackdrop","BottomSheetFooter","BottomSheetHandle","BottomSheetModal","BottomSheetView","useDerivedValue","useSharedValue","BottomSheetContext","jsx","_jsx","jsxs","_jsxs","DEFAULT_CORNER_RADIUS","DEFAULT_GRABBER_COLOR","DEFAULT_GRABBER_WIDTH","DEFAULT_GRABBER_HEIGHT","renderSlot","slot","TrueSheet","props","ref","name","detents","dismissible","draggable","dimmed","dimmedDetentIndex","children","scrollable","initialDetentIndex","backgroundColor","cornerRadius","grabber","grabberOptions","maxHeight","header","footer","onMount","onWillPresent","onDidPresent","onWillDismiss","onDidDismiss","onDetentChange","onPositionChange","onDragBegin","onDragChange","onDragEnd","onWillFocus","onDidFocus","onWillBlur","onDidBlur","stackBehavior","style","height","windowHeight","defaultName","sheetName","bottomSheetContext","modalRef","initialDetentIndexRef","currentIndexRef","isPresenting","isDismissing","isMinimized","isDragging","presentResolver","dismissResolver","animatedPosition","animatedIndex","snapIndex","setSnapIndex","isMounted","setIsMounted","nativeEvent","position","value","index","detent","realtime","hasAutoDetent","includes","containerHeight","snapPoints","filter","map","Math","min","max","handleChange","_position","_type","previousIndex","current","handleDismiss","removeFromStack","handleAnimate","_fromIndex","toIndex","backdropComponent","backdropProps","opacity","appearsOnIndex","disappearsOnIndex","pressBehavior","handleComponent","handleProps","borderRadius","styles","handle","paddingTop","topMargin","indicatorStyle","width","color","footerComponent","footerProps","undefined","ContainerComponent","dismissInternal","Promise","resolve","dismiss","sheetMethodsRef","present","pushToStack","sheetsAbove","getSheetsAbove","immediateChild","length","dismissDirect","then","resize","snapToIndex","register","unregister","root","borderTopLeftRadius","borderTopRightRadius","animateOnMount","enablePanDownToClose","enableContentPanningGesture","enableHandlePanningGesture","onChange","onAnimate","enableDynamicSizing","maxDynamicContentSize","onDismiss","backgroundComponent","create","overflow","top","left","right","zIndex","paddingVertical","pointerEvents"],"sourceRoot":"../../src","sources":["TrueSheet.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -12,12 +12,36 @@ export function TrueSheetProvider({
12
12
  children
13
13
  }) {
14
14
  const sheetsRef = useRef(new Map());
15
+ const presentedStackRef = useRef([]);
15
16
  const register = (name, methods) => {
16
17
  sheetsRef.current.set(name, methods);
17
18
  };
18
19
  const unregister = name => {
19
20
  sheetsRef.current.delete(name);
20
21
  };
22
+ const pushToStack = name => {
23
+ const index = presentedStackRef.current.indexOf(name);
24
+ if (index >= 0) {
25
+ presentedStackRef.current.splice(index, 1);
26
+ }
27
+ presentedStackRef.current.push(name);
28
+ };
29
+ const removeFromStack = name => {
30
+ const index = presentedStackRef.current.indexOf(name);
31
+ if (index >= 0) {
32
+ presentedStackRef.current.splice(index, 1);
33
+ }
34
+ };
35
+
36
+ /**
37
+ * Returns all sheets presented on top of the given sheet.
38
+ * Returns them in reverse order (top-most first) for proper dismissal.
39
+ */
40
+ const getSheetsAbove = name => {
41
+ const index = presentedStackRef.current.indexOf(name);
42
+ if (index < 0 || index >= presentedStackRef.current.length - 1) return [];
43
+ return presentedStackRef.current.slice(index + 1).reverse();
44
+ };
21
45
  const present = async (name, index = 0) => {
22
46
  const sheet = sheetsRef.current.get(name);
23
47
  if (!sheet?.current) {
@@ -34,6 +58,19 @@ export function TrueSheetProvider({
34
58
  }
35
59
  return sheet.current.dismiss();
36
60
  };
61
+
62
+ /**
63
+ * Dismisses a sheet directly without checking for sheets above.
64
+ * Used internally when batch-dismissing stacked sheets.
65
+ */
66
+ const dismissDirect = async name => {
67
+ const sheet = sheetsRef.current.get(name);
68
+ if (!sheet?.current) {
69
+ console.warn(`TrueSheet: Could not find sheet with name "${name}"`);
70
+ return;
71
+ }
72
+ return sheet.current.dismissDirect?.();
73
+ };
37
74
  const resize = async (name, index) => {
38
75
  const sheet = sheetsRef.current.get(name);
39
76
  if (!sheet?.current) {
@@ -46,6 +83,10 @@ export function TrueSheetProvider({
46
83
  value: {
47
84
  register,
48
85
  unregister,
86
+ pushToStack,
87
+ removeFromStack,
88
+ getSheetsAbove,
89
+ dismissDirect,
49
90
  present,
50
91
  dismiss,
51
92
  resize
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","useContext","useRef","BottomSheetModalProvider","jsx","_jsx","BottomSheetContext","TrueSheetProvider","children","sheetsRef","Map","register","name","methods","current","set","unregister","delete","present","index","sheet","get","console","warn","dismiss","resize","Provider","value","useTrueSheet","context","Error"],"sourceRoot":"../../src","sources":["TrueSheetProvider.web.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,EAAEC,MAAM,QAAwC,OAAO;AACzF,SAASC,wBAAwB,QAAQ,sBAAsB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQhE,OAAO,MAAMC,kBAAkB,gBAAGN,aAAa,CAAiC,IAAI,CAAC;AAMrF;AACA;AACA;AACA;AACA,OAAO,SAASO,iBAAiBA,CAAC;EAAEC;AAAiC,CAAC,EAAE;EACtE,MAAMC,SAAS,GAAGP,MAAM,CAAuC,IAAIQ,GAAG,CAAC,CAAC,CAAC;EAEzE,MAAMC,QAAQ,GAAGA,CAACC,IAAY,EAAEC,OAAgC,KAAK;IACnEJ,SAAS,CAACK,OAAO,CAACC,GAAG,CAACH,IAAI,EAAEC,OAAO,CAAC;EACtC,CAAC;EAED,MAAMG,UAAU,GAAIJ,IAAY,IAAK;IACnCH,SAAS,CAACK,OAAO,CAACG,MAAM,CAACL,IAAI,CAAC;EAChC,CAAC;EAED,MAAMM,OAAO,GAAG,MAAAA,CAAON,IAAY,EAAEO,KAAa,GAAG,CAAC,KAAK;IACzD,MAAMC,KAAK,GAAGX,SAAS,CAACK,OAAO,CAACO,GAAG,CAACT,IAAI,CAAC;IACzC,IAAI,CAACQ,KAAK,EAAEN,OAAO,EAAE;MACnBQ,OAAO,CAACC,IAAI,CAAC,8CAA8CX,IAAI,GAAG,CAAC;MACnE;IACF;IACA,OAAOQ,KAAK,CAACN,OAAO,CAACI,OAAO,CAACC,KAAK,CAAC;EACrC,CAAC;EAED,MAAMK,OAAO,GAAG,MAAOZ,IAAY,IAAK;IACtC,MAAMQ,KAAK,GAAGX,SAAS,CAACK,OAAO,CAACO,GAAG,CAACT,IAAI,CAAC;IACzC,IAAI,CAACQ,KAAK,EAAEN,OAAO,EAAE;MACnBQ,OAAO,CAACC,IAAI,CAAC,8CAA8CX,IAAI,GAAG,CAAC;MACnE;IACF;IACA,OAAOQ,KAAK,CAACN,OAAO,CAACU,OAAO,CAAC,CAAC;EAChC,CAAC;EAED,MAAMC,MAAM,GAAG,MAAAA,CAAOb,IAAY,EAAEO,KAAa,KAAK;IACpD,MAAMC,KAAK,GAAGX,SAAS,CAACK,OAAO,CAACO,GAAG,CAACT,IAAI,CAAC;IACzC,IAAI,CAACQ,KAAK,EAAEN,OAAO,EAAE;MACnBQ,OAAO,CAACC,IAAI,CAAC,8CAA8CX,IAAI,GAAG,CAAC;MACnE;IACF;IACA,OAAOQ,KAAK,CAACN,OAAO,CAACW,MAAM,CAACN,KAAK,CAAC;EACpC,CAAC;EAED,oBACEd,IAAA,CAACC,kBAAkB,CAACoB,QAAQ;IAACC,KAAK,EAAE;MAAEhB,QAAQ;MAAEK,UAAU;MAAEE,OAAO;MAAEM,OAAO;MAAEC;IAAO,CAAE;IAAAjB,QAAA,eACrFH,IAAA,CAACF,wBAAwB;MAAAK,QAAA,EAAEA;IAAQ,CAA2B;EAAC,CACpC,CAAC;AAElC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASoB,YAAYA,CAAA,EAA4B;EACtD,MAAMC,OAAO,GAAG5B,UAAU,CAACK,kBAAkB,CAAC;EAE9C,IAAI,CAACuB,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLZ,OAAO,EAAEW,OAAO,CAACX,OAAO;IACxBM,OAAO,EAAEK,OAAO,CAACL,OAAO;IACxBC,MAAM,EAAEI,OAAO,CAACJ;EAClB,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["createContext","useContext","useRef","BottomSheetModalProvider","jsx","_jsx","BottomSheetContext","TrueSheetProvider","children","sheetsRef","Map","presentedStackRef","register","name","methods","current","set","unregister","delete","pushToStack","index","indexOf","splice","push","removeFromStack","getSheetsAbove","length","slice","reverse","present","sheet","get","console","warn","dismiss","dismissDirect","resize","Provider","value","useTrueSheet","context","Error"],"sourceRoot":"../../src","sources":["TrueSheetProvider.web.tsx"],"mappings":"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","ignoreList":[]}
@@ -47,7 +47,7 @@ export interface TrueSheetRef {
47
47
  */
48
48
  present: (index?: number, animated?: boolean) => Promise<void>;
49
49
  /**
50
- * Dismiss the sheet.
50
+ * Dismiss the sheet. If other sheets are presented on top, dismisses them instead.
51
51
  * @param animated - Whether to animate the dismissal (default: true)
52
52
  */
53
53
  dismiss: (animated?: boolean) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"TrueSheet.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.web.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAeb,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,SAAS,yGA0VpB,CAAC"}
1
+ {"version":3,"file":"TrueSheet.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheet.web.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EAeb,MAAM,mBAAmB,CAAC;AAc3B,eAAO,MAAM,SAAS,yGA+WpB,CAAC"}
@@ -3,6 +3,10 @@ import type { TrueSheetContextMethods, TrueSheetRef } from './TrueSheet.types';
3
3
  interface BottomSheetContextValue extends TrueSheetContextMethods {
4
4
  register: (name: string, methods: RefObject<TrueSheetRef>) => void;
5
5
  unregister: (name: string) => void;
6
+ pushToStack: (name: string) => void;
7
+ removeFromStack: (name: string) => void;
8
+ getSheetsAbove: (name: string) => string[];
9
+ dismissDirect: (name: string) => Promise<void>;
6
10
  }
7
11
  export declare const BottomSheetContext: import("react").Context<BottomSheetContextValue | null>;
8
12
  export interface TrueSheetProviderProps {
@@ -1 +1 @@
1
- {"version":3,"file":"TrueSheetProvider.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheetProvider.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/E,UAAU,uBAAwB,SAAQ,uBAAuB;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,eAAO,MAAM,kBAAkB,yDAAsD,CAAC;AAEtF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA2CrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,uBAAuB,CAYtD"}
1
+ {"version":3,"file":"TrueSheetProvider.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheetProvider.web.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1F,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/E,UAAU,uBAAwB,SAAQ,uBAAuB;IAC/D,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAC3C,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,eAAO,MAAM,kBAAkB,yDAAsD,CAAC;AAEtF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA8FrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,uBAAuB,CAYtD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodev09/react-native-true-sheet",
3
- "version": "3.3.1",
3
+ "version": "3.3.2",
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",
@@ -51,7 +51,7 @@ export interface TrueSheetRef {
51
51
  */
52
52
  present: (index?: number, animated?: boolean) => Promise<void>;
53
53
  /**
54
- * Dismiss the sheet.
54
+ * Dismiss the sheet. If other sheets are presented on top, dismisses them instead.
55
55
  * @param animated - Whether to animate the dismissal (default: true)
56
56
  */
57
57
  dismiss: (animated?: boolean) => Promise<void>;
@@ -200,6 +200,9 @@ export const TrueSheet = forwardRef<TrueSheetRef, TrueSheetProps>((props, ref) =
200
200
  );
201
201
 
202
202
  const handleDismiss = useCallback(() => {
203
+ // Remove from stack when dismissed
204
+ bottomSheetContext?.removeFromStack(sheetName);
205
+
203
206
  // Resolve dismiss promise
204
207
  if (dismissResolver.current) {
205
208
  dismissResolver.current();
@@ -212,7 +215,7 @@ export const TrueSheet = forwardRef<TrueSheetRef, TrueSheetProps>((props, ref) =
212
215
  isMinimized.current = false;
213
216
  isDismissing.current = false;
214
217
  isDragging.current = false;
215
- }, []);
218
+ }, [sheetName]);
216
219
 
217
220
  const handleAnimate = useCallback(
218
221
  (_fromIndex: number, toIndex: number) => {
@@ -326,22 +329,40 @@ export const TrueSheet = forwardRef<TrueSheetRef, TrueSheetProps>((props, ref) =
326
329
  // For scrollable, we render the child directly
327
330
  const ContainerComponent = scrollable ? Fragment : BottomSheetView;
328
331
 
329
- const sheetMethodsRef = useRef<TrueSheetRef>({
332
+ const dismissInternal = useCallback(() => {
333
+ return new Promise<void>((resolve) => {
334
+ dismissResolver.current = resolve;
335
+ isDismissing.current = true;
336
+ modalRef.current?.dismiss();
337
+ });
338
+ }, []);
339
+
340
+ const sheetMethodsRef = useRef<TrueSheetRef & { dismissDirect?: () => Promise<void> }>({
330
341
  present: (index = 0) => {
331
342
  return new Promise<void>((resolve) => {
332
343
  presentResolver.current = resolve;
333
344
  setSnapIndex(index);
334
345
  isPresenting.current = true;
346
+ bottomSheetContext?.pushToStack(sheetName);
335
347
  modalRef.current?.present();
336
348
  });
337
349
  },
338
350
  dismiss: () => {
339
351
  return new Promise<void>((resolve) => {
340
- dismissResolver.current = resolve;
341
- isDismissing.current = true;
342
- modalRef.current?.dismiss();
352
+ // iOS-like behavior: dismiss sheets above, but not itself.
353
+ // See: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621505-dismiss
354
+ const sheetsAbove = bottomSheetContext?.getSheetsAbove(sheetName) ?? [];
355
+ const immediateChild = sheetsAbove[sheetsAbove.length - 1];
356
+ if (immediateChild) {
357
+ // Dismiss the immediate child - gorhom will dismiss all sheets above it
358
+ bottomSheetContext?.dismissDirect(immediateChild).then(resolve);
359
+ return;
360
+ }
361
+
362
+ dismissInternal().then(resolve);
343
363
  });
344
364
  },
365
+ dismissDirect: () => dismissInternal(),
345
366
  resize: async (index: number) => {
346
367
  modalRef.current?.snapToIndex(index);
347
368
  },
@@ -5,6 +5,10 @@ import type { TrueSheetContextMethods, TrueSheetRef } from './TrueSheet.types';
5
5
  interface BottomSheetContextValue extends TrueSheetContextMethods {
6
6
  register: (name: string, methods: RefObject<TrueSheetRef>) => void;
7
7
  unregister: (name: string) => void;
8
+ pushToStack: (name: string) => void;
9
+ removeFromStack: (name: string) => void;
10
+ getSheetsAbove: (name: string) => string[];
11
+ dismissDirect: (name: string) => Promise<void>;
8
12
  }
9
13
 
10
14
  export const BottomSheetContext = createContext<BottomSheetContextValue | null>(null);
@@ -19,6 +23,7 @@ export interface TrueSheetProviderProps {
19
23
  */
20
24
  export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
21
25
  const sheetsRef = useRef<Map<string, RefObject<TrueSheetRef>>>(new Map());
26
+ const presentedStackRef = useRef<string[]>([]);
22
27
 
23
28
  const register = (name: string, methods: RefObject<TrueSheetRef>) => {
24
29
  sheetsRef.current.set(name, methods);
@@ -28,6 +33,31 @@ export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
28
33
  sheetsRef.current.delete(name);
29
34
  };
30
35
 
36
+ const pushToStack = (name: string) => {
37
+ const index = presentedStackRef.current.indexOf(name);
38
+ if (index >= 0) {
39
+ presentedStackRef.current.splice(index, 1);
40
+ }
41
+ presentedStackRef.current.push(name);
42
+ };
43
+
44
+ const removeFromStack = (name: string) => {
45
+ const index = presentedStackRef.current.indexOf(name);
46
+ if (index >= 0) {
47
+ presentedStackRef.current.splice(index, 1);
48
+ }
49
+ };
50
+
51
+ /**
52
+ * Returns all sheets presented on top of the given sheet.
53
+ * Returns them in reverse order (top-most first) for proper dismissal.
54
+ */
55
+ const getSheetsAbove = (name: string): string[] => {
56
+ const index = presentedStackRef.current.indexOf(name);
57
+ if (index < 0 || index >= presentedStackRef.current.length - 1) return [];
58
+ return presentedStackRef.current.slice(index + 1).reverse();
59
+ };
60
+
31
61
  const present = async (name: string, index: number = 0) => {
32
62
  const sheet = sheetsRef.current.get(name);
33
63
  if (!sheet?.current) {
@@ -46,6 +76,19 @@ export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
46
76
  return sheet.current.dismiss();
47
77
  };
48
78
 
79
+ /**
80
+ * Dismisses a sheet directly without checking for sheets above.
81
+ * Used internally when batch-dismissing stacked sheets.
82
+ */
83
+ const dismissDirect = async (name: string) => {
84
+ const sheet = sheetsRef.current.get(name);
85
+ if (!sheet?.current) {
86
+ console.warn(`TrueSheet: Could not find sheet with name "${name}"`);
87
+ return;
88
+ }
89
+ return (sheet.current as any).dismissDirect?.();
90
+ };
91
+
49
92
  const resize = async (name: string, index: number) => {
50
93
  const sheet = sheetsRef.current.get(name);
51
94
  if (!sheet?.current) {
@@ -56,7 +99,19 @@ export function TrueSheetProvider({ children }: TrueSheetProviderProps) {
56
99
  };
57
100
 
58
101
  return (
59
- <BottomSheetContext.Provider value={{ register, unregister, present, dismiss, resize }}>
102
+ <BottomSheetContext.Provider
103
+ value={{
104
+ register,
105
+ unregister,
106
+ pushToStack,
107
+ removeFromStack,
108
+ getSheetsAbove,
109
+ dismissDirect,
110
+ present,
111
+ dismiss,
112
+ resize,
113
+ }}
114
+ >
60
115
  <BottomSheetModalProvider>{children}</BottomSheetModalProvider>
61
116
  </BottomSheetContext.Provider>
62
117
  );