Files
GS13NG/dmdoc.js
2025-02-05 06:19:18 +00:00

59 lines
2.0 KiB
JavaScript

// ----------------------------------------------------------------------------
// Index page tree browsing
document.addEventListener("DOMContentLoaded", function() {
var items = document.getElementsByClassName("index-tree");
var nodes = [];
for (var i = 0; i < items.length; ++i) {
var node = items[i];
var parent = node.parentElement;
if (!parent || parent.tagName.toLowerCase() != "li") {
continue;
}
node.hidden = true;
parent.style.listStyle = "none";
var expander = document.createElement("span");
expander.className = "expander";
expander.textContent = "\u2795";
expander.addEventListener("click", function(node) {
return function(event) {
if (event.target.tagName.toLowerCase() == "a") {
return;
}
event.preventDefault();
event.stopPropagation(true);
node.hidden = !node.hidden;
this.textContent = node.hidden ? "\u2795" : "\u2796";
};
}(node));
if (node.parentElement.parentElement.classList.contains("modules")) {
node.hidden = false;
expander.textContent = "\u2796";
}
parent.insertBefore(expander, parent.firstChild);
nodes.push({ node, expander });
}
if (nodes.length) {
var toggle = document.createElement("a");
toggle.href = "#";
toggle.appendChild(document.createTextNode("Toggle All"));
toggle.addEventListener("click", function(event) {
event.preventDefault();
var hidden = !nodes[1].node.hidden;
for (var i = 0; i < nodes.length; ++i) {
nodes[i].node.hidden = hidden;
nodes[i].expander.textContent = hidden ? "\u2795" : "\u2796";
}
});
var header = document.getElementsByTagName("header")[0];
header.appendChild(document.createTextNode(" \u2014 "));
header.appendChild(toggle);
}
});