extra-menu.vue 773 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. <script lang="ts" setup>
  2. import type { MenuRecordRaw } from '@vben-core/typings';
  3. import { useRoute } from 'vue-router';
  4. import { Menu, MenuProps } from '@vben-core/menu-ui';
  5. import { useNavigation } from './use-navigation';
  6. interface Props extends MenuProps {
  7. collspae?: boolean;
  8. menus: MenuRecordRaw[];
  9. }
  10. withDefaults(defineProps<Props>(), {
  11. accordion: true,
  12. menus: () => [],
  13. });
  14. const route = useRoute();
  15. const { navigation } = useNavigation();
  16. async function handleSelect(key: string) {
  17. await navigation(key);
  18. }
  19. </script>
  20. <template>
  21. <Menu
  22. :accordion="accordion"
  23. :collapse="collapse"
  24. :default-active="route.path"
  25. :menus="menus"
  26. :rounded="rounded"
  27. :theme="theme"
  28. mode="vertical"
  29. @select="handleSelect"
  30. />
  31. </template>