Skip to content

Commit 06c7377

Browse files
authored
Merge branch '19.2.x' into sivanova/fix-15774-19.2.x
2 parents 1279a63 + c4c20dd commit 06c7377

File tree

4 files changed

+54
-25
lines changed

4 files changed

+54
-25
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', () => {

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,18 @@ describe('IgxGrid - Grid Toolbar #grid - ', () => {
173173
expect($('#csvEntry').textContent).toMatch(instance.customCSVText);
174174
});
175175

176+
it('progress indicator should stop on canceling the export', () => {
177+
fixture.componentInstance.exportStartCancelled = true;
178+
fixture.detectChanges();
179+
$(TOOLBAR_EXPORTER_TAG).querySelector('button').click();
180+
fixture.detectChanges();
181+
$('#excelEntry').click();
182+
fixture.detectChanges();
183+
184+
expect(instance.exporterAction.isExporting).toBeFalse();
185+
expect(instance.exporterAction.toolbar.showProgress).toBeFalse();
186+
});
187+
176188
it('Setting overlaySettings for each toolbar columns action', () => {
177189
const defaultSettings = instance.pinningAction.overlaySettings;
178190
const defaultFiltSettings = instance.advancedFiltAction.overlaySettings;
@@ -297,7 +309,7 @@ export class DefaultToolbarComponent {
297309
<igx-grid-toolbar-advanced-filtering #advancedFiltAction>
298310
{{ advancedFilteringTitle }}
299311
</igx-grid-toolbar-advanced-filtering>
300-
<igx-grid-toolbar-exporter #exporterAction [exportCSV]="exportCSV" [exportExcel]="exportExcel" [filename]="exportFilename">
312+
<igx-grid-toolbar-exporter #exporterAction [exportCSV]="exportCSV" [exportExcel]="exportExcel" [filename]="exportFilename" (exportStarted)="exportStarted($event)">
301313
{{ exporterText }}
302314
<span id="excelEntry" excelText>{{ customExcelText }}</span>
303315
<span id="csvEntry" csvText>{{ customCSVText }}</span>
@@ -346,8 +358,15 @@ export class ToolbarActionsComponent {
346358
modal: true,
347359
closeOnEscape: false
348360
};
361+
public exportStartCancelled = false;
349362

350363
constructor() {
351364
this.data = [...DATA];
352365
}
366+
367+
public exportStarted(args) {
368+
if (this.exportStartCancelled) {
369+
args.cancel = true;
370+
}
371+
}
353372
}

projects/igniteui-angular/src/lib/grids/toolbar/grid-toolbar-exporter.component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,14 @@ export class IgxGridToolbarExporterComponent extends BaseToolbarDirective {
126126

127127
this.exportStarted.emit(args);
128128
this.grid.toolbarExporting.emit(args);
129-
this.isExporting = true;
130-
this.toolbar.showProgress = true;
131129

132130
if (args.cancel) {
133131
return;
134132
}
135133

134+
this.isExporting = true;
135+
this.toolbar.showProgress = true;
136+
136137
exporter.exportEnded.pipe(first()).subscribe(() => {
137138
this.exportEnded.emit();
138139
this.isExporting = false;

0 commit comments

Comments
 (0)