@code { [Parameter] public int PageNumber { get; set; } [Parameter] public EventCallback PageNumberChanged { get; set; } [Parameter] public int[] PageSizes { get; set; } = [5, 10, 25, 50, 100]; [Parameter] public int PageSize { get; set; } [Parameter] public EventCallback PageSizeChanged { get; set; } [Parameter] public int TotalItems { get; set; } [Parameter] public EventCallback TotalItemsChanged { get; set; } public string IndexInfo => TotalItems == 0 ? "No items" : $"{StartIndex.ToString("n0")} - {EndIndex.ToString("n0")} of {TotalItems.ToString("n0")} items"; public int StartIndex => (PageNumber - 1) * PageSize + 1; public int EndIndex => PageNumber * PageSize < TotalItems ? PageNumber * PageSize : TotalItems; private async Task OnSelectedChanged(int newPage) { PageNumber = newPage; await PageNumberChanged.InvokeAsync(newPage); } private async Task OnPageSizeChanged(int newPageSize) { PageSize = newPageSize; await PageSizeChanged.InvokeAsync(newPageSize); } }