Browse Source

Merge pull request #639 from spewmaker/dev

Fixed Issue #638
pull/641/head
mrjvs 2 years ago committed by GitHub
parent
commit
80b5623d8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 11
      src/pages/parts/settings/SidebarPart.tsx

11
src/pages/parts/settings/SidebarPart.tsx

@ -82,17 +82,20 @@ export function SidebarPart() {
const el = document.getElementById(link.id); const el = document.getElementById(link.id);
if (!el) return { distance: Infinity, link: link.id }; if (!el) return { distance: Infinity, link: link.id };
const rect = el.getBoundingClientRect(); const rect = el.getBoundingClientRect();
const distanceTop = Math.abs(centerTarget - rect.top); const distanceTop = Math.abs(centerTarget - rect.top);
const distanceBottom = Math.abs(centerTarget - rect.bottom); const distanceBottom = Math.abs(centerTarget - rect.bottom);
const distance = Math.min(distanceBottom, distanceTop); const distance = Math.min(distanceBottom, distanceTop);
return { distance, link: link.id }; return { distance, link: link.id };
}) })
.sort((a, b) => a.distance - b.distance); .sort((a, b) => a.distance - b.distance);
// shortest distance to the part of the screen we want is the active link // Check if user has scrolled past the bottom of the page
setActiveLink(viewList[0]?.link ?? ""); if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
setActiveLink(settingLinks[settingLinks.length - 1].id);
} else {
// shortest distance to the part of the screen we want is the active link
setActiveLink(viewList[0]?.link ?? "");
}
} }
document.addEventListener("scroll", recheck); document.addEventListener("scroll", recheck);
recheck(); recheck();

Loading…
Cancel
Save