diff options
Diffstat (limited to 'ThirdParty/CsvHelper-master/docs/scripts/sidebar.js')
-rw-r--r-- | ThirdParty/CsvHelper-master/docs/scripts/sidebar.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/docs/scripts/sidebar.js b/ThirdParty/CsvHelper-master/docs/scripts/sidebar.js new file mode 100644 index 0000000..496dfef --- /dev/null +++ b/ThirdParty/CsvHelper-master/docs/scripts/sidebar.js @@ -0,0 +1,41 @@ +(() => { + const sidebar = document.getElementById("sidebar"); + if (!sidebar) { + return; + } + + const parent = sidebar.parentElement; + const footer = document.getElementById("footer"); + + const resizeSidebarWidth = () => { + const rect = parent.getBoundingClientRect(); + const style = getComputedStyle(parent); + const width = rect.width - parseFloat(style.paddingLeft) - parseFloat(style.paddingRight); + sidebar.style.width = `${width}px`; + }; + + const resizeSidebarHeight = () => { + const parentRect = parent.getBoundingClientRect(); + const parentStyle = getComputedStyle(parent); + const footerRect = footer.getBoundingClientRect(); + const bodyRect = document.body.getBoundingClientRect(); + + const top = Math.max(parentRect.top + parseFloat(parentStyle.paddingTop), 0); + const bottom = Math.max(bodyRect.height - footerRect.top, 0); + + sidebar.style.top = `${top}px`; + sidebar.style.bottom = `${bottom}px`; + } + + const handleExpanderClick = (e) => { + e.currentTarget.classList.toggle("expanded"); + e.currentTarget.closest("li").querySelector("ul").classList.toggle("is-hidden"); + } + + const sidebarResizeObserver = new ResizeObserver(resizeSidebarWidth); + sidebarResizeObserver.observe(parent); + + window.addEventListener("load", resizeSidebarHeight); + document.addEventListener("scroll", resizeSidebarHeight); + document.querySelectorAll(".expander").forEach(el => el.addEventListener("click", handleExpanderClick)); +})(); |