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.
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.
Was this page helpful?