| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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 MyFamilyMenuBuilder from "~/services/menuBuilder/myFamilyMenuBuilder";
- import ConfigurationMenuBuilder from "~/services/menuBuilder/configurationMenuBuilder";
- import AccountMenuBuilder from "~/services/menuBuilder/accountMenuBuilder";
- import {RuntimeConfig} from "@nuxt/schema";
- import {AnyAbility} from "@casl/ability";
- import {MenuGroup} from "~/types/layout";
- /**
- * Gestionnaire principal des menus de l'application
- */
- 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,
- MyFamilyMenuBuilder,
- ConfigurationMenuBuilder,
- AccountMenuBuilder
- ]
- const menus = builders.map(builder => new builder(runtimeConfig, ability, organizationProfile, 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
- }
- }
- }
- }
- }
|