import { Modal } from 'ant-design-vue'; const PATCHED_KEY = '__jeesiteMaskClosablePatched__'; const MODAL_METHODS = ['confirm', 'info', 'success', 'error', 'warning', 'warn'] as const; type PopupComponent = { props?: Record; }; function setBooleanPropDefault(component: PopupComponent, propName: string, defaultValue: boolean) { const prop = component?.props?.[propName]; if (!prop || typeof prop !== 'object') return; prop.default = defaultValue; } function patchModalMethod(methodName: (typeof MODAL_METHODS)[number]) { const modalApi = Modal as unknown as Record; const origin = modalApi[methodName]; if (typeof origin !== 'function' || origin[PATCHED_KEY]) return; const patched = (config: Record = {}) => origin({ ...config, maskClosable: false, }); patched[PATCHED_KEY] = true; modalApi[methodName] = patched; } export function setupAntdPopupBehavior() { setBooleanPropDefault(Modal as unknown as PopupComponent, 'maskClosable', false); MODAL_METHODS.forEach(patchModalMethod); }