Skip to content

Commit fc514e4

Browse files
authored
Merge branch 'master' into mkirova/mch-percentage
2 parents 1db7993 + 67b4fbb commit fc514e4

File tree

4 files changed

+66
-3
lines changed

4 files changed

+66
-3
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,12 @@ export class IgxColumnLayoutComponent extends IgxColumnGroupComponent implements
100100
this.children.forEach(child => child.hidden = value);
101101
if (this.grid && this.grid.columns && this.grid.columns.length > 0) {
102102
// reset indexes in case columns are hidden/shown runtime
103-
this.grid.columns.filter(x => x.columnGroup).forEach(x => x.populateVisibleIndexes());
103+
const columns = this.grid && this.grid.pinnedColumns && this.grid.unpinnedColumns ?
104+
this.grid.pinnedColumns.concat(this.grid.unpinnedColumns) : [];
105+
if (!this._hidden && !columns.find(c => c.field === this.field)) {
106+
this.grid.resetColumnCollections();
107+
}
108+
this.grid.columns.filter(x => x.columnLayout).forEach(x => x.populateVisibleIndexes());
104109
}
105110
}
106111

projects/igniteui-angular/src/lib/grids/grid/grid.multi-row-layout.integration.spec.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,43 @@ describe('IgxGrid - multi-row-layout Integration #grid - ', () => {
143143
expect(grid.getColumnByName('ContactTitle').hidden).toBeTruthy();
144144
});
145145

146+
it('verify visible column indexes when hide/show a column', () => {
147+
148+
expect(grid.getColumnByName('ID').visibleIndex).toBe(0);
149+
expect(grid.getColumnByName('CompanyName').visibleIndex).toBe(1);
150+
expect(grid.getColumnByName('ContactName').visibleIndex).toBe(2);
151+
expect(grid.getColumnByName('ContactTitle').visibleIndex).toBe(3);
152+
// show PostalCode
153+
grid.getColumnByName('PostalCode').hidden = false;
154+
fixture.detectChanges();
155+
156+
expect(grid.getColumnByName('ID').visibleIndex).toBe(1);
157+
expect(grid.getColumnByName('CompanyName').visibleIndex).toBe(2);
158+
expect(grid.getColumnByName('ContactName').visibleIndex).toBe(3);
159+
expect(grid.getColumnByName('ContactTitle').visibleIndex).toBe(6);
160+
expect(grid.getColumnByName('PostalCode').visibleIndex).toBe(0);
161+
expect(grid.getColumnByName('City').visibleIndex).toBe(4);
162+
expect(grid.getColumnByName('Country').visibleIndex).toBe(5);
163+
expect(grid.getColumnByName('Address').visibleIndex).toBe(7);
164+
165+
// hide PostalCode
166+
grid.getColumnByName('PostalCode').hidden = true;
167+
fixture.detectChanges();
168+
expect(grid.getColumnByName('PostalCode').visibleIndex).toBe(-1);
169+
expect(grid.getColumnByName('City').visibleIndex).toBe(-1);
170+
expect(grid.getColumnByName('Country').visibleIndex).toBe(-1);
171+
expect(grid.getColumnByName('Address').visibleIndex).toBe(-1);
172+
173+
// show PostalCode
174+
grid.getColumnByName('PostalCode').hidden = false;
175+
fixture.detectChanges();
176+
expect(grid.getColumnByName('PostalCode').visibleIndex).toBe(0);
177+
expect(grid.getColumnByName('City').visibleIndex).toBe(4);
178+
expect(grid.getColumnByName('Country').visibleIndex).toBe(5);
179+
expect(grid.getColumnByName('Address').visibleIndex).toBe(7);
180+
});
181+
182+
146183
it('should work with horizontal virtualization when some groups are hidden/shown.', async() => {
147184
const uniqueGroups = [
148185
{

projects/igniteui-angular/src/lib/services/transaction/igx-hierarchical-transaction.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export class IgxHierarchicalTransactionService<T extends HierarchicalTransaction
5555
* Applies all transactions over the provided data
5656
* @param data Data source to update
5757
* @param primaryKey Primary key of the hierarchical data
58-
* @param childDataKey Kye of child data collection
58+
* @param childDataKey Key of child data collection
5959
* @param id Optional record id to commit transactions for
6060
*/
6161
public commit(data: any[], primaryKey?: any, childDataKey?: any, id?: any): void {
@@ -65,10 +65,10 @@ export class IgxHierarchicalTransactionService<T extends HierarchicalTransaction
6565
transactions = transactions.filter(t => t.id === id);
6666
}
6767
DataUtil.mergeHierarchicalTransactions(data, transactions, childDataKey, primaryKey, true);
68+
this.clear(id);
6869
} else {
6970
super.commit(data, id);
7071
}
71-
this.clear(id);
7272
}
7373

7474
// TODO: remove this method. Force cloning to strip child arrays when needed instead

projects/igniteui-angular/src/lib/services/transaction/igx-transaction.spec.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,5 +945,26 @@ describe('IgxTransaction', () => {
945945
expect(transaction.canUndo).toBeFalsy();
946946
expect(transaction.getAggregatedChanges(false).length).toBe(0);
947947
});
948+
949+
it('Should emit onStateUpdate once when commiting a hierarchical transaction', () => {
950+
const data = SampleTestData.employeeTreeData();
951+
const transaction = new IgxHierarchicalTransactionService();
952+
spyOn(transaction.onStateUpdate, 'emit').and.callThrough();
953+
expect(transaction).toBeDefined();
954+
955+
const updateTransaction: HierarchicalTransaction = {
956+
id: 475,
957+
type: TransactionType.UPDATE,
958+
newValue: {
959+
Age: 60
960+
},
961+
path: [data[0].ID]
962+
};
963+
transaction.add(updateTransaction, data[0].Employees[0]);
964+
expect(transaction.onStateUpdate.emit).toHaveBeenCalledTimes(1);
965+
966+
transaction.commit(data, 'ID');
967+
expect(transaction.onStateUpdate.emit).toHaveBeenCalledTimes(2);
968+
});
948969
});
949970
});

0 commit comments

Comments
 (0)