Skip to content

Commit 587ed9c

Browse files
committed
Sidebar refactor
1 parent 0aece59 commit 587ed9c

File tree

5 files changed

+64
-46
lines changed

5 files changed

+64
-46
lines changed

scaladoc-js/resources/versions-dropdown.css

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
/* Dropdown Button */
77
.dropdownbtn {
8-
background-color: var(--leftbar-bg);
9-
color: white;
108
padding: 4px 12px;
119
border: none;
1210
}

scaladoc/resources/dotty_res/styles/scalastyle.css

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,25 @@ body, button, input {
3434
width: var(--side-width);
3535
height: 100%;
3636
border-right: none;
37-
background: var(--leftbar-bg);
37+
background: var(--body-bg);
3838
display: flex;
3939
flex-direction: column;
4040
z-index: 5;
41-
border-right: solid var(--leftbar-border);
41+
border-right: solid 1px var(--leftbar-border);
4242
}
4343
main {
4444
min-height: calc(100vh - var(--footer-height) - 24px);
45-
}
46-
#content {
4745
margin-left: var(--side-width);
4846
padding: var(--content-padding);
4947
padding-bottom: calc(24px + var(--footer-height));
48+
49+
display:flex;
50+
flex-direction: column;
51+
align-items: center;
52+
}
53+
#content {
54+
max-width: 1100px;
55+
width: 100%;
5056
}
5157

5258
/* Text */
@@ -97,7 +103,6 @@ a, a:visited, span[data-unresolved-link] {
97103
}
98104
a:hover, a:active {
99105
color: var(--link-hover-fg);
100-
text-decoration: underline;
101106
}
102107

103108
/* Tables */
@@ -144,7 +149,6 @@ th {
144149
}
145150

146151
#logo .projectVersion {
147-
color: var(--grey600);
148152
font-size: 12px;
149153
display: flex;
150154
padding-left: 2px;
@@ -186,21 +190,37 @@ th {
186190
}
187191

188192
/* divs in sidebar represent entry and its children */
189-
#sideMenu2 div {
190-
position: relative;
191-
display: none;
193+
#sideMenu2 .content {
192194
padding-left: 0.8em;
193195
}
194196

195-
#sideMenu2 div.expanded {
196-
display: block;
197+
#sideMenu2 > div {
198+
padding-left: 0em;
197199
}
198200

199-
/* hide children of hidden entries even if are expanded */
200-
#sideMenu2 div>div.expanded {
201+
#sideMenu2 .nav-item {
201202
display: none;
202203
}
203204

205+
#sideMenu2 > .nav-item {
206+
display: block;
207+
}
208+
209+
#sideMenu2 .nav-header a:only-child {
210+
padding-left: 20px;
211+
}
212+
213+
#sideMenu2 .nav-header {
214+
display: flex;
215+
flex-direction: row;
216+
align-items: center;
217+
border-radius: 3px;
218+
}
219+
220+
#sideMenu2 .nav-item.expanded > .content > .nav-item {
221+
display: block;
222+
}
223+
204224
/* show direct children of currently exmanded node*/
205225
#sideMenu2 div.expanded>div {
206226
display: block;
@@ -220,18 +240,11 @@ th {
220240
#sideMenu2 a {
221241
display: flex;
222242
align-items: center;
223-
flex: 1;
224243
overflow-wrap: anywhere;
225244
color: var(--leftbar-fg);
226-
width: calc(2 * var(--side-width));
227-
margin-right: .5rem;
228-
margin-left: calc(0px - var(--side-width));
229245
padding-top: 2%;
230246
padding-bottom: 2%;
231-
padding-left: calc(1.015 * var(--side-width));
232-
padding-right: calc(0.15 * var(--side-width));
233247
box-sizing: border-box;
234-
text-decoration: none;
235248
}
236249

237250
#sideMenu2 a span:not(.micon) {
@@ -244,24 +257,20 @@ th {
244257
margin-right: 0.5ex;
245258
}
246259

247-
#sideMenu2 a.selected {
260+
#sideMenu2 .nav-header.selected {
248261
background: var(--leftbar-current-bg);
249262
color: var(--leftbar-current-fg);
250263
font-weight: bold;
251264
}
252265

253-
#sideMenu2 a:hover {
266+
#sideMenu2 .nav-header:hover {
254267
color: var(--leftbar-hover-fg);
255268
background: var(--leftbar-hover-bg);
269+
cursor: pointer;
256270
}
257-
258271
/* spans represent a expand button */
259272
span.ar {
260-
align-items: center;
261273
cursor: pointer;
262-
position: absolute;
263-
right: 0.6em;
264-
top: calc(0.01 * var(--side-width));
265274
}
266275

