layout.d.ts 971 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import {MENU_LINK_TYPE} from "~/types/enum/layout";
  2. interface IconItem {
  3. name?: string
  4. // TODO: les avatars sont ils encore utiles?
  5. avatarId?: number | null
  6. avatarByDefault?: string
  7. }
  8. /**
  9. * Entrée d'un menu, correspondant à un lien de navigation
  10. */
  11. interface MenuItem {
  12. label: string
  13. icon?: IconItem
  14. to?: string
  15. /** Type de lien (interne, externe, v1) */
  16. type: MENU_LINK_TYPE
  17. // TODO: revoir l'utilité de avatar?
  18. avatar?: number
  19. /** Correspond à la page actuelle */
  20. active: boolean
  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. /** Le sous-menu est-il déplié ou non */
  31. expanded: boolean
  32. }
  33. type MenuItems = Array<MenuItem | MenuGroup>
  34. /**
  35. * Service responsable de la génération d'un menu
  36. */
  37. interface MenuBuilder {
  38. build: () => MenuItem | MenuGroup | null
  39. }