Skip to content

Commit a002ecb

Browse files
Add a spinner when search is in progress
1 parent c96b7e4 commit a002ecb

File tree

5 files changed

+36
-7
lines changed

5 files changed

+36
-7
lines changed

src/theme/css/chrome.css

+26-1
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,34 @@ mark.fade-out {
344344
max-width: var(--content-max-width);
345345
}
346346

347+
#searchbar-outer.searching #searchbar {
348+
padding-right: 30px;
349+
}
350+
#searchbar-outer .spinner-wrapper {
351+
display: none;
352+
}
353+
#searchbar-outer.searching .spinner-wrapper {
354+
display: block;
355+
}
356+
357+
.search-wrapper {
358+
position: relative;
359+
}
360+
361+
.spinner-wrapper {
362+
--spinner-margin: 2px;
363+
position: absolute;
364+
margin-block-start: calc(var(--searchbar-margin-block-start) + var(--spinner-margin));
365+
right: var(--spinner-margin);
366+
top: 0;
367+
bottom: var(--spinner-margin);
368+
padding: 6px;
369+
background-color: var(--bg);
370+
}
371+
347372
#searchbar {
348373
width: 100%;
349-
margin-block-start: 5px;
374+
margin-block-start: var(--searchbar-margin-block-start);
350375
margin-block-end: 0;
351376
margin-inline-start: auto;
352377
margin-inline-end: auto;

src/theme/css/variables.css

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
--menu-bar-height: 50px;
1111
--mono-font: "Source Code Pro", Consolas, "Ubuntu Mono", Menlo, "DejaVu Sans Mono", monospace, monospace;
1212
--code-font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */
13+
--searchbar-margin-block-start: 5px;
1314
}
1415

1516
/* Themes */

src/theme/index.hbs

+6-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,12 @@
170170
{{#if search_enabled}}
171171
<div id="search-wrapper" class="hidden">
172172
<form id="searchbar-outer" class="searchbar-outer">
173-
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header" disabled>
173+
<div class="search-wrapper">
174+
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
175+
<div class="spinner-wrapper">
176+
<i class="fa fa-spinner fa-spin"></i>
177+
</div>
178+
</div>
174179
</form>
175180
<div id="searchresults-outer" class="searchresults-outer hidden">
176181
<div id="searchresults-header" class="searchresults-header"></div>

src/theme/searcher/searcher.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,6 @@ window.search = window.search || {};
255255
function init(config) {
256256
results_options = config.results_options;
257257
search_options = config.search_options;
258-
searchbar_outer = config.searchbar_outer;
259258
doc_urls = config.doc_urls;
260259
searchindex = elasticlunr.Index.load(config.index);
261260

@@ -471,6 +470,7 @@ window.search = window.search || {};
471470
function doSearch(searchterm) {
472471
// Don't search the same twice
473472
if (current_searchterm == searchterm) { return; }
473+
searchbar_outer.classList.add("searching");
474474
if (searchindex == null) { return; }
475475

476476
current_searchterm = searchterm;
@@ -493,6 +493,7 @@ window.search = window.search || {};
493493

494494
// Display results
495495
showResults(true);
496+
searchbar_outer.classList.remove("searching");
496497
}
497498

498499
// Exported functions

tests/gui/search.goml

+1-4
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,13 @@ wait-for-text: ("#searchresults-header", "2 search results for 'strikethrough':"
3232
// Now we test search shortcuts and more page changes.
3333
go-to: |DOC_PATH| + "index.html"
3434

35-
// First we ensure that the search input is disabled and hidden.
36-
assert: "#searchbar:disabled"
3735
// This check is to ensure that the search bar is inside the search wrapper.
3836
assert: "#search-wrapper #searchbar"
3937
assert-css: ("#search-wrapper", {"display": "none"})
4038

4139
// Now we make the search input appear with the `S` shortcut.
4240
press-key: 'S'
43-
wait-for: "#searchbar:not(:disabled)"
44-
assert-css: ("#search-wrapper", {"display": "block"})
41+
wait-for-css: ("#search-wrapper", {"display": "block"})
4542
// We ensure the search bar has the focus.
4643
assert: "#searchbar:focus"
4744

0 commit comments

Comments
 (0)