"use client"; import { FC, useRef, useState } from "react"; import { observer } from "mobx-react"; import { Search, X } from "lucide-react"; // plane hooks import { useOutsideClickDetector } from "@plane/hooks"; // i18n import { useTranslation } from "@plane/i18n"; // helpers import { cn } from "@/helpers/common.helper"; // hooks import { useProjectFilter } from "@/hooks/store"; export const ProjectSearch: FC = observer(() => { // i18n const { t } = useTranslation(); // hooks const { searchQuery, updateSearchQuery } = useProjectFilter(); // refs const inputRef = useRef(null); // states const [isSearchOpen, setIsSearchOpen] = useState(false); // outside click detector hook useOutsideClickDetector(inputRef, () => { if (isSearchOpen && searchQuery.trim() === "") setIsSearchOpen(false); }); const handleInputKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Escape") { if (searchQuery && searchQuery.trim() !== "") updateSearchQuery(""); else setIsSearchOpen(false); } }; return (
{!isSearchOpen && ( )}
updateSearchQuery(e.target.value)} onKeyDown={handleInputKeyDown} /> {isSearchOpen && ( )}
); });