| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import MainMenuBuilder from "~/services/menuBuilder/mainMenuBuilder";
- import {AccessProfile, LayoutState, organizationState} from "~/types/interfaces";
- import WebsiteListMenuBuilder from "~/services/menuBuilder/websiteListMenuBuilder";
- import MyAccessesMenuBuilder from "~/services/menuBuilder/myAccessesMenuBuilder";
- import {RuntimeConfig} from "@nuxt/schema";
- import {AnyAbility} from "@casl/ability";
- import {MenuGroup} from "~/types/layout";
- export default class MenuComposer {
- /**
- * Construit l'ensemble des menus et les insère dans le store Layout
- * @param runtimeConfig
- * @param ability
- * @param organizationProfile
- * @param accessProfile
- * @param layoutState
- */
- public static build(
- runtimeConfig: RuntimeConfig,
- ability: AnyAbility,
- organizationProfile: organizationState,
- accessProfile: AccessProfile,
- layoutState: LayoutState
- ) {
- const builders = [MainMenuBuilder, WebsiteListMenuBuilder, MyAccessesMenuBuilder]
- const menus = builders.map(builder => new builder(runtimeConfig, ability, organizationProfile, accessProfile as AccessProfile));
- for(let menu of menus){
- const menuBuilt = menu.build();
- if(menuBuilt){
- layoutState.menus[menu.getMenuName()] = menuBuilt
- // On enregistre l'état du menu dans le store de la page
- if ( ((menuBuilt as MenuGroup).children ?? []).length > 0 ) {
- layoutState.menusOpened[menu.getMenuName()] = false
- }
- }
- }
- }
- }
|