From 2cf7e45d940b8f2b3ee68a70f72a2e5fa0c22d53 Mon Sep 17 00:00:00 2001 From: CloudHill Date: Wed, 21 Oct 2020 16:42:36 +0700 Subject: [PATCH] Fixed bug with button visibility when opening pages --- mods/scroll-to-top/mod.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/mods/scroll-to-top/mod.js b/mods/scroll-to-top/mod.js index 5adaaef..afb1fd6 100644 --- a/mods/scroll-to-top/mod.js +++ b/mods/scroll-to-top/mod.js @@ -71,6 +71,7 @@ module.exports = { let queue = []; let $scroller = document.querySelector('.notion-frame > .notion-scroller'); + let top = store().top || 0; const observer = new MutationObserver((list, observer) => { if (!queue.length) requestAnimationFrame(() => process(queue)); @@ -83,13 +84,7 @@ module.exports = { function process(list) { queue = []; - - let top = $scroller.top_distance = store().top || 0; - if (top > 0 && store().percent) { - let content_height = Array.from($scroller.children) - .reduce((h, c) => h + c.offsetHeight, 0); - $scroller.top_distance *= (content_height - $scroller.offsetHeight) / 100; - } + setScrollDistance(); for (let { addedNodes } of list) { if ( @@ -101,9 +96,10 @@ module.exports = { $scroll.classList.add('hidden'); $scroller = document.querySelector('.notion-frame > .notion-scroller'); + setScrollDistance(); $scroller.addEventListener('scroll', (event) => { - if (!$scroller.top_distance || Math.ceil(event.target.scrollTop) < $scroller.top_distance) + if (Math.ceil(event.target.scrollTop) < $scroller.top_distance) $scroll.classList.add('hidden'); else $scroll.classList.remove('hidden'); @@ -111,6 +107,15 @@ module.exports = { } } } + + function setScrollDistance() { + $scroller.top_distance = top; + if (top > 0 && store().percent) { + let content_height = Array.from($scroller.children) + .reduce((h, c) => h + c.offsetHeight, 0); + $scroller.top_distance *= (content_height - $scroller.offsetHeight) / 100; + } + } } }); }