aboutsummaryrefslogtreecommitdiff
path: root/docs/_static/sidebar.js
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_static/sidebar.js')
-rw-r--r--docs/_static/sidebar.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/docs/_static/sidebar.js b/docs/_static/sidebar.js
new file mode 100644
index 00000000..8c45a210
--- /dev/null
+++ b/docs/_static/sidebar.js
@@ -0,0 +1,50 @@
+function collapseSection(icon) {
+ icon.classList.remove('expanded');
+ icon.classList.add('collapsed');
+ icon.innerText = 'chevron_right';
+ let children = icon.nextElementSibling.nextElementSibling;
+ // <arrow><heading>
+ // --> <square><children>
+ children.style.display = "none";
+}
+
+function expandSection(icon) {
+ icon.classList.remove('collapse');
+ icon.classList.add('expanded');
+ icon.innerText = 'expand_more';
+ let children = icon.nextElementSibling.nextElementSibling;
+ children.style.display = "block";
+}
+
+document.addEventListener('DOMContentLoaded', () => {
+ let sidebar = document.getElementById('sidebar');
+ let toc = sidebar.querySelector('ul');
+ let allReferences = toc.querySelectorAll('a.reference.internal:not([href="#"])');
+
+ for (let ref of allReferences) {
+
+ let next = ref.nextElementSibling;
+
+ if (next && next.tagName === "UL") {
+
+ let icon = document.createElement('span');
+ icon.className = 'material-icons collapsible-arrow expanded';
+ icon.innerText = 'expand_more';
+
+ if (next.parentElement.tagName == "LI") {
+ next.parentElement.classList.add('no-list-style')
+ }
+
+ icon.addEventListener('click', () => {
+ if (icon.classList.contains('expanded')) {
+ collapseSection(icon);
+ } else {
+ expandSection(icon);
+ }
+ })
+
+ ref.classList.add('ref-internal-padding')
+ ref.parentNode.insertBefore(icon, ref);
+ }
+ }
+});