|
@@ -63,7 +63,7 @@
|
|
|
</div>
|
|
|
<ScrollContainer :class="`${prefixCls}-menu-list__content`">
|
|
|
<SimpleMenu
|
|
|
- :items="chilrenMenus"
|
|
|
+ :items="childrenMenus"
|
|
|
:theme="getMenuTheme"
|
|
|
mixSider
|
|
|
@menuClick="handleMenuClick"
|
|
@@ -114,7 +114,7 @@
|
|
|
setup() {
|
|
|
let menuModules = ref<Menu[]>([]);
|
|
|
const activePath = ref('');
|
|
|
- const chilrenMenus = ref<Menu[]>([]);
|
|
|
+ const childrenMenus = ref<Menu[]>([]);
|
|
|
const openMenu = ref(false);
|
|
|
const dragBarRef = ref<ElRef>(null);
|
|
|
const sideRef = ref<ElRef>(null);
|
|
@@ -150,7 +150,7 @@
|
|
|
|
|
|
const getIsFixed = computed(() => {
|
|
|
/* eslint-disable-next-line */
|
|
|
- mixSideHasChildren.value = unref(chilrenMenus).length > 0;
|
|
|
+ mixSideHasChildren.value = unref(childrenMenus).length > 0;
|
|
|
const isFixed = unref(getMixSideFixed) && unref(mixSideHasChildren);
|
|
|
if (isFixed) {
|
|
|
/* eslint-disable-next-line */
|
|
@@ -209,9 +209,8 @@
|
|
|
}
|
|
|
|
|
|
// Process module menu click
|
|
|
- async function hanldeModuleClick(path: string, hover = false) {
|
|
|
+ async function handleModuleClick(path: string, hover = false) {
|
|
|
const children = await getChildrenMenus(path);
|
|
|
-
|
|
|
if (unref(activePath) === path) {
|
|
|
if (!hover) {
|
|
|
if (!unref(openMenu)) {
|
|
@@ -233,12 +232,12 @@
|
|
|
}
|
|
|
|
|
|
if (!children || children.length === 0) {
|
|
|
- go(path);
|
|
|
- chilrenMenus.value = [];
|
|
|
+ if (!hover) go(path);
|
|
|
+ childrenMenus.value = [];
|
|
|
closeMenu();
|
|
|
return;
|
|
|
}
|
|
|
- chilrenMenus.value = children;
|
|
|
+ childrenMenus.value = children;
|
|
|
}
|
|
|
|
|
|
// Set the currently active menu and submenu
|
|
@@ -253,14 +252,14 @@
|
|
|
if (p) {
|
|
|
const children = await getChildrenMenus(p);
|
|
|
if (setChildren) {
|
|
|
- chilrenMenus.value = children;
|
|
|
+ childrenMenus.value = children;
|
|
|
|
|
|
if (unref(getMixSideFixed)) {
|
|
|
openMenu.value = children.length > 0;
|
|
|
}
|
|
|
}
|
|
|
if (children.length === 0) {
|
|
|
- chilrenMenus.value = [];
|
|
|
+ childrenMenus.value = [];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -278,11 +277,15 @@
|
|
|
function getItemEvents(item: Menu) {
|
|
|
if (unref(getMixSideTrigger) === 'hover') {
|
|
|
return {
|
|
|
- onMouseenter: () => hanldeModuleClick(item.path, true),
|
|
|
+ onMouseenter: () => handleModuleClick(item.path, true),
|
|
|
+ onClick: async () => {
|
|
|
+ const children = await getChildrenMenus(item.path);
|
|
|
+ if (item.path && (!children || children.length === 0)) go(item.path);
|
|
|
+ },
|
|
|
};
|
|
|
}
|
|
|
return {
|
|
|
- onClick: () => hanldeModuleClick(item.path),
|
|
|
+ onClick: () => handleModuleClick(item.path),
|
|
|
};
|
|
|
}
|
|
|
|
|
@@ -303,9 +306,9 @@
|
|
|
t,
|
|
|
prefixCls,
|
|
|
menuModules,
|
|
|
- hanldeModuleClick,
|
|
|
+ handleModuleClick: handleModuleClick,
|
|
|
activePath,
|
|
|
- chilrenMenus,
|
|
|
+ childrenMenus: childrenMenus,
|
|
|
getShowDragBar,
|
|
|
handleMenuClick,
|
|
|
getMenuStyle,
|