Преглед изворни кода

prevent error on missing main menu

Olivier Massot пре 3 година
родитељ
комит
e2605f2d10
2 измењених фајлова са 7 додато и 4 уклоњено
  1. 6 3
      components/Layout/MainMenu.vue
  2. 1 1
      composables/layout/useMenu.ts

+ 6 - 3
components/Layout/MainMenu.vue

@@ -83,18 +83,21 @@ const { buildMenu, hasMenu, isInternalLink, openMenu, isMenuOpened } = useMenu()
 const { mdAndUp } = useDisplay()
 
 const menu = buildMenu('Main')
+if (menu.value === null) {
+  throw new Error('No main menu to display')
+}
 
 const hasMainMenu = computed(() => hasMenu('Main'))
 
 const isOpened = computed(() => isMenuOpened('Main'))
 
 // En vue md+, on affiche toujours le menu
-const isRail = computed(() => mdAndUp.value && !isOpened.value)
-const displayMenu = computed(() => hasMainMenu && (mdAndUp.value || isOpened.value))
+const isRail = computed(() => menu.value !== null && mdAndUp.value && !isOpened.value)
+const displayMenu = computed(() => menu.value !== null && hasMainMenu && (mdAndUp.value || isOpened.value))
 
 const unwatch = watch(mdAndUp, (newValue, oldValue) => {
 // Par défaut si l'écran est trop petit au chargement de la page, le menu doit rester fermé.
-  if (process.client && mdAndUp.value) {
+  if (process.client && menu.value !== null && mdAndUp.value) {
     openMenu('Main')
   }
 })

+ 1 - 1
composables/layout/useMenu.ts

@@ -42,7 +42,7 @@ export const useMenu = () => {
    *
    * @param name
    */
-  const buildMenu = (name: string): Ref<MenuGroup> => {
+  const buildMenu = (name: string): Ref<MenuGroup | null> => {
     const builder = getBuilder(name)
 
     const menu = builder.build() as MenuGroup