Skip to content

Commit fe088bb

Browse files
Backport "Parse search query param in Scaladoc" to LTS (#20930)
Backports #19669 to the LTS branch. PR submitted by the release tooling.
2 parents 644bc4f + 88142e1 commit fe088bb

File tree

7 files changed

+26
-48
lines changed

7 files changed

+26
-48
lines changed

project/Build.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -1476,7 +1476,7 @@ object Build {
14761476
lazy val `scaladoc-js-common` = project.in(file("scaladoc-js/common")).
14771477
enablePlugins(DottyJSPlugin).
14781478
dependsOn(`scala3-library-bootstrappedJS`).
1479-
settings(libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "1.1.0").cross(CrossVersion.for3Use2_13))
1479+
settings(libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "2.8.0"))
14801480

14811481
lazy val `scaladoc-js-main` = project.in(file("scaladoc-js/main")).
14821482
enablePlugins(DottyJSPlugin).
@@ -1492,7 +1492,7 @@ object Build {
14921492
settings(
14931493
Test / fork := false,
14941494
scalaJSUseMainModuleInitializer := true,
1495-
libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "1.1.0").cross(CrossVersion.for3Use2_13)
1495+
libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "2.8.0")
14961496
)
14971497

14981498
def generateDocumentation(configTask: Def.Initialize[Task[GenerationConfig]]) =

scaladoc-js/contributors/src/content-contributors/ContentContributors.scala

+7-6
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import org.scalajs.dom.ext._
55

66
import scala.util.matching.Regex._
77
import scala.util.matching._
8-
import org.scalajs.dom.ext.Ajax
9-
import scala.scalajs.js.JSON
8+
import org.scalajs.dom._
109
import scala.scalajs.js
10+
import scala.scalajs.js.JSON
11+
import scala.scalajs.js.Thenable.Implicits.thenable2future
1112

