all repos — searchix @ 42bcd10f010f884bddb0142c31b526faace24186

Search engine for NixOS, nix-darwin, home-manager and NUR users

feat: clicking another source re-uses query

Alan Pearce
commit

42bcd10f010f884bddb0142c31b526faace24186

parent

f769decb676f26210bd6884d33e84ada5898b17c

1 file changed, 17 insertions(+), 1 deletion(-)

changed files
M frontend/static/search.jsfrontend/static/search.js
@@ -1,4 +1,6 @@
const search = document.getElementById("search"); +const nav = document.querySelectorAll("body > header > nav")[0]; +const queryInput = document.getElementById("query"); let results = document.getElementById("results"); let pagination = document.getElementById("pagination");
@@ -91,6 +93,20 @@ console.error("fetch failed", error);
} } +queryInput.addEventListener("input", function (ev) { + for (const el of nav.children) { + if (el.nodeName === "A") { + const url = new URL(el.href); + if (ev.target.value) { + url.searchParams.set("query", ev.target.value); + } else { + url.searchParams.delete("query"); + } + el.href = url.toString(); + } + } +}); + search.addEventListener("submit", function (ev) { const url = new URL(this.action); const formData = new FormData(this);
@@ -119,7 +135,7 @@ addEventListener("popstate", function (ev) {
if (ev.state != null) { url = new URL(ev.state.url); if (!url.pathname.endsWith("/search") && ev.state.fragment !== null) { - document.getElementById("query").value = ev.state.input; + queryInput.value = ev.state.input; renderFragmentHTML(ev.state.fragment); return; }