# @chakra-ui/modal A modal is a window overlaid on either the primary window or another dialog window. Contents behind a modal dialog are **inert** meaning that users cannot interact with content behind the dialog. ## Installation ```sh yarn add @chakra-ui/modal # or npm i @chakra-ui/modal ``` ## Import components ```jsx import { Modal, ModalOverlay, ModalContent, ModalHeader, ModalFooter, ModalBody, ModalCloseButton, } from "@chakra-ui/react" ``` ## Usage When the modal opens, focus is sent into the modal and set to the first tabbable element. If there are no tabbed element, focus is set on the `ModalContent`. ```jsx function BasicUsage() { const { isOpen, onOpen, onClose } = useDisclosure() return ( <> Modal Title ) } ``` ### Control Focus when Modal closes When the dialog closes, it returns focus to the element that triggered. Set `finalFocusRef` to element that should receive focus when the modal opens. ```jsx function ReturnFocus() { const { isOpen, onOpen, onClose } = useDisclosure() const finalRef = React.useRef() return ( <> Some other content that'll receive focus on close. Modal Title ) } ``` # Alert Dialog AlertDialog component is used interrupt the user with a mandatory confirmation or action. ## Installation ```sh yarn add @chakra-ui/alert-dialog # or npm i @chakra-ui/alert-dialog ``` ## Import components ```jsx import { AlertDialog, AlertDialogBody, AlertDialogFooter, AlertDialogHeader, AlertDialogContent, AlertDialogOverlay, } from "@chakra-ui/react" ``` ## Basic usage ## Usage AlertDialog requires that you provide the `leastDestructiveRef` prop. Based on [WAI-ARIA specifications](https://www.w3.org/TR/wai-aria-practices/#alertdialog), focus should be placed on the least destructive element when the dialog opens, to prevent users from accidentally confirming the destructive action. ```jsx function AlertDialogExample() { const [isOpen, setIsOpen] = React.useState() const onClose = () => setIsOpen(false) const cancelRef = React.useRef() return ( <> Delete Customer Are you sure? You can't undo this action afterwards. ) } ``` # Drawer The Drawer component is a panel that slides out from the edge of the screen. It can be useful when you need users to complete a task or view some details without leaving the current page. ## Installation ```sh yarn add @chakra-ui/modal # or npm i @chakra-ui/modal ``` ## Import components ```jsx import { Drawer, DrawerOverlay, DrawerContent, DrawerHeader, DrawerFooter, DrawerBody, DrawerCloseButton, } from "@chakra-ui/react" ``` ## Basic usage ## Usage By default, focus is placed on `DrawerCloseButton` when the drawer opens. ```jsx function DrawerExample() { const { isOpen, onOpen, onClose } = useDisclosure() const btnRef = React.useRef() return ( <> Create your account ) } ```