import SealInput from '@/components/seal-form/seal-input'; import SealSelect from '@/components/seal-form/seal-select'; import useAppUtils from '@/hooks/use-app-utils'; import { ClusterStatusLabelMap, ClusterStatusValueMap } from '@/pages/cluster-management/config'; import { useIntl } from '@umijs/max'; import { Form } from 'antd'; import { useMemo } from 'react'; import { sourceOptions } from '../config'; import { FormData } from '../config/types'; import CatalogFrom from './catalog'; import LocalPathSource from './local-path-source'; import OnlineSource from './online-source'; interface BasicFormProps { fields?: string[]; sourceDisable?: boolean; sourceList?: Global.BaseOption[]; clusterList: Global.BaseOption[]; handleClusterChange: (value: number) => void; onSourceChange?: (value: string) => void; } const BasicForm: React.FC = (props) => { const { fields = [], sourceList, clusterList, sourceDisable, handleClusterChange, onSourceChange } = props; const intl = useIntl(); const { getRuleMessage } = useAppUtils(); const form = Form.useFormInstance(); const handleOnSourceChange = (val: string) => { onSourceChange?.(val); }; const clusterOptions = useMemo(() => { return clusterList?.map((item) => { return { label: item.state === ClusterStatusValueMap.Ready ? item.label : `${item.label} [${ClusterStatusLabelMap[item.state as string]}]`, disabled: item.state !== ClusterStatusValueMap.Ready, value: item.value }; }); }, [clusterList]); return ( <> data-field="name" name="name" rules={[ { required: true, message: getRuleMessage('input', 'common.table.name') } ]} > {fields.includes('source') && ( name="source" rules={[ { required: true, message: getRuleMessage('select', 'models.form.source') } ]} > { } )} name="cluster_id" rules={[ { required: true, message: getRuleMessage('select', 'clusters.title') } ]} > { } name="replicas" rules={[ { required: true, message: getRuleMessage('input', 'models.form.replicas') } ]} > name="description"> ); }; export default BasicForm;