@@ -3,9 +3,9 @@ package dotty.dokka
3
3
import org .scalajs .dom ._
4
4
import org .scalajs .dom .html .Input
5
5
6
- class SearchbarComponent (val callback : (String ) => List [PageEntry ]) {
6
+ class SearchbarComponent (val callback : (String ) => List [PageEntry ]):
7
7
extension (p : PageEntry )
8
- def toHTML = {
8
+ def toHTML =
9
9
val wrapper = document.createElement(" div" )
10
10
wrapper.classList.add(" scala3doc-searchbar-result" )
11
11
wrapper.classList.add(" monospace" )
@@ -22,41 +22,53 @@ class SearchbarComponent(val callback: (String) => List[PageEntry]) {
22
22
wrapper.appendChild(resultA)
23
23
wrapper.appendChild(location)
24
24
wrapper
25
- }
26
25
27
- def handleNewQuery (query : String ) = {
26
+ def handleNewQuery (query : String ) =
28
27
val result = callback(query).map(_.toHTML)
29
28
while (resultsDiv.hasChildNodes()) resultsDiv.removeChild(resultsDiv.lastChild)
30
29
result.foreach(resultsDiv.appendChild)
31
- }
32
30
33
- private val logoClick : html.Span = {
34
- val element = document.createElement(" span" ).asInstanceOf [html.Span ]
35
- element.id = " scala3doc-search"
36
- element.onclick = (event : Event ) =>
31
+ private val logoClick : html.Div =
32
+ val span = document.createElement(" span" ).asInstanceOf [html.Span ]
33
+ span.innerHTML = """ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"><path d="M19.64 18.36l-6.24-6.24a7.52 7.52 0 10-1.28 1.28l6.24 6.24zM7.5 13.4a5.9 5.9 0 115.9-5.9 5.91 5.91 0 01-5.9 5.9z"></path></svg>"""
34
+ span.id = " scala3doc-search"
35
+ span.onclick = (event : Event ) =>
37
36
if (rootDiv.className.contains(" hidden" ))
38
37
rootDiv.className = rootShowClasses
39
38
else rootDiv.className = rootHiddenClasses
40
- document.getElementById(" searchBar" ).appendChild(element)
39
+
40
+ val element = createNestingDiv(" search-content" )(
41
+ createNestingDiv(" search-conatiner" )(
42
+ createNestingDiv(" search" )(
43
+ span
44
+ )
45
+ )
46
+ )
47
+ document.getElementById(" scala3doc-searchBar" ).appendChild(element)
41
48
element
42
- }
43
49
44
- private val input : html.Input = {
50
+
51
+ private val input : html.Input =
45
52
val element = document.createElement(" input" ).asInstanceOf [html.Input ]
46
53
element.id = " scala3doc-searchbar-input"
47
54
element.addEventListener(" input" , (e) => handleNewQuery(e.target.asInstanceOf [html.Input ].value))
48
55
element
49
- }
50
56
51
- private val resultsDiv : html.Div = {
57
+ private val resultsDiv : html.Div =
52
58
val element = document.createElement(" div" ).asInstanceOf [html.Div ]
53
59
element.id = " scala3doc-searchbar-results"
54
60
element
55
- }
56
61
57
62
private val rootHiddenClasses = " hidden"
58
63
private val rootShowClasses = " "
59
- private val rootDiv : html.Div = {
64
+
65
+ private def createNestingDiv (className : String )(innerElement : html.Element ): html.Div =
66
+ val element = document.createElement(" div" ).asInstanceOf [html.Div ]
67
+ element.className = className
68
+ element.appendChild(innerElement)
69
+ element
70
+
71
+ private val rootDiv : html.Div =
60
72
val element = document.createElement(" div" ).asInstanceOf [html.Div ]
61
73
element.addEventListener(" click" , (e : Event ) => e.stopPropagation())
62
74
logoClick.addEventListener(" click" , (e : Event ) => e.stopPropagation())
@@ -67,7 +79,5 @@ class SearchbarComponent(val callback: (String) => List[PageEntry]) {
67
79
element.appendChild(resultsDiv)
68
80
document.body.appendChild(element)
69
81
element
70
- }
71
82
72
83
handleNewQuery(" " )
73
- }
0 commit comments