优化FormItemsRenderer

master
LiuJiaNan 2025-12-12 15:53:38 +08:00
parent c66421fbbb
commit d763d60ad5
2 changed files with 3 additions and 11 deletions

View File

@ -71,8 +71,8 @@ export interface FormOption {
label?: ReactNode;
/** 渲染类型 */
render?: FormItemRenderType;
/** 占据栅格列数,默认 12,支持函数动态计算 */
span?: number | string | ((formValues: FormValues) => number | string);
/** 占据栅格列数,默认 12 */
span?: number | string;
/** 是否必填,默认 true支持函数动态计算 */
required?: boolean | ((formValues: FormValues) => boolean);
/** 验证规则 */

View File

@ -206,17 +206,9 @@ const FormItemsRenderer = ({
return collapse && index >= 3 ? { display: "none" } : undefined;
};
// 获取 span
const getSpan = (span) => {
// 支持动态计算 span
return typeof span === "function"
? span(getFormValues())
: span;
}
// 列数
const getCol = (option) => {
const itemSpan = option.render === FORM_ITEM_RENDER_ENUM.DIVIDER ? 24 : (getSpan(option.span) ?? span);
const itemSpan = option.render === FORM_ITEM_RENDER_ENUM.DIVIDER ? 24 : (option.span ?? span);
const itemLabelCol = option.labelCol ?? (itemSpan === 24 ? { span: labelCol.span / 2 } : labelCol);
const itemWrapperCol = option.wrapperCol ?? { span: 24 - itemLabelCol.span };
return { span: itemSpan, labelCol: itemLabelCol, wrapperCol: itemWrapperCol };