Dialog
A headless modal dialog component using the native HTML dialog element.
Browser Support: Native Dialog
Chrome 37+ Edge 79+ Firefox 98+ Safari 15.4+ Opera 24+
Uses the native dialog element with showModal(). Safari 15.4+ is required; older versions have no support.
Usage
The Dialog component leverages the native showModal() API for proper modal behavior including focus trapping, backdrop rendering, and escape key handling. It provides v-model support for open/closed state management.
Basic Modal Dialog
A modal dialog with title, description, and cancel/confirm buttons using the native HTML <dialog> element.
Features
Click-Outside Dismissal
By default, clicking the backdrop closes the dialog. Set closeOnClickOutside to false on Dialog.Content to prevent this:
vue
<template>
<Dialog.Content :close-on-click-outside="false">
<!-- Dialog won't close on backdrop click -->
</Dialog.Content>
</template>Blocking Dialogs
The blocking prop disables scrim-based dismissal entirely — the dialog can only be closed programmatically. Use this for critical confirmations where the user must make an explicit choice:
vue
<template>
<Dialog.Content blocking>
<!-- No scrim, no click-outside close — must use Dialog.Close or v-model -->
</Dialog.Content>
</template>Anatomy
Anatomy
<script setup lang="ts">
import { Dialog } from '@vuetify/v0'
</script>
<template>
<Dialog.Root>
<Dialog.Activator />
<Dialog.Content>
<Dialog.Title />
<Dialog.Description />
<Dialog.Close />
</Dialog.Content>
</Dialog.Root>
</template> The following API details are for all variations of the Dialog component.
Dialog.Root
Props
Events
update:model-value
[value: boolean]Slots
default
DialogRootSlotPropsDialog.Activator
Props
Slots
default
DialogActivatorSlotPropsDialog.Close
Props
Slots
default
DialogCloseSlotPropsDialog.Content
Props
Events
Slots
default
DialogContentSlotPropsDialog.Description
Props
Slots
default
DialogDescriptionSlotPropsDialog.Title
Props
Slots
default
DialogTitleSlotPropsWas this page helpful?