From 426c261b3bc0707a5f021d5e44a1e3b402eef1e9 Mon Sep 17 00:00:00 2001 From: Hakim Cassimally Date: Thu, 30 Apr 2026 17:35:12 +0100 Subject: [PATCH 1/2] DOC-14254 expandHeaderLevels in playbook site.keys.navGroups Instead of having to configure `:page-nav-header-levels:` in every antora.yml, we can just update in the playbook ``` site: keys: navGroups: [ { "title": "Capella", "startPage": "home::cloud.adoc", "components": ["cloud", "app-services", "ai", "analytics"], "expandHeaderLevels": 1 }, ... { "title": "Develop", "startPage": "home::developer.adoc", "expandHeaderLevels": 1, "subGroups": [ { "title": "Operational SDKs", ... ``` --- src/js/01-nav.js | 13 +++++++------ src/partials/head-meta.hbs | 1 - 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/js/01-nav.js b/src/js/01-nav.js index 15efa171..361d9140 100644 --- a/src/js/01-nav.js +++ b/src/js/01-nav.js @@ -76,7 +76,6 @@ component: head.querySelector('meta[name="dcterms.subject"]').getAttribute('content'), version: head.querySelector('meta[name="dcterms.identifier"]').getAttribute('content'), url: head.querySelector('meta[name=page-url]').getAttribute('content'), - navHeaderLevels: parseInt(head.querySelector('meta[name="page-nav-header-levels"]')?.content) || 0, } } @@ -183,10 +182,12 @@ if (items.length && items[0].content && items[0].content.endsWith(' Home')) { items.splice.apply(items, [0, 1].concat(items[0].items || [])) } + + const expandHeaderLevels = group.expandHeaderLevels || 0 // build the navTree. // At least one of these componentVersions must return a navTree in order for us to // use this componentVersionNavEl - if (buildNavTree(items, componentVersionNavEl, page, [])) { + if (buildNavTree(items, componentVersionNavEl, page, [], expandHeaderLevels)) { hasNavTrees = true } @@ -199,7 +200,7 @@ container.appendChild(groupEl) } - function buildNavTree (items, parent, page, currentPath) { + function buildNavTree (items, parent, page, currentPath, expandHeaderLevels) { if (!(items || []).length) return var navListEl = createElement('ul', 'menu_row') @@ -226,7 +227,7 @@ navTextEl.innerHTML = item.content || '' navLineEl.appendChild(navTextEl) navItemEl.appendChild(navLineEl) - var childNavListEl = buildNavTree(item.items, navItemEl, page, currentPath) + var childNavListEl = buildNavTree(item.items, navItemEl, page, currentPath, expandHeaderLevels) if (childNavListEl) { if (currentPath.length > 1) { navLineEl.insertBefore(Object.assign(document.createElement('span'), { className: 'in-toggle' }), navTextEl) @@ -234,9 +235,9 @@ navItemEl.classList.add('is-parent') // Depending on depth, we may wish to collapse the level. - // originally we would collapse everything, but we can set :page-nav-header-levels: 1 to have + // originally we would collapse everything, but we can set nav's expandHeaderLevels: 1 to have // up to the bold subheadings kept open - if (currentPath.length > page.navHeaderLevels) { + if (currentPath.length > expandHeaderLevels) { if (!navItemEl.querySelector('a.is-current-page')) { navItemEl.classList.add('closed') } diff --git a/src/partials/head-meta.hbs b/src/partials/head-meta.hbs index 80c4801b..67a397a3 100644 --- a/src/partials/head-meta.hbs +++ b/src/partials/head-meta.hbs @@ -71,7 +71,6 @@ - {{! meta tags starting docsearch: are automatically extracted by Algolia }} From a8d81a1d736bb7d7e3f9938cd2d6546767ef1b14 Mon Sep 17 00:00:00 2001 From: Hakim Cassimally Date: Wed, 6 May 2026 14:09:12 +0100 Subject: [PATCH 2/2] DOC-14254 fix expandHeader logic --- src/js/01-nav.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/js/01-nav.js b/src/js/01-nav.js index 361d9140..9b4d820c 100644 --- a/src/js/01-nav.js +++ b/src/js/01-nav.js @@ -20,6 +20,8 @@ return } + let expandHeaderLevels = 0 + // buildNav creates .components // Presumably this routine may be called multiple times, so we check if the div already exists before calling it. if (!navContainer.querySelector('.components')) { @@ -54,16 +56,20 @@ var pageVersions = document.getElementById('page-versions') + const group = JSON.parse(pageNavigationGroup.innerText) + group.expandHeaderLevels = group.expandHeaderLevels || 0 + expandHeaderLevels = group.expandHeaderLevels + buildNav( - navContainer, // container - getPage(), // page - pageVersions, // pageVersions - JSON.parse(pageNavigationGroup.innerText), //group - siteNavigationData // navData + navContainer, + getPage(), + pageVersions, + group, + siteNavigationData ) } // else Presumably Components already/now exist - activateNav(navContainer, getPage()) + activateNav(navContainer, getPage(), expandHeaderLevels) /////// // Helper functions @@ -126,6 +132,9 @@