Explorar el Código

fix(form): fix some prop declaration

修复`submitButtonOptions`、'resetButtonOptions'的类型定义
无木 hace 3 años
padre
commit
b5046f07a2

+ 1 - 0
CHANGELOG.zh_CN.md

@@ -18,6 +18,7 @@
 - 修复`ROLE`权限模式下`hasPermission`不工作的问题
 - **Table** 修复启用`clickToRowSelect`时,点击行不会触发`selection-change`事件的问题
 - **Table** 修复全局配置`fetchSetting`可能会被局部配置意外修改的问题
+- **Form** 修复`submitButtonOptions`和`resetButtonOptions`的类型定义
 
 ## 2.5.2(2021-06-27)
 

+ 3 - 0
src/components/Button/index.ts

@@ -1,6 +1,9 @@
 import { withInstall } from '/@/utils';
+import type { ExtractPropTypes } from 'vue';
 import button from './src/BasicButton.vue';
 import popConfirmButton from './src/PopConfirmButton.vue';
+import { buttonProps } from './src/props';
 
 export const Button = withInstall(button);
 export const PopConfirmButton = withInstall(popConfirmButton);
+export declare type ButtonProps = Partial<ExtractPropTypes<typeof buttonProps>>;

+ 2 - 21
src/components/Button/src/BasicButton.vue

@@ -11,32 +11,13 @@
   import { defineComponent, computed } from 'vue';
   import { Button } from 'ant-design-vue';
   import { Icon } from '/@/components/Icon';
-
-  const props = {
-    color: { type: String, validator: (v) => ['error', 'warning', 'success', ''].includes(v) },
-    loading: { type: Boolean },
-    disabled: { type: Boolean },
-    /**
-     * Text before icon.
-     */
-    preIcon: { type: String },
-    /**
-     * Text after icon.
-     */
-    postIcon: { type: String },
-    /**
-     * preIcon and postIcon icon size.
-     * @default: 14
-     */
-    iconSize: { type: Number, default: 14 },
-    onClick: { type: Function as PropType<(...args) => any>, default: null },
-  };
+  import { buttonProps } from './props';
 
   export default defineComponent({
     name: 'AButton',
     components: { Button, Icon },
     inheritAttrs: false,
-    props,
+    props: buttonProps,
     setup(props, { attrs }) {
       // get component class
       const getButtonClass = computed(() => {

+ 19 - 0
src/components/Button/src/props.ts

@@ -0,0 +1,19 @@
+export const buttonProps = {
+  color: { type: String, validator: (v) => ['error', 'warning', 'success', ''].includes(v) },
+  loading: { type: Boolean },
+  disabled: { type: Boolean },
+  /**
+   * Text before icon.
+   */
+  preIcon: { type: String },
+  /**
+   * Text after icon.
+   */
+  postIcon: { type: String },
+  /**
+   * preIcon and postIcon icon size.
+   * @default: 14
+   */
+  iconSize: { type: Number, default: 14 },
+  onClick: { type: Function as PropType<(...args) => any>, default: null },
+};

+ 2 - 2
src/components/Form/src/components/FormAction.vue

@@ -39,10 +39,10 @@
 </template>
 <script lang="ts">
   import type { ColEx } from '../types/index';
-  import type { ButtonProps } from 'ant-design-vue/es/button/buttonTypes';
+  //import type { ButtonProps } from 'ant-design-vue/es/button/buttonTypes';
   import { defineComponent, computed, PropType } from 'vue';
   import { Form, Col } from 'ant-design-vue';
-  import { Button } from '/@/components/Button';
+  import { Button, ButtonProps } from '/@/components/Button';
   import { BasicArrow } from '/@/components/Basic/index';
   import { useFormContext } from '../hooks/useFormContext';
   import { useI18n } from '/@/hooks/web/useI18n';

+ 1 - 1
src/components/Form/src/types/form.ts

@@ -1,6 +1,6 @@
 import type { NamePath, RuleObject } from 'ant-design-vue/lib/form/interface';
 import type { VNode } from 'vue';
-import type { ButtonProps as AntdButtonProps } from 'ant-design-vue/es/button/buttonTypes';
+import type { ButtonProps as AntdButtonProps } from '/@/components/Button';
 import type { FormItem } from './formItem';
 import type { ColEx, ComponentType } from './index';
 import type { TableActionType } from '/@/components/Table/src/types/table';