baseMenu.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import {ItemMenu, ItemsMenu, IconItem} from '~/types/interfaces'
  2. import {useRuntimeConfig} from "#app";
  3. import {RuntimeConfig} from "@nuxt/schema";
  4. import Url from "~/services/utils/url";
  5. /**
  6. * @category composables/layout/Menus
  7. * @class BaseMenu
  8. * Classe abstraite pour chacun des menus
  9. */
  10. class BaseMenu {
  11. protected $config: RuntimeConfig;
  12. /**
  13. * @constructor
  14. * Initialisation des services issus du context
  15. */
  16. constructor () {
  17. this.$config = useRuntimeConfig()
  18. }
  19. /**
  20. * Construit un ItemMenu
  21. *
  22. * @param {IconItem} icon
  23. * @param {string} title titre qui sera traduit
  24. * @param {string} link lien
  25. * @param {boolean} isV1Link est-ce un lien renvoyant vers l'ancien admin ?
  26. * @param {Array<ItemMenu>} children Tableau d'ItemMenu représentant les sous menu du menu principal
  27. * @param {boolean} isExternalLink est-ce un lien renvoyant vers l'extérieur ?
  28. * @return {ItemMenu}
  29. */
  30. constructMenuItem (title: string, icon?: IconItem, link?: string, isV1Link?: boolean, children?: Array<ItemMenu>, isExternalLink?: boolean): ItemMenu {
  31. const v1BaseURL = this.$config.baseUrlAdminLegacy ?? this.$config.public.baseUrlAdminLegacy
  32. const url = (isV1Link && !isExternalLink) ? Url.join(v1BaseURL, link ?? '') : link
  33. return children ? {
  34. title,
  35. icon,
  36. children
  37. } : {
  38. icon,
  39. title,
  40. to: url,
  41. isExternalLink: isExternalLink || isV1Link
  42. }
  43. }
  44. getMenu (): ItemMenu | null {
  45. return null
  46. }
  47. getMenus (): ItemsMenu | null {
  48. return null
  49. }
  50. getHeaderMenu (): ItemMenu | null {
  51. return null
  52. }
  53. }
  54. export default BaseMenu