优化FormItemsRenderer
parent
2d78ef4323
commit
e1135db10b
|
|
@ -71,8 +71,8 @@ export interface FormOption {
|
||||||
label?: ReactNode;
|
label?: ReactNode;
|
||||||
/** 渲染类型 */
|
/** 渲染类型 */
|
||||||
render?: FormItemRenderType;
|
render?: FormItemRenderType;
|
||||||
/** 占据栅格列数,默认 12 */
|
/** 占据栅格列数,默认 12,支持函数动态计算 */
|
||||||
span?: number | string;
|
span?: number | string | ((formValues: FormValues) => number | string);
|
||||||
/** 是否必填,默认 true,支持函数动态计算 */
|
/** 是否必填,默认 true,支持函数动态计算 */
|
||||||
required?: boolean | ((formValues: FormValues) => boolean);
|
required?: boolean | ((formValues: FormValues) => boolean);
|
||||||
/** 验证规则 */
|
/** 验证规则 */
|
||||||
|
|
|
||||||
|
|
@ -206,9 +206,17 @@ const FormItemsRenderer = ({
|
||||||
return collapse && index >= 3 ? { display: "none" } : undefined;
|
return collapse && index >= 3 ? { display: "none" } : undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 获取 span
|
||||||
|
const getSpan = (span) => {
|
||||||
|
// 支持动态计算 span
|
||||||
|
return typeof span === "function"
|
||||||
|
? span(getFormValues())
|
||||||
|
: span;
|
||||||
|
}
|
||||||
|
|
||||||
// 列数
|
// 列数
|
||||||
const getCol = (option) => {
|
const getCol = (option) => {
|
||||||
const itemSpan = option.render === FORM_ITEM_RENDER_ENUM.DIVIDER ? 24 : option.span ?? span;
|
const itemSpan = option.render === FORM_ITEM_RENDER_ENUM.DIVIDER ? 24 : (getSpan(option.span) ?? span);
|
||||||
const itemLabelCol = option.labelCol ?? (itemSpan === 24 ? { span: labelCol.span / 2 } : labelCol);
|
const itemLabelCol = option.labelCol ?? (itemSpan === 24 ? { span: labelCol.span / 2 } : labelCol);
|
||||||
const itemWrapperCol = option.wrapperCol ?? { span: 24 - itemLabelCol.span };
|
const itemWrapperCol = option.wrapperCol ?? { span: 24 - itemLabelCol.span };
|
||||||
return { span: itemSpan, labelCol: itemLabelCol, wrapperCol: itemWrapperCol };
|
return { span: itemSpan, labelCol: itemLabelCol, wrapperCol: itemWrapperCol };
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue