Skip to content

Commit 6a603ad

Browse files
committed
Merge branch 'scaladoc-fixes' into omit-rendering-empty-members
2 parents 26f7b94 + 25eff3c commit 6a603ad

File tree

13 files changed

+262
-196
lines changed

13 files changed

+262
-196
lines changed

scaladoc/resources/dotty_res/scripts/ux.js

Lines changed: 91 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1-
window.addEventListener("DOMContentLoaded", () => {
1+
let observer = null;
2+
3+
function attachAllListeners() {
4+
if (observer) {
5+
observer.disconnect()
6+
}
27

3-
var toggler = document.getElementById("leftToggler");
4-
if (toggler) {
5-
toggler.onclick = function () {
6-
document.getElementById("leftColumn").classList.toggle("open");
7-
};
8+
var scrollPosition = sessionStorage.getItem("scroll_value");
9+
if (scrollPosition) {
10+
var sideMenu = document.querySelector(".side-menu");
11+
sideMenu.scrollTo(0, scrollPosition);
812
}
913

1014
var elements = document.getElementsByClassName("documentableElement")
@@ -25,7 +29,7 @@ window.addEventListener("DOMContentLoaded", () => {
2529
var documentableLists = document.getElementsByClassName("documentableList")
2630
if (documentableLists) {
2731
for (i = 0; i < documentableLists.length; i++) {
28-
documentableLists[i].children[0].onclick = function(e) {
32+
documentableLists[i].children[0].onclick = function (e) {
2933
this.classList.toggle("expand");
3034
this.parentElement.classList.toggle("expand");
3135
}
@@ -36,14 +40,47 @@ window.addEventListener("DOMContentLoaded", () => {
3640
if (memberLists) {
3741
for (i = 0; i < memberLists.length; i++) {
3842
if ($(memberLists[i].children[0]).is("button")) {
39-
memberLists[i].children[0].onclick = function(e) {
43+
memberLists[i].children[0].onclick = function (e) {
4044
this.classList.toggle("expand");
4145
this.parentElement.classList.toggle("expand");
4246
}
4347
}
4448
}
4549
}
4650

51+
document.querySelectorAll('a').forEach(el => {
52+
const href = el.href
53+
if (href === "") { return }
54+
const url = new URL(href)
55+
el.addEventListener('click', e => {
56+
if (url.href.replace(/#.*/, "") === window.location.href.replace(/#.*/, "")) { return }
57+
if (url.origin !== window.location.origin) { return }
58+
if (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button !== 0) { return }
59+
e.preventDefault()
60+
e.stopPropagation()
61+
$.get(href, function (data) {
62+
const html = $.parseHTML(data)
63+
const title = html.find(node => node.nodeName === "TITLE").innerText
64+
const bodyDiv = html.find(node => node.nodeName === "DIV")
65+
const { children } = document.body.firstChild
66+
if (window.history.state === null) {
67+
window.history.replaceState({
68+
leftColumn: children[3].innerHTML,
69+
mainDiv: children[6].innerHTML,
70+
title: document.title,
71+
}, '')
72+
}
73+
document.title = title
74+
const leftColumn = bodyDiv.children[3].innerHTML
75+
const mainDiv = bodyDiv.children[6].innerHTML
76+
window.history.pushState({ leftColumn, mainDiv, title }, '', href)
77+
children[3].innerHTML = leftColumn
78+
children[6].innerHTML = mainDiv
79+
attachAllListeners()
80+
})
81+
})
82+
})
83+
4784
$(".ar").on('click', function (e) {
4885
$(this).parent().parent().toggleClass("expanded")
4986
$(this).toggleClass("expanded")
@@ -70,7 +107,13 @@ window.addEventListener("DOMContentLoaded", () => {
70107
el.firstChild.classList.toggle("expand");
71108
}))
72109

73-
const observer = new IntersectionObserver(entries => {
110+
document.querySelectorAll(".ni").forEach(link =>
111+
link.addEventListener("mouseenter", _e => {
112+
sessionStorage.setItem("scroll_value", link.offsetTop - window.innerHeight / 2)
113+
})
114+
)
115+
116+
observer = new IntersectionObserver(entries => {
74117
entries.forEach(entry => {
75118
const id = entry.target.getAttribute('id');
76119
if (entry.intersectionRatio > 0) {
@@ -97,28 +140,9 @@ window.addEventListener("DOMContentLoaded", () => {
97140
}
98141
}
99142

100-
var logo = document.getElementById("logo");
101-
if (logo) {
102-
logo.onclick = function () {
103-
window.location = pathToRoot; // global variable pathToRoot is created by the html renderer
104-
};
105-
}
106-
107-
document.querySelectorAll('.documentableAnchor').forEach(elem => {
108-
elem.addEventListener('click', event => {
109-
var $temp = $("<input>")
110-
$("body").append($temp)
111-
var a = document.createElement('a')
112-
a.href = $(elem).attr("link")
113-
$temp.val(a.href).select();
114-
document.execCommand("copy")
115-
$temp.remove();
116-
})
117-
})
118-
119-
hljs.registerLanguage("scala", highlightDotty);
120-
hljs.registerAliases(["dotty", "scala3"], "scala");
121-
hljs.initHighlighting();
143+
document.querySelectorAll('pre code').forEach(el => {
144+
hljs.highlightBlock(el);
145+
});
122146

123147
/* listen for the `F` key to be pressed, to focus on the member filter input (if it's present) */
124148
document.body.addEventListener('keydown', e => {
@@ -134,32 +158,45 @@ window.addEventListener("DOMContentLoaded", () => {
134158
}
135159
})
136160

137-
// show/hide side menu on mobile view
138-
const sideMenuToggler = document.getElementById("mobile-sidebar-toggle");
139-
sideMenuToggler.addEventListener('click', _e => {
140-
document.getElementById("leftColumn").classList.toggle("show")
141-
document.getElementById("content").classList.toggle("sidebar-shown")
142-
const toc = document.getElementById("toc");
143-
if(toc && toc.childElementCount > 0) {
144-
toc.classList.toggle("sidebar-shown")
145-
}
146-
sideMenuToggler.classList.toggle("menu-shown")
147-
})
148-
149-
// show/hide mobile menu on mobile view
150-
const mobileMenuOpenIcon = document.getElementById("mobile-menu-toggle");
151-
const mobileMenuCloseIcon = document.getElementById("mobile-menu-close");
152-
mobileMenuOpenIcon.addEventListener('click', _e => {
153-
document.getElementById("mobile-menu").classList.add("show")
154-
})
155-
mobileMenuCloseIcon.addEventListener('click', _e => {
156-
document.getElementById("mobile-menu").classList.remove("show")
157-
})
158-
159-
160161
// when document is loaded graph needs to be shown
162+
}
163+
164+
window.addEventListener("DOMContentLoaded", () => {
165+
hljs.registerLanguage("scala", highlightDotty);
166+
hljs.registerAliases(["dotty", "scala3"], "scala");
167+
attachAllListeners()
161168
});
162169

170+
// show/hide side menu on mobile view
171+
const sideMenuToggler = document.getElementById("mobile-sidebar-toggle")
172+
sideMenuToggler.addEventListener('click', _e => {
173+
document.getElementById("leftColumn").classList.toggle("show")
174+
document.getElementById("content").classList.toggle("sidebar-shown")
175+
const toc = document.getElementById("toc");
176+
if (toc && toc.childElementCount > 0) {
177+
toc.classList.toggle("sidebar-shown")
178+
}
179+
sideMenuToggler.classList.toggle("menu-shown")
180+
})
181+
182+
// show/hide mobile menu on mobile view
183+
document.getElementById("mobile-menu-toggle").addEventListener('click', _e => {
184+
document.getElementById("mobile-menu").classList.add("show")
185+
})
186+
document.getElementById("mobile-menu-close").addEventListener('click', _e => {
187+
document.getElementById("mobile-menu").classList.remove("show")
188+
})
189+
190+
window.addEventListener('popstate', e => {
191+
if (e.state === null) { return }
192+
const { leftColumn, mainDiv, title } = e.state
193+
document.title = title
194+
const { children } = document.body.firstChild
195+
children[3].innerHTML = leftColumn
196+
children[6].innerHTML = mainDiv
197+
attachAllListeners()
198+
})
199+
163200
var zoom;
164201
var transform;
165202

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +0,0 @@
1-
#content > div {
2-
width: 100%;
3-
}

scaladoc/resources/dotty_res/styles/scalastyle.css

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -136,13 +136,6 @@ th {
136136
border-bottom: 2px solid var(--border-medium);
137137
}
138138

139-
/* Left bar toggler, only on small screens */
140-
#leftToggler {
141-
display: none;
142-
color: var(--icon-color);
143-
cursor: pointer;
144-
}
145-
146139
/* Left bar */
147140
#paneSearch {
148141
display: none;
@@ -732,30 +725,6 @@ footer .mode {
732725
display: flex;
733726
} */
734727

735-
.documentableAnchor:before {
736-
content: "\e901"; /* arrow down */
737-
font-family: "dotty-icons" !important;
738-
transform: rotate(-45deg);
739-
font-size: 20px;
740-
color: var(--link-fg);
741-
display: none;
742-
flex-direction: row;
743-
align-items: center;
744-
justify-content: center;
745-
position: absolute;
746-
top: 6px;
747-
left: -32px;
748-
}
749-
750-
.documentableAnchor:hover:before {
751-
color: var(--link-hover-fg);
752-
}
753-
754-
.documentableAnchor:active:before {
755-
color: var(--link-hover-fg);
756-
top: 8px;
757-
}
758-
759728
.memberDocumentation {
760729
font-size: 15px;
761730
line-height: 1.5;
@@ -1063,20 +1032,6 @@ footer .socials {
10631032
display: none;
10641033
}
10651034

1066-
#leftToggler {
1067-
display: unset;
1068-
position: absolute;
1069-
top: 5px;
1070-
left: 12px;
1071-
z-index: 5;
1072-
font-size: 30px;
1073-
}
1074-
#leftColumn.open ~ #main #leftToggler {
1075-
position: fixed;
1076-
left: unset;
1077-
right: 16vw;
1078-
color: var(--leftbar-fg);
1079-
}
10801035
.icon-toggler::before {
10811036
content: "\e90a"; /* menu icon */
10821037
}

scaladoc/resources/dotty_res/styles/theme/colors.css

Lines changed: 52 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,32 @@
33
*/
44
:root {
55
/* grey colors */
6-
--grey1: #ffffff;
7-
--grey2: #f9f8f9;
8-
--grey3: #f4f2f4;
9-
--grey4: #eeedef;
10-
--grey5: #e9e8ea;
11-
--grey6: #e4e2e4;
12-
--grey7: #dcdbdd;
13-
--grey8: #c8c7cb;
14-
--grey9: #908e96;
15-
--grey10: #86848d;
16-
--grey11: #6f6e77;
17-
--grey12: #1a1523;
6+
--grey1: #fcfcfc;
7+
--grey2: #f8f8f8;
8+
--grey3: #f3f3f3;
9+
--grey4: #ededed;
10+
--grey5: #e8e8e8;
11+
--grey6: #e2e2e2;
12+
--grey7: #dbdbdb;
13+
--grey8: #c7c7c7;
14+
--grey9: #8f8f8f;
15+
--grey10: #858585;
16+
--grey11: #6f6f6f;
17+
--grey12: #171717;
18+
19+
/* mauve colors */
20+
--mauve1: #ffffff;
21+
--mauve2: #f9f8f9;
22+
--mauve3: #f4f2f4;
23+
--mauve4: #eeedef;
24+
--mauve5: #e9e8ea;
25+
--mauve6: #e4e2e4;
26+
--mauve7: #dcdbdd;
27+
--mauve8: #c8c7cb;
28+
--mauve9: #908e96;
29+
--mauve10: #86848d;
30+
--mauve11: #6f6e77;
31+
--mauve12: #1a1523;
1832

1933
/* red colors */
2034
--red1: #fffcfc;
@@ -165,18 +179,32 @@
165179
dark theme
166180
*/
167181
:root.theme-dark {
168-
--grey1: #161618;
169-
--grey2: #1c1c1f;
170-
--grey3: #232326;
171-
--grey4: #28282c;
172-
--grey5: #2e2e32;
173-
--grey6: #34343a;
174-
--grey7: #3e3e44;
175-
--grey8: #504f57;
176-
--grey9: #706f78;
177-
--grey10: #7e7d86;
178-
--grey11: #a09fa6;
179-
--grey12: #ededef;
182+
--grey1: #161616;
183+
--grey2: #1c1c1c;
184+
--grey3: #232323;
185+
--grey4: #282828;
186+
--grey5: #2e2e2e;
187+
--grey6: #343434;
188+
--grey7: #3e3e3e;
189+
--grey8: #505050;
190+
--grey9: #707070;
191+
--grey10: #7e7e7e;
192+
--grey11: #a0a0a0;
193+
--grey12: #ededed;
194+
195+
/* muave colors */
196+
--mauve1: #161618;
197+
--mauve2: #1c1c1f;
198+
--mauve3: #232326;
199+
--mauve4: #28282c;
200+
--mauve5: #2e2e32;
201+
--mauve6: #34343a;
202+
--mauve7: #3e3e44;
203+
--mauve8: #504f57;
204+
--mauve9: #706f78;
205+
--mauve10: #7e7d86;
206+
--mauve11: #a09fa6;
207+
--mauve12: #ededef;
180208

181209
/* red colors */
182210
--red1: #1f1315;

scaladoc/resources/dotty_res/styles/theme/components/code-snippet.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@
9696
border: 1px solid var(--border-default);
9797
}
9898

99+
.snippet:hover::-webkit-scrollbar-thumb {
100+
border: 3px solid var(--action-primary-background-hover);
101+
}
102+
99103
.snippet .copy-button {
100104
position: absolute;
101105
top: calc(3 * var(--base-spacing));

0 commit comments

Comments
 (0)