import { EditableCell, EditableRow } from '@/components/editable-cell'; import { useTranslate } from '@/hooks/commonHooks'; import { DeleteOutlined } from '@ant-design/icons'; import { Button, Flex, Select, Table, TableProps } from 'antd'; import { useEffect, useState } from 'react'; import { v4 as uuid } from 'uuid'; import { IGenerateParameter } from '../interface'; import { Operator } from '../constant'; import { useBuildFormSelectOptions } from '../form-hooks'; import styles from './index.less'; interface IProps { nodeId?: string; } const components = { body: { row: EditableRow, cell: EditableCell, }, }; const DynamicParameters = ({ nodeId }: IProps) => { const [dataSource, setDataSource] = useState([]); const { t } = useTranslate('flow'); const buildCategorizeToOptions = useBuildFormSelectOptions( Operator.Generate, nodeId, ); const handleRemove = (id?: string) => () => { const newData = dataSource.filter((item) => item.id !== id); setDataSource(newData); }; const handleAdd = () => { setDataSource((state) => [ ...state, { id: uuid(), key: '', component_id: undefined, }, ]); }; const handleSave = (row: IGenerateParameter) => { const newData = [...dataSource]; const index = newData.findIndex((item) => row.id === item.id); const item = newData[index]; newData.splice(index, 1, { ...item, ...row, }); setDataSource(newData); }; useEffect(() => {}, [dataSource]); const handleOptionalChange = (row: IGenerateParameter) => (value: string) => { const newData = [...dataSource]; const index = newData.findIndex((item) => row.id === item.id); const item = newData[index]; newData.splice(index, 1, { ...item, component_id: value, }); setDataSource(newData); }; const columns: TableProps['columns'] = [ { title: t('key'), dataIndex: 'key', key: 'key', onCell: (record: IGenerateParameter) => ({ record, editable: true, dataIndex: 'key', title: 'key', handleSave, }), }, { title: t('componentId'), dataIndex: 'component_id', key: 'component_id', align: 'center', render(text, record) { return (