menu.vue 762 B

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