From 0419a070413be34ea5455ed955fa51d8c522da86 Mon Sep 17 00:00:00 2001 From: vben <anncwb@126.com> Date: 星期五, 01 一月 2021 23:03:40 +0800 Subject: [PATCH] feat(menu): add mixSideTrigger setting --- src/layouts/default/sider/MixSider.vue | 33 ++++++++++++++++++++++++++++++--- 1 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/layouts/default/sider/MixSider.vue b/src/layouts/default/sider/MixSider.vue index 3f656d2..96608f9 100644 --- a/src/layouts/default/sider/MixSider.vue +++ b/src/layouts/default/sider/MixSider.vue @@ -10,6 +10,7 @@ open: openMenu, }, ]" + v-bind="getMenuEvents" > <AppLogo :showTitle="false" :class="`${prefixCls}-logo`" /> <ScrollContainer> @@ -23,7 +24,7 @@ ]" v-for="item in menuModules" :key="item.path" - @click="hanldeModuleClick(item.path)" + v-bind="getItemEvents(item)" > <MenuTag :item="item" :showTitle="false" :isHorizontal="false" /> <g-icon @@ -112,6 +113,7 @@ getCanDrag, getCloseMixSidebarOnChange, getMenuTheme, + getMixSideTrigger, } = useMenuSetting(); const { title } = useGlobSetting(); @@ -124,6 +126,16 @@ }; } ); + + const getMenuEvents = computed(() => { + return unref(getMixSideTrigger) === 'hover' + ? { + onMouseleave: () => { + openMenu.value = false; + }, + } + : {}; + }); const getShowDragBar = computed(() => unref(getCanDrag)); @@ -139,11 +151,13 @@ } }); - async function hanldeModuleClick(path: string) { + async function hanldeModuleClick(path: string, hover = false) { const children = await getChildrenMenus(path); if (unref(activePath) === path) { - openMenu.value = !unref(openMenu); + if (!hover) { + openMenu.value = !unref(openMenu); + } if (!unref(openMenu)) { setActive(); } @@ -178,6 +192,17 @@ setActive(); } + function getItemEvents(item: Menu) { + if (unref(getMixSideTrigger) === 'hover') { + return { + onMouseenter: () => hanldeModuleClick(item.path, true), + }; + } + return { + onClick: () => hanldeModuleClick(item.path), + }; + } + return { t, prefixCls, @@ -194,6 +219,8 @@ title, openMenu, getMenuTheme, + getItemEvents, + getMenuEvents, }; }, }); -- Gitblit v1.8.0