feat: add function support for formItemClass prop (#6511)

* feat: add function support for formItemClass prop

* feat: add try-catch to formItemClass function

* fix: formItemClass function ts error

---------

Co-authored-by: sqchen <chenshiqi@sshlx.com>
This commit is contained in:
panda7
2025-07-17 09:37:39 +08:00
committed by GitHub
parent 1bc5d2986b
commit 07b64ad384
3 changed files with 21 additions and 5 deletions

View File

@@ -12,7 +12,12 @@ import type {
import { computed } from 'vue';
import { Form } from '@vben-core/shadcn-ui';
import { cn, isString, mergeWithArrayOverride } from '@vben-core/shared/utils';
import {
cn,
isFunction,
isString,
mergeWithArrayOverride,
} from '@vben-core/shared/utils';
import { provideFormRenderProps } from './context';
import { useExpandable } from './expandable';
@@ -110,6 +115,17 @@ const computedSchema = computed(
? keepIndex <= index
: false;
// 处理函数形式的formItemClass
let resolvedSchemaFormItemClass = schema.formItemClass;
if (isFunction(schema.formItemClass)) {
try {
resolvedSchemaFormItemClass = schema.formItemClass();
} catch (error) {
console.error('Error calling formItemClass function:', error);
resolvedSchemaFormItemClass = '';
}
}
return {
colon,
disabled,
@@ -133,7 +149,7 @@ const computedSchema = computed(
'flex-shrink-0',
{ hidden },
formItemClass,
schema.formItemClass,
resolvedSchemaFormItemClass,
),
labelClass: cn(labelClass, schema.labelClass),
};

View File

@@ -174,10 +174,10 @@ export interface FormCommonConfig {
*/
formFieldProps?: FormFieldOptions;
/**
* 所有表单项的栅格布局
* 所有表单项的栅格布局,支持函数形式
* @default ""
*/
formItemClass?: string;
formItemClass?: (() => string) | string;
/**
* 隐藏所有表单项label
* @default false