From 92e5bfeaa3950ff2779a280345a7d9a0bbf63e29 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 6 Nov 2023 11:18:44 +0100 Subject: [PATCH] add fallback to last page --- .../utils/pagination-manager/pagination.manager.test.ts | 7 +++++++ .../shared/utils/pagination-manager/pagination.manager.ts | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.test.ts b/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.test.ts index 0b8d53603f..d669773754 100644 --- a/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.test.ts @@ -98,6 +98,13 @@ describe('UmbContextConsumer', () => { manager.setTotalItems(100); expect(manager.getTotalPages()).to.equal(20); }); + + it('it fall backs to the last page number if the totalPages is less than the currentPage', () => { + manager.setPageSize(5); + manager.setTotalItems(10); + manager.setCurrentPageNumber(5); + expect(manager.getCurrentPageNumber()).to.equal(2); + }); }); describe('Current Page', () => { diff --git a/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.ts b/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.ts index 52cc815348..511576bab4 100644 --- a/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/shared/utils/pagination-manager/pagination.manager.ts @@ -101,6 +101,12 @@ export class UmbPaginationManager extends EventTarget { #calculateTotalPages() { const totalPages = Math.ceil(this.#totalItems.getValue() / this.#pageSize.getValue()); this.#totalPages.next(totalPages); + + /* If we currently are on a page higher than the total pages. We need to reset the current page to the last page. + This can happen if we have a filter that returns less items than the current page size. */ + if (this.getCurrentPageNumber() > totalPages) { + this.setCurrentPageNumber(totalPages); + } } #calculateSkip() {