Menu Dialog

A list of menu options inside a modal dialog.

Props#

PropTypeDefaultDescription
isOpenrequiredbooleanIf true, the modal will be open.
onCloserequired() => voidCallback invoked to close the modal.
allowPinchZoombooleanfalse.Handle zoom/pinch gestures on iOS devices when scroll locking is enabled.
autoFocusbooleantrueIf true, the modal will autofocus the first enabled and interactive element within the ModalContent
blockScrollOnMountbooleantrueIf true, scrolling will be disabled on the body when the modal opens.
childrenstring | number | bigint | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | ((props: { ... }) => ReactNode)The modal children
closeOnEscbooleantrueIf true, the modal will close when the Esc key is pressed
closeOnOverlayClickbooleantrueIf true, the modal will close when the overlay is clicked
contentPropsModalContentPropsProps for the modal content
finalFocusRefRefObject<FocusableElement>The ref of element to receive focus when the modal closes.
footerstring | number | bigint | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...>The modal footer, wrapped with ModalFooter
footerPropsModalFooterPropsProps for the modal footer
headerPropsModalHeaderPropsProps for the modal header
hideCloseButtonbooleanHide the close button
hideOverlaybooleanHide the overlay
idstringThe id of the modal
initialFocusRefRefObject<FocusableElement>The ref of element to receive focus when the modal opens.
isCenteredbooleanfalseIf true, the modal will be centered on screen.
lockFocusAcrossFramesbooleanfalseEnables aggressive focus capturing within iframes. - If true: keep focus in the lock, no matter where lock is active - If false: allows focus to move outside of iframe
motionPresetMotionPresetscaleThe transition that should be used for the modal
onCloseComplete() => voidFires when all exiting nodes have completed animating out
onEsc() => voidCallback fired when the escape key is pressed and focus is within modal
onOverlayClick() => voidCallback fired when the overlay is clicked.
portalPropsPick< PortalProps, "appendToParentPortal" | "containerRef" >Props to be forwarded to the portal component
preserveScrollBarGapbooleantrueIf 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
returnFocusOnClosebooleantrueIf true, the modal will return focus to the element that triggered it when it closes.
scrollBehaviorScrollBehavioroutsideWhere 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.
titlestring | number | bigint | boolean | ReactElement<any, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...>The modal title
trapFocusbooleantrueIf 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.
useInertbooleantrueA11y: 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**

Was this helpful?