menu.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import { reactive, h } from 'vue'
  2. import { renderIcon } from '@/utils'
  3. import { RouterLink } from 'vue-router'
  4. import { PageEnum } from '@/enums/pageEnum'
  5. import { MenuOption, MenuGroupOption } from 'naive-ui'
  6. import { icon } from '@/plugins'
  7. const { GridIcon, BeerIcon, DesktopIcon, LaptopOutlineIcon } = icon.ionicons5
  8. export const renderMenuLabel = (option: MenuOption | MenuGroupOption) => {
  9. return option.label
  10. }
  11. export const expandedKeys = () => ['all-project']
  12. export const menuOptionsInit = () => {
  13. const t = window['$t']
  14. return reactive([
  15. {
  16. key: 'divider-1',
  17. type: 'divider'
  18. },
  19. {
  20. label: t('project.project'),
  21. key: 'all-project',
  22. icon: renderIcon(GridIcon),
  23. children: [
  24. {
  25. type: 'group',
  26. label: t('project.my'),
  27. key: 'my-project',
  28. children: [
  29. {
  30. label: () =>
  31. h(
  32. RouterLink,
  33. {
  34. to: {
  35. name: PageEnum.BASE_HOME_ITEMS_NAME
  36. }
  37. },
  38. { default: () => t('project.all_project') }
  39. ),
  40. key: PageEnum.BASE_HOME_ITEMS_NAME,
  41. icon: renderIcon(DesktopIcon)
  42. },
  43. {
  44. label: () =>
  45. h(
  46. RouterLink,
  47. {
  48. to: {
  49. name: PageEnum.BASE_HOME_TEMPLATE_NAME
  50. }
  51. },
  52. { default: () => t('project.my_templete') }
  53. ),
  54. key: PageEnum.BASE_HOME_TEMPLATE_NAME,
  55. icon: renderIcon(LaptopOutlineIcon)
  56. }
  57. ]
  58. }
  59. ]
  60. },
  61. {
  62. key: 'divider-2',
  63. type: 'divider'
  64. },
  65. {
  66. label: () =>
  67. h(
  68. RouterLink,
  69. {
  70. to: {
  71. name: PageEnum.BASE_HOME_TEMPLATE_MARKET_NAME
  72. }
  73. },
  74. { default: () => t('project.template_market') }
  75. ),
  76. key: PageEnum.BASE_HOME_TEMPLATE_MARKET_NAME,
  77. icon: renderIcon(BeerIcon)
  78. }
  79. ])
  80. }