mainMenuBuilder.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import AbstractMenuBuilder from '~/services/layout/menuBuilder/abstractMenuBuilder'
  2. import type { MenuGroup, MenuItem, MenuItems } from '~/types/layout'
  3. import AccessMenuBuilder from '~/services/layout/menuBuilder/accessMenuBuilder'
  4. import AgendaMenuBuilder from '~/services/layout/menuBuilder/agendaMenuBuilder'
  5. import EquipmentMenuBuilder from '~/services/layout/menuBuilder/equipmentMenuBuilder'
  6. import EducationalMenuBuilder from '~/services/layout/menuBuilder/educationalMenuBuilder'
  7. import BillingMenuBuilder from '~/services/layout/menuBuilder/billingMenuBuilder'
  8. import CommunicationMenuBuilder from '~/services/layout/menuBuilder/communicationMenuBuilder'
  9. import RewardsMenuBuilder from '~/services/layout/menuBuilder/rewardsMenuBuilder'
  10. import DonorsMenuBuilder from '~/services/layout/menuBuilder/donorsMenuBuilder'
  11. import WebsiteAdminMenuBuilder from '~/services/layout/menuBuilder/websiteAdminMenuBuilder'
  12. import CotisationsMenuBuilder from '~/services/layout/menuBuilder/cotisationsMenuBuilder'
  13. import StatsMenuBuilder from '~/services/layout/menuBuilder/statsMenuBuilder'
  14. import Admin2iosMenuBuilder from '~/services/layout/menuBuilder/admin2iosMenuBuilder'
  15. /**
  16. * Menu principal (ou menu lateral)
  17. */
  18. export default class MainMenuBuilder extends AbstractMenuBuilder {
  19. static readonly menuName = 'Main'
  20. /**
  21. * Construit le menu principal, ou null si aucune page accessible
  22. */
  23. build(): MenuGroup | MenuItem | null {
  24. const children: MenuItems = [
  25. this.buildSubmenu(AccessMenuBuilder),
  26. this.buildSubmenu(AgendaMenuBuilder),
  27. this.buildSubmenu(EquipmentMenuBuilder),
  28. this.buildSubmenu(EducationalMenuBuilder),
  29. this.buildSubmenu(BillingMenuBuilder),
  30. this.buildSubmenu(CommunicationMenuBuilder),
  31. this.buildSubmenu(DonorsMenuBuilder),
  32. this.buildSubmenu(RewardsMenuBuilder),
  33. this.buildSubmenu(WebsiteAdminMenuBuilder),
  34. this.buildSubmenu(CotisationsMenuBuilder),
  35. this.buildSubmenu(StatsMenuBuilder),
  36. this.buildSubmenu(Admin2iosMenuBuilder),
  37. ].filter((m: MenuItem | MenuGroup | null) => m !== null)
  38. if (children.length > 1) {
  39. // Plusieurs éléments, on retourne un groupe
  40. return this.createGroup('main', undefined, children)
  41. } else if (children.length === 1) {
  42. // Un seul élément, on retourne cet élément seul
  43. return children[0]
  44. }
  45. return null
  46. }
  47. }