UNPKG

tdesign-vue-next

Version:
1 lines 7.88 kB
{"version":3,"file":"plugin.mjs","sources":["../../../components/drawer/plugin.tsx"],"sourcesContent":["import { App, ref, Plugin, defineComponent, h, onMounted, nextTick, render, createVNode, AppContext } from 'vue';\nimport DrawerComponent from './drawer';\nimport { getAttach } from '@tdesign/shared-utils';\nimport { DrawerOptions, DrawerMethod, DrawerInstance } from './type';\nimport { omit } from 'lodash-es';\n\nconst createDrawer: DrawerMethod = (props, context) => {\n const options = { ...props };\n const wrapper = document.createElement('div');\n const visible = ref(false);\n const { style } = options;\n\n const updateStyle = (style: DrawerOptions['style']) => {\n if (style) {\n (wrapper.firstElementChild as HTMLElement).style.cssText += style;\n }\n };\n\n function destroySelf() {\n render(null, wrapper);\n wrapper.remove();\n }\n\n const component = defineComponent({\n setup(props, { expose }) {\n const drawerOptions = ref<Record<string, any>>(options);\n onMounted(() => {\n nextTick(() => {\n visible.value = true;\n });\n (document.activeElement as HTMLElement).blur();\n nextTick(() => {\n updateStyle(style);\n });\n });\n const update = (newOptions: DrawerOptions) => {\n drawerOptions.value = {\n ...options,\n drawerClassName: drawerOptions.value?.className,\n ...omit(newOptions, ['className', 'style']),\n };\n };\n\n expose({\n update,\n });\n\n return () => {\n const onClose =\n options.onClose ||\n function () {\n visible.value = false;\n if (options.destroyOnClose) {\n setTimeout(() => {\n destroySelf();\n }, 300);\n }\n };\n delete options.style;\n return h(DrawerComponent, {\n onClose,\n visible: visible.value,\n drawerClassName: drawerOptions.value?.className,\n ...omit(drawerOptions.value, 'className', 'style'),\n });\n };\n },\n });\n const drawerComponent = createVNode(component);\n // eslint-disable-next-line no-underscore-dangle\n if (context ?? DrawerPlugin._context) {\n // eslint-disable-next-line no-underscore-dangle\n drawerComponent.appContext = context ?? DrawerPlugin._context;\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 render(drawerComponent, wrapper);\n\n const destroyDrawer = () => {\n visible.value = false;\n setTimeout(() => {\n destroySelf();\n }, 400);\n };\n\n const drawerNode: DrawerInstance = {\n show: () => {\n visible.value = true;\n },\n hide: () => {\n visible.value = false;\n },\n update: (newOptions: DrawerOptions) => {\n drawerComponent.component.exposed.update(newOptions);\n //style 由 updateStyle 来处理\n updateStyle(newOptions.style);\n },\n destroy: () => {\n destroyDrawer();\n },\n };\n return drawerNode;\n};\n\nexport type DrawerPluginType = Plugin &\n DrawerMethod & {\n _context?: AppContext;\n };\n\nexport const DrawerPlugin = createDrawer as DrawerPluginType;\n\nDrawerPlugin.install = (app: App): void => {\n // 如果使用 use 方法,自动绑定当前 App 的 context\n // eslint-disable-next-line no-underscore-dangle\n DrawerPlugin._context = app._context;\n app.config.globalProperties.$drawer = createDrawer;\n};\n\nexport default DrawerPlugin;\n"],"names":["createDrawer","props","context","options","_objectSpread","wrapper","document","createElement","visible","ref","style","updateStyle","firstElementChild","cssText","destroySelf","render","remove","component","defineComponent","setup","expose","_ref","drawerOptions","onMounted","nextTick","value","activeElement","blur","update","newOptions","_drawerOptions$value","drawerClassName","className","omit","_drawerOptions$value2","onClose","destroyOnClose","setTimeout","h","DrawerComponent","drawerComponent","createVNode","DrawerPlugin","_context","appContext","container","getAttach","attach","appendChild","console","error","destroyDrawer","drawerNode","show","hide","exposed","destroy","install","app","config","globalProperties","$drawer"],"mappings":"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"}