From 6d4b4d9ef080bd2fb2fe0cd81789998ff6064167 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Tue, 7 Oct 2025 11:17:44 -0700 Subject: [PATCH] rustdoc-search: keep hourglass in searchbar --- src/librustdoc/html/static/css/rustdoc.css | 7 ------ src/librustdoc/html/static/js/search.js | 29 ++++++++++------------ 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/src/librustdoc/html/static/css/rustdoc.css b/src/librustdoc/html/static/css/rustdoc.css index 8078f87756dd..7f4785694849 100644 --- a/src/librustdoc/html/static/css/rustdoc.css +++ b/src/librustdoc/html/static/css/rustdoc.css @@ -339,7 +339,6 @@ summary.hideme, .scraped-example-list, .rustdoc-breadcrumbs, .search-switcher, -.search-throbber, /* This selector is for the items listed in the "all items" page. */ ul.all-items { font-family: "Fira Sans", Arial, NanumBarunGothic, sans-serif; @@ -2007,12 +2006,6 @@ a.tooltip:hover::after { color: transparent; } -.search-throbber { - position: relative; - height: 34px; -} - -.search-throbber::after, .search-form.loading::after { width: 18px; diff --git a/src/librustdoc/html/static/js/search.js b/src/librustdoc/html/static/js/search.js index ba8363b1a914..0929d351463c 100644 --- a/src/librustdoc/html/static/js/search.js +++ b/src/librustdoc/html/static/js/search.js @@ -1,5 +1,5 @@ // ignore-tidy-filelength -/* global addClass, getNakedUrl, getVar, nonnull, getSettingValue */ +/* global addClass, getNakedUrl, getVar, getSettingValue, hasClass, nonnull */ /* global onEachLazy, removeClass, searchState, browserSupportsHistoryApi */ "use strict"; @@ -4804,6 +4804,15 @@ function printTab(nb) { if (nb === iter) { addClass(elem, "selected"); foundCurrentTab = true; + onEachLazy(document.querySelectorAll( + ".search-form", + ), form => { + if (hasClass(elem.firstElementChild, "loading")) { + addClass(form, "loading"); + } else { + removeClass(form, "loading"); + } + }); } else { removeClass(elem, "selected"); } @@ -4904,11 +4913,6 @@ async function addTab(results, query, display, finishedCallback, isTypeSearch) { let output = document.createElement("ul"); output.className = "search-results " + extraClass; - const throbber = document.createElement("div"); - throbber.className = "search-throbber"; - throbber.innerHTML = "Loading..."; - output.appendChild(throbber); - let count = 0; /** @type {Promise[]} */ @@ -5015,7 +5019,7 @@ ${obj.displayPath}${name}\ } link.appendChild(description); - output.insertBefore(link, throbber); + output.appendChild(link); results.next().then(async nextResult => { if (nextResult.value) { @@ -5026,7 +5030,6 @@ ${obj.displayPath}${name}\ // running this callback yieldToBrowser().then(() => { finishedCallback(count, output); - throbber.remove(); }); } }); @@ -5164,6 +5167,7 @@ function makeTab(tabNb, text, results, query, isTypeSearch, goToFirst) { count < 100 ? `\u{2007}(${count})\u{2007}` : `\u{2007}(${count})`; tabCount.innerHTML = fmtNbElems; tabCount.className = "count"; + printTab(window.searchState.currentTab); }, isTypeSearch), ]; } @@ -5227,9 +5231,7 @@ async function showResults(docSearch, results, goToFirst, filterCrates) { tabsElem.appendChild(tab); const isCurrentTab = window.searchState.currentTab === tabNb; const placeholder = document.createElement("div"); - placeholder.className = isCurrentTab ? - "search-throbber search-results active" : - "search-throbber search-results"; + placeholder.className = isCurrentTab ? "search-results active" : "search-results"; placeholder.innerHTML = "Loading..."; output.then(output => { if (placeholder.parentElement) { @@ -5487,11 +5489,6 @@ if (ROOT_PATH === null) { const database = await Stringdex.loadDatabase(hooks); if (typeof window !== "undefined") { docSearch = new DocSearch(ROOT_PATH, database); - onEachLazy(document.querySelectorAll( - ".search-form.loading", - ), form => { - removeClass(form, "loading"); - }); registerSearchEvents(); // If there's a search term in the URL, execute the search now. if (window.searchState.getQueryStringParams().search !== undefined) {