CopyToModal.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { useEffect, useState } from "react";
  2. import { Modal } from "antd";
  3. import CopyToStep from "./CopyToStep";
  4. import { IChannel } from "./Channel";
  5. interface IWidget {
  6. trigger?: JSX.Element | string;
  7. channel?: IChannel;
  8. open?: boolean;
  9. onClose?: Function;
  10. }
  11. const CopyToModalWidget = ({ trigger, channel, open, onClose }: IWidget) => {
  12. const [isModalOpen, setIsModalOpen] = useState(open);
  13. const [initStep, setInitStep] = useState(0);
  14. useEffect(() => setIsModalOpen(open), [open]);
  15. const showModal = () => {
  16. setIsModalOpen(true);
  17. setInitStep(0);
  18. };
  19. const modalClose = () => {
  20. setIsModalOpen(false);
  21. if (typeof onClose !== "undefined") {
  22. onClose();
  23. }
  24. };
  25. const handleOk = () => {
  26. modalClose();
  27. };
  28. const handleCancel = () => {
  29. modalClose();
  30. };
  31. return (
  32. <>
  33. <span onClick={showModal}>{trigger}</span>
  34. <Modal
  35. width={"95%"}
  36. style={{ maxWidth: 1500 }}
  37. title="版本间复制"
  38. open={isModalOpen}
  39. onOk={handleOk}
  40. onCancel={handleCancel}
  41. destroyOnClose={true}
  42. footer={[]}
  43. >
  44. <CopyToStep
  45. initStep={initStep}
  46. channel={channel}
  47. onClose={() => {
  48. setIsModalOpen(false);
  49. Modal.destroyAll();
  50. }}
  51. />
  52. </Modal>
  53. </>
  54. );
  55. };
  56. export default CopyToModalWidget;