|
9 | 9 | navToggle.addEventListener('click', showNav) |
10 | 10 | navContainer.addEventListener('click', trapEvent) |
11 | 11 |
|
12 | | - var menuPanel = navContainer.querySelector('[data-panel=menu]') |
13 | | - if (!menuPanel) return |
14 | 12 | var nav = navContainer.querySelector('.nav') |
| 13 | + var menuPanel = nav.querySelector('[data-panel=menu]') |
15 | 14 | var navBounds = { encroachingElement: document.querySelector('footer.footer') } |
16 | | - |
17 | 15 | var currentPageItem |
| 16 | + |
| 17 | + window.addEventListener('load', fitNavInit) |
| 18 | + window.addEventListener('resize', fitNavInit) |
| 19 | + |
| 20 | + if (!menuPanel) return fitNavInit({}) |
| 21 | + |
18 | 22 | if (menuPanel.classList.contains('is-loading')) { |
19 | 23 | if ((currentPageItem = findItemForHash() || menuPanel.querySelector('.is-current-url'))) { |
20 | 24 | activateCurrentPath(currentPageItem) |
|
33 | 37 | } |
34 | 38 |
|
35 | 39 | fitNavInit({}) |
36 | | - window.addEventListener('load', fitNavInit) |
37 | | - window.addEventListener('resize', fitNavInit) |
38 | 40 |
|
39 | 41 | menuPanel.querySelector('.nav-menu-toggle').addEventListener('click', function () { |
40 | 42 | var collapse = !this.classList.toggle('is-active') |
|
176 | 178 | } |
177 | 179 |
|
178 | 180 | function fitNav () { |
179 | | - var scrollDatum = menuPanel.scrollTop + menuPanel.offsetHeight |
| 181 | + var scrollDatum = menuPanel && (menuPanel.scrollTop + menuPanel.offsetHeight) |
180 | 182 | var occupiedHeight = navBounds.availableHeight - navBounds.encroachingElement.getBoundingClientRect().top |
181 | 183 | nav.style.height = occupiedHeight > 0 |
182 | 184 | ? Math.max(0, Math.round(navBounds.preferredHeight - occupiedHeight)) + 'px' |
183 | 185 | : '' |
184 | | - menuPanel.scrollTop = scrollDatum - menuPanel.offsetHeight |
| 186 | + if (menuPanel) menuPanel.scrollTop = scrollDatum - menuPanel.offsetHeight |
185 | 187 | } |
186 | 188 | })() |
0 commit comments