xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 6.81 kB
Source Map (JSON)
{"version":3,"file":"plugin.mjs","sources":["../../src/dialog/plugin.tsx"],"sourcesContent":["import { App, createApp, ref, Plugin, defineComponent, h, onMounted } from 'vue';\nimport DialogComponent from './dialog';\nimport { getAttach } from '../utils/dom';\nimport { DialogOptions, DialogMethod, DialogConfirmMethod, DialogAlertMethod, DialogInstance } from './type';\n\nconst createDialog: DialogMethod = (props: DialogOptions) => {\n const options = { ...props };\n const wrapper = document.createElement('div');\n const visible = ref(false);\n const { className, style } = options;\n const component = defineComponent({\n setup(props, { expose }) {\n const dialogOptions = ref<Record<string, any>>(options);\n onMounted(() => {\n visible.value = true;\n // 处理 https://github.com/Tencent/tdesign-vue-next/issues/394\n (document.activeElement as HTMLElement).blur();\n });\n const update = (newOptions: DialogOptions) => {\n dialogOptions.value = {\n ...options,\n ...newOptions,\n };\n };\n\n expose({\n update,\n });\n\n return () => {\n const onClose =\n options.onClose ||\n function () {\n visible.value = false;\n };\n delete options.className;\n delete options.style;\n return h(DialogComponent, {\n onClose,\n visible: visible.value,\n ...dialogOptions.value,\n });\n };\n },\n });\n const dialogComponent = createApp(component);\n const dialog = dialogComponent.mount(wrapper);\n\n let preClassName = className;\n\n const updateClassNameStyle = (className: string, style: DialogOptions['style']) => {\n if (className) {\n if (preClassName !== className) {\n wrapper.firstElementChild.classList.remove(...preClassName.split(' ').map((name) => name.trim()));\n }\n className.split(' ').forEach((name) => {\n wrapper.firstElementChild.classList.add(name.trim());\n });\n }\n\n if (style) {\n (wrapper.firstElementChild as HTMLElement).style.cssText += style;\n }\n\n preClassName = className;\n };\n\n updateClassNameStyle(className, style);\n\n const container = getAttach(options.attach);\n if (container) {\n container.appendChild(wrapper);\n } else {\n console.error('attach is not exist');\n }\n\n const dialogNode: DialogInstance = {\n show: () => {\n visible.value = true;\n },\n hide: () => {\n visible.value = false;\n },\n update: (newOptions: DialogOptions) => {\n dialog.update(newOptions);\n updateClassNameStyle(newOptions.className, newOptions.style);\n },\n destroy: () => {\n visible.value = false;\n setTimeout(() => {\n dialogComponent.unmount();\n }, 300);\n },\n };\n return dialogNode;\n};\ninterface ExtraApi {\n confirm: DialogConfirmMethod;\n alert: DialogAlertMethod;\n}\n\nconst confirm: DialogConfirmMethod = (props: DialogOptions) => createDialog(props);\n\nconst alert: DialogAlertMethod = (props: Omit<DialogOptions, 'confirmBtn'>) => {\n const options = { ...props };\n options.cancelBtn = null;\n return createDialog(options);\n};\n\nconst extraApi: ExtraApi = {\n confirm,\n alert,\n};\n\nexport type DialogPluginType = Plugin & ExtraApi & DialogAlertMethod;\n\nexport const DialogPlugin: DialogPluginType = createDialog as DialogPluginType;\n\nDialogPlugin.install = (app: App): void => {\n app.config.globalProperties.$dialog = createDialog;\n Object.keys(extraApi).forEach((funcName) => {\n app.config.globalProperties.$dialog[funcName] = extraApi[funcName];\n });\n};\n\nObject.keys(extraApi).forEach((funcName) => {\n DialogPlugin[funcName] = extraApi[funcName];\n});\n\nexport default DialogPlugin;\n"],"names":["setup","onMounted","document","expose","update","DialogComponent","onClose","wrapper","className","updateClassNameStyle","container","console","dialog","setTimeout","confirm","alert","DialogPlugin","app","Object"],"mappings":"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"}