import {ItemMenu, ItemsMenu, IconItem} from '~/types/interfaces' import {useRuntimeConfig} from "#app"; import {RuntimeConfig} from "@nuxt/schema"; import Url from "~/services/utils/url"; /** * @category composables/layout/Menus * @class BaseMenu * Classe abstraite pour chacun des menus */ class BaseMenu { protected $config: RuntimeConfig; /** * @constructor * Initialisation des services issus du context */ constructor () { this.$config = useRuntimeConfig() } /** * Construit un ItemMenu * * @param {IconItem} icon * @param {string} title titre qui sera traduit * @param {string} link lien * @param {boolean} isV1Link est-ce un lien renvoyant vers l'ancien admin ? * @param {Array} children Tableau d'ItemMenu représentant les sous menu du menu principal * @param {boolean} isExternalLink est-ce un lien renvoyant vers l'extérieur ? * @return {ItemMenu} */ constructMenuItem (title: string, icon?: IconItem, link?: string, isV1Link?: boolean, children?: Array, isExternalLink?: boolean): ItemMenu { const v1BaseURL = this.$config.baseUrlAdminLegacy ?? this.$config.public.baseUrlAdminLegacy const url = (isV1Link && !isExternalLink) ? Url.join(v1BaseURL, link ?? '') : link return children ? { title, icon, children } : { icon, title, to: url, isExternalLink: isExternalLink || isV1Link } } getMenu (): ItemMenu | null { return null } getMenus (): ItemsMenu | null { return null } getHeaderMenu (): ItemMenu | null { return null } } export default BaseMenu