Skip to content

Commit 1a84069

Browse files
committed
Disable expansion of empty member sections
1 parent 276563e commit 1a84069

File tree

2 files changed

+40
-26
lines changed

2 files changed

+40
-26
lines changed

scaladoc/resources/dotty_res/scripts/ux.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ window.addEventListener("DOMContentLoaded", () => {
1010
var elements = document.getElementsByClassName("documentableElement")
1111
if (elements) {
1212
for (i = 0; i < elements.length; i++) {
13-
elements[i].onclick = function (e) {
14-
if (!$(e.target).is("a") && e.fromSnippet !== true)
15-
this.classList.toggle("expand")
16-
this.querySelector(".show-content").classList.toggle("expand")
13+
if (elements[i].querySelector(".show-content") !== null) {
14+
elements[i].onclick = function (e) {
15+
if (!$(e.target).is("a") && e.fromSnippet !== true)
16+
this.classList.toggle("expand")
17+
this.querySelector(".show-content").classList.toggle("expand")
18+
}
1719
}
1820
}
1921
}

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

Lines changed: 34 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -107,20 +107,25 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
107107

108108
val classLikeInfo: TagArg = classLikeParts(m)
109109

110+
val attributes = Seq(
111+
docAttributes(m),
112+
companion(m),
113+
deprecation(m),
114+
defintionClasses(m),
115+
inheritedFrom(m),
116+
source(m),
117+
classLikeInfo
118+
).filter {
119+
case Nil => false
120+
case _ => true
121+
}
122+
110123
Seq(
111-
Option.when(withBrief)(div(cls := "documentableBrief doc")(comment.flatMap(_.short).fold("")(renderDocPart))),
112-
Some(
124+
Option.when(withBrief && comment.flatMap(_.short).nonEmpty)(div(cls := "documentableBrief doc")(comment.flatMap(_.short).fold("")(renderDocPart))),
125+
Option.when(bodyContents.nonEmpty || attributes.nonEmpty)(
113126
div(cls := "cover")(
114127
div(cls := "doc")(bodyContents),
115-
dl(cls := "attributes")(
116-
docAttributes(m),
117-
companion(m),
118-
deprecation(m),
119-
defintionClasses(m),
120-
inheritedFrom(m),
121-
source(m),
122-
classLikeInfo
123-
)
128+
dl(cls := "attributes")(attributes*)
124129
)
125130
)
126131
).flatten
@@ -164,10 +169,11 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
164169
Seq(member.companion.flatMap( (_, dri) => link(dri)).fold(iconSpan)(link => a(href := link)(iconSpan)))
165170
}
166171

167-
def annotations(member: Member) =
172+
def annotations(member: Member): Option[TagArg] =
168173
val rawBuilder = SignatureBuilder().annotationsBlock(member)
169174
val signatures = rawBuilder.content
170-
span(cls := "annotations monospace")(signatures.map(renderElement(_)))
175+
val rendered = signatures.map(renderElement(_))
176+
Option.when(rendered.nonEmpty)(span(cls := "annotations monospace")(rendered))
171177

172178
def member(member: Member) =
173179
val filterAttributes = FilterAttributes.attributesFor(member)
@@ -176,18 +182,24 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
176182
++ anchor
177183
++ filterAttributes.map{ case (n, v) => Attr(s"data-f-$n") := v }
178184

185+
val originInf = originInfo(member)
186+
val memberInf = memberInfo(member, withBrief = true)
187+
val annots = annotations(member)
188+
179189
div(topLevelAttr:_*)(
180-
button(cls := "icon-button show-content"),
190+
Option.when(annots.nonEmpty || originInf.nonEmpty || memberInf.nonEmpty)(button(cls := "icon-button show-content")).toList,
181191
if !member.needsOwnPage then a(Attr("link") := link(member.dri).getOrElse("#"), cls := "documentableAnchor") else Nil,
182-
div(annotations(member)),
192+
annots.map(div(_)).toList,
183193
div(cls := "header monospace")(memberSignature(member)),
184-
div(cls := "docs")(
185-
span(cls := "modifiers"), // just to have padding on left
186-
div(
187-
div(cls := "originInfo")(originInfo(member):_*),
188-
div(cls := "memberDocumentation")(memberInfo(member, withBrief = true)),
194+
Option.when(originInf.nonEmpty || memberInf.nonEmpty)(
195+
div(cls := "docs")(
196+
span(cls := "modifiers"), // just to have padding on left
197+
div(
198+
div(cls := "originInfo")(originInf*),
199+
div(cls := "memberDocumentation")(memberInf*),
200+
)
189201
)
190-
)
202+
).toList
191203
)
192204

193205
private case class MGroup(header: AppliedTag, members: Seq[Member], groupName: String)
@@ -428,7 +440,7 @@ class MemberRenderer(signatureRenderer: SignatureRenderer)(using DocContext) ext
428440
) ++ companionBadge(m) ++
429441
Seq(
430442
div(cls := "main-signature mono-medium")(
431-
annotations(m),
443+
annotations(m).getOrElse(Nil),
432444
memberSignature(m)
433445
)
434446
)

0 commit comments

Comments
 (0)