@@ -17,6 +17,9 @@ import java.net.URI
1717class 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+ }
0 commit comments