@spaced-out/ui-design-system
Version:
Sense UI components library
33 lines (32 loc) • 962 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useModal = useModal;
var _react = require("react");
var _motion = require("../../styles/variables/_motion");
function 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(prev => ({
...prev,
...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
};
}