"use client"; import { useRecoilState, useRecoilValue } from "recoil"; import { settingsState } from "../state/settings"; import { useTranslations } from "next-intl"; import { queryState } from "../state/query"; import { settingsType } from "@/global"; import handleEnter from "./onesearch/handleEnter"; import { selectedSuggestionState } from "../state/suggestionSelection"; import { suggestionsState } from "../state/suggestion"; import { KeyboardEvent } from "react"; export default function Search(props: { onFocus: () => void }) { const settings: settingsType = useRecoilValue(settingsState); const t = useTranslations("Search"); const [query, setQuery] = useRecoilState(queryState); const [selectedSuggestion, setSelected] = useRecoilState(selectedSuggestionState); const suggestions = useRecoilValue(suggestionsState); let style = "default"; function handleKeydown(e: KeyboardEvent) { if (e.key == "Enter") { e.preventDefault(); handleEnter(selectedSuggestion, suggestions, query, settings); return; } else if (e.key == "ArrowUp") { e.preventDefault(); const len = suggestions.length; setSelected((selectedSuggestion - 1 + len) % len); } else if (e.key == "ArrowDown") { e.preventDefault(); const len = suggestions.length; setSelected((selectedSuggestion + 1) % len); } } if (style === "default") { return ( // 祖传样式,勿动
setQuery((_) => { return e.target.value; }) } autoComplete="off" autoCorrect="off" autoCapitalize="off" spellCheck="false" value={query} />
); } else if (style == "image") { return ( // 祖传样式,勿动
); } }