Skip to content

Commit da2a59e

Browse files
committed
feat(igxGrid): Add styling for the first cell of a pinned row ghost. Remove obsolete code and set upinned records in pipe.
1 parent 6dc013d commit da2a59e

File tree

9 files changed

+24
-42
lines changed

9 files changed

+24
-42
lines changed

projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-component.scss

+4
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,10 @@
396396
@extend %grid-cell--pinned--column-selected !optional;
397397
}
398398

399+
@include e(td, $m: row-pinned-first) {
400+
@extend %grid-cell--row-pinned-first !optional;
401+
}
402+
399403
@include e(td, $m: pinned-chip) {
400404
@extend %grid-cell--pinned-chip !optional;
401405
}

projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss

+4
Original file line numberDiff line numberDiff line change
@@ -1417,6 +1417,10 @@
14171417
}
14181418
}
14191419

1420+
%grid-cell--row-pinned-first {
1421+
overflow: hidden;
1422+
}
1423+
14201424
%grid-cell--pinned-chip {
14211425
margin-#{$right}: rem(12px);
14221426
}

projects/igniteui-angular/src/lib/grids/cell.component.ts

+1
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,7 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy {
546546
/**
547547
* @hidden
548548
*/
549+
@HostBinding('class.igx-grid__td--row-pinned-first')
549550
public get displayPinnedChip() {
550551
return this.row.pinned && this.row.disabled && this.visibleColumnIndex === 0;
551552
}

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

+7-2
Original file line numberDiff line numberDiff line change
@@ -2441,6 +2441,11 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
24412441
*/
24422442
public columnWidthSetByUser = false;
24432443

2444+
/**
2445+
* @hidden @internal
2446+
*/
2447+
public unpinnedRecords: any[];
2448+
24442449
data: any[];
24452450
filteredData: any[];
24462451

@@ -5156,7 +5161,7 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
51565161
* ```
51575162
*/
51585163
get dataView(): any[] {
5159-
return this.verticalScrollContainer.igxForOf.map(rec => this.isGhostRecord(rec) ? rec.recordRef : rec) ;
5164+
return this.unpinnedRecords ? this.unpinnedRecords : this.verticalScrollContainer.igxForOf;
51605165
}
51615166

51625167
/**
@@ -5410,7 +5415,7 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
54105415
* If `headers` is enabled, it will use the column header (if any) instead of the column field.
54115416
*/
54125417
public getSelectedData(formatters = false, headers = false) {
5413-
const source = this.isRowPinningToTop ? [...this.pinnedDataView, ...this.dataView] : [...this.dataView, ...this.pinnedDataView];
5418+
const source = this.filteredSortedData;
54145419
return this.extractDataFromSelection(source, formatters, headers);
54155420
}
54165421

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

+2-3
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@
115115
<ng-container *ngIf='data
116116
| gridTransaction:id:pipeTrigger
117117
| visibleColumns:hasVisibleColumns
118-
| rowPinning:id:true:pipeTrigger
118+
| gridRowPinning:id:true:pipeTrigger
119119
| gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true
120120
| gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>
121121
<div #pinContainer *ngIf='pinnedData.length > 0'
@@ -140,8 +140,7 @@
140140
| gridPaging:page:perPage:id:pipeTrigger
141141
| gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:pipeTrigger:summaryPipeTrigger
142142
| gridDetails:hasDetails:expansionStates:pipeTrigger
143-
| rowPinning:id:false:pipeTrigger
144-
"
143+
| gridRowPinning:id:false:pipeTrigger"
145144
let-rowIndex="index" [igxForScrollOrientation]="'vertical'" [igxForScrollContainer]='verticalScroll'
146145
[igxForContainerSize]='calcHeight'
147146
[igxForItemSize]="hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight"

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ export class IgxGridFilteringPipe implements PipeTransform {
156156
* @hidden
157157
*/
158158
@Pipe({
159-
name: 'rowPinning',
159+
name: 'gridRowPinning',
160160
pure: true
161161
})
162162
export class IgxGridRowPinningPipe implements PipeTransform {
@@ -176,6 +176,7 @@ export class IgxGridRowPinningPipe implements PipeTransform {
176176
return result;
177177
}
178178

179+
grid.unpinnedRecords = collection;
179180
return collection.map((rec) => {
180181
return grid.isRecordPinned(rec) ? { recordRef: rec, ghostRecord: true} : rec;
181182
});

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
<ng-container *ngIf="data
9898
| gridTransaction:id:pipeTrigger
9999
| visibleColumns:hasVisibleColumns
100-
| gridHierarchicalRowPinning:true:pipeTrigger
100+
| gridRowPinning:id:true:pipeTrigger
101101
| gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true
102102
| gridSort:sortingExpressions:sortStrategy:id:pipeTrigger as pinnedData">
103103
<div #pinContainer *ngIf='pinnedData.length > 0' class='igx-grid__tr--pinned'
@@ -119,7 +119,7 @@
119119
| gridSort:sortingExpressions:sortStrategy:id:pipeTrigger
120120
| gridHierarchicalPaging:page:perPage:id:pipeTrigger
121121
| gridHierarchical:expansionStates:id:primaryKey:childLayoutKeys:pipeTrigger
122-
| gridHierarchicalRowPinning:false:pipeTrigger"
122+
| gridRowPinning:id:false:pipeTrigger"
123123
[igxForScrollOrientation]="'vertical'" [igxForScrollContainer]='verticalScroll'
124124
[igxForContainerSize]='calcHeight' [igxForItemSize]="renderedRowHeight" [igxForTrackBy]='trackChanges'
125125
#verticalScrollContainer (onChunkPreload)="dataLoading($event)">

projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.module.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
22
import { IgxGridModule } from '../grid/grid.module';
33
import { IgxHierarchicalGridComponent } from './hierarchical-grid.component';
44
import { IgxHierarchicalRowComponent } from './hierarchical-row.component';
5-
import { IgxGridHierarchicalPipe, IgxGridHierarchicalPagingPipe, IgxGridHierarchicalRowPinning } from './hierarchical-grid.pipes';
5+
import { IgxGridHierarchicalPipe, IgxGridHierarchicalPagingPipe } from './hierarchical-grid.pipes';
66
import { IgxRowIslandComponent } from './row-island.component';
77
import { IgxChildGridRowComponent } from './child-grid-row.component';
88
import { IgxHierarchicalGridCellComponent } from './hierarchical-cell.component';
@@ -21,8 +21,7 @@ import { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.direc
2121
IgxChildGridRowComponent,
2222
IgxHierarchicalGridCellComponent,
2323
IgxGridHierarchicalPipe,
24-
IgxGridHierarchicalPagingPipe,
25-
IgxGridHierarchicalRowPinning
24+
IgxGridHierarchicalPagingPipe
2625
],
2726
exports: [
2827
IgxGridModule,

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

-31
Original file line numberDiff line numberDiff line change
@@ -77,34 +77,3 @@ export class IgxGridHierarchicalPagingPipe implements PipeTransform {
7777
return result;
7878
}
7979
}
80-
81-
/**
82-
* @hidden
83-
*/
84-
@Pipe({
85-
name: 'gridHierarchicalRowPinning',
86-
pure: true
87-
})
88-
export class IgxGridHierarchicalRowPinning implements PipeTransform {
89-
90-
constructor(private gridAPI: GridBaseAPIService<IgxHierarchicalGridComponent>) { }
91-
92-
public transform(collection: any[], isPinned: boolean, pipeTrigger: number): any[] {
93-
const grid = this.gridAPI.grid;
94-
95-
if (!grid.hasPinnedRecords) {
96-
return isPinned ? [] : collection;
97-
}
98-
99-
if (grid.hasPinnedRecords && isPinned) {
100-
return collection.filter(rec => grid.isRecordPinned(rec));
101-
}
102-
103-
if (grid.childLayoutKeys.length) {
104-
return collection.map((rec) => {
105-
return grid.isRecordPinned(rec) ? { recordRef: rec, ghostRecord: true} : rec;
106-
});
107-
}
108-
return collection.filter(rec => !grid.isRecordPinned(rec));
109-
}
110-
}

0 commit comments

Comments
 (0)