diff --git a/packages/vue-virtual-scroller/src/components/RecycleScroller.vue b/packages/vue-virtual-scroller/src/components/RecycleScroller.vue index 60c94950..9036e6f7 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() + clearTimeout(this.$_sortTimer) + } }, }, }