import { Button, Dropdown, Input, List } from "antd"; import { useEffect, useState } from "react"; import { ArrowLeftOutlined, FieldTimeOutlined, MoreOutlined, FileAddOutlined, } from "@ant-design/icons"; import { type ITerm, getGrammar } from "../../reducers/term-vocabulary"; import { useAppSelector } from "../../hooks"; import TermSearch from "./TermSearch"; import { grammar, grammarId, grammarWord, grammarWordId, } from "../../reducers/command"; import store from "../../store"; import GrammarRecent, { type IGrammarRecent, popRecent, pushRecent, } from "./GrammarRecent"; import { useIntl } from "react-intl"; import TermModal from "./TermModal"; import { get } from "../../request"; import type { IApiResponseChannelData, IApiResponseChannelList, } from "../../api/Channel"; import { grammarTermFetch } from "../../load"; const { Search } = Input; interface IGrammarList { term: ITerm; weight: number; } const GrammarBookWidget = () => { const intl = useIntl(); const [result, setResult] = useState(); const [termId, setTermId] = useState(); const [termSearch, setTermSearch] = useState(); const [showRecent, setShowRecent] = useState(false); const [create, setCreate] = useState(false); const [grammarChannel, setGrammarChannel] = useState(); const sysGrammar = useAppSelector(getGrammar); const searchWord = useAppSelector(grammarWord); const searchWordId = useAppSelector(grammarWordId); useEffect(() => { const url = `/v2/channel?view=system`; get(url).then((json) => { if (json.ok) { const channel = json.data.rows.find( (value) => value.name === "_System_Grammar_Term_zh-hans_" ); setGrammarChannel(channel); } }); }, []); useEffect(() => { console.debug("grammar book", searchWord); if (searchWord && searchWord.length > 0) { setTermId(undefined); setTermSearch(searchWord); pushRecent({ title: searchWord, description: searchWord, word: searchWord, }); store.dispatch(grammar("")); } }, [searchWord]); useEffect(() => { console.debug("grammar book", searchWordId); if (searchWordId && searchWordId.length > 0) { setTermId(searchWordId); setTermSearch(undefined); pushRecent({ title: searchWordId, description: searchWordId, wordId: searchWordId, }); store.dispatch(grammarId("")); } }, [searchWordId]); return (
{showRecent ? ( { console.debug("grammar book recent click", value); setTermId(value.wordId); setTermSearch(value.word); setShowRecent(false); }} /> ) : termId || termSearch ? ( { setTermId(value); setTermSearch(undefined); pushRecent({ title: value, description: value, wordId: value }); }} /> ) : ( { const description = item.term.meaning + (item.term.other_meaning ? "," + item.term.other_meaning : ""); return ( { setTermId(item.term.guid); setTermSearch(undefined); pushRecent({ title: item.term.word, description: description, wordId: item.term.guid, }); }} > ); }} /> )}
setCreate(false)} onUpdate={() => { //获取语法术语表 grammarTermFetch(); }} />
); }; export default GrammarBookWidget;