@@ -3,9 +3,9 @@ package dotty.dokka
33import org .scalajs .dom ._
44import org .scalajs .dom .html .Input
55
6- class SearchbarComponent (val callback : (String ) => List [PageEntry ]) {
6+ class SearchbarComponent (val callback : (String ) => List [PageEntry ]):
77 extension (p : PageEntry )
8- def toHTML = {
8+ def toHTML =
99 val wrapper = document.createElement(" div" )
1010 wrapper.classList.add(" scala3doc-searchbar-result" )
1111 wrapper.classList.add(" monospace" )
@@ -22,41 +22,53 @@ class SearchbarComponent(val callback: (String) => List[PageEntry]) {
2222 wrapper.appendChild(resultA)
2323 wrapper.appendChild(location)
2424 wrapper
25- }
2625
27- def handleNewQuery (query : String ) = {
26+ def handleNewQuery (query : String ) =
2827 val result = callback(query).map(_.toHTML)
2928 while (resultsDiv.hasChildNodes()) resultsDiv.removeChild(resultsDiv.lastChild)
3029 result.foreach(resultsDiv.appendChild)
31- }
3230
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 ) =>
3736 if (rootDiv.className.contains(" hidden" ))
3837 rootDiv.className = rootShowClasses
3938 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)
4148 element
42- }
4349
44- private val input : html.Input = {
50+
51+ private val input : html.Input =
4552 val element = document.createElement(" input" ).asInstanceOf [html.Input ]
4653 element.id = " scala3doc-searchbar-input"
4754 element.addEventListener(" input" , (e) => handleNewQuery(e.target.asInstanceOf [html.Input ].value))
4855 element
49- }
5056
51- private val resultsDiv : html.Div = {
57+ private val resultsDiv : html.Div =
5258 val element = document.createElement(" div" ).asInstanceOf [html.Div ]
5359 element.id = " scala3doc-searchbar-results"
5460 element
55- }
5661
5762 private val rootHiddenClasses = " hidden"
5863 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 =
6072 val element = document.createElement(" div" ).asInstanceOf [html.Div ]
6173 element.addEventListener(" click" , (e : Event ) => e.stopPropagation())
6274 logoClick.addEventListener(" click" , (e : Event ) => e.stopPropagation())
@@ -67,7 +79,5 @@ class SearchbarComponent(val callback: (String) => List[PageEntry]) {
6779 element.appendChild(resultsDiv)
6880 document.body.appendChild(element)
6981 element
70- }
7182
7283 handleNewQuery(" " )
73- }
0 commit comments