diff options
Diffstat (limited to 'docs/_static/sidebar.js')
| -rw-r--r-- | docs/_static/sidebar.js | 50 |
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); + } + } +}); |