From d9cc1d4ceff1d8528db1cb8c8343d192d6d324f1 Mon Sep 17 00:00:00 2001 From: Fernando Date: Tue, 14 Jan 2025 01:17:16 -0500 Subject: [PATCH] fix(empty gaps): prevent empty gaps on fast scrolling, fix (#863, #882) --- .../src/components/RecycleScroller.vue | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/vue-virtual-scroller/src/components/RecycleScroller.vue b/packages/vue-virtual-scroller/src/components/RecycleScroller.vue index 60c94950..a75a77b5 100644 --- a/packages/vue-virtual-scroller/src/components/RecycleScroller.vue +++ b/packages/vue-virtual-scroller/src/components/RecycleScroller.vue @@ -756,8 +756,20 @@ export default { throw new Error('Rendered items limit reached') }, + isAnyVisibleGap () { + // Check if any view index is not in sequence (detect gaps) + return this.pool + .filter(({ nr }) => nr.used) + .every(({ nr }, i) => i === 0 || nr.index !== this.pool[i - 1].index + 1) + }, + sortViews () { this.pool.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index) + + if (this.isAnyVisibleGap()) { + this.updateVisibleItems(false) + clearTimeout(this.$_sortTimer) + } }, }, }