tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 7.56 kB
Source Map (JSON)
{"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 ...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 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 ...drawerOptions.value,\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 // className & style由updateClassNameStyle来处理\n drawerComponent.component.exposed.update(omit(newOptions, ['style']));\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","onClose","destroyOnClose","setTimeout","h","DrawerComponent","drawerClassName","className","drawerComponent","createVNode","DrawerPlugin","_context","appContext","container","getAttach","attach","appendChild","console","error","destroyDrawer","drawerNode","show","hide","exposed","omit","destroy","install","app","config","globalProperties","$drawer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAMA,YAAA,GAA6B,SAA7BA,YAAAA,CAA8BC,KAAA,EAAOC,OAAY,EAAA;AAC/C,EAAA,IAAAC,OAAA,GAAAC,aAAA,CAAA,EAAA,EAAeH,KAAM,CAAA,CAAA;AACrB,EAAA,IAAAI,OAAA,GAAUC,QAAS,CAAAC,aAAA,CAAc,KAAK,CAAA,CAAA;AACtC,EAAA,IAAAC,OAAA,GAAUC,IAAI,KAAK,CAAA,CAAA;AACnB,EAAA,IAAEC,QAAUP,OAAA,CAAVO;AAEF,EAAA,IAAAC,WAAA,GAAc,SAAdA,WAAAA,CAAeD,MAAkC,EAAA;AACrD,IAAA,IAAIA,MAAO,EAAA;AACRL,MAAAA,OAAA,CAAQO,iBAAkC,CAAAF,KAAA,CAAMG,OAAWH,IAAAA,MAAAA,CAAAA;AAC9D,KAAA;GACF,CAAA;EAEA,SAASI,WAAcA,GAAA;AACrBC,IAAAA,MAAA,CAAO,MAAMV,OAAO,CAAA,CAAA;IACpBA,OAAA,CAAQW,MAAO,EAAA,CAAA;AACjB,GAAA;EAEA,IAAMC,YAAYC,eAAgB,CAAA;AAChCC,IAAAA,KAAMlB,WAANkB,KAAMlB,CAAAA,MAAAA,EAAAA,IAAAA,EAAmB;AAAA,MAAA,IAAVmB,MAAA,GAAAC,IAAA,CAAAD,MAAA,CAAA;AACP,MAAA,IAAAE,aAAA,GAAgBb,IAAyBN,OAAO,CAAA,CAAA;AACtDoB,MAAAA,SAAA,CAAU,YAAM;AACdC,QAAAA,QAAA,CAAS,YAAM;UACbhB,OAAA,CAAQiB,KAAQ,GAAA,IAAA,CAAA;AAClB,SAAC,CAAA,CAAA;AACAnB,QAAAA,QAAA,CAASoB,cAA8BC,IAAK,EAAA,CAAA;AAC7CH,QAAAA,QAAA,CAAS,YAAM;UACbb,WAAA,CAAYD,KAAK,CAAA,CAAA;AACnB,SAAC,CAAA,CAAA;AACH,OAAC,CAAA,CAAA;AACK,MAAA,IAAAkB,MAAA,GAAS,SAATA,MAAAA,CAAUC,UAA8B,EAAA;QAC5CP,aAAA,CAAcG,KAAQ,GAAArB,aAAA,CAAAA,aAAA,CACjBD,EAAAA,EAAAA,OAAA,CACA0B,EAAAA,UAAA,CACL,CAAA;OACF,CAAA;AAEOT,MAAAA,MAAA,CAAA;AACLQ,QAAAA,MAAA,EAAAA,MAAAA;AACF,OAAC,CAAA,CAAA;AAED,MAAA,OAAO,YAAM;AAAA,QAAA,IAAAE,oBAAA,CAAA;AACL,QAAA,IAAAC,OAAA,GACJ5B,OAAQ,CAAA4B,OAAA,IACR,YAAY;UACVvB,OAAA,CAAQiB,KAAQ,GAAA,KAAA,CAAA;UAChB,IAAItB,QAAQ6B,cAAgB,EAAA;AAC1BC,YAAAA,UAAA,CAAW,YAAM;AACHnB,cAAAA,WAAA,EAAA,CAAA;eACX,GAAG,CAAA,CAAA;AACR,WAAA;SACF,CAAA;QACF,OAAOX,OAAQ,CAAAO,KAAA,CAAA;AACf,QAAA,OAAOwB,EAAEC,OAAiB,EAAA/B,aAAA,CAAA;AACxB2B,UAAAA,OAAA,EAAAA,OAAA;UACAvB,SAASA,OAAQ,CAAAiB,KAAA;UACjBW,eAAA,EAAA,CAAAN,oBAAA,GAAiBR,cAAcG,KAAO,MAAAK,IAAAA,IAAAA,oBAAA,KAArBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqBO,SAAAA;AAAA,SAAA,EACnCf,aAAc,CAAAG,KAAA,CAClB,CAAA,CAAA;OACH,CAAA;AACF,KAAA;AACF,GAAC,CAAA,CAAA;AACK,EAAA,IAAAa,eAAA,GAAkBC,YAAYtB,SAAS,CAAA,CAAA;EAEzC,IAAAf,OAAA,aAAAA,OAAA,KAAA,KAAA,CAAA,GAAAA,OAAA,GAAWsC,aAAaC,QAAU,EAAA;IAEpBH,eAAA,CAAAI,UAAA,GAAaxC,oBAAAA,qBAAAA,UAAWsC,YAAa,CAAAC,QAAA,CAAA;AACvD,GAAA;AACM,EAAA,IAAAE,SAAA,GAAYC,SAAU,CAAAzC,OAAA,CAAQ0C,MAAM,CAAA,CAAA;AAC1C,EAAA,IAAIF,SAAW,EAAA;AACbA,IAAAA,SAAA,CAAUG,YAAYzC,OAAO,CAAA,CAAA;AAC/B,GAAO,MAAA;AACL0C,IAAAA,OAAA,CAAQC,MAAM,qBAAqB,CAAA,CAAA;AACrC,GAAA;AAEAjC,EAAAA,MAAA,CAAOuB,iBAAiBjC,OAAO,CAAA,CAAA;AAE/B,EAAA,IAAM4C,gBAAgB,SAAhBA,gBAAsB;IAC1BzC,OAAA,CAAQiB,KAAQ,GAAA,KAAA,CAAA;AAChBQ,IAAAA,UAAA,CAAW,YAAM;AACHnB,MAAAA,WAAA,EAAA,CAAA;OACX,GAAG,CAAA,CAAA;GACR,CAAA;AAEA,EAAA,IAAMoC,UAA6B,GAAA;AACjCC,IAAAA,MAAM,SAANA,OAAY;MACV3C,OAAA,CAAQiB,KAAQ,GAAA,IAAA,CAAA;KAClB;AACA2B,IAAAA,MAAM,SAANA,OAAY;MACV5C,OAAA,CAAQiB,KAAQ,GAAA,KAAA,CAAA;KAClB;AACAG,IAAAA,MAAA,EAAQ,SAARA,MAAAA,CAASC,UAA8B,EAAA;AAErBS,MAAAA,eAAA,CAAArB,SAAA,CAAUoC,QAAQzB,MAAO,CAAA0B,IAAA,CAAKzB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA,CAAA;AACpElB,MAAAA,WAAA,CAAYkB,WAAWnB,KAAK,CAAA,CAAA;KAC9B;AACA6C,IAAAA,SAAS,SAATA,UAAe;AACCN,MAAAA,aAAA,EAAA,CAAA;AAChB,KAAA;GACF,CAAA;AACO,EAAA,OAAAC,UAAA,CAAA;AACT,CAAA,CAAA;AAOO,IAAMV,YAAe,GAAAxC,aAAA;AAE5BwC,YAAa,CAAAgB,OAAA,GAAU,UAACC,GAAmB,EAAA;AAGzCjB,EAAAA,YAAA,CAAaC,WAAWgB,GAAI,CAAAhB,QAAA,CAAA;AACxBgB,EAAAA,GAAA,CAAAC,MAAA,CAAOC,iBAAiBC,OAAU,GAAA5D,YAAA,CAAA;AACxC,CAAA;;;;"}