GitHubopen_in_new

showDialog ​

showDialog() is the programmatic entry point for modal dialogs. It renders a Dialog through the application's OverlayHost, waits for it to close, and resolves with the dialog result.

Prerequisite ​

Create a controller and render <OverlayHost :host="overlays" /> before calling the function returned by useOverlays() or createOverlayService(host). The host is only required for programmatic overlays; declarative Dialog instances do not need it. See OverlayHost for Vue and Nuxt setup.

Basic Usage ​

ts
import { useOverlays } from '@chillet/m3-vue';

const { showDialog } = useOverlays(); // Capture during setup.
const result = await showDialog({
  headline: 'Delete file?',
  content: 'This action cannot be undone.',
  actions: [
    { label: 'Cancel', value: 'cancel' },
    { label: 'Delete', value: 'confirm' },
  ],
});

The promise resolves to the clicked action value. If no explicit value is provided, the action label is used instead. All actions render as text buttons, including primary and destructive actions. Their hierarchy comes from labels, order, and position rather than a filled, tonal, or outlined variant.

Options ​

The tables below are generated from source types and stay in sync with API changes.

ShowDialogOptions ​

FieldTypeRequiredDescriptionDefault
headlinestringNoOptional dialog headline text.-
contentstringNoOptional supporting text content.-
iconstringNoOptional Material Symbols icon name rendered above the headline.-
actionsDialogAction[]NoAction buttons rendered in the dialog footer.-
closeOnBackdropboolean | undefinedNoWhether clicking the backdrop closes the dialog.true
role'dialog' | 'alertdialog'NoARIA role forwarded to the root dialog element.-

DialogAction ​

FieldTypeRequiredDescriptionDefault
labelstringYesLabel shown in the action row.-
valuestring | undefinedNoValue returned when this action closes the dialog.-
disabledboolean | undefinedNoWhether the action button is disabled.-
autofocusboolean | undefinedNoWhether this action should autofocus when rendered.-
closeOnClickboolean | undefinedNoWhether clicking the action should close the dialog.-
onClick(() => void | boolean | Promise<void | boolean>) | undefinedNoOptional callback invoked before the dialog closes. Return `false` to keep it open.-

Behavior Notes ​

  • Calling showDialog() outside a browser environment rejects the promise.
  • Calling showDialog() without a mounted OverlayHost rejects the promise.
  • Unmounting or disposing the target host rejects pending calls.
  • The dialog inherits application-level provides and CSS custom properties from the host.
  • If an action callback throws or rejects, the promise rejects with that error.
  • The promise resolves when the native dialog closes. Cleanup still waits for all Dialog-owned exit motion, including the backdrop, before removing the dialog from the host, so cleanup does not delay the existing result timing.

For manually rendered dialogs and slot-based composition, see Dialog.