import { PageActionType } from '@/config/types'; import { Form } from 'antd'; import { forwardRef, useEffect, useImperativeHandle } from 'react'; import { DefaultImagePullPolicy } from '../config'; import { FormData, ListItem } from '../config/types'; import Basic from './basic'; interface TemplateFormProps { ref?: any; open: boolean; action: PageActionType; currentData?: ListItem | null; onFinish: (values: FormData) => Promise; onFinishFailed?: (errorInfo: any) => void; } const GPUServiceTemplateForm: React.FC = forwardRef( (props, ref) => { const { action, currentData, open, onFinish, onFinishFailed } = props; const [form] = Form.useForm(); useEffect(() => { if (!open) { form.resetFields(); return; } // Prefill on Edit and on Clone (Create carrying a source row). // A plain Create opens with no ``currentData`` and keeps the // blank ``initialValues``. if (currentData) { form.setFieldsValue({ ...currentData }); } }, [action, currentData, form, open]); const handleFinish = async (values: FormData) => { await onFinish({ ...values, displayName: values.displayName?.trim() || values.name, spec: { ...values.spec, command: values.spec?.command?.filter(Boolean) ?? [] } }); }; useImperativeHandle(ref, () => ({ submit: () => { form.submit(); }, resetFields: () => { form.resetFields(); } })); return (
); } ); export default GPUServiceTemplateForm;