From 4515aae78d66d9c65e86eeab9da09101cb470308 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 6 Mar 2025 15:20:43 +0100 Subject: [PATCH 1/4] rm docs/css/instantsearch.js probably a copy-paste error when adapting dev doc's one. --- docs/css/instantsearch.js | 166 -------------------------------------- 1 file changed, 166 deletions(-) delete mode 100644 docs/css/instantsearch.js diff --git a/docs/css/instantsearch.js b/docs/css/instantsearch.js deleted file mode 100644 index 8bf9d071..00000000 --- a/docs/css/instantsearch.js +++ /dev/null @@ -1,166 +0,0 @@ -(function(global, doc) { - let match; - const search_query = (match = doc.location.search.match(/sq=(.*?)(&|$)/)) ? match[1] : ''; - const parsed_search_query = decodeURI(search_query.replaceAll('+', ' ')); - const search_page = (match = doc.location.search.match(/p=(\d*?)(&|$)/)) ? match[1] : 1; - const parsed_search_page = parseInt(search_page); - let version = doc.location.pathname.split('/')[2]; - if (!/^\d+\.\d+$/.test(version) && version !== 'latest') { - version = 'master'; - } - const hitsContainer = '#hits'; - const statsContainer = '#stats'; - const paginationContainer = '#pagination'; - const search = instantsearch({ - indexName: 'ezplatform', - searchClient: algoliasearch('2DNYOU6YJZ', '21ce3e522455e18e7ee16cf7d66edb4b'), - initialUiState: { - ezplatform: { - query: parsed_search_query, - refinementList: { version: [version] }, - page: parsed_search_page, - }, - }, - searchFunction(helper) { - if (helper.state.query) { - helper.search(); - $(statsContainer).css('visibility', 'visible'); - $(paginationContainer).show(); - } else { - $(hitsContainer).empty(); - $(statsContainer).css('visibility', 'hidden'); - $(paginationContainer).hide(); - } - }, - }); - - getNextSearchURL = () => { - const searchInputElements = document.getElementsByClassName('ais-SearchBox-input'); - const text = searchInputElements[0].value.trim(); - const selectedPaginationItemElements = doc.getElementsByClassName('ais-Pagination-item--selected'); - const page = selectedPaginationItemElements.length ? parseInt(selectedPaginationItemElements[0].innerText) : 1; - const url = new URL(window.location); - url.searchParams.set('sq', text); - url.searchParams.set('p', page); - return url; - }; - - let idleTimer; - const startIdleTimer = (url) => { - stopIdleTimer(); - idleTimer = window.setTimeout(() => { - window.history.pushState({}, '', url); - }, 1500); - }; - const stopIdleTimer = () => { - window.clearTimeout(idleTimer); - }; - - doc.getElementById('searchbox').addEventListener('keyup', function(event) { - const url = getNextSearchURL(); - if (url.searchParams.get('sq') != (new URL(window.location)).searchParams.get('sq')) { - url.searchParams.set('p', 1); - startIdleTimer(url); - } - }); - - doc.getElementById('pagination').addEventListener('click', function(event) { - stopIdleTimer(); - const url = getNextSearchURL(); - window.history.pushState({}, '', url); - }); - - window.onpopstate = (event) => { - window.location.reload(); - }; - - search.addWidgets([ - instantsearch.widgets.configure({ - hitsPerPage: 10, - }), - instantsearch.widgets.stats({ - container: statsContainer, - templates: { - text: `

- Search results ({{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}}) -

`, - }, - }), - instantsearch.widgets.searchBox({ - container: '#searchbox', - }), - instantsearch.widgets.hits({ - container: hitsContainer, - templates: { - item: (hit) => { - const hierarchy = Object.entries(hit.hierarchy).filter(([, value]) => value); - const breadcrumbsKeys = hierarchy.map(([key]) => key); - const entryNameKey = breadcrumbsKeys.pop(); - - const headerHTML = `

- ${instantsearch.highlight({ - attribute: `hierarchy.${entryNameKey}`, - highlightedTagName: 'mark', - hit: hit, - })} -

