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 MedalsMenuBuilder from "~/services/layout/menuBuilder/medalsMenuBuilder";
  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(MedalsMenuBuilder),
  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. }