short-circuit navigation menu logic if navigation menu is absent
authorDan Allen <dan@opendevise.com>
Tue, 27 Mar 2018 07:09:19 +0000 (01:09 -0600)
committerDan Allen <dan@opendevise.com>
Tue, 27 Mar 2018 07:09:19 +0000 (01:09 -0600)
src/js/01-navigation.js

index 6aedd14..3673089 100644 (file)
@@ -3,29 +3,25 @@
 
   var navContainer = document.querySelector('.navigation-container')
   var navToggle = document.querySelector('.navigation-toggle')
+
+  navToggle.addEventListener('click', toggleNavigation)
+  // don't let click events propagate outside of navigation container
+  navContainer.addEventListener('click', concealEvent)
+
   var menuPanel = navContainer.querySelector('[data-panel=menu]')
-  var currentPageItem = menuPanel.querySelector('.is-current-page')
+  if (!menuPanel) return
+
   var navState = getNavState()
   var menuState = getMenuState(navState, navContainer.dataset.component, navContainer.dataset.version)
 
   navContainer.querySelector('.current').addEventListener('click', function () {
     var currentPanel = navContainer.querySelector('.is-active[data-panel]')
-    var selectPanel = currentPanel.dataset.panel === 'menu' ? 'explore' : 'menu'
+    var activatePanel = currentPanel.dataset.panel === 'menu' ? 'explore' : 'menu'
     currentPanel.classList.toggle('is-active')
-    navContainer.querySelector('[data-panel=' + selectPanel + ']').classList.toggle('is-active')
-  })
-
-  navToggle.addEventListener('click', toggleNavigation)
-  // don't let click events propagate outside of navigation container
-  navContainer.addEventListener('click', concealEvent)
-
-  find('.nav-menu', menuPanel).forEach(function (navTree) {
-    var panel = navTree.parentElement.dataset.panel
-    find('.nav-item', navTree).forEach(function (item, idx) {
-      item.setAttribute('data-id', [panel, item.dataset.depth, idx].join('-'))
-    })
+    navContainer.querySelector('[data-panel=' + activatePanel + ']').classList.toggle('is-active')
   })
 
+  // menu group arrows
   find('.nav-toggle', menuPanel).forEach(function (btn) {
     var li = btn.parentElement
     btn.addEventListener('click', function () {
     })
   })
 
+  find('.nav-menu', menuPanel).forEach(function (navTree) {
+    var panel = navTree.parentElement.dataset.panel
+    find('.nav-item', navTree).forEach(function (item, idx) {
+      item.setAttribute('data-id', [panel, item.dataset.depth, idx].join('-'))
+    })
+  })
+
   var expandedItems = menuState.expandedItems || (menuState.expandedItems = [])
 
   if (expandedItems.length) {
@@ -50,6 +53,7 @@
     })
   }
 
+  var currentPageItem = menuPanel.querySelector('.is-current-page')
   if (currentPageItem) {
     activateCurrentPath(currentPageItem).forEach(function (itemId) {
       if (expandedItems.indexOf(itemId) < 0) expandedItems.push(itemId)