use-confirm-dialog
Promise-based confirm dialog state machine (idle → revealed → idle), independent of any dialog markup.
| Package | @vizejs/composable/use-confirm-dialog |
| Own the source | vize lib pull composable:use-confirm-dialog |
| Runtime exports | useConfirmDialog |
| Gzip budget | 2304 B |
Usage
import { useConfirmDialog } from "@vizejs/composable/use-confirm-dialog";
Runtime contract
| Utility | Category | Stability | SSR | Hydration | Cleanup | Targets | Host globals | Uses |
|---|---|---|---|---|---|---|---|---|
useConfirmDialog |
state | experimental | safe | stable | reactive-scope | web, server, worker, native, desktop, terminal | — | createEventHook |
API
useConfirmDialog
Promise-based confirm dialog state machine (idle → revealed → idle), independent of any dialog markup. reveal() resolves with a discriminated result, so if (!result.isCanceled) narrows data to the confirm payload. Payload types are declared as type parameters; void payloads take no argument. Pair it with a native <dialog> or any headless dialog. Synchronous state: SSR-safe; listeners registered inside a scope are removed with it.
function useConfirmDialog< RevealData = void, ConfirmData = void, CancelData = void, >(): ConfirmDialog<RevealData, ConfirmData, CancelData>
const dialog = useConfirmDialog<{ name: string }, "keep" | "delete">();
const result = await dialog.reveal({ name: file.name });
if (!result.isCanceled && result.data === "delete") remove(file);
useConfirmDialog
function useConfirmDialog(): ConfirmDialog<unknown, unknown, unknown>
Types
ConfirmDialog
Dialog state machine returned by useConfirmDialog.
| Member | Type | Description |
|---|---|---|
state |
Readonly<ShallowRef<ConfirmDialogState>> |
"revealed" between reveal() and confirm()/cancel(). |
isRevealed |
Readonly<ShallowRef<boolean>> |
Shorthand for state === "revealed". |
reveal |
( ...payload: ConfirmDialogPayload<RevealData> ) => Promise<ConfirmDialogResult<ConfirmData, CancelData>> |
Open the dialog. While already revealed, returns the pending promise without re-firing onReveal. |
confirm |
(...payload: ConfirmDialogPayload<ConfirmData>) => boolean |
Confirm the revealed dialog. |
cancel |
(...payload: ConfirmDialogPayload<CancelData>) => boolean |
Cancel the revealed dialog. |
onReveal |
( listener: EventHookListener<ConfirmDialogPayload<RevealData>>, ) => EventHookSubscription |
Listen for reveals. |
onConfirm |
( listener: EventHookListener<ConfirmDialogPayload<ConfirmData>>, ) => EventHookSubscription |
Listen for confirmations. |
onCancel |
( listener: EventHookListener<ConfirmDialogPayload<CancelData>>, ) => EventHookSubscription |
Listen for cancellations. |