@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
40 lines (36 loc) • 1.04 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 (!trapFocus && event.key === "Escape" && closeOnEscape) {
onClose();
}
});
hooks.useFocusReturn({ opened, shouldReturnFocus: trapFocus && returnFocus });
return {
_id,
titleMounted,
bodyMounted,
shouldLockScroll,
setTitleMounted,
setBodyMounted
};
}
exports.useModal = useModal;
//# sourceMappingURL=use-modal.cjs.map