Fixed bug with button visibility when opening pages

This commit is contained in:
CloudHill 2020-10-21 16:42:36 +07:00
parent 579aa84f80
commit 2cf7e45d94

View File

@ -71,6 +71,7 @@ module.exports = {
let queue = []; let queue = [];
let $scroller = document.querySelector('.notion-frame > .notion-scroller'); let $scroller = document.querySelector('.notion-frame > .notion-scroller');
let top = store().top || 0;
const observer = new MutationObserver((list, observer) => { const observer = new MutationObserver((list, observer) => {
if (!queue.length) requestAnimationFrame(() => process(queue)); if (!queue.length) requestAnimationFrame(() => process(queue));
@ -83,13 +84,7 @@ module.exports = {
function process(list) { function process(list) {
queue = []; queue = [];
setScrollDistance();
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;
}
for (let { addedNodes } of list) { for (let { addedNodes } of list) {
if ( if (
@ -101,9 +96,10 @@ module.exports = {
$scroll.classList.add('hidden'); $scroll.classList.add('hidden');
$scroller = document.querySelector('.notion-frame > .notion-scroller'); $scroller = document.querySelector('.notion-frame > .notion-scroller');
setScrollDistance();
$scroller.addEventListener('scroll', (event) => { $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'); $scroll.classList.add('hidden');
else else
$scroll.classList.remove('hidden'); $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;
}
}
} }
}); });
} }