diff --git a/index.xhtml b/index.xhtml index 8948f32c..56a87634 100644 --- a/index.xhtml +++ b/index.xhtml @@ -6,7 +6,7 @@ nvf manual - + diff --git a/options.html b/options.html index 175a2742..75517560 100644 --- a/options.html +++ b/options.html @@ -6,7 +6,7 @@ Appendix B. Neovim Flake Configuration Options - + @@ -103,8 +103,9 @@ boolean

-

Whether to enable [official documentation]: https://neovim.io/doc/user/lua.html#vim.loader.enable()

the experimental Lua module loader to speed up the start up process

If true, this will enable the experimental Lua module loader which:

Note

This is disabled by default. Before setting this option, please -take a look at the [official documentation].

.

+

the experimental Lua module loader to speed up the start up process

If true, this will enable the experimental Lua module loader which:

Note

The Lua module loader is disabled by default. Before setting this option, please +take a look at the official documentation. This option may be enabled by +default in the future.

Type: boolean

diff --git a/quirks.html b/quirks.html index 5a52ce94..4ff1fa95 100644 --- a/quirks.html +++ b/quirks.html @@ -6,7 +6,7 @@ Appendix A. Known Issues and Quirks - + diff --git a/release-notes.html b/release-notes.html index a17e1321..b581e62c 100644 --- a/release-notes.html +++ b/release-notes.html @@ -6,7 +6,7 @@ Appendix C. Release Notes - + diff --git a/script/search.js b/script/search.js new file mode 100644 index 00000000..e20c2314 --- /dev/null +++ b/script/search.js @@ -0,0 +1,58 @@ +document.addEventListener("DOMContentLoaded", () => { + if (!window.location.pathname.endsWith("options.html")) return; + + const searchDiv = document.createElement("div"); + searchDiv.id = "search-bar"; + searchDiv.innerHTML = ` + +
+ `; + document.body.prepend(searchDiv); + + const dtElements = Array.from(document.querySelectorAll("dt")); + const ddElements = Array.from(document.querySelectorAll("dd")); + const dtOptionIds = dtElements.map( + (dt) => dt.querySelector("a")?.id.toLowerCase() || "", + ); + + if (dtElements.length === 0 || ddElements.length === 0) { + console.warn("Something went wrong, page may be loaded incorrectly."); + return; + } + + const dtElementsData = dtElements.map((dt, index) => ({ + element: dt, + id: dtOptionIds[index], + ddElement: ddElements[index], + })); + + const hiddenClass = "hidden"; + const hiddenStyle = document.createElement("style"); + hiddenStyle.innerHTML = `.${hiddenClass} { display: none; }`; + document.head.appendChild(hiddenStyle); + + let debounceTimeout; + document.getElementById("search-input").addEventListener("input", (event) => { + clearTimeout(debounceTimeout); + debounceTimeout = setTimeout(() => { + const query = event.target.value.toLowerCase(); + + const matches = []; + const nonMatches = []; + + dtElementsData.forEach(({ element, id, ddElement }) => { + const isMatch = id.includes(query); + if (isMatch) { + matches.push(element, ddElement); + } else { + nonMatches.push(element, ddElement); + } + }); + + requestAnimationFrame(() => { + matches.forEach((el) => el?.classList.remove(hiddenClass)); + nonMatches.forEach((el) => el?.classList.add(hiddenClass)); + }); + }, 200); + }); +}); diff --git a/style.css b/style.css index 9376c288..2ec4c76b 100644 --- a/style.css +++ b/style.css @@ -437,10 +437,14 @@ th:last-child { dt { margin: 1.2rem 0 0.8rem; + content-visibility: auto; + contain-intrinsic-size: auto 42px; } dd { margin-left: 2rem; + content-visibility: auto; + contain-intrinsic-size: auto 500px; } ul { @@ -494,6 +498,35 @@ li:last-child { text-decoration: none; } +#search-bar { + position: sticky; + top: 0; + background: white; + padding: 10px; + border-bottom: 1px solid #e5e7eb; + z-index: 1000; +} +@media (prefers-color-scheme: dark) { + #search-bar { + background: #111827; + color: #f9fafb; + border-bottom: 1px solid black; + } +} + +#search-input { + width: 100%; + padding: 8px; + border: 1px solid #ccc; + border-radius: 4px; + background: inherit; + color: inherit; +} + +.hidden { + display: none; +} + div.titlepage { margin: 40px 0; }