Skip to content

Commit ab59a08

Browse files
committed
Build: Update typesense-minibar to 1.3.2
Ref https://github.com/jquery/typesense-minibar
1 parent 93a82b0 commit ab59a08

File tree

4 files changed

+20
-21
lines changed

4 files changed

+20
-21
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
MINIBAR_VERSION=1.3.1
1+
MINIBAR_VERSION=1.3.2
22

33
.PHONY: deps
44

_includes/search.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<typesense-minibar>
2-
<form role="search"{% if site.amethyst.typesense.search_only_api_key %} data-origin="{{ site.amethyst.typesense.origin | escape }}" data-collection="{{ site.amethyst.typesense.collection | escape }}" data-key="{{ site.amethyst.typesense.search_only_api_key | escape }}" data-foot="true"{% endif %} action="https://duckduckgo.com">
1+
<typesense-minibar{% if site.amethyst.typesense.search_only_api_key %} data-origin="{{ site.amethyst.typesense.origin | escape }}" data-collection="{{ site.amethyst.typesense.collection | escape }}" data-key="{{ site.amethyst.typesense.search_only_api_key | escape }}" data-foot="true"{% endif %}>
2+
<form role="search" action="https://duckduckgo.com">
33
<input type="search" name="q" aria-label="Search" placeholder="Search..." autocomplete="off">
44
<input type="hidden" name="sites" value="{{ site.url | remove_first: 'http://' | remove_first: 'https://' }}">
55
</form>

