import { SearchIcon } from "lucide-react"; import { useEffect, useRef, useState } from "react"; import { useMemoFilterContext } from "@/contexts/MemoFilterContext"; import { cn } from "@/lib/utils"; import { useTranslate } from "@/utils/i18n"; import MemoDisplaySettingMenu from "./MemoDisplaySettingMenu"; const SearchBar = () => { const t = useTranslate(); const { addFilter } = useMemoFilterContext(); const [queryText, setQueryText] = useState(""); const inputRef = useRef(null); useEffect(() => { const handleGlobalShortcut = (event: KeyboardEvent) => { if ((event.metaKey || event.ctrlKey) && event.key === "/") { event.preventDefault(); inputRef.current?.focus(); } }; window.addEventListener("keydown", handleGlobalShortcut); return () => window.removeEventListener("keydown", handleGlobalShortcut); }, []); const onTextChange = (event: React.FormEvent) => { setQueryText(event.currentTarget.value); }; const onKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter") { e.preventDefault(); const trimmedText = queryText.trim(); if (trimmedText !== "") { const words = trimmedText.split(/\s+/); words.forEach((word) => { addFilter({ factor: "contentSearch", value: word, }); }); setQueryText(""); } } }; return (
); }; export default SearchBar;