`; - - let breadcrumbsHTML = ''; - let contentHTML = ''; - - if (hit.content && hit._highlightResult.content.matchedWords.length && (!hit._highlightResult.content.fullyHighlighted || 1 < hit._highlightResult.content.matchedWords.length)) { - contentHTML = `
- ${instantsearch.highlight({ - attribute: `content`, - highlightedTagName: 'mark', - hit: hit, - }).replaceAll('&', '&')} -
`; - } - - breadcrumbsKeys?.forEach((breadcrumbKey) => { - breadcrumbsHTML += ` - ${instantsearch.highlight({ - attribute: `hierarchy.${breadcrumbKey}`, - highlightedTagName: 'mark', - hit: hit, - })} - `; - }); - - return resultHTML = ` -
- ${breadcrumbsHTML} -
- ${headerHTML} - ${contentHTML} -
`; - }, - }, - }), - instantsearch.widgets.pagination({ - container: paginationContainer, - padding: 2, - templates: { - first: ` - - `, - previous: ` - - `, - next: ` - - `, - last: ` - - `, - }, - }), - instantsearch.widgets.refinementList({ - container: document.querySelector('#version'), - attribute: 'version', - }), - ]); - - search.start(); -})(window, window.document); From 5a32bb3affff5c28700e628fa2b231fef5633ca8 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 6 Mar 2025 15:41:46 +0100 Subject: [PATCH 2/4] instantsearch.js: Fix navigation - Fix first page link icon - hide "last page" link (this is not even the last page) --- docs/css/instantsearch.css | 4 ++++ docs/js/instantsearch.js | 7 ++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/css/instantsearch.css b/docs/css/instantsearch.css index ac504cf8..fe11c975 100644 --- a/docs/css/instantsearch.css +++ b/docs/css/instantsearch.css @@ -126,6 +126,10 @@ footer.md-footer { margin: 0; } +.md-content .ais-InstantSearch .ais-Pagination .ais-Pagination-list .ais-Pagination-item--lastPage { + display: none; +} + .md-content .ais-InstantSearch .ais-Pagination .ais-Pagination-link { border: none; font-size: 14px; diff --git a/docs/js/instantsearch.js b/docs/js/instantsearch.js index 8bf9d071..9eb4ebe1 100644 --- a/docs/js/instantsearch.js +++ b/docs/js/instantsearch.js @@ -142,8 +142,8 @@ container: paginationContainer, padding: 2, templates: { - first: ` - + first: ` + `, previous: ` @@ -151,9 +151,6 @@ next: ` `, - last: ` - - `, }, }), instantsearch.widgets.refinementList({ From ef43a9959f65c07062ce7e22236bdc98a65ceced Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 6 Mar 2025 16:01:10 +0100 Subject: [PATCH 3/4] instantsearch.js: Fix navigation - Fix first page link icon - hide "last page" link (this is not even the last page) --- docs/images/ez-icons.svg | 20 ++++++++++++++++++++ docs/js/instantsearch.js | 7 +++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/docs/images/ez-icons.svg b/docs/images/ez-icons.svg index 2e912f59..4ae23b0f 100644 --- a/docs/images/ez-icons.svg +++ b/docs/images/ez-icons.svg @@ -95,6 +95,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/js/instantsearch.js b/docs/js/instantsearch.js index 9eb4ebe1..8bf9d071 100644 --- a/docs/js/instantsearch.js +++ b/docs/js/instantsearch.js @@ -142,8 +142,8 @@ container: paginationContainer, padding: 2, templates: { - first: ` - + first: ` + `, previous: ` @@ -151,6 +151,9 @@ next: ` `, + last: ` + + `, }, }), instantsearch.widgets.refinementList({ From 7ac22e22832fe34d0fd29a9c3f172eb4ed7b64f4 Mon Sep 17 00:00:00 2001 From: Adrien Dupuis <61695653+adriendupuis@users.noreply.github.com> Date: Thu, 6 Mar 2025 17:48:00 +0100 Subject: [PATCH 4/4] instantsearch.css: don't highlight last clicked prev/next button --- docs/css/instantsearch.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/css/instantsearch.css b/docs/css/instantsearch.css index fe11c975..18db2b94 100644 --- a/docs/css/instantsearch.css +++ b/docs/css/instantsearch.css @@ -130,7 +130,9 @@ footer.md-footer { display: none; } -.md-content .ais-InstantSearch .ais-Pagination .ais-Pagination-link { +.md-content .ais-InstantSearch .ais-Pagination .ais-Pagination-link, +.md-content .ais-InstantSearch .ais-Pagination .ais-Pagination-link:focus { + background-color: transparent; border: none; font-size: 14px; line-height: 21px;