flow-template-modal.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { getFlowTemplates } from '@/client/api';
  2. import CanvasWrapper from '@/pages/construct/flow/canvas/index';
  3. import type { TableProps } from 'antd';
  4. import { Button, Modal, Space, Table } from 'antd';
  5. import { useEffect, useState } from 'react';
  6. import { useTranslation } from 'react-i18next';
  7. type Props = {
  8. isFlowTemplateModalOpen: boolean;
  9. setIsFlowTemplateModalOpen: (value: boolean) => void;
  10. };
  11. interface DataType {
  12. key: string;
  13. name: string;
  14. age: number;
  15. address: string;
  16. tags: string[];
  17. }
  18. export const FlowTemplateModal: React.FC<Props> = ({ isFlowTemplateModalOpen, setIsFlowTemplateModalOpen }) => {
  19. const { t } = useTranslation();
  20. const [dataSource, setDataSource] = useState([]);
  21. const onTemplateImport = (record: DataType) => {
  22. if (record?.name) {
  23. localStorage.setItem('importFlowData', JSON.stringify(record));
  24. CanvasWrapper();
  25. setIsFlowTemplateModalOpen(false);
  26. }
  27. };
  28. const columns: TableProps<DataType>['columns'] = [
  29. {
  30. title: t('Template_Name'),
  31. dataIndex: 'name',
  32. key: 'name',
  33. },
  34. {
  35. title: t('Template_Label'),
  36. dataIndex: 'label',
  37. key: 'label',
  38. },
  39. {
  40. title: t('Template_Description'),
  41. dataIndex: 'description',
  42. key: 'description',
  43. },
  44. {
  45. title: t('Template_Action'),
  46. key: 'action',
  47. render: (_, record) => (
  48. <Space size='middle'>
  49. <Button
  50. type='link'
  51. onClick={() => {
  52. onTemplateImport(record);
  53. }}
  54. block
  55. >
  56. {t('Import_From_Template')}
  57. </Button>
  58. </Space>
  59. ),
  60. },
  61. ];
  62. useEffect(() => {
  63. getFlowTemplates().then(res => {
  64. console.log(res);
  65. setDataSource(res?.data?.data?.items);
  66. });
  67. }, []);
  68. return (
  69. <>
  70. <Modal
  71. className='w-[700px]'
  72. title={t('Import_From_Template')}
  73. open={isFlowTemplateModalOpen}
  74. onCancel={() => setIsFlowTemplateModalOpen(false)}
  75. cancelButtonProps={{ className: 'hidden' }}
  76. okButtonProps={{ className: 'hidden' }}
  77. >
  78. <Table className='w-full' dataSource={dataSource} columns={columns} />;
  79. </Modal>
  80. </>
  81. );
  82. };