1- import type { Ref } from 'vue'
1+ import type { MaybeRefOrGetter , Ref } from 'vue'
22
33export interface WindowVirtualizerHandle {
44 readonly scrollOffset : number
@@ -20,8 +20,8 @@ export interface UseVirtualInfiniteScrollOptions {
2020 hasMore : Ref < boolean >
2121 /** Whether currently loading */
2222 isLoading : Ref < boolean >
23- /** Page size for calculating current page */
24- pageSize : number
23+ /** Page size for calculating current page (reactive) */
24+ pageSize : MaybeRefOrGetter < number >
2525 /** Threshold in items before end to trigger load */
2626 threshold ?: number
2727 /** Callback to load more items */
@@ -60,7 +60,8 @@ export function useVirtualInfiniteScroll(options: UseVirtualInfiniteScrollOption
6060
6161 // Calculate current visible page based on first visible item
6262 const startIndex = list . findItemIndex ( list . scrollOffset )
63- const newPage = Math . floor ( startIndex / pageSize ) + 1
63+ const currentPageSize = toValue ( pageSize )
64+ const newPage = Math . floor ( startIndex / currentPageSize ) + 1
6465
6566 if ( newPage !== currentPage . value && onPageChange ) {
6667 currentPage . value = newPage
@@ -92,7 +93,7 @@ export function useVirtualInfiniteScroll(options: UseVirtualInfiniteScrollOption
9293 const list = listRef . value
9394 if ( ! list || page < 1 ) return
9495
95- const targetIndex = ( page - 1 ) * pageSize
96+ const targetIndex = ( page - 1 ) * toValue ( pageSize )
9697 list . scrollToIndex ( targetIndex , { align : 'start' } )
9798 currentPage . value = page
9899 }
0 commit comments