Skip to content

Commit 1af880e

Browse files
authored
Merge pull request #201 from couchbase/DOC-14254-nav-config-expandHeaderLevels
DOC-14254 expandHeaderLevels in playbook site.keys.navGroups
2 parents c24ab98 + a8d81a1 commit 1af880e

2 files changed

Lines changed: 23 additions & 15 deletions

File tree

src/js/01-nav.js

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
return
2121
}
2222

23+
let expandHeaderLevels = 0
24+
2325
// buildNav creates .components
2426
// Presumably this routine may be called multiple times, so we check if the div already exists before calling it.
2527
if (!navContainer.querySelector('.components')) {
@@ -54,16 +56,20 @@
5456

5557
var pageVersions = document.getElementById('page-versions')
5658

59+
const group = JSON.parse(pageNavigationGroup.innerText)
60+
group.expandHeaderLevels = group.expandHeaderLevels || 0
61+
expandHeaderLevels = group.expandHeaderLevels
62+
5763
buildNav(
58-
navContainer, // container
59-
getPage(), // page
60-
pageVersions, // pageVersions
61-
JSON.parse(pageNavigationGroup.innerText), //group
62-
siteNavigationData // navData
64+
navContainer,
65+
getPage(),
66+
pageVersions,
67+
group,
68+
siteNavigationData
6369
)
6470
} // else Presumably Components already/now exist
6571

66-
activateNav(navContainer, getPage())
72+
activateNav(navContainer, getPage(), expandHeaderLevels)
6773

6874
///////
6975
// Helper functions
@@ -76,7 +82,6 @@
7682
component: head.querySelector('meta[name="dcterms.subject"]').getAttribute('content'),
7783
version: head.querySelector('meta[name="dcterms.identifier"]').getAttribute('content'),
7884
url: head.querySelector('meta[name=page-url]').getAttribute('content'),
79-
navHeaderLevels: parseInt(head.querySelector('meta[name="page-nav-header-levels"]')?.content) || 0,
8085
}
8186
}
8287

@@ -127,6 +132,9 @@
127132
<ul> childNavListEl (via recursive buildNavTree)
128133
.....
129134
*/
135+
136+
const expandHeaderLevels = group.expandHeaderLevels || 0
137+
130138
group.components.forEach(function (componentName) {
131139
var componentNavData = navData[componentName]
132140
var componentsListItemsEl = createElement('li', 'components_list-items')
@@ -183,10 +191,11 @@
183191
if (items.length && items[0].content && items[0].content.endsWith(' Home')) {
184192
items.splice.apply(items, [0, 1].concat(items[0].items || []))
185193
}
194+
186195
// build the navTree.
187196
// At least one of these componentVersions must return a navTree in order for us to
188197
// use this componentVersionNavEl
189-
if (buildNavTree(items, componentVersionNavEl, page, [])) {
198+
if (buildNavTree(items, componentVersionNavEl, page, [], expandHeaderLevels)) {
190199
hasNavTrees = true
191200
}
192201

@@ -199,7 +208,7 @@
199208
container.appendChild(groupEl)
200209
}
201210

202-
function buildNavTree (items, parent, page, currentPath) {
211+
function buildNavTree (items, parent, page, currentPath, expandHeaderLevels) {
203212
if (!(items || []).length) return
204213

205214
var navListEl = createElement('ul', 'menu_row')
@@ -226,17 +235,17 @@
226235
navTextEl.innerHTML = item.content || ''
227236
navLineEl.appendChild(navTextEl)
228237
navItemEl.appendChild(navLineEl)
229-
var childNavListEl = buildNavTree(item.items, navItemEl, page, currentPath)
238+
var childNavListEl = buildNavTree(item.items, navItemEl, page, currentPath, expandHeaderLevels)
230239
if (childNavListEl) {
231240
if (currentPath.length > 1) {
232241
navLineEl.insertBefore(Object.assign(document.createElement('span'), { className: 'in-toggle' }), navTextEl)
233242
}
234243
navItemEl.classList.add('is-parent')
235244

236245
// Depending on depth, we may wish to collapse the level.
237-
// originally we would collapse everything, but we can set :page-nav-header-levels: 1 to have
246+
// originally we would collapse everything, but we can set nav's expandHeaderLevels: 1 to have
238247
// up to the bold subheadings kept open
239-
if (currentPath.length > page.navHeaderLevels) {
248+
if (currentPath.length > expandHeaderLevels) {
240249
if (!navItemEl.querySelector('a.is-current-page')) {
241250
navItemEl.classList.add('closed')
242251
}
@@ -341,7 +350,7 @@
341350
}
342351

343352
// FIXME integrate into nav builder
344-
function activateNav (container, page) {
353+
function activateNav (container, page, expandHeaderLevels) {
345354
// NOTE prevent text from being selected by double click
346355
container.addEventListener('mousedown', function (e) {
347356
if (e.detail > 1 && window.getComputedStyle(e.target).cursor === 'pointer') e.preventDefault()
@@ -396,7 +405,7 @@
396405
var menuList = findAncestorWithClass('menu_list', menuTitleEl, container)
397406

398407
if (!menuList.classList.contains('is-parent') || menuTitleEl.href) return
399-
if (menuList.dataset.depth < page.navHeaderLevels) {
408+
if (menuList.dataset.depth < expandHeaderLevels) {
400409
return
401410
}
402411

src/partials/head-meta.hbs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@
7171
<meta name="dcterms.subject" content="{{page.component.name}}">
7272
<meta name="dcterms.identifier" content="{{page.version}}">
7373
<meta name="page-url" content="{{page.url}}">
74-
<meta name="page-nav-header-levels" content="{{or page.attributes.nav-header-levels 0}}">
7574
<meta name="page-chatbot-origin" content="{{page.attributes.chatbot-origin}}">
7675

7776
{{! meta tags starting docsearch: are automatically extracted by Algolia }}

0 commit comments

Comments
 (0)