選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

chunk-method-modal.tsx 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { IModalManagerChildrenProps } from '@/components/modal-manager';
  2. import {
  3. useFetchTenantInfo,
  4. useSelectParserList,
  5. } from '@/hooks/userSettingHook';
  6. import { Modal, Space, Tag } from 'antd';
  7. import React, { useEffect, useState } from 'react';
  8. import styles from './index.less';
  9. const { CheckableTag } = Tag;
  10. interface IProps extends Omit<IModalManagerChildrenProps, 'showModal'> {
  11. loading: boolean;
  12. onOk: (parserId: string) => void;
  13. showModal?(): void;
  14. parser_id: string;
  15. }
  16. const ChunkMethodModal: React.FC<IProps> = ({
  17. parser_id,
  18. onOk,
  19. hideModal,
  20. visible,
  21. }) => {
  22. const [selectedTag, setSelectedTag] = useState('');
  23. const parserList = useSelectParserList();
  24. useFetchTenantInfo();
  25. useEffect(() => {
  26. setSelectedTag(parser_id);
  27. }, [parser_id]);
  28. const handleOk = async () => {
  29. onOk(selectedTag);
  30. };
  31. const handleChange = (tag: string, checked: boolean) => {
  32. const nextSelectedTag = checked ? tag : selectedTag;
  33. setSelectedTag(nextSelectedTag);
  34. };
  35. return (
  36. <Modal
  37. title="Chunk Method"
  38. open={visible}
  39. onOk={handleOk}
  40. onCancel={hideModal}
  41. >
  42. <Space size={[0, 8]} wrap>
  43. <div className={styles.tags}>
  44. {parserList.map((x) => {
  45. return (
  46. <CheckableTag
  47. key={x.value}
  48. checked={selectedTag === x.value}
  49. onChange={(checked) => handleChange(x.value, checked)}
  50. >
  51. {x.label}
  52. </CheckableTag>
  53. );
  54. })}
  55. </div>
  56. </Space>
  57. </Modal>
  58. );
  59. };
  60. export default ChunkMethodModal;