import { Input as CInput, MetadataList } from '@gpustack/core-ui'; import { Form } from 'antd'; import { EnvItem as EnvItemType, FormData } from '../config/types'; interface EnvItemProps { item: EnvItemType; index: number; onChange: (item: EnvItemType) => void; } const EnvItem: React.FC = ({ item, onChange }) => { return (
{ onChange({ ...item, name: e.target.value }); }} style={{ width: '100%' }} />
{ onChange({ ...item, value: e.target.value }); }} style={{ width: '100%' }} />
); }; const Env: React.FC = () => { const form = Form.useFormInstance(); const env = Form.useWatch('env', form) || []; const updateEnv = (list: EnvItemType[]) => { form.setFieldValue('env', list); }; const handleAdd = () => { updateEnv([ ...env, { name: '', value: '' } ]); }; const handleDelete = (index: number) => { const newList = [...env]; newList.splice(index, 1); updateEnv(newList); }; const handleChange = (index: number, item: EnvItemType) => { const newList = [...env]; newList[index] = item; updateEnv(newList); }; return ( name="env" rules={[ { validator: async (_, value) => { if (!value?.length) { return Promise.resolve(); } const hasInvalid = value.some((item: EnvItemType) => !item.name); if (hasInvalid) { return Promise.reject(new Error('请填写完整的环境变量')); } return Promise.resolve(); } } ]} > {(item, index) => ( handleChange(index, data)} /> )} ); }; export default Env;