Skip to content

Commit ac108a3

Browse files
MKirovaMKirova
authored andcommitted
chore(*): Making sure filteredData collection contains both pinned and unpinned filter results.
1 parent b37dc87 commit ac108a3

File tree

4 files changed

+40
-3
lines changed

4 files changed

+40
-3
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2391,6 +2391,9 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
23912391
*/
23922392
protected destroy$ = new Subject<any>();
23932393

2394+
protected _filteredPinnedData;
2395+
protected _filteredUnpinnedData;
2396+
23942397
/**
23952398
* @hidden
23962399
*/
@@ -2826,6 +2829,17 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
28262829
}
28272830
}
28282831

2832+
public setFilterData(data, pinned: boolean) {
2833+
if (this.pinnedRecords.length > 0 && pinned) {
2834+
this._filteredPinnedData = data;
2835+
this.filteredData = [... this._filteredPinnedData, ... this._filteredUnpinnedData];
2836+
} else if (this.pinnedRecords.length > 0 && !pinned) {
2837+
this._filteredUnpinnedData = data;
2838+
} else {
2839+
this.filteredData = data;
2840+
}
2841+
}
2842+
28292843
/**
28302844
* @hidden
28312845
* @internal

projects/igniteui-angular/src/lib/grids/grid/grid.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@
114114
<ng-container *ngIf='pinnedRecords
115115
| gridTransaction:id:pipeTrigger
116116
| visibleColumns:hasVisibleColumns
117-
| gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger
117+
| gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true
118118
| gridSort:sortingExpressions:sortStrategy:id:pipeTrigger
119119
| gridDetails:hasDetails:expansionStates:pipeTrigger as pinnedData'>
120120
<div #pinContainer *ngIf='pinnedData.length > 0'

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ export class IgxGridFilteringPipe implements PipeTransform {
135135

136136
public transform(collection: any[], expressionsTree: IFilteringExpressionsTree,
137137
filterStrategy: IFilteringStrategy,
138-
advancedExpressionsTree: IFilteringExpressionsTree, id: string, pipeTrigger: number, filteringPipeTrigger: number) {
138+
advancedExpressionsTree: IFilteringExpressionsTree, id: string, pipeTrigger: number, filteringPipeTrigger: number, pinned?) {
139139
const grid = this.gridAPI.grid;
140140
const state = {
141141
expressionsTree: expressionsTree,
@@ -148,7 +148,7 @@ export class IgxGridFilteringPipe implements PipeTransform {
148148
}
149149

150150
const result = DataUtil.filter(cloneArray(collection), state);
151-
grid.filteredData = result;
151+
grid.setFilterData(result, pinned);
152152
return result;
153153
}
154154
}

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,29 @@ describe('Row Pinning #grid', () => {
256256
expectedHeight = parseInt(grid.height, 10) - grid.pinnedRowHeight - 18 - grid.theadRow.nativeElement.offsetHeight;
257257
expect(grid.calcHeight - expectedHeight).toBeLessThanOrEqual(1);
258258
});
259+
260+
it('should return correct filterData collection.', () => {
261+
grid.getRowByIndex(1).pin();
262+
fix.detectChanges();
263+
grid.getRowByIndex(5).pin();
264+
fix.detectChanges();
265+
266+
grid.filter('ID', 'B', IgxStringFilteringOperand.instance().condition('contains'), false);
267+
fix.detectChanges();
268+
269+
let gridFilterData = grid.filteredData;
270+
expect(gridFilterData.length).toBe(7);
271+
expect(gridFilterData[0].ID).toBe('BLAUS');
272+
expect(gridFilterData[1].ID).toBe('BERGS');
273+
274+
fix.componentInstance.pinningConfig = { columns: ColumnPinningPosition.Start, rows: RowPinningPosition.Bottom };
275+
fix.detectChanges();
276+
277+
gridFilterData = grid.filteredData;
278+
expect(gridFilterData.length).toBe(7);
279+
expect(gridFilterData[0].ID).toBe('BLAUS');
280+
expect(gridFilterData[1].ID).toBe('BERGS');
281+
});
259282
});
260283
});
261284

0 commit comments

Comments
 (0)