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>, };