From e382c61cd3258c715eede96f9f36d888645450ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2019 17:51:48 +0000 Subject: [PATCH 01/60] Bump handlebars from 4.0.12 to 4.1.2 Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.0.12 to 4.1.2. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/wycats/handlebars.js/blob/master/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.0.12...v4.1.2) Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index ab10fae..6a7f702 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "gulp-stylelint": "~8.0", "gulp-uglify": "~3.0", "gulp-vinyl-zip": "~2.1 >=2.1.2", - "handlebars": "~4.0", + "handlebars": "~4.1", "highlight.js": "~9.13", "js-yaml": "~3.12", "merge-stream": "~1.0", diff --git a/yarn.lock b/yarn.lock index 48b77ba..d37ac1a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -518,13 +518,6 @@ async-settle@^1.0.0: dependencies: async-done "^1.2.2" -async@^2.5.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" - integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ== - dependencies: - lodash "^4.17.10" - atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" @@ -3300,12 +3293,12 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars@~4.0: - version "4.0.12" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" - integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA== +handlebars@~4.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== dependencies: - async "^2.5.0" + neo-async "^2.6.0" optimist "^0.6.1" source-map "^0.6.1" optionalDependencies: @@ -4826,6 +4819,11 @@ negotiator@0.6.1: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + next-tick@1: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" From 2da19ac24b3bf4540c58db73c47ca39bc97bdadd Mon Sep 17 00:00:00 2001 From: Daniel Mulholland Date: Wed, 28 Aug 2019 20:18:39 +0000 Subject: [PATCH 02/60] Update README.adoc --- README.adoc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.adoc b/README.adoc index fd03757..3d5c39e 100644 --- a/README.adoc +++ b/README.adoc @@ -17,6 +17,7 @@ :url-nodejs: https://nodejs.org :url-nvm: https://github.com/creationix/nvm :url-nvm-install: {url-nvm}#installation +:url-sourcemap-information: https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Use_a_source_map image:{img-ci-status}[CI Status (GitLab CI), link={url-ci-pipelines}] @@ -166,6 +167,17 @@ This works by monitoring the project for changes, running the `preview:build` ta Press kbd:[Ctrl+C] to stop the preview server and end the continuous build. +==== Source Maps + +In preview mode, {url-sourcemap-information}[source maps] are enabled. +This means that although Javascript and CSS files are combined into a single file (`site.js` or `site.css`) an additional `map` file is provided to allow a reference to the source. +This is especially useful for debugging. + +This is mainly intended for preview and debugging not for production. +If you need this capability in production it can be achieved through an environment variable when bundling the UI: + + $ SOURCEMAPS=true gulp build + === Package for Use with Antora If you need to package the UI so you can use it to generate the documentation site locally, run the following command: From 759b79160bb9bf1bd9c0abb52e6398d780d35ee2 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 18 Mar 2020 15:07:32 -0600 Subject: [PATCH 03/60] add blank line after regexp constant in helper --- src/helpers/detag.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/helpers/detag.js b/src/helpers/detag.js index ca283a2..e32f147 100644 --- a/src/helpers/detag.js +++ b/src/helpers/detag.js @@ -1,4 +1,5 @@ 'use strict' const TAG_ALL_RX = /<[^>]+>/g + module.exports = (html) => html && html.replace(TAG_ALL_RX, '') From cdc5f6ca6254b0f0571837afc61ff5fa56a0e953 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 18 Mar 2020 15:41:45 -0600 Subject: [PATCH 04/60] modify implementation of relativize helper - consolidate logic - return to if not root-relative - return to prefixed with site path if from is undefined - export unnamed function --- src/helpers/relativize.js | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/helpers/relativize.js b/src/helpers/relativize.js index 76adfa4..c96a701 100644 --- a/src/helpers/relativize.js +++ b/src/helpers/relativize.js @@ -2,33 +2,23 @@ const { posix: path } = require('path') -// TODO memoize me -function relativize (to, ctx) { - let from - // legacy invocation - if (arguments.length > 2) { - [from, to, ctx] = arguments - } else { - from = ctx.data.root.page.url - } +module.exports = (to, from, ctx) => { if (!to) return '#' - const hashIdx = to.indexOf('#') - if (!hashIdx) return to + // NOTE only legacy invocation provides both to and from + if (!ctx) from = (ctx = from).data.root.page.url + if (to.charAt() !== '/') return to if (!from) return (ctx.data.root.site.path || '') + to let hash = '' + const hashIdx = to.indexOf('#') if (~hashIdx) { - hash = to.substr(hashIdx) to = to.substr(0, hashIdx) + hash = to.substr(hashIdx) } - if (from === to) { - return hash || (isDir(to) ? './' : path.basename(to)) - } else { - return path.relative(path.dirname(from + '.'), to) + (isDir(to) ? '/' + hash : hash) - } + return to === from + ? hash || (isDir(to) ? './' : path.basename(to)) + : (path.relative(path.dirname(from + '.'), to) || '.') + (isDir(to) ? '/' + hash : hash) } function isDir (str) { return str.charAt(str.length - 1) === '/' } - -module.exports = relativize From 0632d9ad3d0f9bc923b0496554f92732baa623fe Mon Sep 17 00:00:00 2001 From: Konrumi Date: Sun, 8 Mar 2020 05:07:34 +0000 Subject: [PATCH 05/60] fix: decode anchor hash string to support Chinese characters (cherry picked from commit 810652e445545efbf20a6a3e93ce4365ed534516) --- src/js/02-fragment-jumper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/02-fragment-jumper.js b/src/js/02-fragment-jumper.js index 186a193..e3b6ed5 100644 --- a/src/js/02-fragment-jumper.js +++ b/src/js/02-fragment-jumper.js @@ -31,7 +31,7 @@ Array.prototype.slice.call(document.querySelectorAll('a[href^="#"]')).forEach(function (el) { var hash, target - if ((hash = el.hash.slice(1)) && (target = document.getElementById(hash))) { + if ((hash = decodeURIComponent(el.hash.slice(1))) && (target = document.getElementById(hash))) { el.addEventListener('click', jumpToAnchor.bind(target)) } }) From f628456c06b0a57ebbf0a413f1d0d58fb37a9c48 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 18 Mar 2020 16:30:43 -0600 Subject: [PATCH 06/60] improve implementation for #99 and add example to preview site --- preview-src/index.adoc | 5 +++++ src/js/02-fragment-jumper.js | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/preview-src/index.adoc b/preview-src/index.adoc index 25df1c1..d07cf0f 100644 --- a/preview-src/index.adoc +++ b/preview-src/index.adoc @@ -211,6 +211,11 @@ Ex nam suas nemore dignissim, vel apeirian democritum et. .Antora is a multi-repo documentation site generator image::multirepo-ssg.svg[Multirepo SSG,250] +Make the switch today! + +[#english+中文] +== English + 中文 + Altera atomorum his ex, has cu elitr melius propriae. Eos suscipit scaevola at. diff --git a/src/js/02-fragment-jumper.js b/src/js/02-fragment-jumper.js index e3b6ed5..5f9462a 100644 --- a/src/js/02-fragment-jumper.js +++ b/src/js/02-fragment-jumper.js @@ -4,6 +4,10 @@ var article = document.querySelector('article.doc') var toolbar = document.querySelector('.toolbar') + function decodeFragment (hash) { + return hash && (~hash.indexOf('%') ? decodeURIComponent(hash) : hash).slice(1) + } + function computePosition (el, sum) { if (article.contains(el)) { return computePosition(el.offsetParent, el.offsetTop + sum) @@ -21,8 +25,8 @@ } window.addEventListener('load', function jumpOnLoad (e) { - var hash, target - if ((hash = window.location.hash) && (target = document.getElementById(hash.slice(1)))) { + var fragment, target + if ((fragment = decodeFragment(window.location.hash)) && (target = document.getElementById(fragment))) { jumpToAnchor.bind(target)() setTimeout(jumpToAnchor.bind(target), 0) } @@ -30,8 +34,8 @@ }) Array.prototype.slice.call(document.querySelectorAll('a[href^="#"]')).forEach(function (el) { - var hash, target - if ((hash = decodeURIComponent(el.hash.slice(1))) && (target = document.getElementById(hash))) { + var fragment, target + if ((fragment = decodeFragment(el.hash)) && (target = document.getElementById(fragment))) { el.addEventListener('click', jumpToAnchor.bind(target)) } }) From 01f11f6fcf749a5ee740c46b86a010ccc2d2b861 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 18 Mar 2020 16:02:54 -0600 Subject: [PATCH 07/60] register built-in helpers (resolvePage and resolvePageURL) with stub implementation in preview site --- gulp.d/tasks/build-preview-pages.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gulp.d/tasks/build-preview-pages.js b/gulp.d/tasks/build-preview-pages.js index 74d61ae..91cb1e9 100644 --- a/gulp.d/tasks/build-preview-pages.js +++ b/gulp.d/tasks/build-preview-pages.js @@ -79,6 +79,8 @@ function registerPartials (src) { } function registerHelpers (src) { + handlebars.registerHelper('resolvePage', resolvePage) + handlebars.registerHelper('resolvePageURL', resolvePageURL) return vfs.src('helpers/*.js', { base: src, cwd: src }).pipe( map((file, enc, next) => { handlebars.registerHelper(file.stem, requireFromString(file.contents.toString())) @@ -100,6 +102,14 @@ function copyImages (src, dest) { return vfs.src('**/*.{png,svg}', { base: src, cwd: src }).pipe(vfs.dest(dest)) } +function resolvePage (spec, context = {}) { + if (spec) return { pub: { url: resolvePageURL(spec) } } +} + +function resolvePageURL (spec, context = {}) { + if (spec) return '/' + (spec = spec.split(':').pop()).slice(0, spec.lastIndexOf('.')) + '.html' +} + function toPromise (stream) { return new Promise((resolve, reject) => stream.on('error', reject).on('finish', resolve)) } From 4011e79a06cb4949f781104feb4c6329752d433c Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 18 Mar 2020 15:59:43 -0600 Subject: [PATCH 08/60] honor environment variable (FORCE_SHOW_EDIT_PAGE_LINK) to force edit page link to be shown --- src/partials/toolbar.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/partials/toolbar.hbs b/src/partials/toolbar.hbs index f487144..4e6f59b 100644 --- a/src/partials/toolbar.hbs +++ b/src/partials/toolbar.hbs @@ -7,7 +7,7 @@ {{> page-versions}} {{#if (and page.fileUri (not env.CI))}} - {{else if (and page.editUrl (not page.origin.private))}} + {{else if (and page.editUrl (or env.FORCE_SHOW_EDIT_PAGE_LINK (not page.origin.private)))}} {{/if}} From ac18fb9043ed125334d35f68b2caefa72f21ff90 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Thu, 26 Mar 2020 03:14:03 -0600 Subject: [PATCH 09/60] resolves #117 fix order of statements in relativize helper to avoid dropping fragment --- src/helpers/relativize.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/relativize.js b/src/helpers/relativize.js index c96a701..6fdfb45 100644 --- a/src/helpers/relativize.js +++ b/src/helpers/relativize.js @@ -11,8 +11,8 @@ module.exports = (to, from, ctx) => { let hash = '' const hashIdx = to.indexOf('#') if (~hashIdx) { - to = to.substr(0, hashIdx) hash = to.substr(hashIdx) + to = to.substr(0, hashIdx) } return to === from ? hash || (isDir(to) ? './' : path.basename(to)) From cc84e998029e3af58d9ef9c0c2105932870f9a69 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Thu, 26 Mar 2020 14:58:43 -0600 Subject: [PATCH 10/60] format source --- gulp.d/tasks/build.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/gulp.d/tasks/build.js b/gulp.d/tasks/build.js index 9979f91..f27dc00 100644 --- a/gulp.d/tasks/build.js +++ b/gulp.d/tasks/build.js @@ -74,12 +74,14 @@ module.exports = (src, dest, preview) => () => { vfs .src('img/**/*.{gif,ico,jpg,png,svg}', opts) .pipe( - imagemin([ - imagemin.gifsicle(), - imagemin.jpegtran(), - imagemin.optipng(), - imagemin.svgo({ plugins: [{ removeViewBox: false }] }), - ].reduce((accum, it) => it ? accum.concat(it) : accum, [])) + imagemin( + [ + imagemin.gifsicle(), + imagemin.jpegtran(), + imagemin.optipng(), + imagemin.svgo({ plugins: [{ removeViewBox: false }] }), + ].reduce((accum, it) => (it ? accum.concat(it) : accum), []) + ) ), vfs.src('helpers/*.js', opts), vfs.src('layouts/*.hbs', opts), From 03d89d1eb73f2c85caac7868a2805fa885247166 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Fri, 27 Mar 2020 12:20:41 -0600 Subject: [PATCH 11/60] rework description of source maps and move to section about bundle --- README.adoc | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/README.adoc b/README.adoc index 3d5c39e..ec64d04 100644 --- a/README.adoc +++ b/README.adoc @@ -17,7 +17,7 @@ :url-nodejs: https://nodejs.org :url-nvm: https://github.com/creationix/nvm :url-nvm-install: {url-nvm}#installation -:url-sourcemap-information: https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Use_a_source_map +:url-source-maps: https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Use_a_source_map image:{img-ci-status}[CI Status (GitLab CI), link={url-ci-pipelines}] @@ -167,17 +167,6 @@ This works by monitoring the project for changes, running the `preview:build` ta Press kbd:[Ctrl+C] to stop the preview server and end the continuous build. -==== Source Maps - -In preview mode, {url-sourcemap-information}[source maps] are enabled. -This means that although Javascript and CSS files are combined into a single file (`site.js` or `site.css`) an additional `map` file is provided to allow a reference to the source. -This is especially useful for debugging. - -This is mainly intended for preview and debugging not for production. -If you need this capability in production it can be achieved through an environment variable when bundling the UI: - - $ SOURCEMAPS=true gulp build - === Package for Use with Antora If you need to package the UI so you can use it to generate the documentation site locally, run the following command: @@ -195,6 +184,22 @@ If you have the preview running, and you want to bundle without causing the prev The UI bundle will again be available at [.path]_build/ui-bundle.zip_. +==== Source Maps + +The build consolidates all the CSS and client-side JavaScript into combined files, [.path]_site.css_ and [.path]_site.js_, respectively, in order to reduce the size of the bundle. +{url-source-maps}[Source maps] correlate these combined files with their original sources. + +This "`source mapping`" is accomplished by generating additional map files that make this association. +These map files sit adjacent to the combined files in the build folder. +The mapping they provide allows the debugger to present the original source rather than the obfuscated file, an essential tool for debugging. + +In preview mode, source maps are enabled automatically, so there's nothing you have to do to make use of them. +If you need to include source maps in the bundle, you can do so by setting the `SOURCEMAPS` environment varible to `true` when you run the bundle command: + + $ SOURCEMAPS=true gulp bundle + +In this case, the bundle will include the source maps, which can be used for debuggging your production site. + == Copyright and License Copyright (C) 2017-2019 OpenDevise Inc. and the Antora Project. From 37e4aabab2050083fa25c037378448f897a51215 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sun, 29 Mar 2020 18:05:58 -0600 Subject: [PATCH 12/60] select nav item on hash change (and initial page load) - select nav item that points to anchor when hash in window.location changes (or present at initial page load) - if nav item is not found, but points to a parent of the fragment, select that nav item --- preview-src/index.adoc | 2 ++ preview-src/ui-model.yml | 9 ++++--- src/js/01-nav.js | 57 ++++++++++++++++++++++++++++++++++------ 3 files changed, 57 insertions(+), 11 deletions(-) diff --git a/preview-src/index.adoc b/preview-src/index.adoc index d07cf0f..5cc1df7 100644 --- a/preview-src/index.adoc +++ b/preview-src/index.adoc @@ -49,6 +49,8 @@ This is an example paragraph. [example] This is an example paragraph. +=== Some Code + How about some code? [source,js] diff --git a/preview-src/ui-model.yml b/preview-src/ui-model.yml index 87628bc..5cf85ba 100644 --- a/preview-src/ui-model.yml +++ b/preview-src/ui-model.yml @@ -96,9 +96,12 @@ page: - content: Brand’s Hardware & Software Requirements url: /xyz/5.2/index.html urlType: internal - - content: IDE Integration - url: '#' - urlType: fragment + - content: Cu Solet + url: '/xyz/5.2/index.html#cu-solet' + urlType: internal + - content: English + 中文 + url: '/xyz/5.2/index.html#english+中文' + urlType: internal - content: Liber Recusabo url: '#liber-recusabo' urlType: fragment diff --git a/src/js/01-nav.js b/src/js/01-nav.js index 3d1a8a7..c73a808 100644 --- a/src/js/01-nav.js +++ b/src/js/01-nav.js @@ -1,6 +1,8 @@ ;(function () { 'use strict' + var SECT_CLASS_RX = /^sect(\d)$/ + var navContainer = document.querySelector('.nav-container') var navToggle = document.querySelector('.nav-toggle') @@ -13,6 +15,7 @@ var nav = navContainer.querySelector('.nav') var currentPageItem = menuPanel.querySelector('.is-current-page') + var originalPageItem = currentPageItem if (currentPageItem) { activateCurrentPath(currentPageItem) scrollItemToMidpoint(menuPanel, currentPageItem.querySelector('.nav-link')) @@ -42,6 +45,49 @@ if (e.detail > 1) e.preventDefault() }) + function onHashChange () { + var navLink + var hash = window.location.hash + if (hash) { + if (hash.indexOf('%')) hash = decodeURIComponent(hash) + navLink = menuPanel.querySelector('.nav-link[href="' + hash + '"]') + if (!navLink) { + var targetNode = document.getElementById(hash.slice(1)) + if (targetNode) { + var current = targetNode + var ceiling = document.querySelector('article.doc') + while ((current = current.parentNode) && current !== ceiling) { + var id = current.id + // NOTE: look for section heading + if (!id && (id = current.className.match(SECT_CLASS_RX))) id = (current.firstElementChild || {}).id + if (id && (navLink = menuPanel.querySelector('.nav-link[href="#' + id + '"]'))) break + } + } + } + } + var navItem + if (navLink) { + navItem = navLink.parentNode + } else if (originalPageItem) { + navLink = (navItem = originalPageItem).querySelector('.nav-link') + } else { + return + } + if (navItem === currentPageItem) return + find(menuPanel, '.nav-item.is-active').forEach(function (el) { + el.classList.remove('is-active', 'is-current-path', 'is-current-page') + }) + navItem.classList.add('is-current-page') + currentPageItem = navItem + activateCurrentPath(navItem) + scrollItemToMidpoint(menuPanel, navLink) + } + + if (menuPanel.querySelector('.nav-link[href^="#"]')) { + if (window.location.hash) onHashChange() + window.addEventListener('hashchange', onHashChange) + } + function activateCurrentPath (navItem) { var ancestorClasses var ancestor = navItem.parentNode @@ -95,13 +141,8 @@ } function findNextElement (from, selector) { - var el - if ('nextElementSibling' in from) { - el = from.nextElementSibling - } else { - el = from - while ((el = el.nextSibling) && el.nodeType !== 1); - } - return el && selector ? el[el.matches ? 'matches' : 'msMatchesSelector'](selector) && el : el + var el = from.nextElementSibling + if (!el) return + return selector ? el[el.matches ? 'matches' : 'msMatchesSelector'](selector) && el : el } })() From b9a75d9f26a3dd47d412b1192958fe32c745dee4 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Mon, 30 Mar 2020 14:07:55 -0600 Subject: [PATCH 13/60] add article class to main element --- src/partials/main.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/partials/main.hbs b/src/partials/main.hbs index c6c943e..8e274c6 100644 --- a/src/partials/main.hbs +++ b/src/partials/main.hbs @@ -1,4 +1,4 @@ -
+
{{> toolbar}} {{> article}}
From 393ee71dea7fa739b45d1d593acf4ec219002e45 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Mon, 30 Mar 2020 18:31:25 -0600 Subject: [PATCH 14/60] fix alignment of conums and description text in conum list --- preview-src/index.adoc | 3 ++- src/css/doc.css | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/preview-src/index.adoc b/preview-src/index.adoc index 5cc1df7..f49c0cf 100644 --- a/preview-src/index.adoc +++ b/preview-src/index.adoc @@ -65,7 +65,8 @@ vfs .pipe(gulp.dest('build')) ---- <1> The tap function is used to wiretap the data in the pipe. -<2> Wrap streaming files in buffers so they can be processed by uglify. +<2> Wrap each streaming file in a buffer so the files can be processed by uglify. +Uglify can only work with buffers, not streams. Cum dicat #putant# ne. Est in <> homero principes, meis deleniti mediocrem ad has. diff --git a/src/css/doc.css b/src/css/doc.css index 996d8a8..16dd187 100644 --- a/src/css/doc.css +++ b/src/css/doc.css @@ -546,12 +546,18 @@ .doc .colist { font-size: calc(16 / var(--rem-base) * 1rem); - margin-top: 0.5rem; + margin: 0.25rem 0 -0.25rem; } -.doc .colist > table tr > td:first-of-type { - padding: 0 0.75em; - line-height: 1; +.doc .colist > table > tr > :first-child, +.doc .colist > table > tbody > tr > :first-child { + padding: 0.2rem 0.5rem 0; + vertical-align: top; +} + +.doc .colist > table > tr > :last-child, +.doc .colist > table > tbody > tr > :last-child { + padding: 0.25rem 0; } .doc .conum[data-value] { From 28849332f13b3a475b1fd2e74578ba16fb35262b Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Mon, 30 Mar 2020 19:13:37 -0600 Subject: [PATCH 15/60] use em instead of rem to align conum in colist --- src/css/doc.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/doc.css b/src/css/doc.css index 16dd187..394a3e1 100644 --- a/src/css/doc.css +++ b/src/css/doc.css @@ -551,7 +551,7 @@ .doc .colist > table > tr > :first-child, .doc .colist > table > tbody > tr > :first-child { - padding: 0.2rem 0.5rem 0; + padding: 0.25em 0.5rem 0; vertical-align: top; } From 18e5d0dc55838d8a450b7dee1b96d763472533a0 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 31 Mar 2020 01:21:36 -0600 Subject: [PATCH 16/60] preallocate space for scrollbar on nav menu - set overflow: scroll - configure scrollbar on Firefox to only show when there's scrollable content - move scrollbar thumb color to a variable --- src/css/nav.css | 18 +++++++++++++----- src/css/vars.css | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/css/nav.css b/src/css/nav.css index 8ecf7b5..475262f 100644 --- a/src/css/nav.css +++ b/src/css/nav.css @@ -61,7 +61,7 @@ html.is-clipped--nav { } .nav-panel-menu { - overflow-y: auto; + overflow-y: scroll; display: flex; flex-direction: column; height: var(--nav-panel-height); @@ -88,12 +88,20 @@ html.is-clipped--nav { left: 0; } -.nav-panel-menu::-webkit-scrollbar { +.nav-panel-menu, +.nav-panel-explore .components { + scrollbar-width: thin; + scrollbar-color: var(--scrollbar-thumb-color) transparent; +} + +.nav-panel-menu::-webkit-scrollbar, +.nav-panel-explore .components::-webkit-scrollbar { width: 0.25rem; } -.nav-panel-menu::-webkit-scrollbar-thumb { - background-color: var(--nav-border-color); +.nav-panel-menu::-webkit-scrollbar-thumb, +.nav-panel-explore .components::-webkit-scrollbar-thumb { + background-color: var(--scrollbar-thumb-color); } .nav-menu { @@ -207,7 +215,7 @@ html.is-clipped--nav { background: var(--nav-secondary-background); padding: 0.5rem 0.75rem 0 0.75rem; margin: 0; - overflow-y: auto; + overflow-y: scroll; max-height: 100%; display: block; } diff --git a/src/css/vars.css b/src/css/vars.css index 2a6f6be..376cdbb 100644 --- a/src/css/vars.css +++ b/src/css/vars.css @@ -31,6 +31,7 @@ --body-background: var(--color-white); --panel-background: var(--color-smoke-30); --panel-border-color: var(--color-smoke-90); + --scrollbar-thumb-color: var(--color-gray-10); /* navbar */ --navbar-background: var(--color-jet-80); --navbar-font-color: var(--color-white); From 3b91bb6e4c8f892192a9ebc9edaba05573e2aa3e Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 31 Mar 2020 04:35:41 -0600 Subject: [PATCH 17/60] disable background on link focus --- src/css/base.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/css/base.css b/src/css/base.css index 2c23963..d8f54c4 100644 --- a/src/css/base.css +++ b/src/css/base.css @@ -37,6 +37,10 @@ a:hover { text-decoration: underline; } +a:focus { + background: none; +} + code, kbd, pre { From d8786e753295b38bd048c4bfa1b5538819ff6812 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 31 Mar 2020 04:41:45 -0600 Subject: [PATCH 18/60] correction: disable link background on active --- src/css/base.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/base.css b/src/css/base.css index d8f54c4..135a8ab 100644 --- a/src/css/base.css +++ b/src/css/base.css @@ -37,7 +37,7 @@ a:hover { text-decoration: underline; } -a:focus { +a:active { background: none; } From ab9669e821432397b60cbb41bc779e9d32274120 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Mon, 19 Nov 2018 14:07:56 -0700 Subject: [PATCH 19/60] add JavaScript that generates the "on this page" sidebar This script was originally developed for Couchbase by OpenDevise. This commit contributes the script to the Antora project on behalf of Couchbase. The script will now be licensed under the terms of the MPL 2.0 license to match the license of the Antora project itself. --- src/js/02-on-this-page.js | 100 ++++++++++++++++++ ...agment-jumper.js => 03-fragment-jumper.js} | 0 ...3-page-versions.js => 04-page-versions.js} | 0 ...4-mobile-navbar.js => 05-mobile-navbar.js} | 0 4 files changed, 100 insertions(+) create mode 100644 src/js/02-on-this-page.js rename src/js/{02-fragment-jumper.js => 03-fragment-jumper.js} (100%) rename src/js/{03-page-versions.js => 04-page-versions.js} (100%) rename src/js/{04-mobile-navbar.js => 05-mobile-navbar.js} (100%) diff --git a/src/js/02-on-this-page.js b/src/js/02-on-this-page.js new file mode 100644 index 0000000..60f40e9 --- /dev/null +++ b/src/js/02-on-this-page.js @@ -0,0 +1,100 @@ +/* Copyright (c) 2018 OpenDevise Inc. and individual contributors. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +;(function () { + 'use strict' + + var sidebar = document.querySelector('aside.toc.sidebar') + if (!sidebar) return + var doc + var headings + if ( + document.querySelector('.body.-toc') || + !(headings = find('h1[id].sect0, .sect1 > h2[id]', (doc = document.querySelector('article.doc')))).length + ) { + sidebar.parentNode.removeChild(sidebar) + return + } + var lastActiveFragment + var links = {} + var menu + + var list = headings.reduce(function (accum, heading) { + var link = toArray(heading.childNodes).reduce(function (target, child) { + if (child.nodeName !== 'A') target.appendChild(child.cloneNode(true)) + return target + }, document.createElement('a')) + links[(link.href = '#' + heading.id)] = link + var listItem = document.createElement('li') + listItem.appendChild(link) + accum.appendChild(listItem) + return accum + }, document.createElement('ul')) + + if (!(menu = sidebar && sidebar.querySelector('.toc-menu'))) { + menu = document.createElement('div') + menu.className = 'toc-menu' + } + + var title = document.createElement('h3') + title.textContent = 'On This Page' + menu.appendChild(title) + menu.appendChild(list) + + if (sidebar) { + window.addEventListener('load', function () { + onScroll() + window.addEventListener('scroll', onScroll) + }) + } + + var startOfContent = doc.querySelector('h1.page ~ :not(.labels)') + if (startOfContent) { + var embeddedToc = document.createElement('aside') + embeddedToc.className = 'toc embedded' + embeddedToc.appendChild(menu.cloneNode(true)) + doc.insertBefore(embeddedToc, startOfContent) + } + + function onScroll () { + // NOTE doc.parentNode.offsetTop ~= doc.parentNode.getBoundingClientRect().top + window.pageYOffset + //var targetPosition = doc.parentNode.offsetTop + // NOTE no need to compensate wheen using spacer above [id] elements + var targetPosition = 0 + var activeFragment + headings.some(function (heading) { + if (Math.floor(heading.getBoundingClientRect().top) <= targetPosition) { + activeFragment = '#' + heading.id + } else { + return true + } + }) + if (activeFragment) { + if (activeFragment !== lastActiveFragment) { + if (lastActiveFragment) { + links[lastActiveFragment].classList.remove('is-active') + } + var activeLink = links[activeFragment] + activeLink.classList.add('is-active') + if (menu.scrollHeight > menu.offsetHeight) { + menu.scrollTop = Math.max(0, activeLink.offsetTop + activeLink.offsetHeight - menu.offsetHeight) + } + lastActiveFragment = activeFragment + } + } else if (lastActiveFragment) { + links[lastActiveFragment].classList.remove('is-active') + lastActiveFragment = undefined + } + } + + function find (selector, from) { + return toArray((from || document).querySelectorAll(selector)) + } + + function toArray (collection) { + return [].slice.call(collection) + } +})() diff --git a/src/js/02-fragment-jumper.js b/src/js/03-fragment-jumper.js similarity index 100% rename from src/js/02-fragment-jumper.js rename to src/js/03-fragment-jumper.js diff --git a/src/js/03-page-versions.js b/src/js/04-page-versions.js similarity index 100% rename from src/js/03-page-versions.js rename to src/js/04-page-versions.js diff --git a/src/js/04-mobile-navbar.js b/src/js/05-mobile-navbar.js similarity index 100% rename from src/js/04-mobile-navbar.js rename to src/js/05-mobile-navbar.js From 0c5ccbf1ccaee9df874196d428ca84c43593c9c0 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Tue, 31 Mar 2020 04:38:55 -0600 Subject: [PATCH 20/60] add styles for TOC and integrate TOC into page layout - use flexbox to layout TOC - add scroll spy behavior to sidebar TOC - introduce additional breakpoint for sidebar TOC width (desktop and widescreen) - activate last entry in toc if scroll has reached bottom of page - introduce variables for toc (top, width, etc) - add utility class to hide element when in TOC - look for -toc class on body; rename before-toc class to is-before-toc - use article top as threshold for activating entry in TOC - disable scrollbar on toc in Firefox - scroll list instead of menu - hide scrollbar on TOC - don't add embedded toc if element is found with ID "toc" --- src/css/doc.css | 1 + src/css/main.css | 24 ++++++++++ src/css/site.css | 1 + src/css/toc.css | 95 +++++++++++++++++++++++++++++++++++++++ src/css/vars.css | 11 ++++- src/js/02-on-this-page.js | 75 +++++++++++++++---------------- src/partials/main.hbs | 3 ++ src/partials/toc.hbs | 3 ++ 8 files changed, 174 insertions(+), 39 deletions(-) create mode 100644 src/css/toc.css create mode 100644 src/partials/toc.hbs diff --git a/src/css/doc.css b/src/css/doc.css index 394a3e1..b0bf2c9 100644 --- a/src/css/doc.css +++ b/src/css/doc.css @@ -12,6 +12,7 @@ font-size: var(--doc-font-size--desktop); margin: var(--doc-margin--desktop); max-width: var(--doc-max-width--desktop); + min-width: 0; } } diff --git a/src/css/main.css b/src/css/main.css index d48eea0..b8ea66c 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -1,7 +1,31 @@ +@media screen and (max-width: 1023px) { + aside.toc.sidebar { + display: none; + } +} + @media screen and (min-width: 1024px) { main { flex: auto; /* min-width: 0 required for flexbox to constrain overflowing elements */ min-width: 0; } + + main > .content { + display: flex; + } + + aside.toc.embedded { + display: none; + } + + aside.toc.sidebar { + flex: 1 0 var(--toc-width); + } +} + +@media screen and (min-width: 1216px) { + aside.toc.sidebar { + flex-basis: var(--toc-width--widescreen); + } } diff --git a/src/css/site.css b/src/css/site.css index 07c9d93..e73f175 100644 --- a/src/css/site.css +++ b/src/css/site.css @@ -8,6 +8,7 @@ @import "toolbar.css"; @import "breadcrumbs.css"; @import "page-versions.css"; +@import "toc.css"; @import "doc.css"; @import "header.css"; @import "footer.css"; diff --git a/src/css/toc.css b/src/css/toc.css new file mode 100644 index 0000000..55b4b9c --- /dev/null +++ b/src/css/toc.css @@ -0,0 +1,95 @@ +.toc-menu { + color: var(--toc-font-color); +} + +.toc.sidebar .toc-menu { + margin-right: 0.75rem; + position: sticky; + top: var(--toc-top); +} + +.toc .toc-menu h3 { + color: var(--toc-heading-font-color); + font-size: calc(16 / var(--rem-base) * 1rem); + font-weight: var(--body-font-weight-bold); + line-height: 1.3; + margin: 0 -0.5px; + padding-bottom: 0.25rem; +} + +.toc.sidebar .toc-menu h3 { + display: flex; + flex-direction: column; + height: 2.5rem; + justify-content: flex-end; +} + +.toc .toc-menu ul { + font-size: calc(15 / var(--rem-base) * 1rem); + line-height: var(--toc-line-height); + list-style: none; + margin: 0; + padding: 0; +} + +.toc.sidebar .toc-menu ul { + max-height: var(--toc-height); + overflow-y: auto; + scrollbar-width: none; +} + +.toc .toc-menu ul::-webkit-scrollbar { + width: 0; +} + +@media screen and (min-width: 1024px) { + .toc .toc-menu h3 { + font-size: calc(15 / var(--rem-base) * 1rem); + } + + .toc .toc-menu ul { + font-size: calc(13.5 / var(--rem-base) * 1rem); + } +} + +.toc .toc-menu li { + margin: 0; +} + +.toc .toc-menu li[data-level="2"] a { + padding-left: 1.25rem; +} + +.toc .toc-menu li[data-level="3"] a { + padding-left: 2rem; +} + +.toc .toc-menu a { + color: inherit; + border-left: 2px solid var(--toc-border-color); + display: inline-block; + padding: 0.25rem 0 0.25rem 0.5rem; + text-decoration: none; +} + +.sidebar.toc .toc-menu a { + display: block; + outline: none; +} + +.toc .toc-menu a:hover { + color: var(--link-font-color); +} + +.toc .toc-menu a.is-active { + border-left-color: var(--link-font-color); + color: var(--doc-font-color); +} + +.sidebar.toc .toc-menu a:focus { + background: var(--panel-background); +} + +.toc .toc-menu .is-hidden-toc { + display: none !important; +} diff --git a/src/css/vars.css b/src/css/vars.css index 376cdbb..888cea8 100644 --- a/src/css/vars.css +++ b/src/css/vars.css @@ -58,6 +58,11 @@ --toolbar-muted-color: var(--color-gray-30); --page-version-menu-background: var(--color-smoke-70); --page-version-missing-font-color: var(--color-gray-30); + /* toc */ + --toc-font-color: var(--nav-muted-color); + --toc-heading-font-color: var(--doc-font-color); + --toc-border-color: var(--panel-border-color); + --toc-line-height: 1.2; /* admonitions */ --caution-color: #a0439c; --caution-on-color: var(--color-white); @@ -110,7 +115,7 @@ --footer-background: var(--color-smoke-90); --footer-font-color: var(--color-gray-70); --footer-link-font-color: var(--color-jet-80); - /* dimensions */ + /* dimensions and positioning */ --navbar-height: calc(63 / var(--rem-base) * 1rem); --toolbar-height: calc(45 / var(--rem-base) * 1rem); --drawer-height: var(--toolbar-height); @@ -121,6 +126,10 @@ --nav-panel-height: calc(var(--nav-height) - var(--drawer-height)); --nav-panel-height--desktop: calc(var(--nav-height--desktop) - var(--drawer-height)); --nav-width: calc(270 / var(--rem-base) * 1rem); + --toc-top: calc(var(--body-top) + var(--toolbar-height)); + --toc-height: calc(100vh - var(--toc-top) - 2.5rem); + --toc-width: calc(162 / var(--rem-base) * 1rem); + --toc-width--widescreen: calc(216 / var(--rem-base) * 1rem); --doc-max-width: calc(720 / var(--rem-base) * 1rem); --doc-max-width--desktop: calc(828 / var(--rem-base) * 1rem); /* stacking */ diff --git a/src/js/02-on-this-page.js b/src/js/02-on-this-page.js index 60f40e9..0403a26 100644 --- a/src/js/02-on-this-page.js +++ b/src/js/02-on-this-page.js @@ -1,27 +1,21 @@ -/* Copyright (c) 2018 OpenDevise Inc. and individual contributors. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ ;(function () { 'use strict' var sidebar = document.querySelector('aside.toc.sidebar') if (!sidebar) return - var doc + if (document.querySelector('body.-toc')) return sidebar.parentNode.removeChild(sidebar) && undefined + var levels = parseInt(sidebar.dataset.levels || 2) + if (levels < 0) return + var article = document.querySelector('article.doc') var headings - if ( - document.querySelector('.body.-toc') || - !(headings = find('h1[id].sect0, .sect1 > h2[id]', (doc = document.querySelector('article.doc')))).length - ) { - sidebar.parentNode.removeChild(sidebar) - return + var headingSelector = [] + for (var l = 0; l <= levels; l++) headingSelector.push(l ? '.sect' + l + ' > h' + (l + 1) + '[id]' : 'h1[id].sect0') + if (!(headings = find(headingSelector.join(', '), article)).length) { + return sidebar.parentNode.removeChild(sidebar) && undefined } + var lastActiveFragment var links = {} - var menu - var list = headings.reduce(function (accum, heading) { var link = toArray(heading.childNodes).reduce(function (target, child) { if (child.nodeName !== 'A') target.appendChild(child.cloneNode(true)) @@ -29,49 +23,50 @@ }, document.createElement('a')) links[(link.href = '#' + heading.id)] = link var listItem = document.createElement('li') + listItem.dataset.level = parseInt(heading.nodeName.slice(1)) - 1 listItem.appendChild(link) accum.appendChild(listItem) return accum }, document.createElement('ul')) - if (!(menu = sidebar && sidebar.querySelector('.toc-menu'))) { + var menu = sidebar.querySelector('.toc-menu') + if (!menu) { menu = document.createElement('div') menu.className = 'toc-menu' } var title = document.createElement('h3') - title.textContent = 'On This Page' + title.textContent = sidebar.dataset.title || 'Contents' menu.appendChild(title) menu.appendChild(list) - if (sidebar) { - window.addEventListener('load', function () { - onScroll() - window.addEventListener('scroll', onScroll) - }) - } - - var startOfContent = doc.querySelector('h1.page ~ :not(.labels)') + var startOfContent = !document.getElementById('toc') && article.querySelector('h1.page ~ :not(.is-before-toc)') if (startOfContent) { var embeddedToc = document.createElement('aside') embeddedToc.className = 'toc embedded' embeddedToc.appendChild(menu.cloneNode(true)) - doc.insertBefore(embeddedToc, startOfContent) + startOfContent.parentNode.insertBefore(embeddedToc, startOfContent) } + window.addEventListener('load', function () { + onScroll() + window.addEventListener('scroll', onScroll) + }) + function onScroll () { - // NOTE doc.parentNode.offsetTop ~= doc.parentNode.getBoundingClientRect().top + window.pageYOffset - //var targetPosition = doc.parentNode.offsetTop - // NOTE no need to compensate wheen using spacer above [id] elements - var targetPosition = 0 var activeFragment - headings.some(function (heading) { - if (Math.floor(heading.getBoundingClientRect().top) <= targetPosition) { + var scrolledBy = window.pageYOffset + var buffer = getStyleValueAsInt(document.documentElement, 'fontSize') + if (scrolledBy && window.innerHeight + scrolledBy + 2 >= document.documentElement.scrollHeight) { + activeFragment = '#' + headings[headings.length - 1].id + } else { + var targetPosition = article.offsetTop + headings.some(function (heading) { + var headingTop = heading.getBoundingClientRect().top + getStyleValueAsInt(heading, 'paddingTop') + if (targetPosition < headingTop - buffer) return true activeFragment = '#' + heading.id - } else { - return true - } - }) + }) + } if (activeFragment) { if (activeFragment !== lastActiveFragment) { if (lastActiveFragment) { @@ -79,8 +74,8 @@ } var activeLink = links[activeFragment] activeLink.classList.add('is-active') - if (menu.scrollHeight > menu.offsetHeight) { - menu.scrollTop = Math.max(0, activeLink.offsetTop + activeLink.offsetHeight - menu.offsetHeight) + if (list.scrollHeight > list.offsetHeight) { + list.scrollTop = Math.max(0, activeLink.offsetTop + activeLink.offsetHeight - list.offsetHeight) } lastActiveFragment = activeFragment } @@ -97,4 +92,8 @@ function toArray (collection) { return [].slice.call(collection) } + + function getStyleValueAsInt (el, prop) { + return parseInt(window.getComputedStyle(el)[prop]) + } })() diff --git a/src/partials/main.hbs b/src/partials/main.hbs index 8e274c6..04752de 100644 --- a/src/partials/main.hbs +++ b/src/partials/main.hbs @@ -1,4 +1,7 @@
{{> toolbar}} +
{{> article}} +{{> toc}} +
diff --git a/src/partials/toc.hbs b/src/partials/toc.hbs new file mode 100644 index 0000000..2b29190 --- /dev/null +++ b/src/partials/toc.hbs @@ -0,0 +1,3 @@ + From fb369c3b27ad85ba0bbc9ee5e18fd6c6fd5a9147 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Wed, 1 Apr 2020 13:35:33 -0600 Subject: [PATCH 21/60] don't allow the toc sidebar to grow beyond the bounds of the content column --- src/css/main.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/main.css b/src/css/main.css index b8ea66c..c9b1651 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -20,7 +20,7 @@ } aside.toc.sidebar { - flex: 1 0 var(--toc-width); + flex: 0 0 var(--toc-width); } } From d39b7fe97b8d1e9c6de452670e0bba7440f73699 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Thu, 2 Apr 2020 17:31:00 -0600 Subject: [PATCH 22/60] only remove background color from active link, not whole background --- src/css/base.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/css/base.css b/src/css/base.css index 135a8ab..21361c4 100644 --- a/src/css/base.css +++ b/src/css/base.css @@ -38,7 +38,7 @@ a:hover { } a:active { - background: none; + background-color: none; } code, From 381e1eeb9cdaf6d67731514cb3c21d040861f8ad Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 4 Apr 2020 03:15:15 -0600 Subject: [PATCH 23/60] use .. instead of ../this in template --- src/partials/nav-explore.hbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/partials/nav-explore.hbs b/src/partials/nav-explore.hbs index f4b560c..8bab9dd 100644 --- a/src/partials/nav-explore.hbs +++ b/src/partials/nav-explore.hbs @@ -12,7 +12,7 @@
    {{#each ./versions}}
  • {{./displayVersion}}
  • From 016a963e8cc3bca6fe7dbc67ca34dcd52dd1db13 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Sat, 4 Apr 2020 03:15:30 -0600 Subject: [PATCH 24/60] put comparison value second in eq condition --- src/partials/breadcrumbs.hbs | 2 +- src/partials/nav-tree.hbs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/partials/breadcrumbs.hbs b/src/partials/breadcrumbs.hbs index d2ce9e3..6ab2921 100644 --- a/src/partials/breadcrumbs.hbs +++ b/src/partials/breadcrumbs.hbs @@ -2,7 +2,7 @@ {{#if page.breadcrumbs}}
      {{#with page.componentVersion}} - {{#if (and ./title (not (or ./root (eq @root.page.breadcrumbs.0.content ./title))))}} + {{#if (and ./title (not (or ./root (eq ./title @root.page.breadcrumbs.0.content))))}}
    • {{{./title}}}
    • {{/if}} {{/with}} diff --git a/src/partials/nav-tree.hbs b/src/partials/nav-tree.hbs index f0576bd..79e3c1e 100644 --- a/src/partials/nav-tree.hbs +++ b/src/partials/nav-tree.hbs @@ -1,7 +1,7 @@ {{#if navigation.length}}