SettingModal.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { Modal, Tabs } from "antd";
  2. import { useEffect, useState } from "react";
  3. import SettingArticle from "./SettingArticle";
  4. import SettingAccount from "./SettingAccount";
  5. interface IWidget {
  6. trigger?: React.ReactNode;
  7. open?: boolean;
  8. onClose?: Function;
  9. }
  10. const SettingModalWidget = ({ trigger, open, onClose }: IWidget) => {
  11. const [isModalOpen, setIsModalOpen] = useState(open);
  12. useEffect(() => setIsModalOpen(open), [open]);
  13. const showModal = () => {
  14. setIsModalOpen(true);
  15. };
  16. const handleOk = () => {
  17. if (typeof onClose !== "undefined") {
  18. onClose(false);
  19. }
  20. setIsModalOpen(false);
  21. };
  22. const handleCancel = () => {
  23. if (typeof onClose !== "undefined") {
  24. onClose(false);
  25. }
  26. setIsModalOpen(false);
  27. };
  28. return (
  29. <>
  30. <span onClick={showModal}>{trigger}</span>
  31. <Modal
  32. width={"80%"}
  33. title="Setting"
  34. footer={false}
  35. open={isModalOpen}
  36. onOk={handleOk}
  37. onCancel={handleCancel}
  38. >
  39. <Tabs
  40. tabPosition="left"
  41. items={[
  42. { label: "账户", key: "account", children: <SettingAccount /> }, // 务必填写 key
  43. { label: "编辑器", key: "editor", children: <SettingArticle /> },
  44. ]}
  45. />
  46. </Modal>
  47. </>
  48. );
  49. };
  50. export default SettingModalWidget;