From dc4eca5b94556b6d2f9db72c51a777c4b3bb7c5a Mon Sep 17 00:00:00 2001 From: code-504 <58441533+code-504@users.noreply.github.com> Date: Mon, 14 Jul 2025 12:35:42 -0600 Subject: [PATCH] fix: allow closing sheets from ref when using SheetManager --- src/index.tsx | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index 5a6b3ca..effca43 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -268,7 +268,7 @@ export default forwardRef( ...config, velocity: typeof velocity !== 'number' ? undefined : velocity, }).start(); - }else { + } else { Animated.spring(animations.translateY, { toValue: initialValue.current, useNativeDriver: true, @@ -276,7 +276,7 @@ export default forwardRef( velocity: typeof velocity !== 'number' ? undefined : velocity, }).start(); } - + notifySnapIndexChanged(); }, // eslint-disable-next-line react-hooks/exhaustive-deps @@ -349,7 +349,9 @@ export default forwardRef( if (drawUnderStatusBar || props.onChange) { animationListener = animations.translateY.addListener(value => { const correctedValue = - value.value > minTranslateValue.current ? value.value - minTranslateValue.current : 0; + value.value > minTranslateValue.current + ? value.value - minTranslateValue.current + : 0; props?.onChange?.(correctedValue, actionSheetHeight.current); if (drawUnderStatusBar) { if (lock.current) return; @@ -772,7 +774,12 @@ export default forwardRef( } }, onGestureEvent(event) { - if (sheetId && !isRenderedOnTop(sheetId, currentContext)) return; + if ( + sheetId && + id === sheetId && + !isRenderedOnTop(sheetId, currentContext) + ) + return; const gesture = event.nativeEvent; let deltaY = gesture.translationY; @@ -1004,7 +1011,11 @@ export default forwardRef( ? {panHandlers: {}} : PanResponder.create({ onMoveShouldSetPanResponder: (_event, gesture) => { - if (sheetId && !isRenderedOnTop(sheetId, currentContext)) + if ( + sheetId && + id === sheetId && + !isRenderedOnTop(sheetId, currentContext) + ) return false; let vy = gesture.vy < 0 ? gesture.vy * -1 : gesture.vy; let vx = gesture.vx < 0 ? gesture.vx * -1 : gesture.vx; @@ -1023,7 +1034,11 @@ export default forwardRef( return true; }, onStartShouldSetPanResponder: (_event, _gesture) => { - if (sheetId && !isRenderedOnTop(sheetId, currentContext)) + if ( + sheetId && + id === sheetId && + !isRenderedOnTop(sheetId, currentContext) + ) return false; const activeDraggableNodes = getActiveDraggableNodes( _event.nativeEvent.pageX,