import { Button, Card, Dropdown, Space, Typography } from "antd"; import { MoreOutlined, EditOutlined, TranslationOutlined, } from "@ant-design/icons"; import type { ITermDataResponse } from "../../api/Term"; import MdView from "../template/MdView"; import TimeShow from "../general/TimeShow"; import TermModal from "./TermModal"; import { useEffect, useState } from "react"; import StudioName from "../auth/Studio"; import { Link, useNavigate } from "react-router"; import { useAppSelector } from "../../hooks"; import { click, clickedTerm } from "../../reducers/term-click"; import store from "../../store"; import "../article/article.css"; import Discussion from "../discussion/Discussion"; import { useIntl } from "react-intl"; import User from "../auth/User"; const { Text } = Typography; interface IWidget { data?: ITermDataResponse; onTermClick?: Function; } const TermItemWidget = ({ data, onTermClick }: IWidget) => { const [openTermModal, setOpenTermModal] = useState(false); const [showDiscussion, setShowDiscussion] = useState(false); const navigate = useNavigate(); const termClicked = useAppSelector(clickedTerm); const intl = useIntl(); useEffect(() => { console.debug("on redux", termClicked, data); if (typeof termClicked === "undefined") { return; } if (termClicked?.channelId === data?.channel?.id) { store.dispatch(click(null)); if (typeof onTermClick !== "undefined") { onTermClick(termClicked); } } }, [data, termClicked]); return ( <> {data?.meaning} {data?.other_meaning} {data?.channel ? data.channel.name : intl.formatMessage({ id: "term.general-in-studio", })} } extra={ , }, { key: "translate", label: "translate", icon: , }, ], onClick: (e) => { console.log("click ", e); switch (e.key) { case "edit": setOpenTermModal(true); break; case "translate": navigate(`/article/term/${data?.guid}`); break; default: break; } }, }} placement="bottomRight" > } >
{showDiscussion ? ( ) : (
)}
setOpenTermModal(false)} /> ); }; export default TermItemWidget;