From 20619a6a26ec0cfc2707b7ed13387715e9f9cdaa Mon Sep 17 00:00:00 2001 From: Aaron Iker Date: Fri, 30 Jan 2026 18:57:49 +0100 Subject: feat: Transitions, spacing, scroll fade, prompt area update (#11168) Co-authored-by: Github Action Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: aaroniker <4730431+aaroniker@users.noreply.github.com> --- packages/ui/src/context/dialog.tsx | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'packages/ui/src/context') diff --git a/packages/ui/src/context/dialog.tsx b/packages/ui/src/context/dialog.tsx index afba5f648..bd47b86d3 100644 --- a/packages/ui/src/context/dialog.tsx +++ b/packages/ui/src/context/dialog.tsx @@ -28,6 +28,7 @@ const Context = createContext>() function init() { const [active, setActive] = createSignal() + const [renders, setRenders] = createSignal>({}) const timer = { current: undefined as ReturnType | undefined } const lock = { value: false } @@ -118,12 +119,28 @@ function init() { setActive({ id, node, dispose, owner, onClose, setClosing }) } + const render = (element: JSX.Element, id: string, owner: Owner) => { + setRenders((renders) => ({ ...renders, [id]: element })) + show(() => element, owner, () => { + setRenders((renders) => { + const { [id]: _, ...rest } = renders + return rest + }) + }) + } + + const isActive = (id: string) => { + return renders()[id] !== undefined + } + return { get active() { return active() }, + isActive, close, show, + render, } } @@ -152,10 +169,17 @@ export function useDialog() { get active() { return ctx.active }, + isActive(id: string) { + return ctx.isActive(id) + }, show(element: DialogElement, onClose?: () => void) { const base = ctx.active?.owner ?? owner ctx.show(element, base, onClose) }, + render(element: JSX.Element, id: string) { + const base = ctx.active?.owner ?? owner + ctx.render(element, id, base) + }, close() { ctx.close() }, -- cgit v1.2.3