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() {