tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 9.38 kB
Source Map (JSON)
{"version":3,"file":"plugin.mjs","sources":["../../../components/dialog/plugin.tsx"],"sourcesContent":["import { App, createApp, ref, Plugin, defineComponent, h, onMounted, nextTick } from 'vue';\nimport DialogComponent from './dialog';\nimport { getAttach } from '../utils/dom';\nimport { DialogOptions, DialogMethod, DialogConfirmMethod, DialogAlertMethod, DialogInstance } from './type';\nimport { omit } from 'lodash-es';\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\n let preClassName = className;\n\n const updateClassNameStyle = (className: string, style: DialogOptions['style']) => {\n if (className) {\n if (preClassName && 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 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 nextTick(() => {\n updateClassNameStyle(className, style);\n });\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 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 // className & style由updateClassNameStyle来处理\n dialog.update(omit(newOptions, ['className', 'style']));\n updateClassNameStyle(newOptions.className, newOptions.style);\n },\n destroy: () => {\n visible.value = false;\n setTimeout(() => {\n dialogComponent.unmount();\n wrapper.remove();\n }, 300);\n },\n setConfirmLoading: (val: boolean) => {\n dialog.update({ confirmLoading: val });\n },\n };\n return dialogNode;\n};\ninterface ExtraApi {\n confirm: DialogConfirmMethod;\n alert: DialogAlertMethod;\n}\n\ntype ExtraApiType = keyof ExtraApi;\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 & DialogMethod;\n\nexport const DialogPlugin = createDialog as DialogPluginType;\n\nDialogPlugin.install = (app: App): void => {\n app.config.globalProperties.$dialog = createDialog;\n Object.keys(extraApi).forEach((funcName: ExtraApiType) => {\n app.config.globalProperties.$dialog[funcName] = extraApi[funcName];\n });\n};\n\nObject.keys(extraApi).forEach((funcName: ExtraApiType) => {\n DialogPlugin[funcName] = extraApi[funcName];\n});\n\nexport default DialogPlugin;\n"],"names":["createDialog","props","options","_objectSpread","wrapper","document","createElement","visible","ref","className","style","preClassName","updateClassNameStyle","_wrapper$firstElement","firstElementChild","classList","remove","apply","_toConsumableArray","split","map","name","trim","forEach","add","cssText","component","defineComponent","setup","expose","_ref","dialogOptions","onMounted","value","activeElement","blur","nextTick","update","newOptions","onClose","h","DialogComponent","dialogComponent","createApp","dialog","mount","container","getAttach","attach","appendChild","console","error","dialogNode","show","hide","omit","destroy","setTimeout","unmount","setConfirmLoading","val","confirmLoading","confirm","alert","cancelBtn","extraApi","DialogPlugin","install","app","config","globalProperties","$dialog","Object","keys","funcName"],"mappings":"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"}