import React, { useCallback, useEffect, useMemo, useState } from 'react'; import TagsPanel from '../tags/TagsPanel'; import CorrespondentsPanel from '../correspondents/CorrespondentsPanel'; import DocumentTypesPanel from '../documentTypes/DocumentTypesPanel'; const TAGS_MODAL = 'tags'; const CORRESPONDENTS_MODAL = 'correspondents'; const DOCUMENT_TYPES_MODAL = 'document-types'; export const useManagementModals = ({ locationPathname, tags, refreshTags, onTagCreate, onTagUpdate, onTagDelete, correspondents, refreshCorrespondents, onCorrespondentCreate, onCorrespondentUpdate, onCorrespondentDelete, documentTypes, refreshDocumentTypes, onDocumentTypeCreate, onDocumentTypeUpdate, onDocumentTypeDelete, setStatusMessage, }) => { const [activeModal, setActiveModal] = useState(null); const openTagsModal = useCallback(() => setActiveModal(TAGS_MODAL), []); const openCorrespondentsModal = useCallback( () => setActiveModal(CORRESPONDENTS_MODAL), [], ); const openDocumentTypesModal = useCallback( () => setActiveModal(DOCUMENT_TYPES_MODAL), [], ); const closeActiveModal = useCallback(() => setActiveModal(null), []); useEffect(() => { setActiveModal(null); }, [locationPathname]); useEffect(() => { if (!activeModal) { return undefined; } const handleKeyDown = (event) => { if (event.key === 'Escape') { event.preventDefault(); setActiveModal(null); } }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [activeModal]); const tagModal = useMemo(() => { if (activeModal !== TAGS_MODAL) { return null; } return (