Skip to content

Commit 2497ea3

Browse files
committed
Fix TOC toggling
1 parent d331b95 commit 2497ea3

File tree

3 files changed

+35
-20
lines changed

3 files changed

+35
-20
lines changed

default_theme/assets/site.js

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,28 +54,46 @@ for (var i = 0; i < toggleLinks.length; i++) {
5454
}
5555

5656
function toggle() {
57-
var target = document.querySelector('[data-namespacecontent="' + this.dataset.namespacetarget + '"]');
58-
var caret = this.getElementsByClassName('caret')[0];
57+
toggleSection(this.dataset.namespacetarget);
58+
}
59+
60+
function toggleSection(id, yn) {
61+
var target = document.querySelector('[data-namespacecontent="' + id + '"]');
62+
if (!target) {
63+
return;
64+
}
5965
var klass = 'section-nested';
60-
if (target.classList.contains(klass)) {
66+
yn = typeof yn === 'boolean' ? yn : target.classList.contains(klass);
67+
if (yn) {
6168
target.classList.remove(klass);
62-
caret.innerHTML = '+';
6369
} else {
6470
target.classList.add(klass);
65-
caret.innerHTML = '-';
6671
}
6772
}
6873

69-
function showHashTarget(targetId) {
70-
var hashTarget = document.getElementById(targetId);
71-
// new target is hidden
72-
if (hashTarget && hashTarget.offsetHeight === 0 &&
73-
hashTarget.parentNode.parentNode.classList.contains('display-none')) {
74-
hashTarget.parentNode.parentNode.classList.remove('display-none');
74+
var items = document.getElementsByClassName('toggle-sibling');
75+
for (var j = 0; j < items.length; j++) {
76+
items[j].addEventListener('click', toggleSibling);
77+
}
78+
79+
function toggleSibling() {
80+
var stepSibling = this.parentNode.getElementsByClassName('toggle-target')[0];
81+
var icon = this.getElementsByClassName('icon')[0];
82+
var klass = 'display-none';
83+
if (stepSibling.classList.contains(klass)) {
84+
stepSibling.classList.remove(klass);
85+
icon.innerHTML = '▾';
86+
} else {
87+
stepSibling.classList.add(klass);
88+
icon.innerHTML = '▸';
7589
}
7690
}
7791

78-
window.addEventListener('hashchange', function() {
92+
function showHashTarget(targetId) {
93+
toggleSection(targetId, false);
94+
}
95+
96+
window.addEventListener('hashchange', function () {
7997
showHashTarget(location.hash.substring(1));
8098
});
8199

default_theme/assets/style.css

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,10 @@ h4:hover .anchorjs-link {
104104
box-sizing: border-box;
105105
}
106106

107-
.hide-target {
108-
display: none;
109-
}
110-
111-
.section-nested .hide-target {
112-
display: block;
113-
}
107+
.hide-target { display: none; }
108+
.section-nested .hide-target { display: block; }
109+
.show-target { display: inline; }
110+
.section-nested .show-target { display: none; }
114111

115112
.section-nested {
116113
padding-bottom: 10px;

default_theme/section._

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<% } %>
1717
<% } else { %>
1818
<div data-namespacetarget='<%- section.namespace %>' class='no-select py1 small pointer'>
19-
<a class='caret'>+</a>
19+
<a class='caret'><span class='hide-target'>-</span><span class='show-target'>+</span></a>
2020
<span class='code truncate bold-target'><%= formatters.shortSignature(section) %></span>
2121
</div>
2222
<% } %>

0 commit comments

Comments
 (0)