Skip to content

Commit 51a7019

Browse files
committed
Fix #1947: allow arbitrary nesting in yml file
1 parent f3a3bf3 commit 51a7019

File tree

3 files changed

+50
-24
lines changed

3 files changed

+50
-24
lines changed

doc-tool/resources/_includes/sidebar.html

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,25 @@
66
{% endfor %}
77
</ul>
88

9+
<script>
10+
function clickToc(elem, currentPage) {
11+
var sibling = elem.parentElement.children[1];
12+
if (sibling.style.display === "" || sibling.style.display === "none")
13+
sibling.style.display = "block";
14+
else
15+
sibling.style.display = "";
16+
}
17+
18+
(function() {
19+
var activeEntry = document.querySelector("#active-toc-entry")
20+
21+
while (activeEntry != null && activeEntry.tagName.toLowerCase() === "ul") {
22+
activeEntry.style.display = "block";
23+
activeEntry = activeEntry.parentElement.parentElement;
24+
}
25+
})();
26+
</script>
27+
928
<ul class="index-entities">
1029
{% if docs.size > 0 %}
1130
<li class="index-title">

doc-tool/resources/css/sidebar.css

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ ul.toc {
3939
padding-left: 0;
4040
}
4141

42+
ul.toc ul {
43+
padding-left: 0;
44+
}
45+
46+
ul.toc > li,
47+
ul.toc ul > li {
48+
padding-left: 24px;
49+
}
50+
4251
ul.toc > li:hover {
4352
background-color: transparent;
4453
}
@@ -72,10 +81,11 @@ ul.toc > li.logo-li > a {
7281
float: none;
7382
}
7483

75-
ul.toc > li > a {
84+
ul.toc > li > a,
85+
ul.toc li > a.toggle-children {
7686
font-size: 13px;
7787
display: block;
78-
padding: 0 0 0 24px;
88+
padding: 0;
7989
width: 100%;
8090
color: rgba(0, 0, 0, 0.87);
8191
background: transparent;
@@ -84,13 +94,9 @@ ul.toc > li > a {
8494
text-transform: uppercase;
8595
}
8696

87-
ul.toc > li > ul.show {
88-
display: block;
97+
ul.toc > li ul {
8998
list-style-type: none;
9099
font-size: 13px;
91-
}
92-
93-
ul.toc > li > ul.hide {
94100
display: none;
95101
}
96102

doc-tool/src/dotty/tools/dottydoc/staticsite/tags.scala

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import liqp.tags.Tag
99
import liqp.TemplateContext
1010
import liqp.nodes.LNode
1111

12-
import java.util.{ Map => JMap }
12+
import java.util.{ Map => JMap, List => JList }
1313
import model._
1414
import util.syntax._
1515

@@ -163,22 +163,23 @@ object tags {
163163
case class RenderTitle(params: Map[String, AnyRef])(implicit ctx: Context)
164164
extends Tag("renderTitle") with ParamConverter {
165165
private def renderTitle(t: Title, parent: String): String = {
166-
if (!t.url.isDefined && t.subsection.nonEmpty) {
167-
val onclickFunction =
168-
s"""(function(){var child=document.getElementById("${t.title}");child.classList.toggle("show");child.classList.toggle("hide");})();"""
169-
s"""|<a class="toggle-children" onclick='$onclickFunction'>${t.title}</a>
170-
|<ul id="${t.title}" class="${if (parent.toLowerCase == t.title.toLowerCase) "show" else "hide"}">
171-
| ${t.subsection.map(renderTitle(_, parent)).mkString("<li>", "</li><li>", "</li>")}
172-
|</ul>""".stripMargin
173-
}
174-
else if (t.url.isDefined) {
175-
val url = t.url.get
176-
s"""<a href="$baseurl/$url">${t.title}</a>"""
177-
}
178-
else /*if (t.subsection.nonEmpty)*/ {
179-
ctx.docbase.error(s"url was defined for subsection with title: ${t.title}, remove url to get toggleable entries")
180-
t.title
181-
}
166+
if (!t.url.isDefined && t.subsection.nonEmpty) {
167+
s"""|<a class="toggle-children" onclick='clickToc(this, "$parent");'>${t.title}</a>
168+
|<ul id="${ if(parent == t.title.toLowerCase.split(" ").mkString("-")) "active-toc-entry" else "" }">
169+
| ${ t.subsection.map(renderTitle(_, parent)).mkString("<li>","\n</li>\n<li>", "</li>") }
170+
|</ul>
171+
|""".stripMargin
172+
}
173+
else if (t.url.isDefined) {
174+
val url = t.url.get
175+
s"""<a href="$baseurl/$url">${t.title}</a>"""
176+
}
177+
else {
178+
ctx.docbase.error(
179+
s"url was defined for subsection with title: ${t.title}, remove url to get toggleable entries"
180+
)
181+
t.title
182+
}
182183
}
183184

184185
override def render(ctx: TemplateContext, nodes: LNode*): AnyRef =

0 commit comments

Comments
 (0)