Skip to content

Commit db16519

Browse files
authored
Merge branch 'master' into mdragnev/row-pinning-paging
2 parents 0024f12 + a9dea88 commit db16519

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ import { IgxColumnComponent } from './columns/column.component';
147147
import { IgxColumnGroupComponent } from './columns/column-group.component';
148148
import { IGridSortingStrategy } from '../data-operations/sorting-strategy';
149149
import { IgxRowDragGhostDirective, IgxDragIndicatorIconDirective } from './row-drag.directive';
150+
import { isNumber } from 'util';
150151

151152
const MINIMUM_COLUMN_WIDTH = 136;
152153
const FILTER_ROW_HEIGHT = 50;
@@ -4132,7 +4133,8 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
41324133

41334134
this.endEdit(true);
41344135

4135-
this._pinnedRecordIDs.splice(eventArgs.insertAtIndex || this._pinnedRecordIDs.length, 0, rowID);
4136+
const insertIndex = isNumber(eventArgs.insertAtIndex) ? eventArgs.insertAtIndex : this._pinnedRecordIDs.length;
4137+
this._pinnedRecordIDs.splice(insertIndex, 0, rowID);
41364138
this._pipeTrigger++;
41374139
if (this.gridAPI.grid) {
41384140
this.notifyChanges(true);

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

+25
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,31 @@ describe('Row Pinning #grid', () => {
120120
expect(grid.calcHeight - expectedHeight).toBeLessThanOrEqual(1);
121121
});
122122

123+
it('should allow pinning row at specified index via API.', () => {
124+
grid.pinRow(fix.componentInstance.data[1]);
125+
fix.detectChanges();
126+
127+
expect(grid.pinnedRows.length).toBe(1);
128+
expect(grid.pinnedRows[0].rowData).toBe(fix.componentInstance.data[1]);
129+
130+
// pin at index 0
131+
grid.pinRow(fix.componentInstance.data[2], 0);
132+
fix.detectChanges();
133+
134+
expect(grid.pinnedRows.length).toBe(2);
135+
expect(grid.pinnedRows[0].rowData).toBe(fix.componentInstance.data[2]);
136+
expect(grid.pinnedRows[1].rowData).toBe(fix.componentInstance.data[1]);
137+
138+
// pin at index 1
139+
grid.pinRow(fix.componentInstance.data[3], 1);
140+
fix.detectChanges();
141+
142+
expect(grid.pinnedRows.length).toBe(3);
143+
expect(grid.pinnedRows[0].rowData).toBe(fix.componentInstance.data[2]);
144+
expect(grid.pinnedRows[1].rowData).toBe(fix.componentInstance.data[3]);
145+
expect(grid.pinnedRows[2].rowData).toBe(fix.componentInstance.data[1]);
146+
});
147+
123148
it('should emit onRowPinning on pin/unpin.', () => {
124149
spyOn(grid.onRowPinning, 'emit').and.callThrough();
125150

0 commit comments

Comments
 (0)