import { useEffect, useRef, useState } from "react"; import { type IUserStudyChapter, useLichess } from "#/hooks/useLichess.ts"; interface IProps { setSelectedStudyId: (studyId: string) => void; setStudyChapters: (chapters: IUserStudyChapter[]) => void; } const SelectLichessStudy = ({ setSelectedStudyId }: IProps) => { const [isOpen, setIsOpen] = useState(false); const { getLichessUserStudies, userStudies } = useLichess(); const dropdownRef = useRef(null); const onClickHandler = async () => { setIsOpen(!isOpen); if (!userStudies.length) { await getLichessUserStudies(); } }; const handleStudyClick = async (studyId: string) => { setSelectedStudyId(studyId); setIsOpen(false); }; useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if ( isOpen && dropdownRef.current && !dropdownRef.current.contains(event.target as Node) ) { setIsOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, [isOpen]); return (
{isOpen ? (
    {userStudies.map((study) => (
  • ))}
) : null}
); }; export default SelectLichessStudy;