mainMenuBuilder.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. import BasicomptaMenuBuilder from '~/services/layout/menuBuilder/basicomptaMenuBuilder'
  16. import HelloAssoMenuBuilder from '~/services/layout/menuBuilder/helloAssoMenuBuilder'
  17. /**
  18. * Menu principal (ou menu lateral)
  19. */
  20. export default class MainMenuBuilder extends AbstractMenuBuilder {
  21. static override readonly menuName = 'Main'
  22. /**
  23. * Construit le menu principal, ou null si aucune page accessible
  24. */
  25. build(): MenuGroup | MenuItem | null {
  26. const children: MenuItems = [
  27. this.buildSubmenu(AccessMenuBuilder),
  28. this.buildSubmenu(AgendaMenuBuilder),
  29. this.buildSubmenu(EquipmentMenuBuilder),
  30. this.buildSubmenu(EducationalMenuBuilder),
  31. this.buildSubmenu(BillingMenuBuilder),
  32. this.buildSubmenu(CommunicationMenuBuilder),
  33. this.buildSubmenu(DonorsMenuBuilder),
  34. this.buildSubmenu(RewardsMenuBuilder),
  35. this.buildSubmenu(WebsiteAdminMenuBuilder),
  36. this.buildSubmenu(BasicomptaMenuBuilder),
  37. this.buildSubmenu(HelloAssoMenuBuilder),
  38. this.buildSubmenu(CotisationsMenuBuilder),
  39. this.buildSubmenu(StatsMenuBuilder),
  40. this.buildSubmenu(Admin2iosMenuBuilder),
  41. ].filter((m: MenuItem | MenuGroup | null) => m !== null)
  42. if (children.length > 1) {
  43. // Plusieurs éléments, on retourne un groupe
  44. return this.createGroup('main', undefined, children)
  45. } else if (children.length === 1) {
  46. // Un seul élément, on retourne cet élément seul
  47. return children[0]
  48. }
  49. return null
  50. }
  51. }