Skip to content

Commit a019b61

Browse files
authored
Merge pull request #20 from pikinier20/scaladoc/new-ui-fixes
Make SocialLinks generic. Fix navigation. Add project name
2 parents b09583f + b232f41 commit a019b61

File tree

3 files changed

+15
-31
lines changed

3 files changed

+15
-31
lines changed

scaladoc/src/dotty/tools/scaladoc/ScaladocSettings.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ class ScaladocSettings extends SettingGroup with AllScalaSettings:
5656

5757
val socialLinks: Setting[List[String]] =
5858
MultiStringSetting("-social-links", "social-links",
59-
"Links to social sites. '[github|twitter|gitter|discord]::link' syntax is used. " +
60-
"'custom::link::white_icon_name::black_icon_name' is also allowed, in this case icons must be present in 'images/'' directory.")
59+
"Links to social sites. '[github|twitter|gitter|discord]::link' syntax is used.")
6160

6261
val deprecatedSkipPackages: Setting[List[String]] =
6362
MultiStringSetting("-skip-packages", "packages", "Deprecated, please use `-skip-by-id` or `-skip-by-regex`")

scaladoc/src/dotty/tools/scaladoc/SocialLinks.scala

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,17 @@ import java.nio.file.Path
44
import java.nio.file.Paths
55
import dotty.tools.dotc.core.Contexts.Context
66

7-
enum SocialLinks(val url: String, val whiteIconName: String, val blackIconName: String):
8-
case Github(ghUrl: String) extends SocialLinks(ghUrl, "github-icon-white.png", "github-icon-black.png")
9-
case Twitter(tUrl: String) extends SocialLinks(tUrl, "twitter-icon-white.png", "twitter-icon-black.png")
10-
case Gitter(gUrl: String) extends SocialLinks(gUrl, "gitter-icon-white.png", "gitter-icon-black.png")
11-
case Discord(dUrl: String) extends SocialLinks(dUrl, "discord-icon-white.png", "discord-icon-black.png")
12-
case Custom(cUrl: String, cWhiteIconName: String, cBlackIconName: String) extends SocialLinks(cUrl, cWhiteIconName, cBlackIconName)
7+
enum SocialLinks(val url: String, val className: String):
8+
case Github(ghUrl: String) extends SocialLinks(ghUrl, "gh")
9+
case Twitter(tUrl: String) extends SocialLinks(tUrl, "twitter")
10+
case Gitter(gUrl: String) extends SocialLinks(gUrl, "gitter")
11+
case Discord(dUrl: String) extends SocialLinks(dUrl, "discord")
1312

1413
object SocialLinks:
1514
def parse(s: String): Either[String, SocialLinks] =
1615
val errorPrefix = s"Social links arg $s is invalid: "
1716
val splitted = s.split("::")
1817
splitted.head match {
19-
case "custom" if splitted.size == 4 => Right(Custom(splitted(1), splitted(2), splitted(3)))
20-
case "custom" => Left(errorPrefix + "For 'custom' arg expected three arguments: url, white icon name and black icon name")
2118
case "github" if splitted.size == 2 => Right(Github(splitted(1)))
2219
case "github" => Left(errorPrefix + "For 'github' arg expected one argument: url")
2320
case "twitter" if splitted.size == 2 => Right(Twitter(splitted(1)))

scaladoc/src/dotty/tools/scaladoc/renderers/HtmlRenderer.scala

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -142,22 +142,22 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
142142

143143
val isRootApiPageSelected = rootApiPage.fold(false)(_.link.dri == pageLink.dri)
144144
val isDocsApiPageSelected = rootDocsPage.fold(false)(_.link.dri == pageLink.dri)
145-
val apiNav = rootApiPage.map { p => p.children.map(renderNested(_, 0)) match
145+
val apiNav = rootApiPage.map { p => p.children.filterNot(_.hidden).map(renderNested(_, 0)) match
146146
case entries => (entries.exists(_._1) || isRootApiPageSelected, entries.map(_._2))
147147
}
148-
val docsNav = rootDocsPage.map { p => p.children.map(renderNested(_, 0)) match
148+
val docsNav = rootDocsPage.map { p => p.children.filterNot(_.hidden).map(renderNested(_, 0)) match
149149
case entries => (entries.exists(_._1) || isDocsApiPageSelected, entries.map(_._2))
150150
}
151151

152152
(apiNav, docsNav)
153153

154154
private def hasSocialLinks = !args.socialLinks.isEmpty
155155

156-
private def socialLinks(whiteIcon: Boolean = true) =
157-
val icon = (link: SocialLinks) => if whiteIcon then link.whiteIconName else link.blackIconName
156+
private def socialLinks =
157+
def icon(link: SocialLinks) = link.className
158158
args.socialLinks.map { link =>
159-
a(href := link.url)(
160-
span(cls := s"social-icon", Attr("data-icon-path") := icon(link))
159+
a(href := link.url) (
160+
button(cls := s"icon-button ${icon(link)}")
161161
)
162162
}
163163

@@ -213,10 +213,9 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
213213
div(cls := "header-container-left")(
214214
projectLogoElem.toSeq,
215215
darkProjectLogoElem.toSeq,
216+
span(cls := "project-name")(args.name),
216217
span(onclick := "dropdownHandler(event)", cls := "text-button with-arrow", id := "dropdown-trigger")(
217-
a()(
218-
args.projectVersion.map(v => div(cls:="projectVersion")(v)).getOrElse("")
219-
),
218+
a(args.projectVersion.map(v => div(cls:="projectVersion")(v)).toSeq),
220219
),
221220
div(id := "version-dropdown", cls := "dropdown-menu") ()
222221
),
@@ -302,18 +301,7 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
302301
"Generated with"
303302
),
304303
div(cls := "right-container")(
305-
a(href := "https://github.com/lampepfl/dotty") (
306-
button(cls := "icon-button gh")
307-
),
308-
a(href := "https://twitter.com/scala_lang") (
309-
button(cls := "icon-button twitter")
310-
),
311-
a(href := "https://discord.com/invite/scala") (
312-
button(cls := "icon-button discord"),
313-
),
314-
a(href := "https://gitter.im/scala/scala") (
315-
button(cls := "icon-button gitter"),
316-
),
304+
socialLinks,
317305
div(cls := "text")(
318306
"© 2002-2021 · LAMP/EPFL"
319307
)

0 commit comments

Comments
 (0)