import { useEffect, useRef, useState } from 'preact/hooks'; import { useKeydown } from '../../hooks/use-keydown'; import { useOutsideClick } from '../../hooks/use-outside-click'; import type { PageType } from '../CommandMenu/CommandMenu'; import { useToast } from '../../hooks/use-toast'; import type { TeamResourceConfig } from './RoadmapSelector'; import CloseIcon from '../../icons/close.svg'; export type SelectRoadmapModalProps = { teamId: string; allRoadmaps: PageType[]; onClose: () => void; teamResourceConfig: TeamResourceConfig; onRoadmapAdd: (roadmapId: string) => void; onRoadmapRemove: (roadmapId: string) => void; }; export function SelectRoadmapModal(props: SelectRoadmapModalProps) { const { onClose, allRoadmaps, onRoadmapAdd, onRoadmapRemove, teamResourceConfig, } = props; const toast = useToast(); const popupBodyEl = useRef(null); const [searchResults, setSearchResults] = useState(allRoadmaps); const [searchText, setSearchText] = useState(''); useKeydown('Escape', () => { onClose(); }); useOutsideClick(popupBodyEl, () => { onClose(); }); useEffect(() => { if (searchText.length === 0) { setSearchResults(allRoadmaps); return; } const searchResults = allRoadmaps.filter((roadmap) => { return ( roadmap.title.toLowerCase().includes(searchText.toLowerCase()) || roadmap.id.toLowerCase().includes(searchText.toLowerCase()) ); }); setSearchResults(searchResults); }, [searchText, allRoadmaps]); return (
); }