Template:CollapseTOC
<html> <style> .collapsing-toc-button {
border: none; background-color: transparent; color: #777; float: right; text-decoration: none; cursor: pointer; -webkit-transition: transform 0.2s ease-in-out; transition: transform 0.2s ease-in-out;
} .collapsing-toc-button.hiding {
transform: rotateZ(-90deg);
} .collapsing-toc-button:hover {
text-decoration: none; color:black; outline:none;
} .collapsing-toc-button:active, .collapsing-toc-button:focus {
outline:none;
} .toclevel-</html>1<html>:nth-last-of-type(n+2) {
border-bottom: 1px dotted rgba(0,0,0,0.05);
} .toclevel-</html>1<html> > ul > li {
line-height: 1em; opacity: 1; overflow: hidden; max-height: 100%; -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out;
} .toclevel-</html>1<html> > ul.hidden > li {
line-height: 0em; max-height: 0em; opacity: 0; margin: 0px;
} </style> <script charset="UTF-8"> /* Returns the first direct child UL of the provided element, or false if there are none.
- /
function CTOC_hasChildUl(element) {
for (var i = 0; i < element.children.length; i++) {
var child = element.children[i];
if (child.tagName === 'UL') {
return child;
}
}
return false;
};
function CTOC_Controller() {
// Get all toc items of the corresponding level.
var tocItems = document.getElementsByClassName("toclevel-</html>1<html>");
// function to toggle visibility of sub uls
function CTOC_hideHandler(event) {
var ul = event.target.nextElementSibling;
event.target.classList.toggle("hiding");
ul.classList.toggle('hidden');
}
// hide the toc levels to start.
for (var i = 0; i < tocItems.length; i++) {
var ulItem = CTOC_hasChildUl(tocItems[i]);
if (ulItem) {
if (!(ulItem.classList.contains('prepped'))) {
// create collapse button.
var button = document.createElement("button");
button.innerText = '▼';
button.classList.add("collapsing-toc-button");
button.classList.add("hiding");
// add event listener to button.
button.addEventListener('click', CTOC_hideHandler);
ulItem.classList.toggle('hidden');
ulItem.insertAdjacentElement('beforebegin',button);
ulItem.classList.add('prepped');
}
}
}
}; CTOC_Controller(); </script> </html>