UNPKG

@zohodesk/hooks

Version:

Unified Component Library - Hooks

38 lines (36 loc) 1.22 kB
import { useState, useCallback } from 'react'; import { DEFAULT_POPUP_GROUP, closeAllOtherPopupGroups, closePopupsByGroup } from "./groupManagement/modifyRegistry"; import usePopupEntry from "./groupManagement/usePopupRegistry"; export default function usePopupHandlers() { let isOpen = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; let groupName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_POPUP_GROUP; const [isPopupOpen, setPopupOpen] = useState(isOpen); const handleOpenPopup = useCallback(() => { if (groupName === DEFAULT_POPUP_GROUP) { closePopupsByGroup(DEFAULT_POPUP_GROUP); } closeAllOtherPopupGroups(groupName); setPopupOpen(true); }, []); const handleClosePopup = useCallback(() => { setPopupOpen(false); }, []); const handleTogglePopup = useCallback(() => { if (isPopupOpen) { handleClosePopup(); } else { handleOpenPopup(); } }, [isPopupOpen]); // --- Group Handling --- usePopupEntry({ isRegister: isPopupOpen, callback: handleClosePopup, groupName }); return { isPopupOpen, handleOpenPopup, handleClosePopup, handleTogglePopup }; }