Drawer
Accessibility
We have built in functionality based on the recommendations for dialogs and drawers in WAI-ARIA Authoring Practices 1.1.
- Upon opening, focus will be transferred to the first interactive element (unless
autofocusis set to false) - Container element has
aria-label="drawer" Escapekey closes the drawer- Click on backdrop (anywhere outside dialog) hides drawer.
- Background is not be scrollable while drawer is open (position: fixed).
- Upon closing, focus should return to element that triggered drawer.
Drawer API
animate boolean = true
Sets whether the Drawer should be displayed by easing in and out
isOpen boolean = false
autoFocus boolean = true
If true, focus will shift to the first interactive element within the drawer. If false, the drawer container itself will receive focus. Moving focus into a newly opened drawer is important for accessibility purposes, so please be careful!
mountNode HTMLElement
Where to mount the modal
HTMLElementchildren union
Drawer content. The children-as-function API may be preferable for performance reasons (wont render until opened)
One of Node, => Nodecloseable boolean = true
Whether the modal should be closeable by the user (either via escape, backdrop click, etc). You can set this to false if your modal has an action that the user must take before closing.
onClose function
closeSource $Keys{ closeButton: "closeButton", backdrop: "backdrop", escape: "escape" } => mixedoverrides object = {}
Root { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>children Node$animating boolean required $isVisible boolean required $isOpen boolean required $size required One of $Keys{ default: "default", full: "full", auto: "auto" }, string$closeable boolean required $anchor required One of $Keys{ left: "left", right: "right", top: "top", bottom: "bottom" }, stringBackdrop { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>children Node$animating boolean required $isVisible boolean required $isOpen boolean required $size required One of $Keys{ default: "default", full: "full", auto: "auto" }, string$closeable boolean required $anchor required One of $Keys{ left: "left", right: "right", top: "top", bottom: "bottom" }, stringDrawerBody { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>children Node$animating boolean required $isVisible boolean required $isOpen boolean required $size required One of $Keys{ default: "default", full: "full", auto: "auto" }, string$closeable boolean required $anchor required One of $Keys{ left: "left", right: "right", top: "top", bottom: "bottom" }, stringDrawerContainer { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>children Node$animating boolean required $isVisible boolean required $isOpen boolean required $size required One of $Keys{ default: "default", full: "full", auto: "auto" }, string$closeable boolean required $anchor required One of $Keys{ left: "left", right: "right", top: "top", bottom: "bottom" }, stringClose { component: ?ComponentType<<T> & { children: Node }>, props: ?{} | ({}) => ?{}, style: ?{} | ({}) => ?{} }<<T>> | ComponentType<<T> & { children: Node }>children Node$animating boolean required $isVisible boolean required $isOpen boolean required $size required One of $Keys{ default: "default", full: "full", auto: "auto" }, string$closeable boolean required $anchor required One of $Keys{ left: "left", right: "right", top: "top", bottom: "bottom" }, stringsize union =
Controls the size of the modal (primarily width). Can be a SIZE constant or css width property value.
One of $Keys{ default: "default", full: "full", auto: "auto" }, stringanchor union =
One of $Keys{ left: "left", right: "right", top: "top", bottom: "bottom" }, stringshowBackdrop boolean = true
Whether the backdrop should be present
onBackdropClick function
Function to be called when backdrop is clicked
Event => mixedonEscapeKeyDown function
Event => mixed