AlertDialog
component is used to interrupt the user with a mandatory
confirmation or action.
Chakra UI exports 7 alert dialog related components.
AlertDialog
: provides context and state for the dialog.AlertDialogHeader
: should contain the title announced by screen readers.AlertDialogBody
: should contain the description announced by screen readers.AlertDialogFooter
: should contain the actions of the dialog.AlertDialogOverlay
: The dimmed overlay behind the dialog.AlertDialogContent
: The wrapper for the alert dialog's content.AlertDialogCloseButton
: The button that closes the dialog.AlertDialog
requires that you provide the leastDestructiveRef
prop.
Based on WAI-ARIA specifications, focus should be placed on the least destructive element when the dialog opens, to prevent users from accidentally confirming the destructive action.
The Modal
comes with a scale transition by default but you can change it by
passing a motionPreset
prop, and set its value to either slideInBottom
,
slideInRight
, or scale
.
AlertDialog
has role alertdialog
, and aria-modal
set to true.AlertDialogHeader
and
AlertDialogBody
are announced by screen readers via aria-labelledby
and
aria-describedby
attributes.AlertDialog
.AlertDialog
and its components compose the Modal
component. The only
exception is that it requires a leastDestructiveRef
which is similar to the
initialFocusRef
of Modal
.
Name | Type | Description | Default |
---|---|---|---|
isOpen | boolean | If `true`, the modal when be opened. | - |
leastDestructiveRef | RefObject<FocusableElement> | undefined | - | |
onClose | () => void | Callback invoked to close the modal. | - |
allowPinchZoom | boolean | Handle zoom/pinch gestures on iOS devices when scroll locking is enabled. Defaults to `false`. | - |
autoFocus | boolean | If `true`, the modal will autofocus the first enabled and interactive element within the `ModalContent` | true |
blockScrollOnMount | boolean | If `true`, scrolling will be disabled on the `body` when the modal opens. | true |
closeOnEsc | boolean | If `true`, the modal will close when the `Esc` key is pressed | true |
closeOnOverlayClick | boolean | If `true`, the modal will close when the overlay is clicked | true |
colorScheme | string | - | |
finalFocusRef | RefObject<FocusableElement> | The `ref` of element to receive focus when the modal closes. | - |
getContainer | (() => HTMLElement | null) | Function that will be called to get the parent element that the modal will be attached to. | - |
id | string | The `id` of the modal | - |
isCentered | boolean | If `true`, the modal will be centered on screen. | false |
motionPreset | "scale" | "slideInBottom" | "slideInRight" | The transition that should be used for the modal | - |
onEsc | (() => void) | Callback fired when the escape key is pressed and focus is within modal | - |
onOverlayClick | (() => void) | Callback fired when the overlay is clicked. | - |
orientation | "horizontal" | "vertical" | - | |
preserveScrollBarGap | boolean | If `true`, a `padding-right` will be applied to the body element that's equal to the width of the scrollbar. This can help prevent some unpleasant flickering effect and content adjustment when the modal opens | - |
returnFocusOnClose | boolean | If `true`, the modal will return focus to the element that triggered it when it closes. | true |
scrollBehavior | "inside" | "outside" | Where scroll behavior should originate. - If set to `inside`, scroll only occurs within the `ModalBody`. - If set to `outside`, the entire `ModalContent` will scroll within the viewport. | "outside" |
size | string | - | |
styleConfig | Record<string, any> | - | |
trapFocus | boolean | If `false`, focus lock will be disabled completely. This is useful in situations where you still need to interact with other surrounding elements. 🚨Warning: We don't recommend doing this because it hurts the accessibility of the modal, based on WAI-ARIA specifications. | true |
useInert | boolean | A11y: If `true`, the siblings of the `modal` will have `aria-hidden` set to `true` so that screen readers can only see the `modal`. This is commonly known as making the other elements **inert** | true |
variant | string | - |