Fix: virtual grid scrolling bug when container is rendered with emtpy items (switching tabs) (#4251)

This commit is contained in:
Christian Byrne
2025-06-23 00:13:46 -07:00
committed by GitHub
parent 8e2d7cabba
commit a80a939324
2 changed files with 13 additions and 7 deletions

View File

@@ -92,12 +92,21 @@ whenever(
const updateItemSize = () => {
if (container.value) {
const firstItem = container.value.querySelector('[data-virtual-grid-item]')
itemHeight.value = firstItem?.clientHeight || defaultItemHeight
itemWidth.value = firstItem?.clientWidth || defaultItemWidth
// Don't update item size if the first item is not rendered yet
if (!firstItem?.clientHeight || !firstItem?.clientWidth) return
if (itemHeight.value !== firstItem.clientHeight) {
itemHeight.value = firstItem.clientHeight
}
if (itemWidth.value !== firstItem.clientWidth) {
itemWidth.value = firstItem.clientWidth
}
}
}
const onResize = debounce(updateItemSize, resizeDebounce)
watch([width, height], onResize, { flush: 'post' })
whenever(() => items, updateItemSize)
onBeforeUnmount(() => {
onResize.cancel() // Clear pending debounced calls
})