From 7ad675795599b850f1f3608e0a1d4f853dc69681 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 27 Mar 2018 01:09:19 -0600 Subject: [PATCH] short-circuit navigation menu logic if navigation menu is absent --- src/js/01-navigation.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/js/01-navigation.js b/src/js/01-navigation.js index 6aedd14..3673089 100644 --- a/src/js/01-navigation.js +++ b/src/js/01-navigation.js @@ -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 () { @@ -35,6 +31,13 @@ }) }) + 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) -- 2.11.0