267276
span.ar::before {
@@ -597,6 +606,7 @@ footer .mode {
597606
.signature.monospace {
598607
padding: 8px;
599608
display: flex;
609+
flex-direction: column;
600610
border-radius: 3px;
601611
}
602612

@@ -608,6 +618,10 @@ footer .mode {
608618
color: var(--link-sig-fg);
609619
}
610620

621+
.signature a:hover {
622+
color: var(--link-hover-fg);
623+
}
624+
611625
.expand .signature {
612626
display: table-cell;
613627
}
@@ -928,4 +942,8 @@ footer .socials {
928942
margin: 0 8px 0 0;
929943
}
930944

945+
.breadcrumbs {
946+
align-self: flex-start;
947+
}
948+
931949

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

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,8 @@ class HtmlRenderer(rootPackage: Member, val members: Map[DRI, Member])(using ctx
198198

199199
def renderNested(nav: Page, toplevel: Boolean = false): (Boolean, AppliedTag) =
200200
val isSelected = nav.link.dri == pageLink.dri
201-
def linkHtml(expanded: Boolean = false) =
201+
202+
def linkHtml(expanded: Boolean = false, withArrow: Boolean = false) =
202203
val attrs: Seq[String] = Seq(
203204
Option.when(isSelected)("selected"),
204205
Option.when(expanded)("expanded")
@@ -207,19 +208,23 @@ class HtmlRenderer(rootPackage: Member, val members: Map[DRI, Member])(using ctx
207208
case m: Member => navigationIcon(m)
208209
case _ => Nil
209210
}
210-
Seq(a(href := pathToPage(pageLink.dri, nav.link.dri), cls := attrs.mkString(" "))(icon, span(nav.link.name)))
211+
Seq(
212+
span(cls := "nav-header " + attrs.mkString(" "))(
213+
if withArrow then Seq(span(cls := "ar")) else Nil,
214+
a(href := pathToPage(pageLink.dri, nav.link.dri))(icon, span(nav.link.name))
215+
)
216+
)
211217

212218
nav.children match
213-
case Nil => isSelected -> div(linkHtml())
219+
case Nil => isSelected -> div(cls := s"nav-item ${if isSelected then "expanded" else ""}")(linkHtml())
214220
case children =>
215221
val nested = children.map(renderNested(_))
216-
val expanded = nested.exists(_._1) || nav.link == pageLink
222+
val expanded = nested.exists(_._1) || isSelected
217223
val attr =
218-
if expanded || isSelected || toplevel then Seq(cls := "expanded") else Nil
224+
if expanded || isSelected || toplevel then Seq(cls := "nav-item expanded") else Seq(cls := "nav-item")
219225
(isSelected || expanded) -> div(attr)(
220-
linkHtml(expanded),
221-
if toplevel then Nil else span(cls := "ar"),
222-
nested.map(_._2)
226+
linkHtml(expanded, true),
227+
div(cls := "content")(nested.map(_._2))
223228
)
224229

225230
renderNested(navigablePage, toplevel = true)._2
@@ -295,10 +300,8 @@ class HtmlRenderer(rootPackage: Member, val members: Map[DRI, Member])(using ctx
295300
),
296301
div(id := "scaladoc-searchBar"),
297302
main(
298-
div(id := "content")(
299-
parentsHtml,
300-
div(content),
301-
)
303+
parentsHtml,
304+
div(id := "content")(content),
302305
),
303306
footer(
304307
div(id := "generated-by")(

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,8 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
137137
val kind :: modifiersRevered = inlineBuilder.preName
138138
val signature = inlineBuilder.names.reverse
139139
Seq(
140-
span(cls := "modifiers")(
141-
span(cls := "other-modifiers")(modifiersRevered.reverse.map(renderElement)),
142-
),
143140
div(cls := "signature")(
141+
span(cls := "modifiers")(modifiersRevered.reverse.map(renderElement)),
144142
span(cls := "kind")(renderElement(kind)),
145143
renderLink(member.name, member.dri, nameClasses),
146144
span(signature.map(renderElement))

scaladoc/src/dotty/tools/scaladoc/translators/ScalaSignatureUtils.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ trait SignatureBuilder extends ScalaSignatureUtils {
7575
def modifiersAndVisibility(t: Member, kind: String) =
7676
val (prefixMods, suffixMods) = t.modifiers.partition(_.prefix)
7777
val all = prefixMods.map(_.name) ++ Seq(t.visibility.asSignature) ++ suffixMods.map(_.name)
78-
79-
text(all.toSignatureString()).text(kind + " ")
78+
val filtered = all.filter(_.trim.nonEmpty)
79+
val intermediate = if filtered.nonEmpty then text(filtered.toSignatureString()) else this
80+
intermediate.text(kind + " ")
8081

8182
def generics(on: Seq[TypeParameter]) = list(on.toList, "[", "]"){ (bdr, e) =>
8283
bdr.annotationsInline(e).text(e.variance).memberName(e.name, e.dri).signature(e.signature)

0 commit comments

Comments
 (0)