menuComposer.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import MainMenuBuilder from "~/services/menuBuilder/mainMenuBuilder";
  2. import {AccessProfile, LayoutState, organizationState} from "~/types/interfaces";
  3. import WebsiteListMenuBuilder from "~/services/menuBuilder/websiteListMenuBuilder";
  4. import MyAccessesMenuBuilder from "~/services/menuBuilder/myAccessesMenuBuilder";
  5. import MyFamilyMenuBuilder from "~/services/menuBuilder/myFamilyMenuBuilder";
  6. import ConfigurationMenuBuilder from "~/services/menuBuilder/configurationMenuBuilder";
  7. import AccountMenuBuilder from "~/services/menuBuilder/accountMenuBuilder";
  8. import {RuntimeConfig} from "@nuxt/schema";
  9. import {AnyAbility} from "@casl/ability";
  10. import {MenuGroup} from "~/types/layout";
  11. /**
  12. * Gestionnaire principal des menus de l'application
  13. */
  14. export default class MenuComposer {
  15. /**
  16. * Construit l'ensemble des menus et les insère dans le store Layout
  17. *
  18. * @param runtimeConfig
  19. * @param ability
  20. * @param organizationProfile
  21. * @param accessProfile
  22. * @param layoutState
  23. */
  24. public static build(
  25. runtimeConfig: RuntimeConfig,
  26. ability: AnyAbility,
  27. organizationProfile: organizationState,
  28. accessProfile: AccessProfile,
  29. layoutState: LayoutState
  30. ) {
  31. const builders = [
  32. MainMenuBuilder,
  33. WebsiteListMenuBuilder,
  34. MyAccessesMenuBuilder,
  35. MyFamilyMenuBuilder,
  36. ConfigurationMenuBuilder,
  37. AccountMenuBuilder
  38. ]
  39. const menus = builders.map(builder => new builder(runtimeConfig, ability, organizationProfile, accessProfile));
  40. for(let menu of menus){
  41. const menuBuilt = menu.build();
  42. if(menuBuilt){
  43. layoutState.menus[menu.getMenuName()] = menuBuilt
  44. // On enregistre l'état du menu dans le store de la page
  45. if ( ((menuBuilt as MenuGroup).children ?? []).length > 0 ) {
  46. layoutState.menusOpened[menu.getMenuName()] = false
  47. }
  48. }
  49. }
  50. }
  51. }