|
|
|
@ -35,6 +35,7 @@ export function NavBarMenu({ activeItem, isOpen, navItems, onClose, setMenuAnima |
|
|
|
|
const ANIMATION_DURATION = theme.transitions.duration.standard; |
|
|
|
|
const animStyles = getAnimStyles(theme, ANIMATION_DURATION); |
|
|
|
|
const ref = useRef(null); |
|
|
|
|
const backdropRef = useRef(null); |
|
|
|
|
const { dialogProps } = useDialog({}, ref); |
|
|
|
|
|
|
|
|
|
const { overlayProps, underlayProps } = useOverlay( |
|
|
|
@ -50,6 +51,7 @@ export function NavBarMenu({ activeItem, isOpen, navItems, onClose, setMenuAnima |
|
|
|
|
<OverlayContainer> |
|
|
|
|
<FocusScope contain restoreFocus autoFocus> |
|
|
|
|
<CSSTransition |
|
|
|
|
nodeRef={ref} |
|
|
|
|
onEnter={() => setMenuAnimationInProgress(true)} |
|
|
|
|
onExited={() => setMenuAnimationInProgress(false)} |
|
|
|
|
appear={isOpen} |
|
|
|
@ -88,8 +90,14 @@ export function NavBarMenu({ activeItem, isOpen, navItems, onClose, setMenuAnima |
|
|
|
|
</div> |
|
|
|
|
</CSSTransition> |
|
|
|
|
</FocusScope> |
|
|
|
|
<CSSTransition appear={isOpen} in={isOpen} classNames={animStyles.backdrop} timeout={ANIMATION_DURATION}> |
|
|
|
|
<div className={styles.backdrop} {...underlayProps} /> |
|
|
|
|
<CSSTransition |
|
|
|
|
nodeRef={backdropRef} |
|
|
|
|
appear={isOpen} |
|
|
|
|
in={isOpen} |
|
|
|
|
classNames={animStyles.backdrop} |
|
|
|
|
timeout={ANIMATION_DURATION} |
|
|
|
|
> |
|
|
|
|
<div className={styles.backdrop} {...underlayProps} ref={backdropRef} /> |
|
|
|
|
</CSSTransition> |
|
|
|
|
</OverlayContainer> |
|
|
|
|
); |
|
|
|
|