mainMenuBuilder.ts 2.5 KB

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