diff options
author | chai <215380520@qq.com> | 2023-05-12 09:24:40 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-12 09:24:40 +0800 |
commit | 2a1cd4fda8a4a8e649910d16b4dfa1ce7ae63543 (patch) | |
tree | a471fafed72e80b4ac3ac3002e06c34220dd6058 /ThirdParty/CsvHelper-master/docs/scripts/sidebar.js | |
parent | b8a694746562b37dc8dc5b8b5aec8612bb0964fc (diff) |
*misc
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)); +})(); |