|
1 | 1 | ;(function () { |
2 | 2 | 'use strict' |
3 | 3 |
|
4 | | - var pageNavigationGroup = window.pageNavigationGroup |
5 | | - if (!pageNavigationGroup) return |
6 | | - |
7 | | - var siteNavigationData = window.siteNavigationData.reduce(function (accum, entry) { |
8 | | - return (accum[entry.name] = entry) && accum |
9 | | - }, {}) |
10 | | - |
11 | 4 | var navContainer = document.querySelector('.nav-container') |
12 | | - buildNav(navContainer, getPage(), pageNavigationGroup, siteNavigationData) |
| 5 | + if (!navContainer.querySelector('.components')) { |
| 6 | + var siteNavigationData = window.siteNavigationData.reduce(function (accum, entry) { |
| 7 | + return (accum[entry.name] = entry) && accum |
| 8 | + }, {}) |
| 9 | + buildNav(navContainer, getPage(), window.pageNavigationGroup, siteNavigationData) |
| 10 | + } |
13 | 11 | activateNav(navContainer) |
14 | 12 |
|
15 | 13 | function getPage () { |
|
22 | 20 | } |
23 | 21 |
|
24 | 22 | function buildNav (container, page, group, navData) { |
25 | | - var groupEl = createElement('div', 'components') |
| 23 | + var groupEl = createElement('div', 'components is-revealed') |
26 | 24 | var groupNameEl = createElement('div', 'components_group-title') |
27 | 25 | if (group.url) { |
28 | 26 | var groupLinkEl = createElement('a') |
|
57 | 55 | componentsListItemsEl.appendChild(componentVersionsEl) |
58 | 56 | componentNavData.versions.forEach(function (componentVersion) { |
59 | 57 | var componentVersionNavEl = createElement('div', 'version_items') |
| 58 | + componentVersionNavEl.dataset.version = componentVersion.version |
60 | 59 | // TODO only open manually after building nav tree if current page is not found |
61 | 60 | if (page.component !== componentName || page.version !== componentVersion.version) { |
62 | 61 | componentVersionNavEl.classList.add('hide') |
63 | 62 | } |
64 | | - componentVersionNavEl.dataset.version = componentVersion.version |
65 | 63 | buildNavTree(componentVersion.sets, componentVersionNavEl, page, []) |
66 | 64 | componentsListItemsEl.appendChild(componentVersionNavEl) |
67 | 65 | }) |
|
173 | 171 | if (e.detail > 1 && window.getComputedStyle(e.target).cursor === 'pointer') e.preventDefault() |
174 | 172 | }) |
175 | 173 |
|
176 | | - scrollItemToMidpoint(container.querySelector('.components'), container.querySelector('a.is-current-page')) |
| 174 | + var components = container.querySelector('.components') |
| 175 | + |
| 176 | + scrollItemToMidpoint(components, container.querySelector('a.is-current-page')) |
| 177 | + |
| 178 | + if (!components.classList.contains('is-revealed')) { |
| 179 | + find('a.is-current-page', container).forEach(function (currentPage) { |
| 180 | + var childNavList = currentPage.parentNode.nextElementSibling |
| 181 | + if (childNavList) childNavList.classList.remove('hide') |
| 182 | + var ancestor = currentPage |
| 183 | + while ((ancestor = ancestor.parentNode) && ancestor !== container) ancestor.classList.remove('hide') |
| 184 | + }) |
| 185 | + components.classList.add('is-revealed') |
| 186 | + } |
177 | 187 |
|
178 | 188 | find('.component_list_title', container).forEach(function (componentTitleEl) { |
179 | 189 | componentTitleEl.style.cursor = 'pointer' |
|
0 commit comments