Merge b70d72928367b1c9bb3fe8aee3bd123b7e7f4cbe into 4c4f43779c6de5adf1c61edd4e79aae233965393

This commit is contained in:
XUE 2024-11-03 16:54:22 +00:00 committed by GitHub
commit 1c87a7130f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,5 @@
document.addEventListener("DOMContentLoaded", function () {
scrollToActiveItem();
restoreSidebarPosition();
enableCollapsibles();
});
@ -16,21 +16,28 @@ function enableCollapsibles() {
});
}
function scrollToActiveItem() {
function saveSidebarPosition() {
const sidebarScrollbar = document.querySelector("aside.sidebar-container > .hextra-scrollbar");
const activeItems = document.querySelectorAll(".sidebar-active-item");
const visibleActiveItem = Array.from(activeItems).find(function (activeItem) {
return activeItem.getBoundingClientRect().height > 0;
});
if (!visibleActiveItem) {
return;
if (sidebarScrollbar) {
const scrollPosition = sidebarScrollbar.scrollTop;
sessionStorage.setItem('sidebarScrollPosition', scrollPosition);
}
}
function restoreSidebarPosition() {
const sidebarScrollbar = document.querySelector("aside.sidebar-container > .hextra-scrollbar");
if (sidebarScrollbar) {
const savedPosition = sessionStorage.getItem('sidebarScrollPosition');
if (savedPosition !== null) {
sidebarScrollbar.scrollTo({
top: parseInt(savedPosition),
behavior: 'instant'
});
}
sidebarScrollbar.addEventListener('scroll', function() {
saveSidebarPosition();
});
}
const yOffset = visibleActiveItem.clientHeight;
const yDistance = visibleActiveItem.getBoundingClientRect().top - sidebarScrollbar.getBoundingClientRect().top;
sidebarScrollbar.scrollTo({
behavior: "instant",
top: yDistance - yOffset
});
}