1213
import scala.concurrent.ExecutionContext.Implicits.global
1314
import scala.concurrent.Future
@@ -55,8 +56,8 @@ class ContentContributors:
5556
def linkForFilename(filename: String) = githubContributorsUrl() + s"/commits?path=$filename"
5657
def getAuthorsForFilename(filename: String): Future[List[FullAuthor]] = {
5758
val link = linkForFilename(filename)
58-
Ajax.get(link).map(_.responseText).flatMap { json =>
59-
val res = JSON.parse(json).asInstanceOf[Commits]
59+
fetch(link).flatMap(_.json()).flatMap { json =>
60+
val res = json.asInstanceOf[Commits]
6061
val authors = res.map { commit =>
6162
commit.author match
6263
case null =>
@@ -79,8 +80,8 @@ class ContentContributors:
7980
}
8081
}
8182
def findRename(link: String, filename: String): Future[Option[String]] = {
82-
Ajax.get(link).map(_.responseText).map { json =>
83-
val res = JSON.parse(json).asInstanceOf[CommitDescription]
83+
fetch(link).flatMap(_.json()).map { json =>
84+
val res = json.asInstanceOf[CommitDescription]
8485
val files = res.files
8586
files
8687
.find(_.filename == filename)

scaladoc-js/main/src/searchbar/SearchbarComponent.scala

+13-5
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import java.net.URI
1717
class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearchEngine, parser: QueryParser):
1818
val initialChunkSize = 5
1919
val resultsChunkSize = 20
20+
21+
val querySearch = Option(URLSearchParams(window.location.search).get("search")).filter(_.nonEmpty)
22+
2023
def pathToRoot() = window.document.documentElement.getAttribute("data-pathToRoot")
2124
extension (p: PageEntry)
2225
def toHTML(boldChars: Set[Int]) =
@@ -148,7 +151,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
148151
val htmlEntries = results.map(result => result.pageEntry.toHTML(result.indices))
149152
val loadMoreElement = createLoadMoreElement
150153

151-
def loadMoreResults(entries: List[raw.HTMLElement]): Unit = {
154+
def loadMoreResults(entries: List[HTMLElement]): Unit = {
152155
loadMoreElement.onclick = (event: Event) => {
153156
entries.take(resultsChunkSize).foreach(_.classList.remove("hidden"))
154157
val nextElems = entries.drop(resultsChunkSize)
@@ -192,7 +195,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
192195
}
193196
}
194197

195-
def createLoadingAnimation: raw.HTMLElement =
198+
def createLoadingAnimation: HTMLElement =
196199
div(cls := "loading-wrapper")(
197200
div(cls := "loading")
198201
)
@@ -262,7 +265,8 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
262265
document.body.addEventListener("keydown", (e: KeyboardEvent) => handleGlobalKeyDown(e))
263266

264267
private val inputElem: html.Input =
265-
input(cls := "scaladoc-searchbar-input", `type` := "search", `placeholder`:= "Find anything").tap { element =>
268+
val initialValue = querySearch.getOrElse("")
269+
input(cls := "scaladoc-searchbar-input", `type` := "search", `placeholder`:= "Find anything", value := initialValue).tap { element =>
266270
element.addEventListener("input", { e =>
267271
clearTimeout(timeoutHandle)
268272
val inputValue = e.target.asInstanceOf[html.Input].value
@@ -346,7 +350,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
346350
val selectedElement = resultsDiv.querySelector("[selected]")
347351
if selectedElement != null then {
348352
selectedElement.removeAttribute("selected")
349-
def recur(elem: raw.Element): raw.Element = {
353+
def recur(elem: Element): Element = {
350354
val prev = elem.previousElementSibling
351355
if prev == null then null
352356
else {
@@ -366,7 +370,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
366370
}
367371
private def handleArrowDown() = {
368372
val selectedElement = resultsDiv.querySelector("[selected]")
369-
def recur(elem: raw.Element): raw.Element = {
373+
def recur(elem: Element): Element = {
370374
val next = elem.nextElementSibling
371375
if next == null then null
372376
else {
@@ -453,3 +457,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
453457
}
454458

455459
inputElem.dispatchEvent(new Event("input"))
460+
if (querySearch.isDefined && !document.body.contains(rootDiv)) {
461+
document.body.appendChild(rootDiv)
462+
inputElem.focus()
463+
}

scaladoc-js/main/src/searchbar/engine/InkuireJSSearchEngine.scala

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package dotty.tools.scaladoc
22

33
import scala.io.Source
44
import dotty.tools.scaladoc.PageEntry
5-
import org.scalajs.dom.webworkers.Worker
65
import org.scalajs.dom._
76
import scala.scalajs.js.{ JSON, Dynamic }
87
import scala.collection.mutable.ListBuffer

scaladoc-js/main/src/versions-dropdown/DropdownHandler.scala

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ import scala.util.{Success,Failure}
77
import org.scalajs.dom._
88
import org.scalajs.dom.ext._
99
import scala.scalajs.js.annotation.JSExportTopLevel
10-
import org.scalajs.dom.ext.Ajax
10+
import org.scalajs.dom._
1111
import scala.scalajs.js
1212
import scala.scalajs.js.JSON
13+
import scala.scalajs.js.Thenable.Implicits.thenable2future
1314

1415
import utils.HTML._
1516

@@ -33,7 +34,7 @@ class DropdownHandler:
3334
btn.classList.add("disabled")
3435
btn.classList.add("hidden")
3536

36-
private def getURLContent(url: String): Future[String] = Ajax.get(url).map(_.responseText)
37+
private def getURLContent(url: String): Future[String] = fetch(url).flatMap(_.text())
3738

3839
window.sessionStorage.getItem(KEY) match
3940
case null => // If no key, returns null
@@ -68,7 +69,7 @@ end DropdownHandler
6869
def dropdownHandler(e: Event) =
6970
e.stopPropagation()
7071
if document.getElementById("version-dropdown").getElementsByTagName("a").size > 0 &&
71-
window.getSelection.toString.length == 0 then
72+
window.getSelection().toString.length == 0 then
7273
document.getElementById("version-dropdown").classList.toggle("expanded")
7374
document.getElementById("dropdown-trigger").classList.toggle("selected")
7475

tests/pos-macros/i19526b/Macro.scala

-15
This file was deleted.

tests/pos-macros/i19526b/Test.scala

-16
This file was deleted.

0 commit comments

Comments
 (0)