Skip to Content

Dialog

The Dialog component serves as a pop-up or modal window that overlays the main content, allowing the display of important messages, forms, or user interactions while grabbing user’s focus.

Examples

Basic Dialog

Custom Animation

Define custom animations for the dialog, using the animation, animationViewChange props:

Learn more about how to customize the animations in the Custom Animations section.

Theme

This component uses the following default theme:

  • root{}(5 keys)
      Show all

Learn more about how to customize in the Theme documentation.

API

PropDescriptionDefault
classNameThe CSS class name for the root element of the component.
string
innerClassNameThe CSS class name for the inner content element of the component.
string
contentClassNameThe CSS class name for the content of the component.
string
sizeThe size of the dialog. Can be a string or a number.
string | number
50%
showCloseButtonWhether to show the close button in the dialog header.
boolean
true
childrenThe content of the dialog.
any
disablePaddingWhether to disable padding for the dialog content.
boolean
false
footerThe footer of the dialog.
any
headerThe header of the dialog.
any
headerElementThe React element for the dialog header.
ReactElement<DialogHeaderProps, FC<DialogHeaderProps>>
<DialogHeader />
themeTheme for the Dialog.
DialogTheme
initialProperties, variant label or array of variant labels to start in. Set to `false` to initialise with the values in `animate` (disabling the mount animation) ```jsx // As values <motion.div initial={{ opacity: 1 }} /> // As variant <motion.div initial="visible" variants={variants} /> // Multiple variants <motion.div initial={["visible", "active"]} variants={variants} /> // As false (disable mount animation) <motion.div initial={false} animate={{ opacity: 0 }} /> ``` @deprecated Use animation configuration instead.
boolean | TargetAndTransition | VariantLabels
animateValues to animate to, variant label(s), or `LegacyAnimationControls`. ```jsx // As values <motion.div animate={{ opacity: 1 }} /> // As variant <motion.div animate="visible" variants={variants} /> // Multiple variants <motion.div animate={["visible", "active"]} variants={variants} /> // LegacyAnimationControls <motion.div animate={animation} /> ``` @deprecated Use animation configuration instead.
boolean | TargetAndTransition | VariantLabels
exitA target to animate to when this component is removed from the tree. This component **must** be the first animatable child of an `AnimatePresence` to enable this exit animation. This limitation exists because React doesn't allow components to defer unmounting until after an animation is complete. Once this limitation is fixed, the `AnimatePresence` component will be unnecessary. ```jsx import { AnimatePresence, motion } from 'framer-motion' export const MyComponent = ({ isVisible }) => { return ( <AnimatePresence> {isVisible && ( <motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }} /> )} </AnimatePresence> ) } ``` @deprecated Use animation configuration instead.
TargetAndTransition | VariantLabels
transitionDefault transition. If no `transition` is defined in `animate`, it will use the transition defined here. ```jsx const spring = { type: "spring", damping: 10, stiffness: 100 } <motion.div transition={spring} animate={{ scale: 1.2 }} /> ``` @deprecated Use animation configuration instead.
Transition<any>
animationAnimation configuration for the dialog.
MotionNodeAnimationOptions
open *If true, the global overlay is open.
boolean
closeOnBackdropClickIf true, the global overlay will close when the backdrop is clicked.
boolean
true
hasBackdropIf true, the global overlay will have a backdrop.
boolean
true
backdropClassNameThe CSS class name to be applied to the backdrop of the global overlay.
string
closeOnEscapeIf true, the global overlay will close when the escape key is pressed.
boolean
true
onCloseA function that is called when the global overlay is closed.
() => void
Last updated on