From f964533701389109d90144cbefff7042cdcedbf6 Mon Sep 17 00:00:00 2001
From: 1sm <31946591+1sm23@users.noreply.github.com>
Date: 星期二, 28 十二月 2021 18:47:21 +0800
Subject: [PATCH] feat(BasicForm): add `submitOnChange` option (#1521)

---
 src/layouts/default/feature/index.vue |    4 ++--
 src/settings/projectSetting.ts        |    2 +-
 src/components/Form/src/props.ts      |    1 +
 src/components/Form/src/BasicForm.vue |    9 +++++++++
 src/components/Form/src/types/form.ts |    2 ++
 5 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue
index ebea6a5..247c487 100644
--- a/src/components/Form/src/BasicForm.vue
+++ b/src/components/Form/src/BasicForm.vue
@@ -58,6 +58,7 @@
   import { createFormContext } from './hooks/useFormContext';
   import { useAutoFocus } from './hooks/useAutoFocus';
   import { useModalContext } from '/@/components/Modal';
+  import { useDebounceFn } from '@vueuse/core';
 
   import { basicProps } from './props';
   import { useDesign } from '/@/hooks/web/useDesign';
@@ -225,6 +226,14 @@
         },
       );
 
+      watch(
+        () => formModel,
+        useDebounceFn(() => {
+          unref(getProps).submitOnChange && handleSubmit();
+        }, 300),
+        { deep: true },
+      );
+
       async function setProps(formProps: Partial<FormProps>): Promise<void> {
         propsRef.value = deepMerge(unref(propsRef) || {}, formProps);
       }
diff --git a/src/components/Form/src/props.ts b/src/components/Form/src/props.ts
index 6adcfa7..bfdaee7 100644
--- a/src/components/Form/src/props.ts
+++ b/src/components/Form/src/props.ts
@@ -40,6 +40,7 @@
   // 鍦↖NPUT缁勪欢涓婂崟鍑诲洖杞︽椂锛屾槸鍚﹁嚜鍔ㄦ彁浜�
   autoSubmitOnEnter: propTypes.bool.def(false),
   submitOnReset: propTypes.bool,
+  submitOnChange: propTypes.bool,
   size: propTypes.oneOf(['default', 'small', 'large']).def('default'),
   // 绂佺敤琛ㄥ崟
   disabled: propTypes.bool,
diff --git a/src/components/Form/src/types/form.ts b/src/components/Form/src/types/form.ts
index 8415b03..9dcf334 100644
--- a/src/components/Form/src/types/form.ts
+++ b/src/components/Form/src/types/form.ts
@@ -60,6 +60,8 @@
   rowProps?: RowProps;
   // Submit form on reset
   submitOnReset?: boolean;
+  // Submit form on form changing
+  submitOnChange?: boolean;
   // Col configuration for the entire form
   labelCol?: Partial<ColEx>;
   // Col configuration for the entire form
diff --git a/src/layouts/default/feature/index.vue b/src/layouts/default/feature/index.vue
index 0787014..0db26ef 100644
--- a/src/layouts/default/feature/index.vue
+++ b/src/layouts/default/feature/index.vue
@@ -23,7 +23,7 @@
       const { getUseOpenBackTop, getShowSettingButton, getSettingButtonPosition, getFullContent } =
         useRootSetting();
       const userStore = useUserStoreWithOut();
-      const { prefixCls } = useDesign('setting-drawer-fearure');
+      const { prefixCls } = useDesign('setting-drawer-feature');
       const { getShowHeader } = useHeaderSetting();
 
       const getIsSessionTimeout = computed(() => userStore.getSessionTimeout);
@@ -59,7 +59,7 @@
 </template>
 
 <style lang="less">
-  @prefix-cls: ~'@{namespace}-setting-drawer-fearure';
+  @prefix-cls: ~'@{namespace}-setting-drawer-feature';
 
   .@{prefix-cls} {
     position: absolute;
diff --git a/src/settings/projectSetting.ts b/src/settings/projectSetting.ts
index 0d4415b..825b0a2 100644
--- a/src/settings/projectSetting.ts
+++ b/src/settings/projectSetting.ts
@@ -134,7 +134,7 @@
   // Transition Setting
   transitionSetting: {
     //  Whether to open the page switching animation
-    // The disabled state will also disable pageLoadinng
+    // The disabled state will also disable pageLoading
     enable: true,
 
     // Route basic switching animation

--
Gitblit v1.8.0