Skip to content

Commit 7eb67d0

Browse files
author
Filip Łukasik
committed
share style between api and docs sidemenu elements, make sidemenu element collapsable only with arrow click
1 parent 467c14d commit 7eb67d0

File tree

4 files changed

+30
-62
lines changed

4 files changed

+30
-62
lines changed

scaladoc/resources/dotty_res/scripts/ux.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ 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)
13+
elements[i].onclick = function (e) {
14+
if (!$(e.target).is("a") && e.fromSnippet !== true)
1515
this.classList.toggle("expand")
1616
}
1717
}
1818
}
1919

20-
$(".side-menu span").on('click', function(){
21-
$(this).parent().toggleClass("expanded")
20+
$(".ar").on('click', function () {
21+
$(this).parent().parent().toggleClass("expanded")
2222
});
2323

2424
document.querySelectorAll(".side-menu a").forEach(elem => elem.addEventListener('click', e => e.stopPropagation()))
2525

26-
$('.names .tab').on('click', function() {
26+
$('.names .tab').on('click', function () {
2727
parent = $(this).parents(".tabs").first()
2828
shown = $(this).hasClass('selected')
2929
single = parent.hasClass("single")
@@ -35,7 +35,7 @@ window.addEventListener("DOMContentLoaded", () => {
3535
if (!shown) { myTab.addClass('selected') }
3636
if (shown && !single) myTab.removeClass('selected')
3737

38-
if(!shown && $(this).filter(".showGraph").length > 0) {
38+
if (!shown && $(this).filter(".showGraph").length > 0) {
3939
showGraph()
4040
$(this).find(".showGraph").removeClass("showGraph")
4141
}
@@ -55,7 +55,7 @@ window.addEventListener("DOMContentLoaded", () => {
5555

5656
var logo = document.getElementById("logo");
5757
if (logo) {
58-
logo.onclick = function() {
58+
logo.onclick = function () {
5959
window.location = pathToRoot; // global variable pathToRoot is created by the html renderer
6060
};
6161
}
@@ -97,7 +97,7 @@ var transform;
9797
function showGraph() {
9898
if ($("svg#graph").children().length == 0) {
9999
var dotNode = document.querySelector("#dot")
100-
if (dotNode){
100+
if (dotNode) {
101101
var svg = d3.select("#graph");
102102
var radialGradient = svg.append("defs").append("radialGradient").attr("id", "Gradient");
103103
radialGradient.append("stop").attr("stop-color", "var(--aureole)").attr("offset", "20%");
@@ -107,7 +107,7 @@ function showGraph() {
107107

108108
// Set up zoom support
109109
zoom = d3.zoom()
110-
.on("zoom", function({transform}) {
110+
.on("zoom", function ({ transform }) {
111111
inner.attr("transform", transform);
112112
});
113113
svg.call(zoom);
@@ -129,7 +129,7 @@ function showGraph() {
129129
});
130130
g.setParent("node0", "node0Cluster");
131131

132-
g.edges().forEach(function(v) {
132+
g.edges().forEach(function (v) {
133133
g.setEdge(v, {
134134
arrowhead: "vee"
135135
});
@@ -140,11 +140,11 @@ function showGraph() {
140140
var bounds = svg.node().getBBox();
141141
var parent = svg.node().parentElement;
142142
var fullWidth = parent.clientWidth || parent.parentNode.clientWidth,
143-
fullHeight = parent.clientHeight || parent.parentNode.clientHeight;
143+
fullHeight = parent.clientHeight || parent.parentNode.clientHeight;
144144
var width = bounds.width,
145-
height = bounds.height;
145+
height = bounds.height;
146146
var midX = bounds.x + width / 2,
147-
midY = bounds.y + height / 2;
147+
midY = bounds.y + height / 2;
148148
if (width == 0 || height == 0) return; // nothing to fit
149149
var scale = Math.min(fullWidth / width, fullHeight / height) * 0.99; // 0.99 to make a little padding
150150
var translate = [fullWidth / 2 - scale * midX, fullHeight / 2 - scale * midY];

scaladoc/resources/dotty_res/styles/theme/components/navigation-item.css

Lines changed: 12 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/* api */
2-
31
.side-menu .ni {
42
display: none;
53
}
@@ -33,47 +31,47 @@
3331
box-sizing: border-box;
3432
}
3533

36-
#api-nav .n0 > .nh > .ar {
34+
.n0 > .nh > .ar {
3735
left: calc(1.5 * var(--base-spacing));
3836
}
3937

40-
#api-nav .n0 > .nh > a {
38+
.n0 > .nh > a {
4139
left: calc(4.5 * var(--base-spacing));
4240
max-width: calc(23 * var(--base-spacing));
4341
}
4442

45-
#api-nav .n1 > .nh > .ar {
43+
.n1 > .nh > .ar {
4644
left: calc(4.5 * var(--base-spacing));
4745
}
4846

49-
#api-nav .n1 > .nh > a {
47+
.n1 > .nh > a {
5048
left: calc(7.5 * var(--base-spacing));
5149
max-width: calc(20 * var(--base-spacing));
5250
}
5351

54-
#api-nav .n2 > .nh > .ar {
52+
.n2 > .nh > .ar {
5553
left: calc(7.5 * var(--base-spacing));
5654
}
5755

58-
#api-nav .n2 > .nh > a {
56+
.n2 > .nh > a {
5957
left: calc(10.5 * var(--base-spacing));
6058
max-width: calc(17 * var(--base-spacing));
6159
}
6260

63-
#api-nav .n3 > .nh > .ar {
61+
.n3 > .nh > .ar {
6462
left: calc(10.5 * var(--base-spacing));
6563
}
6664

67-
#api-nav .n3 > .nh > a {
65+
.n3 > .nh > a {
6866
left: calc(13.5 * var(--base-spacing));
6967
max-width: calc(14 * var(--base-spacing));
7068
}
7169

72-
#api-nav .n4 > .nh > .ar {
70+
.n4 > .nh > .ar {
7371
left: calc(13.5 * var(--base-spacing));
7472
}
7573

76-
#api-nav .n4 > .nh > a {
74+
.n4 > .nh > a {
7775
left: calc(16.5 * var(--base-spacing));
7876
max-width: calc(11 * var(--base-spacing));
7977
}
@@ -209,42 +207,15 @@ span.ar::before {
209207
color: transparent;
210208
}
211209

212-
#api-nav span.ar {
210+
span.ar {
213211
cursor: pointer;
214212
position: absolute;
215213
}
216214

217-
#api-nav .nh a {
215+
.nh a {
218216
position: relative;
219217
}
220218

221-
/* docs */
222-
223-
/* Hardcode visibility of children of top-level entry */
224-
#docs-nav .ni.n0 > .ni {
225-
display: block;
226-
}
227-
228-
#docs-nav .n0 > .nh {
229-
padding-left: calc(1.5 * var(--base-spacing));
230-
}
231-
232-
#docs-nav .n1 > .nh {
233-
padding-left: calc(1.5 * var(--base-spacing));
234-
}
235-
236-
#docs-nav .n2 > .nh {
237-
padding-left: calc(6.5 * var(--base-spacing));
238-
}
239-
240-
#docs-nav .n3 > .nh {
241-
padding-left: calc(11.5 * var(--base-spacing));
242-
}
243-
244-
#docs-nav span.ar {
245-
margin-right: calc(1 * var(--base-spacing));
246-
}
247-
248219
/* icons light*/
249220
.micon.cl {
250221
content: url("../../../images/class.svg");

scaladoc/resources/dotty_res/styles/theme/layout/leftMenu.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
align-items: center;
55
padding: calc(3 * var(--base-spacing)) 0px;
66
position: absolute;
7-
width: calc(35 * var(--base-spacing));
7+
width: calc(39 * var(--base-spacing));
88
height: calc(100% - var(--header-height));
99
left: 0px;
1010
top: calc(8 * var(--base-spacing));

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,12 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
110110
val isSelected = nav.link.dri == pageLink.dri
111111
val isTopElement = nestLevel == 0
112112

113-
val isTopLevelDocs = !isApi && isTopElement
114-
115113
def linkHtml(expanded: Boolean = false, withArrow: Boolean = false) =
116114
val attrs: Seq[String] = Seq(
117-
Option.when((isSelected || expanded) && !isTopLevelDocs)("h100"),
115+
Option.when(isSelected || expanded)("h100"),
118116
Option.when(isSelected)("selected"),
119-
Option.when(expanded || isTopLevelDocs)("expanded cs"),
117+
Option.when(expanded)("expanded cs"),
120118
Option.when(!isApi)("de"),
121-
Option.when(isTopLevelDocs)("h200")
122119
).flatten
123120
val icon = nav.content match {
124121
case m: Member => navigationIcon(m)
@@ -137,9 +134,9 @@ class HtmlRenderer(rootPackage: Member, members: Map[DRI, Member])(using ctx: Do
137134
val nested = children.map(renderNested(_, nestLevel + 1))
138135
val expanded = nested.exists(_._1)
139136
val attr =
140-
if expanded || isSelected || isTopLevelDocs then Seq(cls := s"ni n$nestLevel expanded") else Seq(cls := s"ni n$nestLevel")
137+
if expanded || isSelected then Seq(cls := s"ni n$nestLevel expanded") else Seq(cls := s"ni n$nestLevel")
141138
(isSelected || expanded) -> div(attr)(
142-
linkHtml(expanded, !isTopLevelDocs),
139+
linkHtml(expanded, true),
143140
nested.map(_._2)
144141
)
145142

0 commit comments

Comments
 (0)