menu.vue 728 B

123456789101112131415161718192021222324252627282930313233343536
  1. <script lang="ts" setup>
  2. import type { MenuRecordRaw } from '@vben-core/typings';
  3. import { Menu, MenuProps } from '@vben-core/menu-ui';
  4. interface Props extends MenuProps {
  5. menus?: MenuRecordRaw[];
  6. }
  7. const props = withDefaults(defineProps<Props>(), {
  8. accordion: true,
  9. menus: () => [],
  10. });
  11. const emit = defineEmits<{
  12. select: [string, string?];
  13. }>();
  14. function handleMenuSelect(key: string) {
  15. emit('select', key, props.mode);
  16. }
  17. </script>
  18. <template>
  19. <Menu
  20. :rounded="rounded"
  21. :collapse-show-title="collapseShowTitle"
  22. :collapse="collapse"
  23. :accordion="accordion"
  24. :default-active="defaultActive"
  25. :menus="menus"
  26. :theme="theme"
  27. :mode="mode"
  28. @select="handleMenuSelect"
  29. />
  30. </template>