Vize

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.