Alert Dialog
The AlertDialog component is used to interrupt the user with a mandatory confirmation or action.
See CAlertDialog
's accessibility report
Import#
Chakra UI exports seven alert dialog-related components.
CAlertDialog
: provides context and state for the dialog.CAlertDialogHeader
: should contain the title announced by screen readers.CAlertDialogBody
: should contain the description announced by screen readers.CAlertDialogFooter
: should contain the actions of the dialog.CAlertDialogOverlay
: The dimmed overlay behind the dialog.CAlertDialogContent
: The wrapper for the alert dialog's content.CAlertDialogCloseButton
: The button that closes the dialog.
import { CAlertDialog, CAlertDialogHeader, CAlertDialogBody, CAlertDialogFooter, CAlertDialogOverlay, CAlertDialogContent, CAlertDialogCloseButton } from "@chakra-ui/vue";
Usage#
CAlertDialog
requires that you provide the leastDestructiveRef
prop. This ref can be an actual Vue ref to a focusable element or component in your alert dialog. The leastDestructiveRef
prop also accepts a function that returns a ref.
Based on WAI-ARIA specifications for alert dialogs when the dialog opens, the focus should be placed on the least destructive element to prevent users from accidentally confirming the destructive action.
<template> <div> <c-alert-dialog :is-open="isOpen" :least-destructive-ref="$refs.cancelRef" :on-close="closeDialog" > <c-alert-dialog-overlay /> <c-alert-dialog-content> <c-alert-dialog-header font-size="lg" font-weight="bold"> Delete Customer </c-alert-dialog-header> <c-alert-dialog-body> Are you sure? You can't undo this action afterwards. </c-alert-dialog-body> <c-alert-dialog-footer> <c-button ref="cancelRef" @click="closeDialog"> Cancel </c-button> <c-button variantColor="red" @click="closeDialog" ml="3"> Delete </c-button> </c-alert-dialog-footer> </c-alert-dialog-content> </c-alert-dialog> <c-button variant-color="red" @click="openDialog"> Delete Customer </c-button> </div> </template> <script> export default { data () { return { isOpen: false } }, methods: { closeDialog() { this.isOpen = false }, openDialog() { this.isOpen = true } } } </script>
Accessibility#
CAlertDialog
has rolealertdialog
, andaria-modal
set to true.- When the dialog opens, the focus is automatically set to the least destructive element.
- When the dialog opens, the content in the
CAlertDialogHeader
andCAlertDialogBody
is announced by screen readers viaaria-labelledby
andaria-describedby
attributes. - Clicking on the overlay closes the
CAlertDialog
. - Pressing esc closes the dialog.
Props#
AlertDialog and its components composes the CModal
component, the only exception is that it requires a leastDestructiveRef
which is similar to the initialFocusRef
in CModal
Name | Type | Default | Description |
---|---|---|---|
leastDestructiveRef (required) | vm.$ref , () => vm.ref or CSS selector | The least destructive action to get focus when dialog is open |
❤️ Contribute to this page
Caught a mistake or want to contribute to the documentation? Edit this page on GitHub!