From b55e74a2c54e0de00997d1597468f60eb79e3b1c Mon Sep 17 00:00:00 2001 From: dragonwocky Date: Wed, 31 Jan 2024 23:04:11 +1100 Subject: [PATCH] fix: more reliable scroll to top btn initial display + positioning --- src/core/islands/FloatingButton.mjs | 3 ++- src/extensions/scroll-to-top/client.mjs | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/core/islands/FloatingButton.mjs b/src/core/islands/FloatingButton.mjs index 7835739..93c413e 100644 --- a/src/core/islands/FloatingButton.mjs +++ b/src/core/islands/FloatingButton.mjs @@ -17,8 +17,9 @@ const setupWrapper = () => { if (!$help) return; const $wrapper = html`
`; removeMutationListener(addToDom); $help.replaceWith($wrapper); diff --git a/src/extensions/scroll-to-top/client.mjs b/src/extensions/scroll-to-top/client.mjs index 674bd2a..f76f0fa 100644 --- a/src/extensions/scroll-to-top/client.mjs +++ b/src/extensions/scroll-to-top/client.mjs @@ -25,9 +25,12 @@ export default async (api, db) => { `, onScroll = () => { if (!$scroller) return; - const { scrollTop, scrollHeight, clientHeight } = $scroller, - scrollPercent = (scrollTop / (scrollHeight - clientHeight)) * 100, - scrollDist = scrollUnits === "Percent" ? scrollPercent : scrollTop; + const { scrollTop, scrollHeight, clientHeight } = $scroller; + let scrollDist = scrollTop; + if (scrollUnits === "Percent") { + scrollDist = (scrollTop / (scrollHeight - clientHeight)) * 100; + if (isNaN(scrollDist)) scrollDist = 0; + } if (distanceUntilShown <= scrollDist) addFloatingButton($btn); else removeFloatingButton($btn); },