import React, { ReactText } from 'react';
import { Button } from 'antd';
import {
baseFormDateTpl,
baseFormMyRadioTpl,
baseFormMyCheckboxTpl,
baseFormMySelectTpl,
baseFormNumberTpl,
baseFormTextAreaTpl,
baseFormTextTpl,
baseFormTextTipTpl,
baseFormUnionType,
} from 'editorComponents/PanelComponents/FormEditor/types';
// 维护表单控件, 提高form渲染性能
type TBaseForm = {
[key in baseFormUnionType]: any;
};
const BaseForm: TBaseForm = {
Text: (props: baseFormTextTpl & { onChange: (v: string | undefined) => void }) => {
const { label, onChange } = props;
return (
);
},
Textarea: (props: baseFormTextAreaTpl & { onChange: (v: string | undefined) => void }) => {
const { label, onChange } = props;
return (
);
},
Number: (props: baseFormNumberTpl & { onChange: (v: string | undefined | number) => void }) => {
const { label, onChange } = props;
return (
);
},
MyRadio: (props: baseFormMyRadioTpl & { onChange: (v: string | undefined | number) => void }) => {
const { label, onChange } = props;
return (
);
},
MyCheckbox: (
props: baseFormMyCheckboxTpl & { onChange: (v: Array | undefined) => void },
) => {
const { label, onChange } = props;
return (
);
},
Date: (props: baseFormDateTpl & { onChange: (v: Date) => void }) => {
const { label, onChange } = props;
return (
);
},
MySelect: (
props: baseFormMySelectTpl & { onChange: ((v: Record) => void) | undefined },
) => {
const { label, onChange } = props;
return (
);
},
MyTextTip: (props: baseFormTextTipTpl) => {
const { label } = props;
return (
);
},
};
export default BaseForm;