Skip to content

Commit 18ac966

Browse files
committed
feat(tpl): add clear button for filter
1 parent 1deebb8 commit 18ac966

File tree

3 files changed

+39
-7
lines changed

3 files changed

+39
-7
lines changed

src/tpl/frontend/index.css

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ html {
88
font-family: "roboto_condensedbold", "Helvetica Neue", Helvetica, Arial, sans-serif;
99
}
1010

11-
body, input, textarea, button {
12-
font-family: Consolas, "Lucida Console", "San Francisco Mono", Menlo, Monaco, "Andale Mono", "DejaVu Sans Mono", monospace;
13-
}
14-
1511
body {
1612
color: #333;
1713
font-size: 0.625em;
@@ -21,6 +17,14 @@ body {
2117
padding-bottom: 1em;
2218
}
2319

20+
body, input, textarea, button {
21+
font-family: Consolas, "Lucida Console", "San Francisco Mono", Menlo, Monaco, "Andale Mono", "DejaVu Sans Mono", monospace;
22+
}
23+
24+
input::-ms-clear {
25+
display: none;
26+
}
27+
2428
form {
2529
margin: 0;
2630
padding: 0;
@@ -291,15 +295,28 @@ em {
291295
}
292296

293297
.filter .form {
298+
position: relative;
294299
display: flex;
295300
}
296301

297-
.filter .filter-text {
302+
.filter input {
298303
flex: 1 1 auto;
299304
width: 100%;
305+
padding-right: 1.5em;
300306
box-sizing: border-box;
301307
}
302308

309+
.filter button {
310+
display: none;
311+
position: absolute;
312+
right: 0;
313+
top: 0;
314+
bottom: 0;
315+
border: 0;
316+
background: none;
317+
padding: 0 0.5em;
318+
}
319+
303320
.item-list {
304321
margin: 1em;
305322
}

src/tpl/frontend/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@
5858
{{if .SubItemsHtml}}
5959
<div class="panel filter" id="panel-filter">
6060
<div class="form">
61-
<input type="text" accesskey="r" placeholder="{{.Trans.FilterLabel}}" name="filter-text" class="filter-text"/>
61+
<input type="text" accesskey="r" placeholder="{{.Trans.FilterLabel}}"/>
62+
<button type="reset">X</button>
6263
</div>
6364
</div>
6465
{{end}}

src/tpl/frontend/index.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@
2929
return;
3030
}
3131

32-
var input = filter.querySelector('input.filter-text');
32+
var input = filter.querySelector('input');
3333
if (!input) {
3434
return;
3535
}
36+
var clear = filter.querySelector('button');
3637

3738
var selectorNone = '.' + classNone;
3839
var selectorNotNone = ':not(' + selectorNone + ')';
@@ -52,12 +53,18 @@
5253
var selector, items, i;
5354

5455
if (!filterText) { // filter cleared, show all items
56+
if (clear) {
57+
clear.style.display = '';
58+
}
5559
selector = selectorItemNone;
5660
items = document.body.querySelectorAll(selector);
5761
for (i = items.length - 1; i >= 0; i--) {
5862
items[i].classList.remove(classNone);
5963
}
6064
} else {
65+
if (clear) {
66+
clear.style.display = 'block';
67+
}
6168
if (filterText.indexOf(lastFilterText) >= 0) { // increment search, find in visible items
6269
selector = selectorItemNotNone;
6370
} else if (lastFilterText.indexOf(filterText) >= 0) { // decrement search, find in hidden items
@@ -105,6 +112,13 @@
105112
}
106113
}, false);
107114

115+
clear && clear.addEventListener('click', function () {
116+
clearTimeout(timeoutId);
117+
input.value = '';
118+
input.focus();
119+
doFilter();
120+
});
121+
108122
// init
109123
if (sessionStorage) {
110124
var prevSessionFilter = sessionStorage.getItem(location.pathname);

0 commit comments

Comments
 (0)