Drawer
An overlay component that can be attached to the left/right side of the screen.
Import
import { Drawer } from "@cfa/react-core";Live Editor
Examples
Default
This is the default Drawer without any props. By default, the Drawer can only be closed by using the CloseButton at the top, or using the ESC key.
Dismissable Drawer
A drawer that can be dismissed by clicking outside. When using the Drawer.Overlay, this prop needs to be added to the Overlay and not the Tray.
Hide Close Icon
The “X” at the top of the Drawer can be hidden, this can prevent users from closing the Drawer before taking an action
Custom Close Button
The Drawer.CloseButton is a pre-configured Button that can close the Drawer. This would typically be used for something
like a “Cancel” button.
Custom Styling
You can customize the drawer’s appearance using CSS classes or inline styles:
Controlled Drawer
A drawer whose open state is controlled by the parent component.
Custom Overlay
The Drawer.Overlay provides a way for you to customize the Overlay itself, a common use case might be to add some z-index if you are seeing
conflicts in your app. Generally you should not need to use this component.
Keep in mind that isDismissable and isKeyboardDismissDisabled will have to be used on the Overlay in this scenario.
Props
Visit the Documentation Site for the full list of props.
| Name | Type | Default | Description |
|---|---|---|---|
| defaultOpen | boolean | - | Whether the overlay is open by default (uncontrolled). |
| isOpen | boolean | - | Whether the overlay is open by default (controlled). |
| onOpenChange | (isOpen: boolean) => void | - | Handler that is called when the overlay's open state changes. |
| Name | Type | Default | Description |
|---|---|---|---|
| isCloseButtonHidden | boolean | false | Removes the close button from Modal |
| isDismissable | boolean | false | Enables the Modal to be closed by clicking outside of the Modal |
| className | ClassNameOrFunction<ModalRenderProps> | 'react-aria-ModalOverlay' | The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state. |
| defaultOpen | boolean | - | Whether the overlay is open by default (uncontrolled). |
| dir | string | - | - |
| hidden | boolean | - | - |
| inert | boolean | - | - |
| isEntering | boolean | - | Whether the modal is currently performing an entry animation. |
| isExiting | boolean | - | Whether the modal is currently performing an exit animation. |
| isKeyboardDismissDisabled | boolean | false | Whether pressing the escape key to close the modal should be disabled. |
| isOpen | boolean | - | Whether the overlay is open by default (controlled). |
| lang | string | - | - |
| onAnimationEnd | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationEndCapture | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationIteration | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationIterationCapture | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationStart | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationStartCapture | AnimationEventHandler<HTMLDivElement> | - | - |
| onAuxClick | MouseEventHandler<HTMLDivElement> | - | - |
| onAuxClickCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onClick | MouseEventHandler<HTMLDivElement> | - | - |
| onClickCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onContextMenu | MouseEventHandler<HTMLDivElement> | - | - |
| onContextMenuCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onDoubleClick | MouseEventHandler<HTMLDivElement> | - | - |
| onDoubleClickCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onGotPointerCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onGotPointerCaptureCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onLostPointerCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onLostPointerCaptureCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onMouseDown | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseDownCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseEnter | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseLeave | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseMove | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseMoveCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOut | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOutCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOver | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOverCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseUp | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseUpCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onOpenChange | (isOpen: boolean) => void | - | Handler that is called when the overlay's open state changes. |
| onPointerCancel | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerCancelCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerDown | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerDownCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerEnter | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerLeave | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerMove | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerMoveCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOut | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOutCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOver | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOverCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerUp | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerUpCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onScroll | UIEventHandler<HTMLDivElement> | - | - |
| onScrollCapture | UIEventHandler<HTMLDivElement> | - | - |
| onTouchCancel | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchCancelCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchEnd | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchEndCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchMove | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchMoveCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchStart | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchStartCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTransitionCancel | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionCancelCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionEnd | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionEndCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionRun | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionRunCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionStart | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionStartCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onWheel | WheelEventHandler<HTMLDivElement> | - | - |
| onWheelCapture | WheelEventHandler<HTMLDivElement> | - | - |
| render | DOMRenderFunction<"div", ModalRenderProps> | - | Overrides the default DOM element with a custom render function. This allows rendering existing components with built-in styles and behaviors such as router links, animation libraries, and pre-styled components. Requirements: * You must render the expected element type (e.g. if `<button>` is expected, you cannot render an `<a>`). * Only a single root DOM element can be rendered (no fragments). * You must pass through props and ref to the underlying DOM element, merging with your own prop as appropriate. |
| slot | string | - | A slot name for the component. Slots allow the component to receive props from a parent component. An explicit `null` value indicates that the local props completely override all props received from a parent. |
| style | StyleOrFunction<ModalRenderProps> | - | The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state. |
| translate | "yes" | "no" | - | - |
| Name | Type | Default | Description |
|---|---|---|---|
| isCloseButtonHidden | boolean | false | Removes the close button from Modal |
| isDismissable | boolean | false | Enables the Modal to be closed by clicking outside of the Modal |
| position | "left" | "right" | "right" | Which edge of the viewport the drawer is anchored to. |
| size | "sm" | "md" | "lg" | 'md' | Size of the drawer |
| className | ClassNameOrFunction<ModalRenderProps> | 'react-aria-ModalOverlay' | The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state. |
| defaultOpen | boolean | - | Whether the overlay is open by default (uncontrolled). |
| dir | string | - | - |
| hidden | boolean | - | - |
| inert | boolean | - | - |
| isEntering | boolean | - | Whether the modal is currently performing an entry animation. |
| isExiting | boolean | - | Whether the modal is currently performing an exit animation. |
| isKeyboardDismissDisabled | boolean | false | Whether pressing the escape key to close the modal should be disabled. |
| isOpen | boolean | - | Whether the overlay is open by default (controlled). |
| lang | string | - | - |
| onAnimationEnd | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationEndCapture | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationIteration | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationIterationCapture | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationStart | AnimationEventHandler<HTMLDivElement> | - | - |
| onAnimationStartCapture | AnimationEventHandler<HTMLDivElement> | - | - |
| onAuxClick | MouseEventHandler<HTMLDivElement> | - | - |
| onAuxClickCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onClick | MouseEventHandler<HTMLDivElement> | - | - |
| onClickCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onContextMenu | MouseEventHandler<HTMLDivElement> | - | - |
| onContextMenuCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onDoubleClick | MouseEventHandler<HTMLDivElement> | - | - |
| onDoubleClickCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onGotPointerCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onGotPointerCaptureCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onLostPointerCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onLostPointerCaptureCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onMouseDown | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseDownCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseEnter | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseLeave | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseMove | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseMoveCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOut | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOutCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOver | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseOverCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseUp | MouseEventHandler<HTMLDivElement> | - | - |
| onMouseUpCapture | MouseEventHandler<HTMLDivElement> | - | - |
| onOpenChange | (isOpen: boolean) => void | - | Handler that is called when the overlay's open state changes. |
| onPointerCancel | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerCancelCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerDown | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerDownCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerEnter | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerLeave | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerMove | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerMoveCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOut | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOutCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOver | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerOverCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerUp | PointerEventHandler<HTMLDivElement> | - | - |
| onPointerUpCapture | PointerEventHandler<HTMLDivElement> | - | - |
| onScroll | UIEventHandler<HTMLDivElement> | - | - |
| onScrollCapture | UIEventHandler<HTMLDivElement> | - | - |
| onTouchCancel | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchCancelCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchEnd | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchEndCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchMove | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchMoveCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchStart | TouchEventHandler<HTMLDivElement> | - | - |
| onTouchStartCapture | TouchEventHandler<HTMLDivElement> | - | - |
| onTransitionCancel | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionCancelCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionEnd | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionEndCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionRun | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionRunCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionStart | TransitionEventHandler<HTMLDivElement> | - | - |
| onTransitionStartCapture | TransitionEventHandler<HTMLDivElement> | - | - |
| onWheel | WheelEventHandler<HTMLDivElement> | - | - |
| onWheelCapture | WheelEventHandler<HTMLDivElement> | - | - |
| render | DOMRenderFunction<"div", ModalRenderProps> | - | Overrides the default DOM element with a custom render function. This allows rendering existing components with built-in styles and behaviors such as router links, animation libraries, and pre-styled components. Requirements: * You must render the expected element type (e.g. if `<button>` is expected, you cannot render an `<a>`). * Only a single root DOM element can be rendered (no fragments). * You must pass through props and ref to the underlying DOM element, merging with your own prop as appropriate. |
| slot | string | - | A slot name for the component. Slots allow the component to receive props from a parent component. An explicit `null` value indicates that the local props completely override all props received from a parent. |
| style | StyleOrFunction<ModalRenderProps> | - | The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state. |
| translate | "yes" | "no" | - | - |