From 24fad7940d75da3d987dd8118e288d1e63d98119 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sun, 20 Apr 2025 11:12:55 -0300 Subject: client: sidebar-search: I-beam blink for typed filter --- src/static/js/client/sidebar-search.js | 16 +++++++++++++++- src/static/js/search-worker.js | 7 ++++++- 2 files changed, 21 insertions(+), 2 deletions(-) (limited to 'src/static/js') diff --git a/src/static/js/client/sidebar-search.js b/src/static/js/client/sidebar-search.js index 051ba079..c8f42e91 100644 --- a/src/static/js/client/sidebar-search.js +++ b/src/static/js/client/sidebar-search.js @@ -809,7 +809,7 @@ function showSidebarSearchResults(results) { function tidyResults(results) { const tidiedResults = - results.map(({doc, id}) => ({ + results.results.map(({doc, id}) => ({ reference: id ?? null, referenceType: (id ? id.split(':')[0] : null), directory: (id ? id.split(':')[1] : null), @@ -851,6 +851,8 @@ function fillResultElements(results, { } function showFilterElements(results) { + const {queriedKind} = results; + const tidiedResults = tidyResults(results); const allReferenceTypes = @@ -864,6 +866,18 @@ function showFilterElements(results) { if (allReferenceTypes.includes(type)) { shownAny = true; cssProp(filterLink, 'display', null); + + if (queriedKind) { + filterLink.setAttribute('inert', 'inert'); + } else { + filterLink.removeAttribute('inert'); + } + + if (type === queriedKind) { + filterLink.classList.add('active-from-query'); + } else { + filterLink.classList.remove('active-from-query'); + } } else { cssProp(filterLink, 'display', 'none'); } diff --git a/src/static/js/search-worker.js b/src/static/js/search-worker.js index 5ecb6eb4..8c265735 100644 --- a/src/static/js/search-worker.js +++ b/src/static/js/search-worker.js @@ -373,6 +373,8 @@ function postActionResult(id, status, value) { function performSearchAction({query, options}) { const {generic, verbatim} = indexes; + const {queriedKind} = processTerms(query); + const genericResults = queryGenericIndex(generic, query, options); @@ -388,7 +390,10 @@ function performSearchAction({query, options}) { .filter(({id}) => verbatimIDs.has(id)) : verbatimResults ?? genericResults); - return commonResults; + return { + results: commonResults, + queriedKind, + }; } const interestingFieldCombinations = [ -- cgit 1.3.0-6-gf8a5