@zohodesk/hooks
Version:
Unified Component Library - Hooks
38 lines (36 loc) • 1.22 kB
JavaScript
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
};
}