+
@@ -109,7 +135,6 @@ defineExpose({
{{ collapsed ? $t('expand') : $t('collapse') }}
diff --git a/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue b/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue
index fd5fb5efa..d650b8499 100644
--- a/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue
+++ b/packages/@core/ui-kit/form-ui/src/form-render/form-field.vue
@@ -59,7 +59,7 @@ const values = useFormValues();
const errors = useFieldError(fieldName);
const fieldComponentRef = useTemplateRef('fieldComponentRef');
const formApi = formRenderProps.form;
-const compact = formRenderProps.compact;
+const compact = computed(() => formRenderProps.compact);
const isInValid = computed(() => errors.value?.length > 0);
const FieldComponent = computed(() => {
@@ -295,7 +295,7 @@ onUnmounted(() => {
'form-is-required': shouldRequired,
'flex-col': isVertical,
'flex-row items-center': !isVertical,
- 'pb-6': !compact,
+ 'pb-4': !compact,
'pb-2': compact,
}"
class="relative flex"
@@ -386,7 +386,7 @@ onUnmounted(() => {
-
+
diff --git a/packages/@core/ui-kit/form-ui/src/form-render/form.vue b/packages/@core/ui-kit/form-ui/src/form-render/form.vue
index ff827c42a..752fc6928 100644
--- a/packages/@core/ui-kit/form-ui/src/form-render/form.vue
+++ b/packages/@core/ui-kit/form-ui/src/form-render/form.vue
@@ -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';
@@ -36,6 +41,16 @@ const emits = defineEmits<{
submit: [event: any];
}>();
+const wrapperClass = computed(() => {
+ const cls = ['flex'];
+ if (props.layout === 'inline') {
+ cls.push('flex-wrap gap-x-2');
+ } else {
+ cls.push(props.compact ? 'gap-x-2' : 'gap-x-4', 'flex-col grid');
+ }
+ return cn(...cls, props.wrapperClass);
+});
+
provideFormRenderProps(props);
const { isCalculated, keepFormItemIndex, wrapperRef } = useExpandable(props);
@@ -110,6 +125,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 +159,7 @@ const computedSchema = computed(
'flex-shrink-0',
{ hidden },
formItemClass,
- schema.formItemClass,
+ resolvedSchemaFormItemClass,
),
labelClass: cn(labelClass, schema.labelClass),
};
@@ -144,7 +170,7 @@ const computedSchema = computed(