summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/context
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-12-15 18:21:54 -0500
committerDax Raad <[email protected]>2025-12-15 18:21:54 -0500
commit416a919c6dd4d5d0727850c983fed7cd3273dcf5 (patch)
tree49471041878d576673584b4b8e0ce1b65294ca92 /packages/ui/src/context
parentdbbcf0b8d041245a8b8feeff159d0bb9801b9924 (diff)
downloadopencode-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.tsx9
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}