admin-vben5/packages/effects/layouts/src/basic/menu/extra-menu.vue

40 lines
766 B
Vue
Raw Normal View History

2024-05-19 21:20:42 +08:00
<script lang="ts" setup>
import type { MenuRecordRaw } from '@vben/types';
2024-05-19 21:20:42 +08:00
import { useRoute } from 'vue-router';
2024-06-08 19:49:06 +08:00
import { Menu, MenuProps } from '@vben-core/menu-ui';
import { useNavigation } from './use-navigation';
2024-05-19 21:20:42 +08:00
interface Props extends MenuProps {
2024-07-14 13:48:47 +08:00
collapse?: boolean;
2024-05-19 21:20:42 +08:00
menus: MenuRecordRaw[];
}
withDefaults(defineProps<Props>(), {
accordion: true,
menus: () => [],
});
2024-05-19 21:20:42 +08:00
const route = useRoute();
const { navigation } = useNavigation();
2024-05-19 21:20:42 +08:00
async function handleSelect(key: string) {
await navigation(key);
2024-05-19 21:20:42 +08:00
}
</script>
<template>
<Menu
:accordion="accordion"
2024-05-19 21:20:42 +08:00
:collapse="collapse"
:default-active="route.path"
:menus="menus"
2024-06-09 13:31:43 +08:00
:rounded="rounded"
2024-05-19 21:20:42 +08:00
:theme="theme"
mode="vertical"
@select="handleSelect"
/>
</template>