diff --git a/packages/devui-vue/devui/drawer/index.ts b/packages/devui-vue/devui/drawer/index.ts index 0c923f4da8..c0ac81fb9b 100644 --- a/packages/devui-vue/devui/drawer/index.ts +++ b/packages/devui-vue/devui/drawer/index.ts @@ -8,10 +8,16 @@ Drawer.install = function(app: App): void { export { Drawer, DrawerService } +// TODO: no-service model exists memory leak +// rest tasks +// 1. draggable width +// 2. function of the 1st icon in header-component +// 3. rest service-model api +// 4. typescript type of props export default { title: 'Drawer 抽屉板', category: '反馈', - status: '60%', + status: '75%', install(app: App): void { app.use(Drawer as any) app.config.globalProperties.$drawerService = DrawerService diff --git a/packages/devui-vue/devui/drawer/src/components/drawer-body.tsx b/packages/devui-vue/devui/drawer/src/components/drawer-body.tsx index a52965f7c0..d3525a420f 100644 --- a/packages/devui-vue/devui/drawer/src/components/drawer-body.tsx +++ b/packages/devui-vue/devui/drawer/src/components/drawer-body.tsx @@ -13,6 +13,7 @@ export default defineComponent({ const width: any = inject('width') const visible: boolean = inject('visible') const backdropCloseable: any = inject('backdropCloseable') + const destroyOnHide: any = inject('destroyOnHide') const navRight = computed(() => position.value === 'right' ? { 'right': 0 } : { 'left': 0 }) const navWidth = computed(() => isFullScreen.value ? '100vw' : width.value) @@ -35,18 +36,23 @@ export default defineComponent({ visible, clickContent, handleDrawerClose, + destroyOnHide, } }, render() { const { - zindex, slots, isCover, navRight, navWidth, visible, handleDrawerClose - } = this + zindex, slots, isCover, navRight, navWidth, + visible, handleDrawerClose, destroyOnHide } = this - if (!visible) return null + if (destroyOnHide.value && !visible) { + return null + } + + const visibleVal = visible ? 'visible' : 'hidden' return ( -