layout.d.ts 880 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. }
  20. /**
  21. * Sous-menu, regroupant d'autres MenuItem et/ou MenuGroup
  22. */
  23. interface MenuGroup {
  24. label: string
  25. icon?: IconItem
  26. children?: MenuItems
  27. actions?: MenuItems
  28. /** Le sous-menu est-il déplié ou non */
  29. expanded: boolean
  30. }
  31. type MenuItems = Array<MenuItem | MenuGroup>
  32. /**
  33. * Service responsable de la génération d'un menu
  34. */
  35. interface MenuBuilder {
  36. build: () => MenuItem | MenuGroup | null
  37. }