Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add submitOnChange props to vben form #5032

Merged
merged 1 commit into from
Dec 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/src/components/common-ui/vben-form.md
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,7 @@ useVbenForm 返回的第二个参数,是一个对象,包含了一些表单
| commonConfig | 表单项的通用配置,每个配置都会传递到每个表单项,表单项可覆盖 | `FormCommonConfig` | - |
| schema | 表单项的每一项配置 | `FormSchema` | - |
| submitOnEnter | 按下回车健时提交表单 | `boolean` | false |
| submitOnChange | 字段值改变时提交表单 | `boolean` | false |

### TS 类型说明

Expand Down
2 changes: 2 additions & 0 deletions docs/src/demos/vben-vxe-table/form/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ const formOptions: VbenFormProps = {
submitButtonOptions: {
content: '查询',
},
// 是否在字段值改变时提交表单
submitOnChange: false,
// 按下回车时是否提交表单
submitOnEnter: false,
};
Expand Down
1 change: 1 addition & 0 deletions packages/@core/ui-kit/form-ui/src/form-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ function getDefaultState(): VbenFormProps {
showCollapseButton: false,
showDefaultActions: true,
submitButtonOptions: {},
submitOnChange: false,
submitOnEnter: false,
wrapperClass: 'grid-cols-1',
};
Expand Down
6 changes: 6 additions & 0 deletions packages/@core/ui-kit/form-ui/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,12 @@ export interface VbenFormProps<
*/
submitButtonOptions?: ActionButtonOptions;

/**
* 是否在字段值改变时提交表单
* @default false
*/
submitOnChange?: boolean;

/**
* 是否在回车时提交表单
* @default false
Expand Down
12 changes: 11 additions & 1 deletion packages/@core/ui-kit/form-ui/src/vben-use-form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ import type { ExtendedFormApi, VbenFormProps } from './types';
import { useForwardPriorityValues } from '@vben-core/composables';
// import { isFunction } from '@vben-core/shared/utils';

import { useTemplateRef } from 'vue';
import { useTemplateRef, watch } from 'vue';

import { useDebounceFn } from '@vueuse/core';

import FormActions from './components/form-actions.vue';
import {
Expand Down Expand Up @@ -56,6 +58,14 @@ function handleKeyDownEnter(event: KeyboardEvent) {

formActionsRef.value?.handleSubmit?.();
}

watch(
() => form.values,
useDebounceFn(() => {
state.value.submitOnChange && props.formApi?.submitForm();
}, 300),
{ deep: true },
);
DesignHhuang marked this conversation as resolved.
Show resolved Hide resolved
</script>

<template>
Expand Down
2 changes: 2 additions & 0 deletions playground/src/views/examples/vxe-table/form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ const formOptions: VbenFormProps = {
],
// 控制表单是否显示折叠按钮
showCollapseButton: true,
// 是否在字段值改变时提交表单
submitOnChange: true,
// 按下回车时是否提交表单
submitOnEnter: false,
};
Expand Down
Loading