Skip to content

Commit c02f007

Browse files
Merge pull request #15850 from IgniteUI/bpachilova/fix-unpinned-col-position-15542-19.2.x
fix(grids): correct column position after unpinning when there are hidden columns - 19.2.x
2 parents 72df18a + 21c1a99 commit c02f007

File tree

2 files changed

+31
-22
lines changed

2 files changed

+31
-22
lines changed

projects/igniteui-angular/src/lib/grids/columns/column.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2309,7 +2309,7 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
23092309
// estimate the exact index at which column will be inserted
23102310
// takes into account initial unpinned index of the column
23112311
if (!hasIndex) {
2312-
const indices = grid.unpinnedColumns.map(col => col.index);
2312+
const indices = grid._unpinnedColumns.map(col => col.index);
23132313
indices.push(this.index);
23142314
indices.sort((a, b) => a - b);
23152315
index = indices.indexOf(this.index);

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

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -108,27 +108,6 @@ describe('Column Pinning UI #grid', () => {
108108
verifyColumnIsPinned(column, false, 0);
109109
});
110110

111-
it('Checks order of columns after unpinning', () => {
112-
for (const column of grid.columnList) {
113-
column.pin();
114-
}
115-
fix.detectChanges();
116-
grid.getColumnByName('ID').unpin();
117-
grid.getColumnByName('ReleaseDate').unpin();
118-
grid.getColumnByName('Downloads').unpin();
119-
grid.getColumnByName('ProductName').unpin();
120-
grid.getColumnByName('Released').unpin();
121-
fix.detectChanges();
122-
grid.unpinnedColumns.forEach((column, index) => {
123-
if (index === grid.unpinnedColumns.length - 1) {
124-
return;
125-
}
126-
expect(
127-
column.index < grid.unpinnedColumns[index + 1].index
128-
).toBe(true);
129-
});
130-
});
131-
132111
it('reflects properly grid column pinned value changes.', () => {
133112
const name = 'ReleaseDate';
134113
verifyCheckbox(name, false, false, columnChooserElement);
@@ -307,6 +286,36 @@ describe('Column Pinning UI #grid', () => {
307286
).toBe(true);
308287
});
309288
});
289+
290+
it('Checks order of columns after unpinning if there are hidden columns', () => {
291+
// Columns are ordered like this: ID, ProductName, Downloads, Released, ReleaseDate
292+
expect(grid.getColumnByName('Downloads').index).toBe(2);
293+
expect(grid.getColumnByName('Released').index).toBe(3);
294+
295+
grid.getColumnByName('ID').hidden = true;
296+
grid.getColumnByName('Downloads').pin();
297+
grid.getColumnByName('Released').pin();
298+
fix.detectChanges();
299+
300+
// unpinnedColumns contains only visible cols
301+
expect(grid.unpinnedColumns.length).toBe(2);
302+
// _unpinnedColumns contains all unpinned cols (including hidden)
303+
expect((grid as any)._unpinnedColumns.length).toBe(3);
304+
305+
grid.getColumnByName('Released').unpin();
306+
fix.detectChanges();
307+
308+
expect(grid.unpinnedColumns.length).toBe(3);
309+
expect((grid as any)._unpinnedColumns.length).toBe(4);
310+
// Downloads is still pinned; ID is not part of unpinnedColumns
311+
expect(grid.getColumnByName('Released').field).toEqual((grid as any).unpinnedColumns[1].field);
312+
expect(grid.getColumnByName('Released').field).toEqual((grid as any)._unpinnedColumns[2].field);
313+
314+
grid.getColumnByName('Downloads').unpin();
315+
fix.detectChanges();
316+
expect(grid.getColumnByName('Downloads').field).toEqual((grid as any).unpinnedColumns[1].field);
317+
expect(grid.getColumnByName('Downloads').field).toEqual((grid as any)._unpinnedColumns[2].field);
318+
});
310319
});
311320

312321
describe('Pinning with Column Groups', () => {

0 commit comments

Comments
 (0)