import { ItemMenu, ItemsMenu, Menu } from '~/types/interfaces' import BaseMenu from '~/composables/layout/Menus/baseMenu' import {useAbility} from "@casl/vue"; /** * @category composables/layout/Menus * @class AgendaMenu * Classe pour la construction du Menu agenda */ class AgendaMenu extends BaseMenu implements Menu { /** * @constructor * Initialisation des services issues du context */ constructor () { const {$config} = useNuxtApp() super($config) } /** * Construit le menu Agenda ou null si aucune page accessible * @return {ItemMenu | null} */ getMenu (): ItemMenu | null { const {can} = useAbility() const children: ItemsMenu = [] if (can('display', 'agenda_page')) { children.push(this.constructMenu('schedule', {name: 'fa-calendar-alt'}, '/calendar', true)) } if (can('display', 'attendance_page')) { children.push(this.constructMenu('attendances', {name: 'fa-calendar-check'}, '/attendances/list/', true)) } if (children.length === 1) { return children[0] } return children.length > 0 ? this.constructMenu('schedule', {name: 'fa-calendar-alt'}, undefined, undefined, children) : null } } export const getAgendaMenu = () => new AgendaMenu().getMenu()