extra-menu.vue 835 B

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