Improve search
This new approach makes sure the input field is hidden on browsers which ignore `display:none`, such as w3m or lynx.
This commit is contained in:
parent
a2b355477f
commit
b851a127c7
@ -188,7 +188,6 @@ main {
|
|||||||
}
|
}
|
||||||
|
|
||||||
input.search {
|
input.search {
|
||||||
display: none; // Hide for non-js browsers
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
|
@ -1,15 +1,23 @@
|
|||||||
function filter_title(str)
|
function filter_title(query, articles)
|
||||||
{
|
{
|
||||||
if (str.length == 0) {
|
const search = query.trim().toLowerCase();
|
||||||
articles.forEach(article => article.style.display = "block");
|
|
||||||
} else {
|
if (search.length === 0) {
|
||||||
articles.forEach(article => article.style.display = article.dataset.title.indexOf(str.toLowerCase()) === -1 ? "none" : "block");
|
articles.forEach(article => article.style.display = 'block');
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
articles.forEach(article => {
|
||||||
|
const title = article.dataset.title || '';
|
||||||
|
article.style.display = title.includes(search) ? 'block' : 'none';
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
|
document.querySelector('.search-wrapper').innerHTML =
|
||||||
|
'<input class="search" type="search" placeholder="Search">';
|
||||||
|
|
||||||
const search = document.querySelector("input[type='search']");
|
const search = document.querySelector("input[type='search']");
|
||||||
const form = document.querySelector("form");
|
const articles = Array.from(document.querySelectorAll('article'));
|
||||||
let articles = Array.from(document.querySelectorAll("article"));
|
|
||||||
|
|
||||||
search.addEventListener("input", () => filter_title(search.value));
|
search.addEventListener('input', () => filter_title(search.value, articles));
|
||||||
window.addEventListener("load", () => search.style.display = "inline-block");
|
});
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h1>{{ section.title }}</h1>
|
<h1>{{ section.title }}</h1>
|
||||||
<input class="search" type="search" placeholder="Search">
|
<div class="search-wrapper"></div>
|
||||||
{{ macros::list_posts() }}
|
{{ macros::list_posts() }}
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user