From 00376b43f82b1b751974e827931373595c40c0f7 Mon Sep 17 00:00:00 2001 From: Benjamin Tissoires Date: Tue, 26 Mar 2019 15:54:53 +0100 Subject: list: make sure the spinner of infinite scrolling doesn't show on load When loading a board on a high resolution screen, there is a chance there is not enough cards displayed and the spinner is still there, spinning forever. Add an idle callback that checks if the spinner is still there, and while it is there, extend the number of cards to show. Fixes #2250 --- client/components/lists/listBody.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'client/components/lists') diff --git a/client/components/lists/listBody.js b/client/components/lists/listBody.js index 006f8f0d..d6a62cc9 100644 --- a/client/components/lists/listBody.js +++ b/client/components/lists/listBody.js @@ -5,6 +5,7 @@ BlazeComponent.extendComponent({ onCreated() { // for infinite scrolling this.cardlimit = new ReactiveVar(InfiniteScrollIter); + this.spinnerShown = false; }, onRendered() { @@ -19,9 +20,8 @@ BlazeComponent.extendComponent({ const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { - if (entry.isIntersecting) { - this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); - } + this.spinnerShown = entry.isIntersecting; + this.updateList(); }); }, options); @@ -29,6 +29,13 @@ BlazeComponent.extendComponent({ } }, + updateList() { + if (this.spinnerShown) { + this.cardlimit.set(this.cardlimit.get() + InfiniteScrollIter); + window.requestIdleCallback(() => this.updateList()); + } + }, + mixins() { return [Mixins.PerfectScrollbar]; }, -- cgit v1.2.3-1-g7c22