diff --git a/scaladoc-js/resources/scaladoc-searchbar.css b/scaladoc-js/resources/scaladoc-searchbar.css index 035adbee6555..2cd7dc32b028 100644 --- a/scaladoc-js/resources/scaladoc-searchbar.css +++ b/scaladoc-js/resources/scaladoc-searchbar.css @@ -73,9 +73,15 @@ .scaladoc-searchbar-result { background: white; - line-height: 32px; - padding-left: 10px; - padding-right: 10px; + line-height: 24px; + display: flex; + padding: 4px 10px 4px 10px; +} + +.scaladoc-searchbar-result .micon { + height: 16px; + width: 16px; + margin: 4px 8px 0px 0px; } .scaladoc-searchbar-result:first-of-type { @@ -88,6 +94,8 @@ .scaladoc-searchbar-result a { color: #1f2326; + text-indent: -20px; + padding-left: 20px; } .scaladoc-searchbar-result .scaladoc-searchbar-location { diff --git a/scaladoc-js/src/searchbar/PageEntry.scala b/scaladoc-js/src/searchbar/PageEntry.scala index 7e335a9b0e0b..8caaf8c9d806 100644 --- a/scaladoc-js/src/searchbar/PageEntry.scala +++ b/scaladoc-js/src/searchbar/PageEntry.scala @@ -8,6 +8,7 @@ trait PageEntryJS extends js.Object { val t: String = js.native val d: String = js.native val l: String = js.native + val k: String = js.native } case class PageEntry( @@ -15,6 +16,7 @@ case class PageEntry( description: String, location: String, shortName: String, + kind: String, tokens: List[String] ) @@ -24,6 +26,7 @@ object PageEntry { jsObj.d, jsObj.l, jsObj.n.toLowerCase, + jsObj.k, StringUtils.createCamelCaseTokens(jsObj.n) ) } diff --git a/scaladoc-js/src/searchbar/SearchbarComponent.scala b/scaladoc-js/src/searchbar/SearchbarComponent.scala index 20f7842ad749..a1415bda81a5 100644 --- a/scaladoc-js/src/searchbar/SearchbarComponent.scala +++ b/scaladoc-js/src/searchbar/SearchbarComponent.scala @@ -11,6 +11,10 @@ class SearchbarComponent(val callback: (String) => List[PageEntry]): wrapper.classList.add("scaladoc-searchbar-result") wrapper.classList.add("monospace") + val icon = document.createElement("span").asInstanceOf[html.Span] + icon.classList.add("micon") + icon.classList.add(p.kind.take(2)) + val resultA = document.createElement("a").asInstanceOf[html.Anchor] resultA.href = Globals.pathToRoot + p.location resultA.text = s"${p.fullName}" @@ -20,6 +24,7 @@ class SearchbarComponent(val callback: (String) => List[PageEntry]): location.classList.add("scaladoc-searchbar-location") location.textContent = p.description + wrapper.appendChild(icon) wrapper.appendChild(resultA) wrapper.appendChild(location) wrapper.addEventListener("mouseover", { diff --git a/scaladoc-js/test/dotty/dokka/MatchersTest.scala b/scaladoc-js/test/dotty/dokka/MatchersTest.scala index deaa188a6c7c..b10ad501bae0 100644 --- a/scaladoc-js/test/dotty/dokka/MatchersTest.scala +++ b/scaladoc-js/test/dotty/dokka/MatchersTest.scala @@ -35,6 +35,7 @@ class MatchersTest: "", "", s"$name", + kind, StringUtils.createCamelCaseTokens(name) ) diff --git a/scaladoc/resources/dotty_res/images/enum.svg b/scaladoc/resources/dotty_res/images/enum.svg index 8d09d1bdc019..6447349a6676 100644 --- a/scaladoc/resources/dotty_res/images/enum.svg +++ b/scaladoc/resources/dotty_res/images/enum.svg @@ -1,249 +1,55 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + + e + + + - - e - + diff --git a/scaladoc/resources/dotty_res/images/enum_comp.svg b/scaladoc/resources/dotty_res/images/enum_comp.svg index d601c7692689..b38308b68106 100644 --- a/scaladoc/resources/dotty_res/images/enum_comp.svg +++ b/scaladoc/resources/dotty_res/images/enum_comp.svg @@ -1,273 +1,58 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - + + + + - - e - + + + + e + + + + diff --git a/scaladoc/resources/dotty_res/images/given.svg b/scaladoc/resources/dotty_res/images/given.svg index 02e882665efc..d210eddbc9d5 100644 --- a/scaladoc/resources/dotty_res/images/given.svg +++ b/scaladoc/resources/dotty_res/images/given.svg @@ -1,250 +1,55 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + + g + + + - - g - + diff --git a/scaladoc/resources/dotty_res/images/method.svg b/scaladoc/resources/dotty_res/images/method.svg new file mode 100644 index 000000000000..07f4d06b1b24 --- /dev/null +++ b/scaladoc/resources/dotty_res/images/method.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + d + + + + + + + diff --git a/scaladoc/resources/dotty_res/images/package.svg b/scaladoc/resources/dotty_res/images/package.svg new file mode 100644 index 000000000000..35d916dbfddb --- /dev/null +++ b/scaladoc/resources/dotty_res/images/package.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + P + + + + + + + diff --git a/scaladoc/resources/dotty_res/images/static.svg b/scaladoc/resources/dotty_res/images/static.svg new file mode 100644 index 000000000000..a857b85c8414 --- /dev/null +++ b/scaladoc/resources/dotty_res/images/static.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + S + + + + + + + diff --git a/scaladoc/resources/dotty_res/images/type.svg b/scaladoc/resources/dotty_res/images/type.svg new file mode 100644 index 000000000000..f9c17784ca46 --- /dev/null +++ b/scaladoc/resources/dotty_res/images/type.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + T + + + + + + + diff --git a/scaladoc/resources/dotty_res/images/val.svg b/scaladoc/resources/dotty_res/images/val.svg new file mode 100644 index 000000000000..d3431c5dee3a --- /dev/null +++ b/scaladoc/resources/dotty_res/images/val.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + v + + + + + + + diff --git a/scaladoc/resources/dotty_res/styles/scalastyle.css b/scaladoc/resources/dotty_res/styles/scalastyle.css index 634416eb8048..72e569bbe688 100644 --- a/scaladoc/resources/dotty_res/styles/scalastyle.css +++ b/scaladoc/resources/dotty_res/styles/scalastyle.css @@ -632,42 +632,62 @@ footer .pull-right { color:transparent; } -.micon.c { +.micon.cl { content: url("../images/class.svg") } -.micon.c-wc { +.micon.cl-wc { content: url("../images/class_comp.svg") } -.micon.o { +.micon.ob { content: url("../images/object.svg") } -.micon.o-wc { +.micon.ob-wc { content: url("../images/object_comp.svg") } -.micon.t { +.micon.tr { content: url("../images/trait.svg") } -.micon.t-wc { +.micon.tr-wc { content: url("../images/trait_comp.svg") } -.micon.e { +.micon.en { content: url("../images/enum.svg") } -.micon.e-wc { +.micon.en-wc { content: url("../images/enum_comp.svg") } -.micon.g { +.micon.gi { content: url("../images/given.svg") } +.micon.va { + content: url("../images/val.svg") +} + +.micon.ty { + content: url("../images/type.svg") +} + +.micon.st { + content: url("../images/static.svg") +} + +.micon.pa { + content: url("../images/package.svg") +} + +.micon.de { + content: url("../images/method.svg") +} + #leftColumn .socials { margin-left: 5%; margin-right: 5%; diff --git a/scaladoc/src/dotty/tools/scaladoc/renderers/HtmlRenderer.scala b/scaladoc/src/dotty/tools/scaladoc/renderers/HtmlRenderer.scala index 8d79133a5e39..057e7cfbcada 100644 --- a/scaladoc/src/dotty/tools/scaladoc/renderers/HtmlRenderer.scala +++ b/scaladoc/src/dotty/tools/scaladoc/renderers/HtmlRenderer.scala @@ -146,7 +146,7 @@ class HtmlRenderer(rootPackage: Member, val members: Map[DRI, Member])(using ctx private def buildNavigation(pageLink: Link): AppliedTag = def navigationIcon(member: Member) = member match { - case m if m.needsOwnPage => Seq(span(cls := s"micon ${member.kind.name.head}")) + case m if m.needsOwnPage => Seq(span(cls := s"micon ${member.kind.name.take(2)}")) case _ => Nil } diff --git a/scaladoc/src/dotty/tools/scaladoc/renderers/MemberRenderer.scala b/scaladoc/src/dotty/tools/scaladoc/renderers/MemberRenderer.scala index 2e58af5c3da9..fc7f4ae0601b 100644 --- a/scaladoc/src/dotty/tools/scaladoc/renderers/MemberRenderer.scala +++ b/scaladoc/src/dotty/tools/scaladoc/renderers/MemberRenderer.scala @@ -147,10 +147,9 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext ) def memberIcon(member: Member) = member.kind match { - case Kind.Package => Nil case _ => val withCompanion = member.companion.fold("")(_ => "-wc") - val iconSpan = span(cls := s"micon ${member.kind.name.head}$withCompanion")() + val iconSpan = span(cls := s"micon ${member.kind.name.take(2)}$withCompanion")() Seq(member.companion.flatMap(link(_)).fold(iconSpan)(link => a(href := link)(iconSpan))) } diff --git a/scaladoc/src/dotty/tools/scaladoc/renderers/Resources.scala b/scaladoc/src/dotty/tools/scaladoc/renderers/Resources.scala index 06c8108d6875..086f0b709cd5 100644 --- a/scaladoc/src/dotty/tools/scaladoc/renderers/Resources.scala +++ b/scaladoc/src/dotty/tools/scaladoc/renderers/Resources.scala @@ -94,21 +94,22 @@ trait Resources(using ctx: DocContext) extends Locations, Writer: case s: String => s }.mkString - def mkEntry(dri: DRI, name: String, text: String, descr: String) = jsonObject( + def mkEntry(dri: DRI, name: String, text: String, descr: String, kind: String) = jsonObject( "l" -> jsonString(absolutePath(dri)), "n" -> jsonString(name), "t" -> jsonString(text), - "d" -> jsonString(descr) + "d" -> jsonString(descr), + "k" -> jsonString(kind) ) def processPage(page: Page): Seq[JSON] = val res = page.content match - case m: Member => + case m: Member if m.kind != Kind.RootPackage => val descr = m.dri.asFileLocation def processMember(member: Member): Seq[JSON] = val signatureBuilder = ScalaSignatureProvider.rawSignature(member, InlineSignatureBuilder()).asInstanceOf[InlineSignatureBuilder] val sig = Signature(member.kind.name, " ") ++ Seq(Link(member.name, member.dri)) ++ signatureBuilder.names.reverse - val entry = mkEntry(member.dri, member.name, flattenToText(sig), descr) + val entry = mkEntry(member.dri, member.name, flattenToText(sig), descr, member.kind.name) val children = member .membersBy(m => m.kind != Kind.Package && !m.kind.isInstanceOf[Classlike]) .filter(m => m.origin == Origin.RegularlyDefined && m.inheritedFrom.isEmpty) @@ -116,7 +117,7 @@ trait Resources(using ctx: DocContext) extends Locations, Writer: processMember(m) case _ => - Seq(mkEntry(page.link.dri, page.link.name, page.link.name, "")) + Seq(mkEntry(page.link.dri, page.link.name, page.link.name, "", "static")) res ++ page.children.flatMap(processPage) @@ -138,6 +139,11 @@ trait Resources(using ctx: DocContext) extends Locations, Writer: dottyRes("images/enum.svg"), dottyRes("images/enum_comp.svg"), dottyRes("images/given.svg"), + dottyRes("images/method.svg"), + dottyRes("images/type.svg"), + dottyRes("images/val.svg"), + dottyRes("images/package.svg"), + dottyRes("images/static.svg"), dottyRes("images/github-icon-black.png"), dottyRes("images/github-icon-white.png"), dottyRes("images/discord-icon-black.png"),