From f7a354758d05efed538a2c3d80eec691d9a1119c Mon Sep 17 00:00:00 2001 From: binarycat Date: Thu, 29 Aug 2024 12:56:41 -0400 Subject: [PATCH 1/6] WIP: add contextual panel only shown when search bar is focused --- src/librustdoc/html/static/js/storage.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/librustdoc/html/static/js/storage.js b/src/librustdoc/html/static/js/storage.js index 4a27ca92fff38..71bdb2b624966 100644 --- a/src/librustdoc/html/static/js/storage.js +++ b/src/librustdoc/html/static/js/storage.js @@ -277,6 +277,9 @@ class RustdocSearchElement extends HTMLElement { Settings +
+ example query goes here +
`; } From 8f55b2e88783322c5bde1c0b9eb9791029e95f38 Mon Sep 17 00:00:00 2001 From: binarycat Date: Thu, 29 Aug 2024 17:08:53 -0400 Subject: [PATCH 2/6] add new panel that shows up when the search bar is hovered --- src/librustdoc/html/static/css/rustdoc.css | 22 ++++++++++++++++++++++ src/librustdoc/html/static/js/storage.js | 6 ++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 28df8d3f011fe..cddf74dcdf9ed 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -1669,6 +1669,28 @@ a.tooltip:hover::after { font-weight: normal; } +/* panel that only shows up during searches */ +#search-focus-panel { + position: absolute; + display: none; + background-color: var(--main-background-color); + border-width: 1px; + border-color: var(--border-color); + border-style: solid; + padding: 3px; + text-wrap: nowrap; + z-index: 1; + top: 0; +} + +rustdoc-search { + position: relative; +} + +rustdoc-search:focus-within #search-focus-panel { + display: block; +} + #src-sidebar { width: 100%; overflow: auto; diff --git a/src/librustdoc/html/static/js/storage.js b/src/librustdoc/html/static/js/storage.js index 71bdb2b624966..c724f447de424 100644 --- a/src/librustdoc/html/static/js/storage.js +++ b/src/librustdoc/html/static/js/storage.js @@ -277,11 +277,9 @@ class RustdocSearchElement extends HTMLElement { Settings -
- example query goes here -
- `; + +
example query goes here
`; } } window.customElements.define("rustdoc-search", RustdocSearchElement); From d377447377d36eb9489c457f88937839b4260b43 Mon Sep 17 00:00:00 2001 From: binarycat Date: Thu, 29 Aug 2024 21:05:36 -0400 Subject: [PATCH 3/6] move crate picker into new search panel --- src/librustdoc/html/static/js/search.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index be0ec425946c2..12f7a2088e81e 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -2815,15 +2815,7 @@ ${item.displayPath}${name}\ } } - let crates = ""; - if (rawSearchIndex.size > 1) { - crates = " in 
"; - } + let crates = ""; let output = `

Results${crates}

`; if (results.query.error !== null) { @@ -3885,6 +3877,19 @@ ${item.displayPath}${name}\ exports.execQuery = execQuery; exports.parseQuery = parseQuery; } + + + console.log(rawSearchIndex); + let crates = ""; + if (rawSearchIndex.size > 1) { + crates = "
"; + } + document.getElementById("search-focus-panel").innerHTML = crates; } if (typeof window !== "undefined") { From ad8890f4c151a883cea234b4d31da67dea906d9f Mon Sep 17 00:00:00 2001 From: binarycat Date: Thu, 29 Aug 2024 21:09:20 -0400 Subject: [PATCH 4/6] change placeholder text --- src/librustdoc/html/static/js/storage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librustdoc/html/static/js/storage.js b/src/librustdoc/html/static/js/storage.js index c724f447de424..6f470e47c5412 100644 --- a/src/librustdoc/html/static/js/storage.js +++ b/src/librustdoc/html/static/js/storage.js @@ -279,7 +279,7 @@ class RustdocSearchElement extends HTMLElement { -
example query goes here
`; +
loading crate list...
`; } } window.customElements.define("rustdoc-search", RustdocSearchElement); From 6f9fde62c7489aa13d44ce6baa21a72f75ee8775 Mon Sep 17 00:00:00 2001 From: binarycat Date: Fri, 30 Aug 2024 12:17:51 -0400 Subject: [PATCH 5/6] use spaces, not tabs --- src/librustdoc/html/static/js/search.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index 12f7a2088e81e..c574a03863a62 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -2815,7 +2815,7 @@ ${item.displayPath}${name}\ } } - let crates = ""; + let crates = ""; let output = `

Results${crates}

`; if (results.query.error !== null) { @@ -3879,9 +3879,9 @@ ${item.displayPath}${name}\ } - console.log(rawSearchIndex); - let crates = ""; - if (rawSearchIndex.size > 1) { + console.log(rawSearchIndex); + let crates = ""; + if (rawSearchIndex.size > 1) { crates = "
"; } - document.getElementById("search-focus-panel").innerHTML = crates; + document.getElementById("search-focus-panel").innerHTML = crates; } if (typeof window !== "undefined") { From 68f61eb206f0f85618d1a15c6cde120398aa7516 Mon Sep 17 00:00:00 2001 From: binarycat Date: Fri, 30 Aug 2024 13:48:13 -0400 Subject: [PATCH 6/6] make crate selector more explanatory --- src/librustdoc/html/static/css/rustdoc.css | 2 +- src/librustdoc/html/static/js/search.js | 18 +++++++++--------- src/librustdoc/html/static/js/storage.js | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index cddf74dcdf9ed..531c20a4f7b5f 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -1036,7 +1036,7 @@ table, } /* pseudo-element for holding the dropdown-arrow image; needs to be a separate thing so that we can apply CSS-filters to change the arrow color in themes */ -#crate-search-div::after { +#crate-search::after { /* lets clicks through! */ pointer-events: none; /* completely covers the underlying div */ diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index c574a03863a62..4e8bc6d5047f4 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -2760,7 +2760,7 @@ ${item.displayPath}${name}\ * @param {boolean} go_to_first * @param {string} filterCrates */ - async function showResults(results, go_to_first, filterCrates) { + async function showResults(results, go_to_first, _filterCrates) { const search = searchState.outputElement(); if (go_to_first || (results.others.length === 1 && getSettingValue("go-to-only-result") === "true") @@ -2815,9 +2815,7 @@ ${item.displayPath}${name}\ } } - let crates = ""; - - let output = `

Results${crates}

`; + let output = "

Results

"; if (results.query.error !== null) { const error = results.query.error; error.forEach((value, index) => { @@ -3879,17 +3877,19 @@ ${item.displayPath}${name}\ } - console.log(rawSearchIndex); - let crates = ""; + let crates = "Searching in "; if (rawSearchIndex.size > 1) { - crates = "
" + ""; for (const c of rawSearchIndex.keys()) { + console.log(c); crates += ``; } - crates += "
"; + crates += ""; + } else { + crates += rawSearchIndex.keys().next().value; } - document.getElementById("search-focus-panel").innerHTML = crates; + document.getElementById("crate-search-div").innerHTML = crates; } if (typeof window !== "undefined") { diff --git a/src/librustdoc/html/static/js/storage.js b/src/librustdoc/html/static/js/storage.js index 6f470e47c5412..18c67c3bf6e47 100644 --- a/src/librustdoc/html/static/js/storage.js +++ b/src/librustdoc/html/static/js/storage.js @@ -279,7 +279,7 @@ class RustdocSearchElement extends HTMLElement { -
loading crate list...
`; +
loading crate list...
`; } } window.customElements.define("rustdoc-search", RustdocSearchElement);