UNPKG

@spaced-out/ui-design-system

Version:
33 lines (32 loc) 962 B
"use strict"; 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 }; }