@@ -17,6 +17,9 @@ import java.net.URI
17
17
class SearchbarComponent (engine : PageSearchEngine , inkuireEngine : InkuireJSSearchEngine , parser : QueryParser ):
18
18
val initialChunkSize = 5
19
19
val resultsChunkSize = 20
20
+
21
+ val querySearch = Option (URLSearchParams (window.location.search).get(" search" )).filter(_.nonEmpty)
22
+
20
23
def pathToRoot () = window.document.documentElement.getAttribute(" data-pathToRoot" )
21
24
extension (p : PageEntry )
22
25
def toHTML (boldChars : Set [Int ]) =
@@ -148,7 +151,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
148
151
val htmlEntries = results.map(result => result.pageEntry.toHTML(result.indices))
149
152
val loadMoreElement = createLoadMoreElement
150
153
151
- def loadMoreResults (entries : List [raw. HTMLElement ]): Unit = {
154
+ def loadMoreResults (entries : List [HTMLElement ]): Unit = {
152
155
loadMoreElement.onclick = (event : Event ) => {
153
156
entries.take(resultsChunkSize).foreach(_.classList.remove(" hidden" ))
154
157
val nextElems = entries.drop(resultsChunkSize)
@@ -192,7 +195,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
192
195
}
193
196
}
194
197
195
- def createLoadingAnimation : raw. HTMLElement =
198
+ def createLoadingAnimation : HTMLElement =
196
199
div(cls := " loading-wrapper" )(
197
200
div(cls := " loading" )
198
201
)
@@ -262,7 +265,8 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
262
265
document.body.addEventListener(" keydown" , (e : KeyboardEvent ) => handleGlobalKeyDown(e))
263
266
264
267
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 =>
266
270
element.addEventListener(" input" , { e =>
267
271
clearTimeout(timeoutHandle)
268
272
val inputValue = e.target.asInstanceOf [html.Input ].value
@@ -346,7 +350,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
346
350
val selectedElement = resultsDiv.querySelector(" [selected]" )
347
351
if selectedElement != null then {
348
352
selectedElement.removeAttribute(" selected" )
349
- def recur (elem : raw. Element ): raw. Element = {
353
+ def recur (elem : Element ): Element = {
350
354
val prev = elem.previousElementSibling
351
355
if prev == null then null
352
356
else {
@@ -366,7 +370,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
366
370
}
367
371
private def handleArrowDown () = {
368
372
val selectedElement = resultsDiv.querySelector(" [selected]" )
369
- def recur (elem : raw. Element ): raw. Element = {
373
+ def recur (elem : Element ): Element = {
370
374
val next = elem.nextElementSibling
371
375
if next == null then null
372
376
else {
@@ -453,3 +457,7 @@ class SearchbarComponent(engine: PageSearchEngine, inkuireEngine: InkuireJSSearc
453
457
}
454
458
455
459
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