@lodev09/react-native-true-sheet 3.3.0 → 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.
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +12 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetViewController.kt +3 -2
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetDialogObserver.kt +13 -0
- package/ios/TrueSheetFooterView.mm +17 -0
- package/ios/TrueSheetViewController.h +1 -0
- package/lib/module/TrueSheet.web.js +23 -4
- package/lib/module/TrueSheet.web.js.map +1 -1
- package/lib/module/TrueSheetProvider.web.js +41 -0
- package/lib/module/TrueSheetProvider.web.js.map +1 -1
- package/lib/typescript/src/TrueSheet.types.d.ts +1 -1
- package/lib/typescript/src/TrueSheet.web.d.ts.map +1 -1
- package/lib/typescript/src/TrueSheetProvider.web.d.ts +4 -0
- package/lib/typescript/src/TrueSheetProvider.web.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/TrueSheet.types.ts +1 -1
- package/src/TrueSheet.web.tsx +26 -5
- package/src/TrueSheetProvider.web.tsx +56 -1
|
@@ -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) {
|
|
@@ -124,11 +124,28 @@ using namespace facebook::react;
|
|
|
124
124
|
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
- (TrueSheetViewController *)findSheetViewController {
|
|
128
|
+
UIResponder *responder = self;
|
|
129
|
+
while (responder) {
|
|
130
|
+
if ([responder isKindOfClass:[TrueSheetViewController class]]) {
|
|
131
|
+
return (TrueSheetViewController *)responder;
|
|
132
|
+
}
|
|
133
|
+
responder = responder.nextResponder;
|
|
134
|
+
}
|
|
135
|
+
return nil;
|
|
136
|
+
}
|
|
137
|
+
|
|
127
138
|
- (void)keyboardWillChangeFrame:(NSNotification *)notification {
|
|
128
139
|
if (!_bottomConstraint) {
|
|
129
140
|
return;
|
|
130
141
|
}
|
|
131
142
|
|
|
143
|
+
// Only respond to keyboard if this sheet is the topmost presented controller
|
|
144
|
+
TrueSheetViewController *sheetController = [self findSheetViewController];
|
|
145
|
+
if (sheetController && !sheetController.isTopmostPresentedController) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
|
|
132
149
|
NSDictionary *userInfo = notification.userInfo;
|
|
133
150
|
CGRect keyboardFrame = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
|
|
134
151
|
NSTimeInterval duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
|
|
@@ -66,6 +66,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
66
66
|
@property (nonatomic, copy, nullable) NSString *insetAdjustment;
|
|
67
67
|
@property (nonatomic, assign) BOOL isPresented;
|
|
68
68
|
@property (nonatomic, assign) NSInteger activeDetentIndex;
|
|
69
|
+
@property (nonatomic, readonly) BOOL isTopmostPresentedController;
|
|
69
70
|
|
|
70
71
|
- (void)applyActiveDetent;
|
|
71
72
|
- (void)setupActiveDetentWithIndex:(NSInteger)index;
|
|
@@ -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
|
-
|
|
266
|
-
|
|
267
|
-
|
|
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":";;AAAA,SACEA,aAAa,EACbC,QAAQ,EACRC,UAAU,EACVC,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,KAAK,EACLC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SAASC,IAAI,EAAEC,UAAU,EAAEC,mBAAmB,QAAQ,cAAc;AAEpE,SACEC,mBAAmB,EAEnBC,iBAAiB,EAEjBC,iBAAiB,EAEjBC,gBAAgB,EAChBC,eAAe,QAEV,sBAAsB;AAC7B,SAASC,eAAe,EAAEC,cAAc,QAAQ,yBAAyB;AAEzE,SAASC,kBAAkB,QAAQ,4BAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoB7D,MAAMC,qBAAqB,GAAG,EAAE;AAEhC,MAAMC,qBAAqB,GAAG,oBAAoB;AAClD,MAAMC,qBAAqB,GAAG,EAAE;AAChC,MAAMC,sBAAsB,GAAG,CAAC;AAEhC,MAAMC,UAAU,GAAIC,IAAyD,IAAK;EAChF,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;EACtB,iBAAI7B,cAAc,CAAC6B,IAAI,CAAC,EAAE,OAAOA,IAAI;EACrC,oBAAOhC,aAAa,CAACgC,IAAI,CAAC;AAC5B,CAAC;AAED,OAAO,MAAMC,SAAS,gBAAG/B,UAAU,CAA+B,CAACgC,KAAK,EAAEC,GAAG,KAAK;EAChF,MAAM;IACJC,IAAI;IACJC,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAClBC,WAAW,GAAG,IAAI;IAClBC,SAAS,GAAG,IAAI;IAChBC,MAAM,GAAG,IAAI;IACbC,iBAAiB,GAAG,CAAC;IACrBC,QAAQ;IACRC,UAAU,GAAG,KAAK;IAClBC,kBAAkB,GAAG,CAAC,CAAC;IACvBC,eAAe,GAAG,SAAS;IAC3BC,YAAY,GAAGnB,qBAAqB;IACpCoB,OAAO,GAAG,IAAI;IACdC,cAAc;IACdC,SAAS;IACTC,MAAM;IACNC,MAAM;IACNC,OAAO;IACPC,aAAa;IACbC,YAAY;IACZC,aAAa;IACbC,YAAY;IACZC,cAAc;IACdC,gBAAgB;IAChBC,WAAW;IACXC,YAAY;IACZC,SAAS;IACTC,WAAW;IACXC,UAAU;IACVC,UAAU;IACVC,SAAS;IACTC,aAAa,GAAG,QAAQ;IACxBC;EACF,CAAC,GAAGjC,KAAK;EAET,MAAM;IAAEkC,MAAM,EAAEC;EAAa,CAAC,GAAGvD,mBAAmB,CAAC,CAAC;EACtD,MAAMwD,WAAW,GAAG/D,KAAK,CAAC,CAAC;EAC3B,MAAMgE,SAAS,GAAGnC,IAAI,IAAIkC,WAAW;EACrC,MAAME,kBAAkB,GAAGnE,UAAU,CAACiB,kBAAkB,CAAC;EACzD,MAAMmD,QAAQ,GAAG/D,MAAM,CAAmB,IAAI,CAAC;EAC/C,MAAMgE,qBAAqB,GAAGhE,MAAM,CAACkC,kBAAkB,CAAC;EACxD,MAAM+B,eAAe,GAAGjE,MAAM,CAAC,CAAC,CAAC;EACjC,MAAMkE,YAAY,GAAGlE,MAAM,CAAC,KAAK,CAAC;EAClC,MAAMmE,YAAY,GAAGnE,MAAM,CAAC,KAAK,CAAC;EAClC,MAAMoE,WAAW,GAAGpE,MAAM,CAAC,KAAK,CAAC;EACjC,MAAMqE,UAAU,GAAGrE,MAAM,CAAC,KAAK,CAAC;EAEhC,MAAMsE,eAAe,GAAGtE,MAAM,CAAsB,IAAI,CAAC;EACzD,MAAMuE,eAAe,GAAGvE,MAAM,CAAsB,IAAI,CAAC;EAEzD,MAAMwE,gBAAgB,GAAG7D,cAAc,CAACgD,YAAY,CAAC;EACrD,MAAMc,aAAa,GAAG9D,cAAc,CAAC,CAAC,CAAC;EAEvC,MAAM,CAAC+D,SAAS,EAAEC,YAAY,CAAC,GAAG1E,QAAQ,CAACiC,kBAAkB,CAAC;EAC9D,MAAM,CAAC0C,SAAS,EAAEC,YAAY,CAAC,GAAG5E,QAAQ,CAAC,KAAK,CAAC;EAEjDS,eAAe,CAAC,MAAM;IACpBsC,gBAAgB,GAAG;MACjB8B,WAAW,EAAE;QACXC,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;QAChCC,KAAK,EAAER,aAAa,CAACO,KAAK;QAC1BE,MAAM,EAAEvD,OAAO,CAAC8C,aAAa,CAACO,KAAK,CAAC,IAAI,CAAC;QACzCG,QAAQ,EAAE;MACZ;IACF,CAAwB,CAAC;EAC3B,CAAC,CAAC;EAEF,MAAMC,aAAa,GAAGzD,OAAO,CAAC0D,QAAQ,CAAC,MAAM,CAAC;EAE9C,MAAMC,eAAe,GAAG/C,SAAS,IAAIoB,YAAY;EACjD,MAAM4B,UAAU,GAAGxF,OAAO,CACxB,MACE4B,OAAO,CACJ6D,MAAM,CAAEN,MAAM,IAAuBA,MAAM,KAAK,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,CAAC,CACrFO,GAAG,CAAEP,MAAM,IAAKQ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEV,MAAM,CAAC,CAAC,GAAGI,eAAe,CAAC,EAC1E,CAAC3D,OAAO,EAAE2D,eAAe,CAC3B,CAAC;EAED,MAAMO,YAAY,GAAGnG,WAAW,CAC9B,CAACuF,KAAa,EAAEa,SAAiB,EAAEC,KAAsB,KAAK;IAC5D,MAAMC,aAAa,GAAG/B,eAAe,CAACgC,OAAO;IAC7ChC,eAAe,CAACgC,OAAO,GAAGhB,KAAK;;IAE/B;IACA,IAAIZ,UAAU,CAAC4B,OAAO,IAAI,CAAC/B,YAAY,CAAC+B,OAAO,EAAE;MAC/C5B,UAAU,CAAC4B,OAAO,GAAG,KAAK;MAC1B9C,SAAS,GAAG;QACV2B,WAAW,EAAE;UACXG,KAAK;UACLF,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsD,KAAK,CAAC,IAAI;QAC5B;MACF,CAAiB,CAAC;IACpB;IAEA,IAAI,CAACf,YAAY,CAAC+B,OAAO,IAAI,CAAC7B,WAAW,CAAC6B,OAAO,IAAID,aAAa,KAAKf,KAAK,IAAIA,KAAK,IAAI,CAAC,EAAE;MAC1FlC,cAAc,GAAG;QACf+B,WAAW,EAAE;UACXG,KAAK;UACLF,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsD,KAAK,CAAC,IAAI;QAC5B;MACF,CAAsB,CAAC;IACzB;IAEA,IAAIf,YAAY,CAAC+B,OAAO,EAAE;MACxB/B,YAAY,CAAC+B,OAAO,GAAG,KAAK;;MAE5B;MACA,IAAI3B,eAAe,CAAC2B,OAAO,EAAE;QAC3B3B,eAAe,CAAC2B,OAAO,CAAC,CAAC;QACzB3B,eAAe,CAAC2B,OAAO,GAAG,IAAI;MAChC;MAEArD,YAAY,GAAG;QACbkC,WAAW,EAAE;UACXG,KAAK;UACLF,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsD,KAAK,CAAC,IAAI;QAC5B;MACF,CAAoB,CAAC;MAErB5B,UAAU,GAAG;QAAEyB,WAAW,EAAE;MAAK,CAAkB,CAAC;IACtD;;IAEA;IACA,IAAIV,WAAW,CAAC6B,OAAO,IAAIhB,KAAK,KAAK,CAAC,CAAC,EAAE;MACvC1B,SAAS,GAAG;QAAEuB,WAAW,EAAE;MAAK,CAAiB,CAAC;IACpD;;IAEA;IACA,IAAIV,WAAW,CAAC6B,OAAO,IAAIhB,KAAK,IAAI,CAAC,EAAE;MACrCb,WAAW,CAAC6B,OAAO,GAAG,KAAK;MAC3B5C,UAAU,GAAG;QAAEyB,WAAW,EAAE;MAAK,CAAkB,CAAC;IACtD;EACF,CAAC,EACD,CAACnD,OAAO,EAAE6C,gBAAgB,CAC5B,CAAC;EAED,MAAM0B,aAAa,GAAGxG,WAAW,CAAC,MAAM;IACtC;IACA,IAAI6E,eAAe,CAAC0B,OAAO,EAAE;MAC3B1B,eAAe,CAAC0B,OAAO,CAAC,CAAC;MACzB1B,eAAe,CAAC0B,OAAO,GAAG,IAAI;IAChC;IAEAnD,YAAY,GAAG;MAAEgC,WAAW,EAAE;IAAK,CAAoB,CAAC;;IAExD;IACAV,WAAW,CAAC6B,OAAO,GAAG,KAAK;IAC3B9B,YAAY,CAAC8B,OAAO,GAAG,KAAK;IAC5B5B,UAAU,CAAC4B,OAAO,GAAG,KAAK;EAC5B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,aAAa,GAAGzG,WAAW,CAC/B,CAAC0G,UAAkB,EAAEC,OAAe,KAAK;IACvC;IACA,IAAI,CAACnC,YAAY,CAAC+B,OAAO,IAAI,CAAC9B,YAAY,CAAC8B,OAAO,IAAI,CAAC5B,UAAU,CAAC4B,OAAO,IAAII,OAAO,IAAI,CAAC,EAAE;MACzFhC,UAAU,CAAC4B,OAAO,GAAG,IAAI;MACzBhD,WAAW,GAAG;QACZ6B,WAAW,EAAE;UACXG,KAAK,EAAEhB,eAAe,CAACgC,OAAO;UAC9BlB,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAACsC,eAAe,CAACgC,OAAO,CAAC,IAAI;QAC9C;MACF,CAAmB,CAAC;IACtB;;IAEA;IACA,IAAI5B,UAAU,CAAC4B,OAAO,IAAII,OAAO,IAAI,CAAC,EAAE;MACtCnD,YAAY,GAAG;QACb4B,WAAW,EAAE;UACXG,KAAK,EAAEoB,OAAO;UACdtB,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAAC0E,OAAO,CAAC,IAAI;QAC9B;MACF,CAAoB,CAAC;IACvB;IAEA,IAAInC,YAAY,CAAC+B,OAAO,EAAE;MACxBtD,aAAa,GAAG;QACdmC,WAAW,EAAE;UACXG,KAAK,EAAEoB,OAAO;UACdtB,QAAQ,EAAEP,gBAAgB,CAACQ,KAAK;UAChCE,MAAM,EAAEvD,OAAO,CAAC0E,OAAO,CAAC,IAAI;QAC9B;MACF,CAAqB,CAAC;;MAEtB;MACAjD,WAAW,GAAG;QAAE0B,WAAW,EAAE;MAAK,CAAmB,CAAC;IACxD;;IAEA;IACA,IAAIV,WAAW,CAAC6B,OAAO,IAAII,OAAO,IAAI,CAAC,EAAE;MACvCjD,WAAW,GAAG;QAAE0B,WAAW,EAAE;MAAK,CAAmB,CAAC;IACxD;IAEA,IAAIuB,OAAO,KAAK,CAAC,CAAC,IAAI,CAACnC,YAAY,CAAC+B,OAAO,EAAE;MAC3C;MACA7B,WAAW,CAAC6B,OAAO,GAAG,IAAI;MAC1B3C,UAAU,GAAG;QAAEwB,WAAW,EAAE;MAAK,CAAkB,CAAC;MAEpD,IAAIX,YAAY,CAAC8B,OAAO,EAAE;QACxBpD,aAAa,GAAG;UAAEiC,WAAW,EAAE;QAAK,CAAqB,CAAC;MAC5D;IACF;EACF,CAAC,EACD,CAACnD,OAAO,EAAE6C,gBAAgB,CAC5B,CAAC;EAED,MAAM8B,iBAAiB,GAAG5G,WAAW,CAClC6G,aAAuC,IAAK;IAC3C,IAAI,CAACzE,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACA,oBACEhB,IAAA,CAACT,mBAAmB;MAAA,GACdkG,aAAa;MACjBC,OAAO,EAAE,GAAI;MACbC,cAAc,EAAE1E,iBAAkB;MAClC2E,iBAAiB,EAAE3E,iBAAiB,GAAG,CAAE;MACzC4E,aAAa,EAAE/E,WAAW,GAAG,OAAO,GAAG;IAAO,CAC/C,CAAC;EAEN,CAAC,EACD,CAACE,MAAM,EAAEC,iBAAiB,EAAEH,WAAW,CACzC,CAAC;EAED,MAAMgF,eAAe,GAAGlH,WAAW,CAChCmH,WAAmC,IAAK;IACvC,IAAI,CAACxE,OAAO,EAAE;MACZ,OAAO,IAAI;IACb;IAEA,MAAMqB,MAAM,GAAGpB,cAAc,EAAEoB,MAAM,IAAItC,sBAAsB;IAC/D,MAAM0F,YAAY,GAAGxE,cAAc,EAAEF,YAAY,IAAIsB,MAAM,GAAG,CAAC;IAE/D,oBACE5C,IAAA,CAACP,iBAAiB;MAAA,GACZsG,WAAW;MACfpD,KAAK,EAAE,CAACsD,MAAM,CAACC,MAAM,EAAE;QAAEC,UAAU,EAAE3E,cAAc,EAAE4E;MAAU,CAAC,CAAE;MAClEC,cAAc,EAAE;QACdzD,MAAM;QACNoD,YAAY;QACZM,KAAK,EAAE9E,cAAc,EAAE8E,KAAK,IAAIjG,qBAAqB;QACrDgB,eAAe,EAAEG,cAAc,EAAE+E,KAAK,IAAInG;MAC5C;IAAE,CACH,CAAC;EAEN,CAAC,EACD,CAACmB,OAAO,EAAEC,cAAc,CAC1B,CAAC;EAED,MAAMgF,eAAe,GAAGvH,OAAO,CAC7B,MACE0C,MAAM,GACD8E,WAAmC,iBAClCzG,IAAA,CAACR,iBAAiB;IAAA,GAAKiH,WAAW;IAAAvF,QAAA,EAAGX,UAAU,CAACoB,MAAM;EAAC,CAAoB,CAC5E,GACD+E,SAAS,EACf,CAAC/E,MAAM,CACT,CAAC;;EAED;EACA,MAAMgF,kBAAkB,GAAGxF,UAAU,GAAG1C,QAAQ,GAAGkB,eAAe;EAElE,MAAMiH,eAAe,GAAG1H,MAAM,CAAe;IAC3C2H,OAAO,EAAEA,CAAC1C,KAAK,GAAG,CAAC,KAAK;MACtB,OAAO,IAAI2C,OAAO,CAAQC,OAAO,IAAK;QACpCvD,eAAe,CAAC2B,OAAO,GAAG4B,OAAO;QACjClD,YAAY,CAACM,KAAK,CAAC;QACnBf,YAAY,CAAC+B,OAAO,GAAG,IAAI;QAC3BlC,QAAQ,CAACkC,OAAO,EAAE0B,OAAO,CAAC,CAAC;MAC7B,CAAC,CAAC;IACJ,CAAC;IACDG,OAAO,EAAEA,CAAA,KAAM;MACb,OAAO,IAAIF,OAAO,CAAQC,OAAO,IAAK;QACpCtD,eAAe,CAAC0B,OAAO,GAAG4B,OAAO;QACjC1D,YAAY,CAAC8B,OAAO,GAAG,IAAI;QAC3BlC,QAAQ,CAACkC,OAAO,EAAE6B,OAAO,CAAC,CAAC;MAC7B,CAAC,CAAC;IACJ,CAAC;IACDC,MAAM,EAAE,MAAO9C,KAAa,IAAK;MAC/BlB,QAAQ,CAACkC,OAAO,EAAE+B,WAAW,CAAC/C,KAAK,CAAC;IACtC;EACF,CAAC,CAAC;EAEFnF,mBAAmB,CAAC2B,GAAG,EAAE,MAAMiG,eAAe,CAACzB,OAAO,CAAC;;EAEvD;EACArG,SAAS,CAAC,MAAM;IACdkE,kBAAkB,EAAEmE,QAAQ,CAACpE,SAAS,EAAE6D,eAAe,CAAC;IACxD,OAAO,MAAM;MACX5D,kBAAkB,EAAEoE,UAAU,CAACrE,SAAS,CAAC;IAC3C,CAAC;EACH,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;;EAEf;EACAjE,SAAS,CAAC,MAAM;IACd,IAAIoE,qBAAqB,CAACiC,OAAO,IAAI,CAAC,EAAE;MACtCyB,eAAe,CAACzB,OAAO,CAAC0B,OAAO,CAAC3D,qBAAqB,CAACiC,OAAO,CAAC;IAChE;EACF,CAAC,EAAE,EAAE,CAAC;;EAEN;EACArG,SAAS,CAAC,MAAM;IACd,IAAI,CAACgF,SAAS,EAAE;MACdC,YAAY,CAAC,IAAI,CAAC;MAClBnC,OAAO,GAAG;QAAEoC,WAAW,EAAE;MAAK,CAAe,CAAC;IAChD;EACF,CAAC,EAAE,CAACF,SAAS,EAAElC,OAAO,CAAC,CAAC;EAExB,oBACE5B,IAAA,CAACN,gBAAgB;IACfiB,GAAG,EAAEsC,QAAS;IACdrC,IAAI,EAAEmC,SAAU;IAChBJ,KAAK,EAAE,CACLsD,MAAM,CAACoB,IAAI,EACX;MAAEhG,eAAe;MAAEiG,mBAAmB,EAAEhG,YAAY;MAAEiG,oBAAoB,EAAEjG;IAAa,CAAC,CAC1F;IACF6C,KAAK,EAAEP,SAAU;IACjB4D,cAAc;IACdC,oBAAoB,EAAE3G,WAAY;IAClC4G,2BAA2B,EAAE3G,SAAU;IACvC4G,0BAA0B,EAAE5G,SAAU;IACtC2C,gBAAgB,EAAEA,gBAAiB;IACnCC,aAAa,EAAEA,aAAc;IAC7BmC,eAAe,EAAEA,eAAgB;IACjC8B,QAAQ,EAAE7C,YAAa;IACvB8C,SAAS,EAAExC,aAAc;IACzByC,mBAAmB,EAAExD,aAAc;IACnCyD,qBAAqB,EAAEtG,SAAU;IACjCgD,UAAU,EAAEA,UAAU,CAACuD,MAAM,GAAG,CAAC,GAAGvD,UAAU,GAAGiC,SAAU;IAC3DuB,SAAS,EAAE7C,aAAc;IACzB1C,aAAa,EAAEA,aAAc;IAC7B8C,iBAAiB,EAAEA,iBAAkB;IACrC0C,mBAAmB,EAAE,IAAK;IAC1B1B,eAAe,EAAEA,eAAgB;IAAAtF,QAAA,eAEjChB,KAAA,CAACyG,kBAAkB;MAAAzF,QAAA,GAChBX,UAAU,CAACmB,MAAM,CAAC,EAClBP,UAAU,GAAGD,QAAQ,gBAAGlB,IAAA,CAACZ,IAAI;QAACuD,KAAK,EAAEA,KAAM;QAAAzB,QAAA,EAAEA;MAAQ,CAAO,CAAC;IAAA,CAC5C;EAAC,CACL,CAAC;AAEvB,CAAC,CAAC;AAEF,MAAM+E,MAAM,GAAG5G,UAAU,CAAC8I,MAAM,CAAC;EAC/Bd,IAAI,EAAE;IACJe,QAAQ,EAAE;EACZ,CAAC;EACDlC,MAAM,EAAE;IACNjC,QAAQ,EAAE,UAAU;IACpBoE,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,GAAG;IACXC,eAAe,EAAE,EAAE;IACnBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","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","
|
|
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,
|
|
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;
|
|
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
package/src/TrueSheet.types.ts
CHANGED
|
@@ -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>;
|
package/src/TrueSheet.web.tsx
CHANGED
|
@@ -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
|
|
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
|
-
|
|
341
|
-
|
|
342
|
-
|
|
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
|
|
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
|
);
|