import IconFont from '@/components/icon-font'; import { PageActionType } from '@/config/types'; import CollapsePanel from '@/pages/_components/collapse-panel'; import { useWrapperContext } from '@/pages/_components/column-wrapper/use-wrapper-context'; import ScrollSpyTabs from '@/pages/_components/scroll-spy-tabs'; import { useIntl } from '@umijs/max'; import { Form } from 'antd'; import { forwardRef, useImperativeHandle, useRef, useState } from 'react'; import { FormData, AccessItem as ListItem } from '../config/types'; import Basic from './basic'; import Endpoints from './endpoints'; import MetaData from './meta-data'; interface ProviderFormProps { ref?: any; action: PageActionType; currentData?: ListItem; // Used when action is EDIT onFinish: (values: FormData) => Promise; } const TABKeysMap = { BASIC: 'basic', METADATA: 'metadata', ENDPOINTS: 'endpoints', ADVANCED: 'advanced' }; const AccessForm: React.FC = forwardRef((props, ref) => { const { action, currentData, onFinish } = props; const intl = useIntl(); const { getScrollElementScrollableHeight } = useWrapperContext(); const [activeKey, setActiveKey] = useState([TABKeysMap.BASIC]); const [form] = Form.useForm(); const scrollTabsRef = useRef(null); const segmentOptions = [ { value: TABKeysMap.BASIC, label: intl.formatMessage({ id: 'common.title.basicInfo' }), icon: , field: 'name' }, { value: TABKeysMap.METADATA, label: intl.formatMessage({ id: 'accesses.form.metadata.title' }), icon: , field: 'metaSize' }, { value: TABKeysMap.ENDPOINTS, label: intl.formatMessage({ id: 'accesses.form.endpoint.title' }), icon: , field: 'endpoints' } ]; const handleActiveChange = (key: string[]) => { setActiveKey(key); }; const handleOnCollapseChange = (keys: string | string[]) => { setActiveKey(Array.isArray(keys) ? keys : [keys]); }; useImperativeHandle(ref, () => ({ submit: () => { form.submit(); }, resetFields: () => { form.resetFields(); } })); return (
}, { key: TABKeysMap.ENDPOINTS, label: intl.formatMessage({ id: 'accesses.form.endpoint.title' }), forceRender: true, children: } ]} >
); }); export default AccessForm;