From f88b16525498584f81ea7f594a63623fc5dc7ce9 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 20 Feb 2024 18:20:59 -0600 Subject: Add optional close callback to Dialog (#2947) * Add optional close callback * No emitter --- src/components/Dialog/index.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/components/Dialog/index.tsx') diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx index 529535051..27f43afd3 100644 --- a/src/components/Dialog/index.tsx +++ b/src/components/Dialog/index.tsx @@ -35,6 +35,7 @@ export function Outer({ const sheetOptions = nativeOptions?.sheet || {} const hasSnapPoints = !!sheetOptions.snapPoints const insets = useSafeAreaInsets() + const closeCallback = React.useRef<() => void>() /* * Used to manage open/closed, but index is otherwise handled internally by `BottomSheet` @@ -54,7 +55,10 @@ export function Outer({ [setOpenIndex], ) - const close = React.useCallback(() => { + const close = React.useCallback(cb => { + if (cb) { + closeCallback.current = cb + } sheet.current?.close() }, []) @@ -70,6 +74,8 @@ export function Outer({ const onChange = React.useCallback( (index: number) => { if (index === -1) { + closeCallback.current?.() + closeCallback.current = undefined onClose?.() setOpenIndex(-1) } -- cgit 1.4.1