From f8fe54120c4d527aa01a7e00fc160a281aedbcf2 Mon Sep 17 00:00:00 2001 From: Kacper Korban Date: Mon, 12 Jul 2021 13:24:41 +0200 Subject: [PATCH] Scaladoc - Inkuire search engine UI improvements --- project/Build.scala | 2 +- .../src/searchbar/SearchbarComponent.scala | 9 +++++++-- .../resources/dotty_res/styles/search-bar.css | 6 +++--- .../src/dotty/tools/scaladoc/tasty/SymOps.scala | 16 +++++++++------- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/project/Build.scala b/project/Build.scala index c73265d13dbf..68162beb8a70 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -325,7 +325,7 @@ object Build { lazy val scalacOptionsDocSettings = Seq( "-external-mappings:" + - ".*scala.*::scaladoc3::http://dotty.epfl.ch/api/," + + ".*scala.*::scaladoc3::https://dotty.epfl.ch/api/," + ".*java.*::javadoc::https://docs.oracle.com/javase/8/docs/api/", "-skip-by-regex:.+\\.internal($|\\..+)", "-skip-by-regex:.+\\.impl($|\\..+)", diff --git a/scaladoc-js/src/searchbar/SearchbarComponent.scala b/scaladoc-js/src/searchbar/SearchbarComponent.scala index 2ca7aa310985..16fe6a22f662 100644 --- a/scaladoc-js/src/searchbar/SearchbarComponent.scala +++ b/scaladoc-js/src/searchbar/SearchbarComponent.scala @@ -167,7 +167,7 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireJSSearch if selectedElement != null then { selectedElement.removeAttribute("selected") val sibling = selectedElement.previousElementSibling - if sibling != null then { + if sibling != null && sibling.classList.contains("scaladoc-searchbar-result") then { sibling.setAttribute("selected", "") resultsDiv.scrollTop = sibling.asInstanceOf[html.Element].offsetTop - (2 * sibling.asInstanceOf[html.Element].clientHeight) } @@ -184,9 +184,14 @@ class SearchbarComponent(engine: SearchbarEngine, inkuireEngine: InkuireJSSearch } } else { val firstResult = resultsDiv.firstElementChild - if firstResult != null then { + if firstResult != null && firstResult.classList.contains("scaladoc-searchbar-result") then { firstResult.setAttribute("selected", "") resultsDiv.scrollTop = firstResult.asInstanceOf[html.Element].offsetTop - (2 * firstResult.asInstanceOf[html.Element].clientHeight) + } else if firstResult != null && firstResult.firstElementChild != null && firstResult.firstElementChild.nextElementSibling != null then { + // for Inkuire there is another wrapper to avoid displaying old results + the first (child) div is a loading animation wrapper | should be resolved in #12995 + val properFirstResult = firstResult.firstElementChild.nextElementSibling + properFirstResult.setAttribute("selected", "") + resultsDiv.scrollTop = properFirstResult.asInstanceOf[html.Element].offsetTop - (2 * properFirstResult.asInstanceOf[html.Element].clientHeight) } } } diff --git a/scaladoc/resources/dotty_res/styles/search-bar.css b/scaladoc/resources/dotty_res/styles/search-bar.css index cb0167d43503..f778bf43c186 100644 --- a/scaladoc/resources/dotty_res/styles/search-bar.css +++ b/scaladoc/resources/dotty_res/styles/search-bar.css @@ -75,8 +75,8 @@ width: 10px; height: 10px; border-radius: 5px; - background-color: white; - color: white; + background-color: var(--shadow); + color: var(--shadow); animation: dotFlashing 1s infinite alternate; display: inline-block; position: absolute; @@ -104,6 +104,6 @@ background-color: var(--leftbar-bg); } 100% { - background-color: white; + background-color: var(--shadow); } } \ No newline at end of file diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/SymOps.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/SymOps.scala index 17500897b238..6563ba89f8b3 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/SymOps.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/SymOps.scala @@ -218,13 +218,15 @@ class SymOpsWithLinkCache: import dotty.tools.dotc given ctx: dotc.core.Contexts.Context = quotes.asInstanceOf[scala.quoted.runtime.impl.QuotesImpl].ctx val csym = sym.asInstanceOf[dotc.core.Symbols.Symbol] - val extLink = if externalLinkCache.contains(csym.associatedFile) then externalLinkCache(csym.associatedFile) - else { - val calculatedLink = Option(csym.associatedFile).map(_.path).flatMap( path => - dctx.externalDocumentationLinks.find(_.originRegexes.exists(r => r.matches(path)))) - externalLinkCache += (csym.associatedFile -> calculatedLink) - calculatedLink - } + val extLink = if externalLinkCache.contains(csym.associatedFile) + then externalLinkCache(csym.associatedFile) + else { + val calculatedLink = Option(csym.associatedFile).map(_.path).flatMap { path => + dctx.externalDocumentationLinks.find(_.originRegexes.exists(r => r.matches(path))) + } + externalLinkCache += (csym.associatedFile -> calculatedLink) + calculatedLink + } extLink.map(link => sym.constructPath(location, anchor, link)) }