import { Button, Drawer, Space, Typography } from "antd"; import React, { useEffect, useState } from "react"; import { Link } from "react-router"; import Article, { type ArticleMode, ArticleType } from "./Article"; import type { IArticleDataResponse } from "../../api/Article"; const { Text } = Typography; interface IWidget { trigger?: React.ReactNode; title?: string; type?: ArticleType; book?: string; para?: string; channelId?: string; articleId?: string; anthologyId?: string; mode?: ArticleMode; open?: boolean; onClose?: Function; onTitleChange?: Function; onArticleEdit?: Function; } const ArticleDrawerWidget = ({ trigger, title, type, book, para, channelId, articleId, anthologyId, mode, open, onClose, onTitleChange, onArticleEdit, }: IWidget) => { const [openDrawer, setOpenDrawer] = useState(open); const [drawerTitle, setDrawerTitle] = useState(title); useEffect(() => setOpenDrawer(open), [open]); useEffect(() => setDrawerTitle(title), [title]); const showDrawer = () => { setOpenDrawer(true); }; const onDrawerClose = () => { setOpenDrawer(false); if (document.getElementsByTagName("body")[0].hasAttribute("style")) { document.getElementsByTagName("body")[0].removeAttribute("style"); } if (typeof onClose !== "undefined") { onClose(); } }; const getUrl = (openMode?: string): string => { let url = `/article/${type}/${articleId}?mode=`; url += openMode ? openMode : mode ? mode : "read"; url += channelId ? `&channel=${channelId}` : ""; url += book ? `&book=${book}` : ""; url += para ? `&par=${para}` : ""; return url; }; return ( <> showDrawer()}>{trigger} { setDrawerTitle(value); if (typeof onTitleChange !== "undefined") { onTitleChange(value); } }, }} > {drawerTitle} } width={1000} placement="right" onClose={onDrawerClose} open={openDrawer} destroyOnHidden={true} extra={ } >
{ setDrawerTitle(value.title_text); if (typeof onArticleEdit !== "undefined") { onArticleEdit(value); } }} /> ); }; export default ArticleDrawerWidget;