From 826740223cfa0c26f566756f0ec850ba037691d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Tue, 11 Feb 2025 18:18:56 +0100 Subject: [PATCH] theme: Misc search improvements * Add style for highlighted text * Collapse all >= h3 into lvl3 and show that in the search results --- assets/css/styles.css | 5 ++++- assets/js/alpinejs/data/search.js | 20 +++++++++++++++++++- layouts/partials/layouts/search/results.html | 6 ++++-- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/assets/css/styles.css b/assets/css/styles.css index 5e872b2a0..cbe34e401 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -117,4 +117,7 @@ body { } } -/* flex-1 mx-auto lg:mx-0 px-4 md:px-8 lg:px-12 w-full max-w-3x lg:max-w-3x py-8 sm:py-14 */ +/* Algolia DocSearch */ +.algolia-docsearch-suggestion--highlight { + color: var(--color-primary); +} diff --git a/assets/js/alpinejs/data/search.js b/assets/js/alpinejs/data/search.js index c1572d020..6cc66ab3c 100644 --- a/assets/js/alpinejs/data/search.js +++ b/assets/js/alpinejs/data/search.js @@ -8,6 +8,24 @@ const groupByLvl0 = (array) => { }, {}); }; +const applyHelperFuncs = (array) => { + if (!array) return []; + return array.map((item) => { + item.getHeadingHTML = function () { + let lvl2 = this._highlightResult.hierarchy.lvl2; + let lvl3 = this._highlightResult.hierarchy.lvl3; + if (!lvl2) { + return ''; + } + if (lvl3) { + return `${lvl2.value}  >  ${lvl3.value}`; + } + return lvl2.value; + }; + return item; + }); +}; + export const search = (Alpine, cfg) => ({ query: designMode ? 'shortcodes' : '', open: designMode, @@ -66,7 +84,7 @@ export const search = (Alpine, cfg) => ({ }) .then((response) => response.json()) .then((data) => { - this.result = groupByLvl0(data.results[0].hits); + this.result = groupByLvl0(applyHelperFuncs(data.results[0].hits)); }); }, root: { diff --git a/layouts/partials/layouts/search/results.html b/layouts/partials/layouts/search/results.html index 213c90423..487f5b24c 100644 --- a/layouts/partials/layouts/search/results.html +++ b/layouts/partials/layouts/search/results.html @@ -44,7 +44,9 @@ x-for="[group, entries] in Object.entries(result)" :key="group">
  • -
    +