Skip to content

Commit 9da7381

Browse files
authored
Merge branch 'master' into dkamburov/row-pin-hiding
2 parents 0d6b118 + 4bf90ac commit 9da7381

File tree

4 files changed

+57
-3
lines changed

4 files changed

+57
-3
lines changed

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

+18
Original file line numberDiff line numberDiff line change
@@ -2411,6 +2411,8 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
24112411
*/
24122412
protected destroy$ = new Subject<any>();
24132413

2414+
protected _filteredSortedPinnedData;
2415+
protected _filteredSortedUnpinnedData;
24142416
protected _filteredPinnedData;
24152417
protected _filteredUnpinnedData;
24162418

@@ -2935,6 +2937,22 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
29352937
this.setupColumns();
29362938
}
29372939

2940+
/**
2941+
* @hidden
2942+
* @internal
2943+
*/
2944+
public setFilteredSortedData(data, pinned: boolean) {
2945+
if (this._pinnedRecordIDs.length > 0 && pinned) {
2946+
this._filteredSortedPinnedData = data;
2947+
this.filteredSortedData = this.isRowPinningToTop ? [... this._filteredSortedPinnedData, ... this._filteredSortedUnpinnedData] :
2948+
[... this._filteredSortedUnpinnedData, ... this._filteredSortedPinnedData];
2949+
} else if (this._pinnedRecordIDs.length > 0 && !pinned) {
2950+
this._filteredSortedUnpinnedData = data;
2951+
} else {
2952+
this.filteredSortedData = data;
2953+
}
2954+
}
2955+
29382956
/**
29392957
* @hidden @internal
29402958
*/

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@
116116
| visibleColumns:hasVisibleColumns
117117
| rowPinning:id:true:pipeTrigger
118118
| gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true
119-
| gridSort:sortingExpressions:sortStrategy:id:pipeTrigger
119+
| gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true
120120
| gridDetails:hasDetails:expansionStates:pipeTrigger as pinnedData'>
121121
<div #pinContainer *ngIf='pinnedData.length > 0'
122122
[ngClass]="{

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class IgxGridSortingPipe implements PipeTransform {
2929
}
3030

3131
public transform(collection: any[], expressions: ISortingExpression[], sorting: IGridSortingStrategy,
32-
id: string, pipeTrigger: number): any[] {
32+
id: string, pipeTrigger: number, pinned?): any[] {
3333
const grid = this.gridAPI.grid;
3434
let result: any[];
3535

@@ -38,7 +38,7 @@ export class IgxGridSortingPipe implements PipeTransform {
3838
} else {
3939
result = DataUtil.sort(cloneArray(collection), expressions, sorting);
4040
}
41-
grid.filteredSortedData = result;
41+
grid.setFilteredSortedData(result, pinned);
4242

4343
return result;
4444
}

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

+36
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,42 @@ describe('Row Pinning #grid', () => {
253253
expect(grid.getRowByIndex(1).rowID).toBe(fix.componentInstance.data[1]);
254254
});
255255

256+
it('should search in both pinned and unpinned rows.', () => {
257+
// pin 1st row
258+
let row = grid.getRowByIndex(0);
259+
row.pinned = true;
260+
fix.detectChanges();
261+
expect(grid.pinnedRows.length).toBe(1);
262+
263+
let finds = grid.findNext('mari');
264+
fix.detectChanges();
265+
266+
const fixNativeElement = fix.debugElement.nativeElement;
267+
let spans = fixNativeElement.querySelectorAll('.igx-highlight');
268+
expect(spans.length).toBe(1);
269+
expect(finds).toEqual(2);
270+
271+
finds = grid.findNext('antonio');
272+
fix.detectChanges();
273+
274+
spans = fixNativeElement.querySelectorAll('.igx-highlight');
275+
expect(spans.length).toBe(2);
276+
expect(finds).toEqual(2);
277+
278+
// pin 3rd row
279+
row = grid.getRowByIndex(2);
280+
row.pinned = true;
281+
fix.detectChanges();
282+
expect(grid.pinnedRows.length).toBe(2);
283+
284+
finds = grid.findNext('antonio');
285+
fix.detectChanges();
286+
287+
spans = fixNativeElement.querySelectorAll('.igx-highlight');
288+
expect(spans.length).toBe(2);
289+
expect(finds).toEqual(2);
290+
});
291+
256292
it('should allow pinning onInit', () => {
257293
expect(() => {
258294
fix = TestBed.createComponent(GridRowPinningComponent);

0 commit comments

Comments
 (0)