Эх сурвалжийг харах

perf(组件-BasicModal): 优化BasicModal按钮国际化加载,解决加载顺序导致国际化失效的问题

shizhongming 2 жил өмнө
parent
commit
bc51ce8e68

+ 1 - 0
src/components/Modal/index.ts

@@ -6,3 +6,4 @@ export const BasicModal = withInstall(basicModal);
 export { useModalContext } from './src/hooks/useModalContext';
 export { useModal, useModalInner } from './src/hooks/useModal';
 export * from './src/typing';
+export { default as BasicModalFooter } from './src/components/ModalFooter.vue';

+ 6 - 0
src/components/Modal/src/BasicModal.vue

@@ -114,9 +114,15 @@
 
   // Custom title component: get title
   const getMergeProps = computed((): Recordable => {
+    const { cancelText: cancelTextProps } = props;
+    let cancelText = cancelTextProps;
+    if (cancelTextProps && isFunction(cancelTextProps)) {
+      cancelText = cancelTextProps();
+    }
     return {
       ...props,
       ...(unref(propsRef) as any),
+      cancelText,
     };
   });
 

+ 14 - 5
src/components/Modal/src/props.ts

@@ -3,8 +3,6 @@ import type { ModalWrapperProps } from './typing';
 import { ButtonProps } from 'ant-design-vue/es/button/buttonTypes';
 import { useI18n } from '@/hooks/web/useI18n';
 
-const { t } = useI18n();
-
 export const modalProps = {
   open: { type: Boolean },
   scrollTop: { type: Boolean, default: true },
@@ -13,9 +11,20 @@ export const modalProps = {
   // open drag
   draggable: { type: Boolean, default: true },
   centered: { type: Boolean },
-  cancelText: { type: String, default: t('common.cancelText') },
-  okText: { type: String, default: t('common.okText') },
-
+  cancelText: {
+    type: [String, Function],
+    default: () => {
+      const { t } = useI18n();
+      return t('common.cancelText');
+    },
+  },
+  okText: {
+    type: [String, Function],
+    default: () => {
+      const { t } = useI18n();
+      return t('common.okText');
+    },
+  },
   closeFunc: Function as PropType<() => Promise<boolean>>,
 };