This is an automated email from the ASF dual-hosted git repository. zregvart pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-website.git
The following commit(s) were added to refs/heads/master by this push: new 30fa680 CAMEL-13622: filter box for component reference 30fa680 is described below commit 30fa68061505779942108310f125da6b4da34285 Author: Zoran Regvart <zregv...@apache.org> AuthorDate: Thu Aug 15 23:16:10 2019 +0200 CAMEL-13622: filter box for component reference This adds a filter box for the component reference documentation, it's not enabled for other components as it is quite trivial and would break nested navigation -- which is not used in the component reference. --- antora-ui-camel/src/css/base.css | 4 +++ antora-ui-camel/src/css/nav.css | 17 +++++++++++++ antora-ui-camel/src/css/vars.css | 1 + antora-ui-camel/src/img/search.svg | 9 +++++++ antora-ui-camel/src/js/05-nav-search.js | 42 +++++++++++++++++++++++++++++++ antora-ui-camel/src/partials/nav-menu.hbs | 3 +++ 6 files changed, 76 insertions(+) diff --git a/antora-ui-camel/src/css/base.css b/antora-ui-camel/src/css/base.css index 2fe1eb9..c7789f7 100644 --- a/antora-ui-camel/src/css/base.css +++ b/antora-ui-camel/src/css/base.css @@ -9,6 +9,10 @@ body { box-sizing: inherit; } +*::selection { + background: var(--color-highlight); +} + html { box-sizing: border-box; font-size: var(--body-font-size); diff --git a/antora-ui-camel/src/css/nav.css b/antora-ui-camel/src/css/nav.css index f1ea431..6ab3891 100644 --- a/antora-ui-camel/src/css/nav.css +++ b/antora-ui-camel/src/css/nav.css @@ -96,6 +96,23 @@ html.is-clipped--nav { background-color: var(--nav-border-color); } +.nav-panel-menu input.search { + border: 1px solid var(--nav-background); + padding: 0.3rem 0.5rem 0.3rem 1.7rem; + margin: 0.45rem 0.75rem; + background: no-repeat 0.2rem/1.2rem url(../img/search.svg); + z-index: var(--z-index-nav-search); + font-size: calc(17 / var(--rem-base) * 1rem); + font-family: var(--body-font-family); + caret-color: var(--color-camel-orange); + transition: border-color 0.2s linear; + outline: none; +} + +.nav-panel-menu input.search:focus { + border-bottom-color: var(--nav-panel-divider-color); +} + .nav-menu { flex-grow: 1; min-height: 0; diff --git a/antora-ui-camel/src/css/vars.css b/antora-ui-camel/src/css/vars.css index 3208946..0d931a6 100644 --- a/antora-ui-camel/src/css/vars.css +++ b/antora-ui-camel/src/css/vars.css @@ -139,4 +139,5 @@ --z-index-toolbar: 2; --z-index-page-version-menu: 3; --z-index-navbar: 4; + --z-index-nav-search: 5; } diff --git a/antora-ui-camel/src/img/search.svg b/antora-ui-camel/src/img/search.svg new file mode 100644 index 0000000..e720842 --- /dev/null +++ b/antora-ui-camel/src/img/search.svg @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + viewBox="0 0 100 100" + version="1.1"> + <circle cx="46" cy="46" r="30" style="fill: none; stroke-width: 7; stroke: black"/> + <line x1="65" y1="65" x2="90" y2="90" style="stroke-width: 7; stroke: black" /> +</svg> diff --git a/antora-ui-camel/src/js/05-nav-search.js b/antora-ui-camel/src/js/05-nav-search.js new file mode 100644 index 0000000..4666425 --- /dev/null +++ b/antora-ui-camel/src/js/05-nav-search.js @@ -0,0 +1,42 @@ +document.addEventListener('DOMContentLoaded', function () { + var tokenize = function (c) { + return '.*' + c + '.*' + } + var navSearch = document.querySelector('.nav-panel-menu input.search') + if (!navSearch) { + return + } + + var navLinks = document.querySelectorAll('.nav-link') + navSearch.addEventListener('keyup', function () { + var tokens = navSearch.value.split('') + var term = new RegExp(tokens.map(tokenize).join(''), 'i') + for (var i = 0; i < navLinks.length; i++) { + var text = navLinks[i].textContent + var matches = term.test(text) + var replacement = '' + if (matches) { + navLinks[i].style.display = '' + if (tokens.length === 0) { + replacement = text + } else { + var prev = 0 + var curr = 0 + for (var j = 0; j < tokens.length; j++) { + curr = text.toLowerCase().indexOf(tokens[j].toLowerCase(), curr) + replacement = replacement + text.substring(prev, curr) + '<b>' + text[curr] + '</b>' + curr++ + prev = curr + } + if (curr < text.length) { + replacement = replacement + text.substring(curr) + } + } + } else { + navLinks[i].style.display = 'none' + replacement = text + } + navLinks[i].innerHTML = replacement + } + }) +}) diff --git a/antora-ui-camel/src/partials/nav-menu.hbs b/antora-ui-camel/src/partials/nav-menu.hbs index 27a667d..8c5d71e 100644 --- a/antora-ui-camel/src/partials/nav-menu.hbs +++ b/antora-ui-camel/src/partials/nav-menu.hbs @@ -1,5 +1,8 @@ {{#if page.navigation}} <div class="nav-panel-menu is-active" data-panel="menu"> + {{#if (eq page.component.name 'components')}} + <input class="search" placeholder="Quick lookup"> + {{/if}} <nav class="nav-menu"> <h3 class="title"><a href="{{relativize page.url page.componentVersion.url}}">{{page.component.title}}</a></h3> {{> nav-tree navigation=page.navigation}}