fix(simple-menu): collapse openmenus error #204

This commit is contained in:
vben
2021-01-19 22:38:43 +08:00
parent 025ee92764
commit ca4f1a8faf
9 changed files with 120 additions and 99 deletions

View File

@@ -3,7 +3,7 @@
v-bind="getBindValues"
@select="handleSelect"
:activeName="activeName"
:openNames="openNames"
:openNames="getOpenKeys"
:class="prefixCls"
:activeSubMenuNames="activeSubMenuNames"
>
@@ -67,8 +67,14 @@
const { currentRoute } = useRouter();
const { prefixCls } = useDesign('simple-menu');
const { items, accordion, mixSider } = toRefs(props);
const { setOpenKeys } = useOpenKeys(menuState, items, accordion, mixSider);
const { items, accordion, mixSider, collapse } = toRefs(props);
const { setOpenKeys, getOpenKeys } = useOpenKeys(
menuState,
items,
accordion,
mixSider,
collapse
);
const getBindValues = computed(() => ({ ...attrs, ...props }));
@@ -125,6 +131,7 @@
prefixCls,
getBindValues,
handleSelect,
getOpenKeys,
...toRefs(menuState),
};
},

View File

@@ -1,7 +1,7 @@
import type { Menu as MenuType } from '/@/router/types';
import type { MenuState } from './types';
import { Ref, toRaw } from 'vue';
import { computed, Ref, toRaw } from 'vue';
import { unref } from 'vue';
import { es6Unique } from '/@/utils';
@@ -12,7 +12,8 @@ export function useOpenKeys(
menuState: MenuState,
menus: Ref<MenuType[]>,
accordion: Ref<boolean>,
mixSider: Ref<boolean>
mixSider: Ref<boolean>,
collapse: Ref<boolean>
// mode: Ref<MenuModeEnum>,
) {
async function setOpenKeys(path: string) {
@@ -41,5 +42,9 @@ export function useOpenKeys(
);
}
return { setOpenKeys };
const getOpenKeys = computed(() => {
return unref(collapse) ? [] : menuState.openNames;
});
return { setOpenKeys, getOpenKeys };
}