Netfan
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with
26 additions and
4 deletions
-
docs/src/components/common-ui/vben-form.md
-
packages/@core/ui-kit/form-ui/src/components/form-actions.vue
-
packages/@core/ui-kit/form-ui/src/form-render/form-field.vue
-
packages/@core/ui-kit/form-ui/src/types.ts
-
packages/effects/plugins/src/vxe-table/use-vxe-grid.vue
|
|
|
@ -357,6 +357,13 @@ export interface FormCommonConfig { |
|
|
|
* 所有表单项的props |
|
|
|
*/ |
|
|
|
componentProps?: ComponentProps; |
|
|
|
/** |
|
|
|
* 是否紧凑模式(移除表单底部为显示校验错误信息所预留的空间)。 |
|
|
|
* 在有设置校验规则的场景下,建议不要将其设置为true |
|
|
|
* 默认为false。但用作表格的搜索表单时,默认为true |
|
|
|
* @default false |
|
|
|
*/ |
|
|
|
compact?: boolean; |
|
|
|
/** |
|
|
|
* 所有表单项的控件样式 |
|
|
|
*/ |
|
|
|
|
|
|
|
@ -138,7 +138,11 @@ defineExpose({ |
|
|
|
<template> |
|
|
|
<div |
|
|
|
:class=" |
|
|
|
cn('col-span-full w-full pb-6 text-right', rootProps.actionWrapperClass) |
|
|
|
cn( |
|
|
|
'col-span-full w-full text-right', |
|
|
|
rootProps.compact ? 'pb-2' : 'pb-6', |
|
|
|
rootProps.actionWrapperClass, |
|
|
|
) |
|
|
|
" |
|
|
|
:style="queryFormStyle" |
|
|
|
> |
|
|
|
|
|
|
|
@ -55,7 +55,7 @@ const values = useFormValues(); |
|
|
|
const errors = useFieldError(fieldName); |
|
|
|
const fieldComponentRef = useTemplateRef<HTMLInputElement>('fieldComponentRef'); |
|
|
|
const formApi = formRenderProps.form; |
|
|
|
|
|
|
|
const compact = formRenderProps.compact; |
|
|
|
const isInValid = computed(() => errors.value?.length > 0); |
|
|
|
|
|
|
|
const FieldComponent = computed(() => { |
|
|
|
@ -281,8 +281,10 @@ function autofocus() { |
|
|
|
'form-valid-error': isInValid, |
|
|
|
'flex-col': isVertical, |
|
|
|
'flex-row items-center': !isVertical, |
|
|
|
'pb-6': !compact, |
|
|
|
'pb-2': compact, |
|
|
|
}" |
|
|
|
class="flex pb-6" |
|
|
|
class="flex" |
|
|
|
v-bind="$attrs" |
|
|
|
> |
|
|
|
<FormLabel |
|
|
|
|
|
|
|
@ -273,6 +273,10 @@ export interface FormRenderProps< |
|
|
|
* 表单项通用后备配置,当子项目没配置时使用这里的配置,子项目配置优先级高于此配置 |
|
|
|
*/ |
|
|
|
commonConfig?: FormCommonConfig; |
|
|
|
/** |
|
|
|
* 紧凑模式(移除表单每一项底部为校验信息预留的空间) |
|
|
|
*/ |
|
|
|
compact?: boolean; |
|
|
|
/** |
|
|
|
* 组件v-model事件绑定 |
|
|
|
*/ |
|
|
|
|
|
|
|
@ -68,6 +68,7 @@ const { isMobile } = usePreferences(); |
|
|
|
const slots = useSlots(); |
|
|
|
|
|
|
|
const [Form, formApi] = useTableForm({ |
|
|
|
compact: true, |
|
|
|
handleSubmit: async () => { |
|
|
|
const formValues = formApi.form.values; |
|
|
|
formApi.setLatestSubmissionValues(toRaw(formValues)); |
|
|
|
@ -284,6 +285,10 @@ watch( |
|
|
|
}, |
|
|
|
); |
|
|
|
|
|
|
|
const isCompactForm = computed(() => { |
|
|
|
return formApi.getState()?.compact; |
|
|
|
}); |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
props.api?.mount?.(gridRef.value, formApi); |
|
|
|
init(); |
|
|
|
@ -338,7 +343,7 @@ onUnmounted(() => { |
|
|
|
<div |
|
|
|
v-if="formOptions" |
|
|
|
v-show="showSearchForm !== false" |
|
|
|
class="relative rounded py-3 pb-4" |
|
|
|
:class="cn('relative rounded py-3', isCompactForm ? 'pb-6' : 'pb-4')" |
|
|
|
> |
|
|
|
<slot name="form"> |
|
|
|
<Form> |
|
|
|
|