tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 8.79 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/dialog/index.ts"],"sourcesContent":["import { createApp, h, App, ref, nextTick, reactive } from 'vue';\n\nimport Dialog from './dialog';\nimport { WithInstallType, isBrowser } from '../shared';\nimport { DialogCloseContext, TdDialogProps, DialogInstance } from './type';\n\nimport './style';\n\nexport type DialogType = 'alert' | 'confirm' | 'show';\n\nconst DialogPropsDefault = {\n title: '',\n content: '',\n confirmBtn: '',\n cancelBtn: '',\n visible: false,\n zIndex: 2500,\n showOverlay: true,\n width: '320px',\n closeOnOverlayClick: false,\n};\n\nconst propsFn = ['onConfirm', 'onCancel', 'onOverlayClick', 'onClose', 'onClosed'] as const;\ntype DialogPropsFnName = (typeof propsFn)[number];\n\nfunction create(options: Partial<TdDialogProps> | string): DialogInstance {\n if (!isBrowser) return;\n\n const root = document.createElement('div');\n document.body.appendChild(root);\n\n const props = ref<Partial<TdDialogProps>>({});\n const propsObject = {\n ...DialogPropsDefault,\n ...(typeof options === 'string' ? { content: options } : options),\n };\n\n function callFn<T>(fnType: DialogPropsFnName, context?: T): void {\n const fn = props.value[fnType] || propsObject[fnType];\n typeof fn === 'function' && fn(context as any);\n }\n\n const params = reactive({\n ...propsObject,\n onConfirm: (context: { e: MouseEvent }) => {\n callFn('onConfirm', context);\n params.visible = false;\n },\n onCancel: (context: { e: MouseEvent }) => {\n callFn('onCancel', context);\n params.visible = false;\n },\n onOverlayClick: (context: { e: MouseEvent }) => {\n callFn('onOverlayClick', context);\n params.visible = false;\n },\n onClose: (context: DialogCloseContext) => {\n callFn('onClose', context);\n params.visible = false;\n },\n onClosed: () => {\n callFn('onClosed');\n // 卸载创建的app\n // 修复调用destroy未清除滚动锁定问题\n nextTick(() => {\n params.destroyOnClose && app.unmount();\n });\n },\n });\n\n const app = createApp(() => h(Dialog, params));\n app.mount(root);\n\n const handler = {\n destroy() {\n params.destroyOnClose = true;\n nextTick(() => {\n params.visible = false;\n root.remove();\n });\n },\n hide() {\n params.visible = false;\n },\n show() {\n params.visible = true;\n },\n update(options: Partial<TdDialogProps> | string) {\n if (typeof options === 'string') {\n params.content = options;\n } else {\n for (const key in options) {\n if (propsFn.includes(key as DialogPropsFnName)) {\n props.value[key] = options[key];\n } else {\n params[key] = options[key];\n }\n }\n }\n },\n };\n\n nextTick(() => (params.visible = true));\n\n return handler;\n}\n\n(['show', 'alert', 'confirm'] as DialogType[]).forEach((type: DialogType): void => {\n Dialog[type] = (options: Partial<TdDialogProps> | string): DialogInstance => {\n let props: any = { content: '' };\n\n if (typeof options === 'string') {\n props.content = options;\n } else {\n props = { ...props, ...options };\n }\n\n if (type === 'alert') {\n props.cancelBtn = null;\n }\n\n return create(props);\n };\n});\n\nDialog.install = (app: App, name = '') => {\n app.component(name || Dialog.name, Dialog);\n\n // 添加插件入口\n app.config.globalProperties.$dialog = Dialog as any;\n app.provide('$dialog', Dialog);\n};\n\ntype DialogApi = {\n /** 通用对话框 */\n show: (options: Partial<TdDialogProps> | string) => DialogInstance;\n /** 基础对话框 */\n alert: (options: Partial<TdDialogProps> | string) => DialogInstance;\n /** 选择对话框 */\n confirm: (options: Partial<TdDialogProps> | string) => DialogInstance;\n};\n\nexport const DialogPlugin: WithInstallType<typeof Dialog> & DialogApi = Dialog as any;\nexport default DialogPlugin;\n\ndeclare module 'vue' {\n // Bind to `this` keyword\n export interface ComponentCustomProperties {\n $dialog: DialogApi;\n }\n}\n"],"names":["DialogPropsDefault","title","content","confirmBtn","cancelBtn","visible","zIndex","showOverlay","width","closeOnOverlayClick","propsFn","create","options","isBrowser","root","document","createElement","body","appendChild","props","ref","propsObject","_objectSpread","callFn","fnType","context","fn","value","params","reactive","onConfirm","onCancel","onOverlayClick","onClose","onClosed","nextTick","destroyOnClose","app","unmount","createApp","h","Dialog","mount","handler","destroy","remove","hide","show","update","key","includes","forEach","type","install","name","arguments","length","undefined","component","config","globalProperties","$dialog","provide","DialogPlugin"],"mappings":"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"}