From bc51ce8e686d2c33c8ec7887de289cbdd59ea1d0 Mon Sep 17 00:00:00 2001 From: shizhongming Date: Sat, 13 Apr 2024 15:22:58 +0800 Subject: [PATCH] =?UTF-8?q?perf(=E7=BB=84=E4=BB=B6-BasicModal):=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96BasicModal=E6=8C=89=E9=92=AE=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E5=8A=A0=E8=BD=BD=EF=BC=8C=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E9=A1=BA=E5=BA=8F=E5=AF=BC=E8=87=B4=E5=9B=BD?= =?UTF-8?q?=E9=99=85=E5=8C=96=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Modal/index.ts | 1 + src/components/Modal/src/BasicModal.vue | 6 ++++++ src/components/Modal/src/props.ts | 19 ++++++++++++++----- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/components/Modal/index.ts b/src/components/Modal/index.ts index ff3862ae2..0186fcf51 100644 --- a/src/components/Modal/index.ts +++ b/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'; diff --git a/src/components/Modal/src/BasicModal.vue b/src/components/Modal/src/BasicModal.vue index b01ef5db3..9a1ae6532 100644 --- a/src/components/Modal/src/BasicModal.vue +++ b/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, }; }); diff --git a/src/components/Modal/src/props.ts b/src/components/Modal/src/props.ts index e3678d224..688830f52 100644 --- a/src/components/Modal/src/props.ts +++ b/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>, };