Commit 3f770603 authored by Matthew Holt's avatar Matthew Holt

browse: Simple filter textbox for default template

Typing in this box will filter the list of items by name.
parent 8b9c9efd
...@@ -102,6 +102,7 @@ const defaultTemplate = `<!DOCTYPE html> ...@@ -102,6 +102,7 @@ const defaultTemplate = `<!DOCTYPE html>
<html> <html>
<head> <head>
<title>{{.Name}}</title> <title>{{.Name}}</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<style> <style>
* { padding: 0; margin: 0; } * { padding: 0; margin: 0; }
...@@ -167,14 +168,19 @@ main { ...@@ -167,14 +168,19 @@ main {
font-size: 12px; font-size: 12px;
font-family: Verdana, sans-serif; font-family: Verdana, sans-serif;
border-bottom: 1px solid #9C9C9C; border-bottom: 1px solid #9C9C9C;
padding-top: 15px; padding-top: 10px;
padding-bottom: 15px; padding-bottom: 10px;
} }
.meta-item { .meta-item {
margin-right: 1em; margin-right: 1em;
} }
#filter {
padding: 4px;
border: 1px solid #CCC;
}
table { table {
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
...@@ -328,6 +334,7 @@ footer { ...@@ -328,6 +334,7 @@ footer {
{{- if ne 0 .ItemsLimitedTo}} {{- if ne 0 .ItemsLimitedTo}}
<span class="meta-item">(of which only <b>{{.ItemsLimitedTo}}</b> are displayed)</span> <span class="meta-item">(of which only <b>{{.ItemsLimitedTo}}</b> are displayed)</span>
{{- end}} {{- end}}
<span class="meta-item"><input type="text" placeholder="filter" id="filter" onkeyup='filter()'></span>
</div> </div>
</div> </div>
<div class="listing"> <div class="listing">
...@@ -376,7 +383,7 @@ footer { ...@@ -376,7 +383,7 @@ footer {
</tr> </tr>
{{- end}} {{- end}}
{{- range .Items}} {{- range .Items}}
<tr> <tr class="file">
<td> <td>
<a href="{{.URL}}"> <a href="{{.URL}}">
{{- if .IsDir}} {{- if .IsDir}}
...@@ -402,7 +409,26 @@ footer { ...@@ -402,7 +409,26 @@ footer {
<footer> <footer>
Served with <a rel="noopener noreferrer" href="https://caddyserver.com">Caddy</a>. Served with <a rel="noopener noreferrer" href="https://caddyserver.com">Caddy</a>.
</footer> </footer>
<script type="text/javascript"> <script>
var filterEl = document.getElementById('filter');
function filter() {
var q = filterEl.value.trim().toLowerCase();
var elems = document.querySelectorAll('tr.file');
elems.forEach(function(el) {
if (!q) {
el.style.display = '';
return;
}
var nameEl = el.querySelector('.name');
var nameVal = nameEl.textContent.trim().toLowerCase();
if (nameVal.indexOf(q) !== -1) {
el.style.display = '';
} else {
el.style.display = 'none';
}
});
}
function localizeDatetime(e, index, ar) { function localizeDatetime(e, index, ar) {
if (e.textContent === undefined) { if (e.textContent === undefined) {
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment