layout.d.ts 984 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { MENU_LINK_TYPE } from '~/types/enum/layout'
  2. interface IconItem {
  3. name?: string
  4. avatarId?: number | null
  5. avatarByDefault?: string
  6. }
  7. /**
  8. * Entrée d'un menu, correspondant à un lien de navigation
  9. */
  10. interface MenuItem {
  11. label: string
  12. icon?: IconItem
  13. to?: string
  14. /** Type de lien (interne, externe, v1) */
  15. type: MENU_LINK_TYPE
  16. avatar?: number
  17. /** Correspond à la page actuelle */
  18. active: boolean
  19. /** Définit l'attribut 'target' du lien */
  20. target?: '_blank' | '_self' | '_parent' | '_top' | 'framename'
  21. }
  22. /**
  23. * Sous-menu, regroupant d'autres MenuItem et/ou MenuGroup
  24. */
  25. interface MenuGroup {
  26. label: string
  27. icon?: IconItem
  28. children?: MenuItems
  29. actions?: MenuItems
  30. target?: '_blank' | '_self' | '_parent' | '_top' | 'framename'
  31. }
  32. type MenuItems = Array<MenuItem | MenuGroup>
  33. /**
  34. * Service responsable de la génération d'un menu
  35. */
  36. interface MenuBuilder {
  37. getMenuName: () => string
  38. build: () => MenuItem | MenuGroup | null
  39. }