|
import { DeleteOutlined, EditOutlined } from '@ant-design/icons'; |
|
import type { TableProps } from 'antd'; |
|
import { Collapse, Space, Table, Tooltip } from 'antd'; |
|
import { BeginQuery } from '../../interface'; |
|
|
|
import { useTranslation } from 'react-i18next'; |
|
import styles from './index.less'; |
|
|
|
interface IProps { |
|
data: BeginQuery[]; |
|
deleteRecord(index: number): void; |
|
showModal(index: number, record: BeginQuery): void; |
|
} |
|
|
|
const QueryTable = ({ data, deleteRecord, showModal }: IProps) => { |
|
const { t } = useTranslation(); |
|
|
|
const columns: TableProps<BeginQuery>['columns'] = [ |
|
{ |
|
title: 'Key', |
|
dataIndex: 'key', |
|
key: 'key', |
|
ellipsis: { |
|
showTitle: false, |
|
}, |
|
render: (key) => ( |
|
<Tooltip placement="topLeft" title={key}> |
|
{key} |
|
</Tooltip> |
|
), |
|
}, |
|
{ |
|
title: t('flow.name'), |
|
dataIndex: 'name', |
|
key: 'name', |
|
ellipsis: { |
|
showTitle: false, |
|
}, |
|
render: (name) => ( |
|
<Tooltip placement="topLeft" title={name}> |
|
{name} |
|
</Tooltip> |
|
), |
|
}, |
|
{ |
|
title: t('flow.type'), |
|
dataIndex: 'type', |
|
key: 'type', |
|
}, |
|
{ |
|
title: t('flow.optional'), |
|
dataIndex: 'optional', |
|
key: 'optional', |
|
render: (optional) => (optional ? 'Yes' : 'No'), |
|
}, |
|
{ |
|
title: t('common.action'), |
|
key: 'action', |
|
render: (_, record, idx) => ( |
|
<Space> |
|
<EditOutlined onClick={() => showModal(idx, record)} /> |
|
<DeleteOutlined |
|
className="cursor-pointer" |
|
onClick={() => deleteRecord(idx)} |
|
/> |
|
</Space> |
|
), |
|
}, |
|
]; |
|
|
|
return ( |
|
<Collapse |
|
defaultActiveKey={['1']} |
|
className={styles.dynamicInputVariable} |
|
items={[ |
|
{ |
|
key: '1', |
|
label: <span className={styles.title}>{t('flow.input')}</span>, |
|
children: ( |
|
<Table<BeginQuery> |
|
columns={columns} |
|
dataSource={data} |
|
pagination={false} |
|
/> |
|
), |
|
}, |
|
]} |
|
/> |
|
); |
|
}; |
|
|
|
export default QueryTable; |
|
|