mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-08-27 14:13:40 +08:00
feat(breadcrumb): add breadcrumb demo #143
This commit is contained in:
@@ -118,16 +118,21 @@
|
||||
listenerLastChangeTab((route) => {
|
||||
if (route.name === REDIRECT_NAME) return;
|
||||
handleMenuChange(route);
|
||||
}, false);
|
||||
const currentActiveMenu = route.meta?.currentActiveMenu;
|
||||
if (currentActiveMenu) {
|
||||
menuState.selectedKeys = [currentActiveMenu];
|
||||
setOpenKeys(currentActiveMenu);
|
||||
}
|
||||
});
|
||||
|
||||
watch(
|
||||
() => props.items,
|
||||
() => {
|
||||
handleMenuChange();
|
||||
},
|
||||
{
|
||||
immediate: true,
|
||||
}
|
||||
// {
|
||||
// immediate: true,
|
||||
// }
|
||||
);
|
||||
|
||||
async function handleMenuClick({ key, keyPath }: { key: string; keyPath: string[] }) {
|
||||
@@ -149,9 +154,7 @@
|
||||
return;
|
||||
}
|
||||
const path = (route || unref(currentRoute)).path;
|
||||
if (props.mode !== MenuModeEnum.HORIZONTAL) {
|
||||
setOpenKeys(path);
|
||||
}
|
||||
setOpenKeys(path);
|
||||
if (props.isHorizontal && unref(getSplit)) {
|
||||
const parentPath = await getCurrentParentPath(path);
|
||||
menuState.selectedKeys = [parentPath];
|
||||
|
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<BasicMenuItem v-if="!menuHasChildren(item)" v-bind="$props" />
|
||||
<SubMenu v-else :class="[`${prefixCls}__level${level}`, theme]">
|
||||
<BasicMenuItem v-if="!menuHasChildren(item) && getShowMenu" v-bind="$props" />
|
||||
<SubMenu
|
||||
v-if="menuHasChildren(item) && getShowMenu"
|
||||
:class="[`${prefixCls}__level${level}`, theme]"
|
||||
>
|
||||
<template #title>
|
||||
<MenuItemContent v-bind="$props" :item="item" />
|
||||
</template>
|
||||
@@ -16,7 +19,7 @@
|
||||
<script lang="ts">
|
||||
import type { Menu as MenuType } from '/@/router/types';
|
||||
|
||||
import { defineComponent } from 'vue';
|
||||
import { defineComponent, computed } from 'vue';
|
||||
import { Menu } from 'ant-design-vue';
|
||||
import { useDesign } from '/@/hooks/web/useDesign';
|
||||
import { itemProps } from '../props';
|
||||
@@ -35,8 +38,12 @@
|
||||
// ExpandIcon: createAsyncComponent(() => import('./ExpandIcon.vue')),
|
||||
},
|
||||
props: itemProps,
|
||||
setup() {
|
||||
setup(props) {
|
||||
const { prefixCls } = useDesign('basic-menu-item');
|
||||
|
||||
const getShowMenu = computed(() => {
|
||||
return !props.item.meta?.hideMenu;
|
||||
});
|
||||
function menuHasChildren(menuTreeItem: MenuType): boolean {
|
||||
return (
|
||||
Reflect.has(menuTreeItem, 'children') &&
|
||||
@@ -47,6 +54,7 @@
|
||||
return {
|
||||
prefixCls,
|
||||
menuHasChildren,
|
||||
getShowMenu,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
@@ -18,6 +18,9 @@ export function useOpenKeys(
|
||||
const { getCollapsed } = useMenuSetting();
|
||||
|
||||
function setOpenKeys(path: string) {
|
||||
if (mode.value === MenuModeEnum.HORIZONTAL) {
|
||||
return;
|
||||
}
|
||||
const menuList = toRaw(menus.value);
|
||||
if (!unref(accordion)) {
|
||||
menuState.openKeys = es6Unique([...menuState.openKeys, ...getAllParentPath(menuList, path)]);
|
||||
|
Reference in New Issue
Block a user