@spaced-out/ui-design-system
Version:
Sense UI components library
31 lines (30 loc) • 951 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useModal = void 0;
var _react = require("react");
var _motion = require("../../styles/variables/_motion");
const useModal = () => {
const [isOpen, setIsOpen] = (0, _react.useState)(false);
const [extras, setExtras] = (0, _react.useState)({});
const openModal = (0, _react.useCallback)(function () {
let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
setExtras(props);
setIsOpen(true);
}, []);
const closeModal = () => {
setIsOpen(false);
// Since the Dialog close uses animation and its duration is motionDurationNormal, we should clear the data after the animation duration for better user experience
setTimeout(() => {
setExtras({});
}, parseInt(_motion.motionDurationNormal));
};
return {
isOpen,
openModal,
closeModal,
extras
};
};
exports.useModal = useModal;