From 498278660112a52b7c6e608159d20920d6047e04 Mon Sep 17 00:00:00 2001
From: vben <anncwb@126.com>
Date: 星期六, 28 十一月 2020 14:27:26 +0800
Subject: [PATCH] fix(form): fix updateSchema error #100

---
 src/components/Form/src/FormAction.tsx |  111 +++++++++++++++++++++++++++----------------------------
 1 files changed, 54 insertions(+), 57 deletions(-)

diff --git a/src/components/Form/src/FormAction.tsx b/src/components/Form/src/FormAction.tsx
index 4bff21c..7c34d5d 100644
--- a/src/components/Form/src/FormAction.tsx
+++ b/src/components/Form/src/FormAction.tsx
@@ -7,28 +7,17 @@
 
 import { getSlot } from '/@/utils/helper/tsxHelper';
 import { useI18n } from '/@/hooks/web/useI18n';
+import { propTypes } from '/@/utils/propTypes';
 
 const { t } = useI18n('component.form');
 
 export default defineComponent({
   name: 'BasicFormAction',
   props: {
-    show: {
-      type: Boolean,
-      default: true,
-    },
-    showResetButton: {
-      type: Boolean,
-      default: true,
-    },
-    showSubmitButton: {
-      type: Boolean,
-      default: true,
-    },
-    showAdvancedButton: {
-      type: Boolean,
-      default: true,
-    },
+    show: propTypes.bool.def(true),
+    showResetButton: propTypes.bool.def(true),
+    showSubmitButton: propTypes.bool.def(true),
+    showAdvancedButton: propTypes.bool.def(true),
     resetButtonOptions: {
       type: Object as PropType<any>,
       default: {},
@@ -41,18 +30,9 @@
       type: Object as PropType<any>,
       default: {},
     },
-    actionSpan: {
-      type: Number,
-      default: 6,
-    },
-    isAdvanced: {
-      type: Boolean,
-      default: false,
-    },
-    hideAdvanceBtn: {
-      type: Boolean,
-      default: false,
-    },
+    actionSpan: propTypes.number.def(6),
+    isAdvanced: propTypes.bool,
+    hideAdvanceBtn: propTypes.bool,
   },
   emits: ['toggle-advanced'],
   setup(props, { slots, emit }) {
@@ -87,18 +67,52 @@
       emit('toggle-advanced');
     }
 
+    function renderAdvanceButton() {
+      const { showAdvancedButton, hideAdvanceBtn, isAdvanced } = props;
+
+      if (!showAdvancedButton || !!hideAdvanceBtn) {
+        return null;
+      }
+      return (
+        <Button type="default" class="mr-2" onClick={toggleAdvanced}>
+          {() => (
+            <>
+              {isAdvanced ? t('putAway') : t('unfold')}
+              <BasicArrow expand={!isAdvanced} top />
+            </>
+          )}
+        </Button>
+      );
+    }
+
+    function renderResetButton() {
+      const { showResetButton } = props;
+      if (!showResetButton) {
+        return null;
+      }
+      return (
+        <Button type="default" class="mr-2" {...unref(getResetBtnOptionsRef)}>
+          {() => unref(getResetBtnOptionsRef).text}
+        </Button>
+      );
+    }
+
+    function renderSubmitButton() {
+      const { showSubmitButton } = props;
+      if (!showSubmitButton) {
+        return null;
+      }
+      return (
+        <Button type="primary" {...unref(getSubmitBtnOptionsRef)}>
+          {() => unref(getSubmitBtnOptionsRef).text}
+        </Button>
+      );
+    }
+
     return () => {
       if (!props.show) {
-        return;
+        return null;
       }
-
-      const {
-        showAdvancedButton,
-        hideAdvanceBtn,
-        isAdvanced,
-        showResetButton,
-        showSubmitButton,
-      } = props;
 
       return (
         <Col {...unref(actionColOpt)} style={{ textAlign: 'right' }}>
@@ -107,30 +121,13 @@
               {() => (
                 <>
                   {getSlot(slots, 'advanceBefore')}
-                  {showAdvancedButton && !hideAdvanceBtn && (
-                    <Button type="default" class="mr-2" onClick={toggleAdvanced}>
-                      {() => (
-                        <>
-                          {isAdvanced ? t('putAway') : t('unfold')}
-                          <BasicArrow expand={!isAdvanced} top />
-                        </>
-                      )}
-                    </Button>
-                  )}
+                  {renderAdvanceButton()}
 
                   {getSlot(slots, 'resetBefore')}
-                  {showResetButton && (
-                    <Button type="default" class="mr-2" {...unref(getResetBtnOptionsRef)}>
-                      {() => unref(getResetBtnOptionsRef).text}
-                    </Button>
-                  )}
+                  {renderResetButton()}
 
                   {getSlot(slots, 'submitBefore')}
-                  {showSubmitButton && (
-                    <Button type="primary" {...unref(getSubmitBtnOptionsRef)}>
-                      {() => unref(getSubmitBtnOptionsRef).text}
-                    </Button>
-                  )}
+                  {renderSubmitButton()}
 
                   {getSlot(slots, 'submitAfter')}
                 </>

--
Gitblit v1.8.0