From aff4bcfe4934ad308f55a9e947e8811019d9af6b Mon Sep 17 00:00:00 2001 From: "Alex Pooley (@zuedev)" Date: Sat, 30 May 2026 03:35:39 +0100 Subject: search! :O --- 174bg/handbook/source/search.js | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 174bg/handbook/source/search.js (limited to '174bg/handbook/source/search.js') diff --git a/174bg/handbook/source/search.js b/174bg/handbook/source/search.js new file mode 100644 index 0000000..d42337f --- /dev/null +++ b/174bg/handbook/source/search.js @@ -0,0 +1,36 @@ +/** + * search.js + * + * Provides simple client-side filtering of the handbook's articles. + * + * How it works: + * 1. Pressing the "/" key anywhere on the page focuses the search input + * (id "search-input"), unless focus is already needed elsewhere. + * 2. As the user types, every `
` in `
` is shown or hidden + * based on whether its text content includes the (case-insensitive) + * query string. + */ +document.addEventListener("keypress", function (event) { + if (event.key === "/") { + const searchInput = document.getElementById("search-input"); + if (searchInput) { + searchInput.focus(); + event.preventDefault(); + } + } +}); + +document + .querySelector("#search-input") + .addEventListener("input", function (event) { + const query = event.target.value.toLowerCase(); + const articles = document.querySelectorAll("main article"); + articles.forEach((article) => { + const text = article.textContent.toLowerCase(); + if (text.includes(query)) { + article.style.display = ""; + } else { + article.style.display = "none"; + } + }); + }); -- cgit v1.2.3