Selaa lähdekoodia

支持函数调用打开

visuddhinanda 2 vuotta sitten
vanhempi
sitoutus
385f9729df

+ 13 - 2
dashboard/src/components/anthology/AnthologyModal.tsx

@@ -1,30 +1,41 @@
-import { useState } from "react";
+import { useEffect, useState } from "react";
 import { Modal } from "antd";
 import AnthologyList from "./AnthologyList";
 
 interface IWidget {
   studioName?: string;
   trigger?: React.ReactNode;
+  open?: boolean;
+  onClose?: Function;
   onSelect?: Function;
   onCancel?: Function;
 }
 const AnthologyModalWidget = ({
   studioName,
   trigger,
+  open = false,
+  onClose,
   onSelect,
   onCancel,
 }: IWidget) => {
-  const [isModalOpen, setIsModalOpen] = useState(false);
+  const [isModalOpen, setIsModalOpen] = useState(open);
 
+  useEffect(() => setIsModalOpen(open), [open]);
   const showModal = () => {
     setIsModalOpen(true);
   };
 
   const handleOk = () => {
+    if (typeof onClose !== "undefined") {
+      onClose(false);
+    }
     setIsModalOpen(false);
   };
 
   const handleCancel = () => {
+    if (typeof onClose !== "undefined") {
+      onClose(false);
+    }
     setIsModalOpen(false);
   };
 

+ 14 - 3
dashboard/src/components/article/AddToAnthology.tsx

@@ -1,24 +1,35 @@
 import { Button, message } from "antd";
-import React from "react";
+import React, { useEffect, useState } from "react";
 import { post } from "../../request";
 import AnthologyModal from "../anthology/AnthologyModal";
 import { IArticleMapAddRequest, IArticleMapAddResponse } from "../api/Article";
+import { useAppSelector } from "../../hooks";
+import { currentUser } from "../../reducers/current-user";
 interface IWidget {
   trigger?: React.ReactNode;
   studioName?: string;
   articleIds?: string[];
+  open?: boolean;
+  onClose?: Function;
   onFinally?: Function;
 }
 const AddToAnthologyWidget = ({
   trigger,
   studioName,
+  open = false,
+  onClose,
   articleIds,
   onFinally,
 }: IWidget) => {
+  const [isModalOpen, setIsModalOpen] = useState(open);
+  const user = useAppSelector(currentUser);
+  useEffect(() => setIsModalOpen(open), [open]);
   return (
     <AnthologyModal
-      studioName={studioName}
-      trigger={trigger ? trigger : <Button type="link">加入文集</Button>}
+      studioName={studioName ? studioName : user?.realName}
+      trigger={trigger}
+      open={isModalOpen}
+      onClose={(isOpen: boolean) => setIsModalOpen(isOpen)}
       onSelect={(id: string) => {
         if (typeof articleIds !== "undefined") {
           post<IArticleMapAddRequest, IArticleMapAddResponse>(