visuddhinanda преди 2 години
родител
ревизия
34e26ae3ac
променени са 1 файла, в които са добавени 73 реда и са изтрити 0 реда
  1. 73 0
      dashboard/src/components/recent/RecentModal.tsx

+ 73 - 0
dashboard/src/components/recent/RecentModal.tsx

@@ -0,0 +1,73 @@
+import React, { useEffect, useState } from "react";
+import { Modal } from "antd";
+import RecentList, { IRecent } from "./RecentList";
+
+interface IWidget {
+  trigger?: React.ReactNode;
+  open?: boolean;
+  onSelect?: Function;
+  onOpen?: Function;
+}
+const RecentModalWidget = ({
+  trigger,
+  open = false,
+  onSelect,
+  onOpen,
+}: IWidget) => {
+  const [isModalOpen, setIsModalOpen] = useState(open);
+
+  useEffect(() => {
+    setIsModalOpen(open);
+    if (typeof onOpen !== "undefined") {
+      onOpen(open);
+    }
+  }, [open]);
+  const showModal = () => {
+    setIsModalOpen(true);
+    if (typeof onOpen !== "undefined") {
+      onOpen(true);
+    }
+  };
+
+  const handleOk = () => {
+    setIsModalOpen(false);
+    if (typeof onOpen !== "undefined") {
+      onOpen(false);
+    }
+  };
+
+  const handleCancel = () => {
+    setIsModalOpen(false);
+    if (typeof onOpen !== "undefined") {
+      onOpen(false);
+    }
+  };
+
+  return (
+    <>
+      <span onClick={showModal}>{trigger}</span>
+      <Modal
+        width={"80%"}
+        title="选择版本风格"
+        footer={false}
+        open={isModalOpen}
+        onOk={handleOk}
+        onCancel={handleCancel}
+        destroyOnClose
+      >
+        <RecentList
+          onSelect={(
+            event: React.MouseEvent<HTMLElement, MouseEvent>,
+            param: IRecent
+          ) => {
+            if (typeof onSelect !== "undefined") {
+              onSelect(event, param);
+            }
+          }}
+        />
+      </Modal>
+    </>
+  );
+};
+
+export default RecentModalWidget;