Skip to content

Commit 2cddb59

Browse files
authored
Merge pull request #6904 from IgniteUI/mdragnev/row-pinning-paging
feat(igxGrid): Row Pinning + Paging integration
2 parents a9dea88 + db16519 commit 2cddb59

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

projects/igniteui-angular/src/lib/grids/grid-base.directive.ts

+8
Original file line numberDiff line numberDiff line change
@@ -2674,6 +2674,14 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
26742674
return this._pinnedRecordIDs.length > 0;
26752675
}
26762676

2677+
/**
2678+
* @hidden
2679+
* @internal
2680+
*/
2681+
public get pinnedRecordsCount() {
2682+
return this._pinnedRecordIDs.length;
2683+
}
2684+
26772685
private keydownHandler = (event) => {
26782686
const key = event.key.toLowerCase();
26792687
if ((isNavigationKey(key) && event.keyCode !== 32) || key === 'tab' || key === 'pagedown' || key === 'pageup') {

projects/igniteui-angular/src/lib/grids/grid/grid.pipes.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ export class IgxGridPagingPipe implements PipeTransform {
103103
if (!this.gridAPI.grid.paging) {
104104
return collection;
105105
}
106-
106+
const _perPage = perPage - this.gridAPI.grid.pinnedRecordsCount;
107107
const state = {
108108
index: page,
109-
recordsPerPage: perPage
109+
recordsPerPage: _perPage
110110
};
111111
DataUtil.correctPagingState(state, collection.data.length);
112112

projects/igniteui-angular/src/lib/grids/grid/row-pinning.spec.ts

+27
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,33 @@ describe('Row Pinning #grid', () => {
360360
expect(gridFilterData[1].ID).toBe('BERGS');
361361
});
362362

363+
it('should page through unpinned collection with modified pageSize = pageSize - pinnedRows.lenght.', () => {
364+
// pin 2nd row
365+
grid.paging = true;
366+
grid.perPage = 5;
367+
fix.detectChanges();
368+
let row = grid.getRowByIndex(1);
369+
row.pin();
370+
fix.detectChanges();
371+
372+
expect(grid.pinnedRows.length).toBe(1);
373+
let pinRowContainer = fix.debugElement.queryAll(By.css(FIXED_ROW_CONTAINER));
374+
expect(pinRowContainer.length).toBe(1);
375+
376+
expect(grid.dataView.length).toBe(4);
377+
378+
// unpin
379+
row = grid.getRowByIndex(0);
380+
row.unpin();
381+
fix.detectChanges();
382+
383+
expect(grid.pinnedRows.length).toBe(0);
384+
pinRowContainer = fix.debugElement.queryAll(By.css(FIXED_ROW_CONTAINER));
385+
expect(pinRowContainer.length).toBe(0);
386+
387+
expect(grid.dataView.length).toBe(5);
388+
});
389+
363390
it('should apply sorting to both pinned and unpinned rows.', () => {
364391
grid.getRowByIndex(1).pin();
365392
grid.getRowByIndex(5).pin();

0 commit comments

Comments
 (0)