_sass/typesense-minibar.css

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! https://github.com/jquery/typesense-minibar 1.3.1 */
1+
/*! https://github.com/jquery/typesense-minibar 1.3.2 */
22
.tsmb-form,
33
typesense-minibar {
44
--tsmb-size-edge: 1px;
@@ -173,12 +173,12 @@ typesense-minibar [role=option] a {
173173
}
174174

175175
.tsmb-form:not([data-group=true]) [role=option]:not(:first-child) a,
176-
typesense-minibar form:not([data-group=true]) [role=option]:not(:first-child) a {
176+
typesense-minibar:not([data-group=true]) [role=option]:not(:first-child) a {
177177
border-top: var(--tsmb-size-edge) solid var(--tsmb-color-focus90);
178178
}
179179

180180
.tsmb-form[data-group=true] [role=option] a,
181-
typesense-minibar form[data-group=true] [role=option] a {
181+
typesense-minibar[data-group=true] [role=option] a {
182182
margin: 0 var(--tsmb-size-base);
183183
padding: var(--tsmb-size-sm);
184184
}
@@ -210,7 +210,8 @@ typesense-minibar [role=option] mark {
210210
.tsmb-suggestion_title {
211211
color: var(--tsmb-color-primary30);
212212
}
213-
.tsmb-form[data-group=true] .tsmb-suggestion_title {
213+
.tsmb-form[data-group=true] .tsmb-suggestion_title,
214+
typesense-minibar[data-group=true] .tsmb-suggestion_title {
214215
font-weight: bold;
215216
font-size: var(--tsmb-size-sm);
216217
}

assets/typesense-minibar.js

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
/*! https://github.com/jquery/typesense-minibar 1.3.1 */
2-
globalThis.tsminibar = function tsminibar (form) {
3-
const { origin, collection } = form.dataset;
4-
const group = !!form.dataset.group;
1+
/*! https://github.com/jquery/typesense-minibar 1.3.2 */
2+
globalThis.tsminibar = function tsminibar (form, dataset = form.dataset) {
53
const cache = new Map();
64
const state = { query: '', cursor: -1, open: false, hits: [] };
75
const searchParams = new URLSearchParams({
@@ -14,10 +12,10 @@ globalThis.tsminibar = function tsminibar (form) {
1412
sort_by: 'item_priority:desc',
1513
snippet_threshold: '8',
1614
highlight_affix_num_tokens: '12',
17-
'x-typesense-api-key': form.dataset.key,
18-
...Object.fromEntries(new URLSearchParams(form.dataset.searchParams))
15+
'x-typesense-api-key': dataset.key,
16+
...Object.fromEntries(new URLSearchParams(dataset.searchParams))
1917
});
20-
const noResults = form.dataset.noResults || "No results for '{}'.";
18+
const noResults = dataset.noResults || "No results for '{}'.";
2119

2220
const input = form.querySelector('input[type=search]');
2321
const listbox = document.createElement('div');
@@ -31,7 +29,7 @@ globalThis.tsminibar = function tsminibar (form) {
3129
preconnect = document.createElement('link');
3230
preconnect.rel = 'preconnect';
3331
preconnect.crossOrigin = 'anonymous'; // match fetch cors,credentials:omit
34-
preconnect.href = origin;
32+
preconnect.href = dataset.origin;
3533
document.head.append(preconnect);
3634
}
3735
if (!state.open && state.hits.length) {
@@ -92,7 +90,7 @@ globalThis.tsminibar = function tsminibar (form) {
9290

9391
function connect () {
9492
document.addEventListener('click', onDocClick);
95-
if (form.dataset.slash !== 'false') {
93+
if (dataset.slash !== 'false') {
9694
document.addEventListener('keydown', onDocSlash);
9795
form.classList.add('tsmb-form--slash');
9896
}
@@ -124,9 +122,10 @@ globalThis.tsminibar = function tsminibar (form) {
124122
}
125123
searchParams.set('q', query);
126124
const resp = await fetch(
127-
`${origin}/collections/${collection}/documents/search?` + searchParams,
125+
`${dataset.origin}/collections/${dataset.collection}/documents/search?` + searchParams,
128126
{ mode: 'cors', credentials: 'omit', method: 'GET' }
129127
);
128+
const group = !!dataset.group;
130129
const data = await resp.json();
131130
hits = data?.grouped_hits?.map(ghit => {
132131
const hit = ghit.hits[0];
@@ -151,23 +150,22 @@ globalThis.tsminibar = function tsminibar (form) {
151150
function render () {
152151
listbox.hidden = !state.open;
153152
form.classList.toggle('tsmb-form--open', state.open);
154-
listbox.innerHTML = (state.hits.map((hit, i) => `<div role="option"${i === state.cursor ? ' aria-selected="true"' : ''}>${hit.lvl0 ? `<div class="tsmb-suggestion_group">${hit.lvl0}</div>` : ''}<a href="${hit.url}" tabindex="-1"><div class="tsmb-suggestion_title">${hit.title}</div><div class="tsmb-suggestion_content">${hit.content}</div></a></div>`).join('') || `<div class="tsmb-empty">${noResults.replace('{}', escape(state.query))}</div>`) + (form.dataset.foot ? '<a href="https://typesense.org" class="tsmb-foot" title="Search by Typesense"></a>' : '');
153+
listbox.innerHTML = (state.hits.map((hit, i) => `<div role="option"${i === state.cursor ? ' aria-selected="true"' : ''}>${hit.lvl0 ? `<div class="tsmb-suggestion_group">${hit.lvl0}</div>` : ''}<a href="${hit.url}" tabindex="-1"><div class="tsmb-suggestion_title">${hit.title}</div><div class="tsmb-suggestion_content">${hit.content}</div></a></div>`).join('') || `<div class="tsmb-empty">${noResults.replace('{}', escape(state.query))}</div>`) + (dataset.foot ? '<a href="https://typesense.org" class="tsmb-foot" title="Search by Typesense"></a>' : '');
155154
}
156155

157156
function moveCursor (offset) {
158157
state.cursor += offset;
159-
// -1 refers to input field
160158
if (state.cursor >= state.hits.length) state.cursor = -1;
161159
if (state.cursor < -1) state.cursor = state.hits.length - 1;
162160
render();
163161
}
164162

165163
return { form, connect, disconnect };
166164
};
167-
document.querySelectorAll('.tsmb-form[data-origin]').forEach(tsminibar);
168165
window.customElements.define('typesense-minibar', class extends HTMLElement {
169166
connectedCallback () {
170167
const form = this.querySelector('form');
171-
if (form) tsminibar(form);
168+
if (form && this.dataset.origin) tsminibar(form, this.dataset);
172169
}
173170
});
171+
document.querySelectorAll('.tsmb-form[data-origin]').forEach(form => tsminibar(form));

0 commit comments

Comments
 (0)