From dcb870b3eca2fe8ca8d18d37ee769f44655b13f1 Mon Sep 17 00:00:00 2001 From: Hakim Cassimally Date: Wed, 22 Apr 2026 16:50:51 +0100 Subject: [PATCH 1/2] DOC-14254 off-by-one error in page-nav-header-levels Setting to 1 is intended to keep only the first level open e.g. show the direct children of the first bold level. --- src/js/01-nav.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/01-nav.js b/src/js/01-nav.js index b54587c0..6f74aeaa 100644 --- a/src/js/01-nav.js +++ b/src/js/01-nav.js @@ -236,7 +236,7 @@ // 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 // up to the bold subheadings kept open - if (currentPath.length > page.navHeaderLevels) { + if (currentPath.length >= page.navHeaderLevels) { if (!navItemEl.querySelector('a.is-current-page')) { navItemEl.classList.add('closed') } From 3765b1e1081dd8f2292af45c3c10d4494b6fb1f9 Mon Sep 17 00:00:00 2001 From: Hakim Cassimally Date: Thu, 23 Apr 2026 15:44:00 +0100 Subject: [PATCH 2/2] DOC-14254 fix logic of nav header levels The logic switched based on the number of nav files available. This broke components where the landing page (defined in docs-site, with a single nav) referred to a component such as SDK which has multiple navs for different components. Capella used to have a single one, but has evolved to have multiples in left nav, causing some oddities. This change will require setting the correct `:page-nav-header-levels: 1` to all repos in SDK, as well as the landing pages in docs-site (cloud.adoc, sdk.adoc, analytics-sdk.adoc, and developer.adoc) --- src/js/01-nav.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/js/01-nav.js b/src/js/01-nav.js index 6f74aeaa..15efa171 100644 --- a/src/js/01-nav.js +++ b/src/js/01-nav.js @@ -76,7 +76,7 @@ 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: head.querySelector('meta[name="page-nav-header-levels"]')?.content || 0, + navHeaderLevels: parseInt(head.querySelector('meta[name="page-nav-header-levels"]')?.content) || 0, } } @@ -177,8 +177,8 @@ // create `items` to pass to build to buildNavTree var items = componentVersion.sets - if (items.length === 1 && !items[0].content) { - items = items[0].items + if (items.every(function (s) { return !s.content })) { + items = Array.prototype.concat.apply([], items.map(function (s) { return s.items || [] })) } if (items.length && items[0].content && items[0].content.endsWith(' Home')) { items.splice.apply(items, [0, 1].concat(items[0].items || [])) @@ -236,7 +236,7 @@ // 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 // up to the bold subheadings kept open - if (currentPath.length >= page.navHeaderLevels) { + if (currentPath.length > page.navHeaderLevels) { if (!navItemEl.querySelector('a.is-current-page')) { navItemEl.classList.add('closed') }