@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
45 lines (41 loc) • 1.2 kB
JavaScript
'use client';
;
var React = require('react');
var hooks = require('@mantine/hooks');
var useLockScroll = require('./use-lock-scroll.cjs');
function useModal({
id,
transitionProps,
opened,
trapFocus,
closeOnEscape,
onClose,
returnFocus
}) {
const _id = hooks.useId(id);
const [titleMounted, setTitleMounted] = React.useState(false);
const [bodyMounted, setBodyMounted] = React.useState(false);
const transitionDuration = typeof transitionProps?.duration === "number" ? transitionProps?.duration : 200;
const shouldLockScroll = useLockScroll.useLockScroll({ opened, transitionDuration });
hooks.useWindowEvent(
"keydown",
(event) => {
if (event.key === "Escape" && closeOnEscape && opened) {
const shouldTrigger = event.target?.getAttribute("data-mantine-stop-propagation") !== "true";
shouldTrigger && onClose();
}
},
{ capture: true }
);
hooks.useFocusReturn({ opened, shouldReturnFocus: trapFocus && returnFocus });
return {
_id,
titleMounted,
bodyMounted,
shouldLockScroll,
setTitleMounted,
setBodyMounted
};
}
exports.useModal = useModal;
//# sourceMappingURL=use-modal.cjs.map