Modal API
API reference docs for the React Modal component. Learn about the props, CSS, and other APIs of this exported module.
Component demos
Import
import Modal from '@mui/joy/Modal';
// or
import { Modal } from '@mui/joy';
Props of the native component are also available.
Name | Type | Default | Description |
---|---|---|---|
children* | element | - | A single child content element. |
open* | bool | - | If |
component | elementType | - | The component used for the root node. Either a string to use a HTML element or a component. |
container | HTML element | func | - | An HTML element or function that returns one. The |
disableAutoFocus | bool | false | If |
disableEnforceFocus | bool | false | If |
disableEscapeKeyDown | bool | false | If |
disablePortal | bool | false | The |
disableRestoreFocus | bool | false | If |
disableScrollLock | bool | false | Disable the scroll lock behavior. |
hideBackdrop | bool | false | If |
keepMounted | bool | false | Always keep the children in the DOM. This prop can be useful in SEO situation or when you want to maximize the responsiveness of the Modal. |
onClose | func | - | Callback fired when the component requests to be closed. The Signature: function(event: object, reason: string) => void
|
slotProps | { backdrop?: func | object, root?: func | object } | {} | The props used for each slot inside. |
slots | { backdrop?: elementType, root?: elementType } | {} | The components used for each slot inside. See Slots API below for more details. |
sx | Array<func | object | bool> | func | object | - | The system prop that allows defining system overrides as well as additional CSS styles. See the `sx` page for more details. |
ref
is forwarded to the root element.To learn how to customize the slot, check out the Overriding component structure guide.
Slot name | Class name | Default component | Description |
---|---|---|---|
root | .MuiModal-root | 'div' | The component that renders the root. |
backdrop | .MuiModal-backdrop | 'div' | The component that renders the backdrop. |
These class names are useful for styling with CSS. They are applied to the component's slots when specific states are triggered.
Class name | Rule name | Description |
---|
You can override the style of the component using one of these customization options:
- With a global class name.
- With a rule name as part of the component's
styleOverrides
property in a custom theme.