SentHistoryModal.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import React, { useEffect, useState } from "react";
  2. import { Modal } from "antd";
  3. import { useIntl } from "react-intl";
  4. import SentHistory from "./SentHistory";
  5. interface IWidget {
  6. sentId?: string;
  7. trigger?: React.ReactNode;
  8. open?: boolean;
  9. onClose?: Function;
  10. }
  11. const SentHistoryModalWidget = ({
  12. open = false,
  13. sentId,
  14. trigger,
  15. onClose,
  16. }: IWidget) => {
  17. const [isModalOpen, setIsModalOpen] = useState(open);
  18. const intl = useIntl();
  19. useEffect(() => setIsModalOpen(open), [open]);
  20. const showModal = () => {
  21. setIsModalOpen(true);
  22. };
  23. const handleOk = () => {
  24. setIsModalOpen(false);
  25. if (typeof onClose !== "undefined") {
  26. onClose();
  27. }
  28. };
  29. const handleCancel = () => {
  30. setIsModalOpen(false);
  31. if (typeof onClose !== "undefined") {
  32. onClose();
  33. }
  34. };
  35. return (
  36. <>
  37. <span onClick={showModal}>{trigger}</span>
  38. <Modal
  39. style={{ top: 20 }}
  40. width={"80%"}
  41. title={intl.formatMessage({
  42. id: "buttons.timeline",
  43. })}
  44. open={isModalOpen}
  45. onOk={handleOk}
  46. onCancel={handleCancel}
  47. destroyOnClose
  48. >
  49. <SentHistory sentId={sentId} />
  50. </Modal>
  51. </>
  52. );
  53. };
  54. export default SentHistoryModalWidget;