diff options
| author | Dax Raad <[email protected]> | 2025-12-15 18:21:54 -0500 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-12-15 18:21:54 -0500 |
| commit | 416a919c6dd4d5d0727850c983fed7cd3273dcf5 (patch) | |
| tree | 49471041878d576673584b4b8e0ce1b65294ca92 /packages/ui/src/context | |
| parent | dbbcf0b8d041245a8b8feeff159d0bb9801b9924 (diff) | |
| download | opencode-416a919c6dd4d5d0727850c983fed7cd3273dcf5.tar.gz opencode-416a919c6dd4d5d0727850c983fed7cd3273dcf5.zip | |
tui: fix dialog replacement to prevent nested dialogs from showing simultaneously
Diffstat (limited to 'packages/ui/src/context')
| -rw-r--r-- | packages/ui/src/context/dialog.tsx | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/packages/ui/src/context/dialog.tsx b/packages/ui/src/context/dialog.tsx index 50e41c596..b15d96991 100644 --- a/packages/ui/src/context/dialog.tsx +++ b/packages/ui/src/context/dialog.tsx @@ -22,6 +22,7 @@ const Context = createContext<ReturnType<typeof init>>() function init() { const [store, setStore] = createSignal< { + id: string element: DialogElement onClose?: () => void owner: Owner @@ -45,11 +46,13 @@ function init() { for (const item of store()) { item.onClose?.() } + const id = Math.random().toString(36) setStore([ { + id, element: () => runWithOwner(owner, () => ( - <Show when={result.stack.at(-1)?.owner === owner}> + <Show when={result.stack.at(-1)?.id === id}> <Kobalte modal defaultOpen @@ -79,11 +82,15 @@ function init() { setStore([]) }, } + return result } export function DialogProvider(props: ParentProps) { const ctx = init() + createEffect(() => { + console.log("store", ctx.stack.length) + }) return ( <Context.Provider value={ctx}> {props.children} |
