import { ItemMenu, ItemsMenu } from '~/types/interfaces' import { getAccessMenu } from '~/composables/layout/Menus/accessMenu' import { getAgendaMenu } from '~/composables/layout/Menus/agendaMenu' import { getEquipmentMenu } from '~/composables/layout/Menus/equipmentMenu' import { getEducationalMenu } from '~/composables/layout/Menus/educationalMenu' import { getBillingMenu } from '~/composables/layout/Menus/billingMenu' import { getCommunicationMenu } from '~/composables/layout/Menus/communicationMenu' import { getDonorsMenu } from '~/composables/layout/Menus/donorsMenu' import { getMedalsMenu } from '~/composables/layout/Menus/medalsMenu' import { getStatsMenu } from '~/composables/layout/Menus/statsMenu' import { getCotisationsMenu } from '~/composables/layout/Menus/cotisationsMenu' import { getAdmin2iosMenu } from '~/composables/layout/Menus/admin2iosMenu' import { getWebsiteMenu } from '~/composables/layout/Menus/websiteMenu' import { getConfigurationMenu } from '~/composables/layout/Menus/configurationMenu' import { getMyFamilyMenu } from '~/composables/layout/Menus/myFamilyMenu' import { getMyAccessesMenu } from '~/composables/layout/Menus/myAccessesMenu' import { getAccountMenu } from '~/composables/layout/Menus/accountMenu' import {getParametersMenu} from "~/composables/layout/Menus/parametersMenu"; import {Ref} from "@vue/reactivity"; import {useProfileAccessStore} from "~/store/profile/access"; /** * @category composables/layout * @class Menu * Use Classe pour la construction du Menu */ class Menu { /** * Construit le menu et mets à jour le state du profile d'access */ getLateralMenu (): Ref { const menu: ItemsMenu = [] const accessMenu: ItemMenu | null = getAccessMenu() if (accessMenu) { menu.push(accessMenu) } const agendaMenu: ItemMenu | null = getAgendaMenu() if (agendaMenu) { menu.push(agendaMenu) } const equipmentMenu: ItemMenu | null = getEquipmentMenu() if (equipmentMenu) { menu.push(equipmentMenu) } const educationalMenu: ItemMenu | null = getEducationalMenu() if (educationalMenu) { menu.push(educationalMenu) } const billingMenu: ItemMenu | null = getBillingMenu() if (billingMenu) { menu.push(billingMenu) } const communicationMenu: ItemMenu | null = getCommunicationMenu() if (communicationMenu) { menu.push(communicationMenu) } const donorsMenu: ItemMenu | null = getDonorsMenu() if (donorsMenu) { menu.push(donorsMenu) } const medalsMenu: ItemMenu | null = getMedalsMenu() if (medalsMenu) { menu.push(medalsMenu) } const websiteMenu: ItemMenu | null = getWebsiteMenu().getMenu() if (websiteMenu) { menu.push(websiteMenu) } const cotisationsMenu: ItemMenu | null = getCotisationsMenu() if (cotisationsMenu) { menu.push(cotisationsMenu) } const statsMenu: ItemMenu | null = getStatsMenu() if (statsMenu) { menu.push(statsMenu) } const admin2iosMenu: ItemMenu | null = getAdmin2iosMenu() if (admin2iosMenu) { menu.push(admin2iosMenu) } // Si l'utilisateur possède au moins un menu alors le menu latéral sera accessible const profileAccessStore = useProfileAccessStore() profileAccessStore.hasLateralMenu = menu.length > 0 return ref(menu) } /** * Construit le menu configuration et met à jour le state du profile d'access */ getConfigurationMenu (): Ref { const menu: ItemMenu | null = getConfigurationMenu() // Si l'utilisateur possède au moins un menu alors le menu configuration sera accessible const profileAccessStore = useProfileAccessStore() profileAccessStore.hasConfigurationMenu = menu != null return ref(menu) } /** * Construit le menu Mon Compte */ getAccountMenu (): Ref { return ref(getAccountMenu()) } /** * Construit le menu Mes structure et mets à jour le state du profile d'access */ getMyAccessesMenu (): Ref { const menu: ItemMenu | null = getMyAccessesMenu() // Si l'utilisateur possède au moins un menu alors le menu mes structures sera accessible const profileAccessStore = useProfileAccessStore() profileAccessStore.hasAccessesMenu = menu != null return ref(menu) } /** * Construit le menu Changement d'utilisateur et mets à jour le state du profile d'access */ getMyFamilyMenu (): Ref { const menu: ItemMenu | null = getMyFamilyMenu() // Si l'utilisateur possède au moins un menu alors le menu changement d'utilisateur sera accessible const profileAccessStore = useProfileAccessStore() profileAccessStore.hasFamilyMenu = menu != null return ref(menu) } /** * Construit le menu site internet du header */ getWebSiteMenu (): Ref { return ref(getWebsiteMenu().getHeaderMenu()) } /** * Construit le menu Paramètres */ getParametersMenu (): Ref { const menu: ItemsMenu | null = getParametersMenu() // Si l'utilisateur possède au moins un menu alors le menu latéral sera accessible const profileAccessStore = useProfileAccessStore() profileAccessStore.hasLateralMenu = true return ref(menu) } } export function UseMenu() { return new Menu() }