Skip to content

Commit daaab9d

Browse files
author
Andrea Barbasso
committed
[DSC-2682] persist current pageSize when calling doPageChange
1 parent 7f462d2 commit daaab9d

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

src/app/core/pagination/pagination.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export class PaginationService {
6969
map(([page, size]) => {
7070
return Object.assign(new PaginationComponentOptions(), defaultPagination, {
7171
currentPage: this.convertToNumeric(page, defaultPagination.currentPage),
72-
pageSize: this.getBestMatchPageSize(size, defaultPagination),
72+
pageSize: size || this.getBestMatchPageSize(size, defaultPagination),
7373
});
7474
}),
7575
);

src/app/shared/pagination/pagination.component.spec.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,11 +286,11 @@ describe('Pagination component', () => {
286286

287287
changePage(testFixture, 3);
288288
tick();
289-
expect(paginationService.updateRoute).toHaveBeenCalledWith('test', Object.assign({ page: 3 }), {}, false);
289+
expect(paginationService.updateRoute).toHaveBeenCalledWith('test', Object.assign({ page: 3, pageSize: 10 }), {}, false);
290290

291291
changePage(testFixture, 0);
292292
tick();
293-
expect(paginationService.updateRoute).toHaveBeenCalledWith('test', Object.assign({ page: 2 }), {}, false);
293+
expect(paginationService.updateRoute).toHaveBeenCalledWith('test', Object.assign({ page: 2, pageSize: 10 }), {}, false);
294294
}));
295295

296296
it('should set correct pageSize route parameters', fakeAsync(() => {
@@ -389,6 +389,35 @@ describe('Pagination component', () => {
389389
expect(next).toBeTruthy();
390390
});
391391
});
392+
393+
it('emits pageChange event with the correct page number', fakeAsync(() => {
394+
spyOn(testComp, 'pageChanged');
395+
const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p;
396+
397+
paginationComponent.doPageChange(2);
398+
tick();
399+
400+
expect(testComp.pageChanged).toHaveBeenCalledWith(2);
401+
}));
402+
403+
it('updates query params with the correct page and pageSize', fakeAsync(() => {
404+
const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p;
405+
406+
paginationComponent.doPageChange(3);
407+
tick();
408+
409+
expect(paginationService.updateRoute).toHaveBeenCalledWith('test', { page: 3, pageSize: 10 }, {}, false);
410+
}));
411+
412+
it('handles undefined pageSize gracefully', fakeAsync(() => {
413+
const paginationComponent: PaginationComponent = testFixture.debugElement.query(By.css('ds-pagination')).references.p;
414+
415+
currentPagination.next(Object.assign(new PaginationComponentOptions(), pagination, { pageSize: undefined }));
416+
paginationComponent.doPageChange(1);
417+
tick();
418+
419+
expect(paginationService.updateRoute).toHaveBeenCalledWith('test', { page: 1, pageSize: undefined }, {}, false);
420+
}));
392421
});
393422

394423
});

src/app/shared/pagination/pagination.component.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,11 +325,14 @@ export class PaginationComponent implements OnChanges, OnDestroy, OnInit {
325325
*
326326
* @param page
327327
* The page being navigated to.
328+
* @param pageSize
328329
*/
329330
public doPageChange(page: number) {
330-
this.updateParams({ page: page });
331-
this.emitPaginationChange();
332-
this.pageChange.emit(page);
331+
this.pageSize$.pipe(take(1)).subscribe((pageSize) => {
332+
this.updateParams({ page, pageSize: pageSize });
333+
this.emitPaginationChange();
334+
this.pageChange.emit(page);
335+
});
333336
}
334337

335338
/**

0 commit comments

Comments
 (0)