Skip to content

Commit 7cde94f

Browse files
author
mmart1n
committed
fix(grid): provide custom summary template via input
1 parent 867f112 commit 7cde94f

File tree

6 files changed

+52
-24
lines changed

6 files changed

+52
-24
lines changed

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

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import {
4444
IgxCellEditorTemplateDirective,
4545
IgxCollapsibleIndicatorTemplateDirective,
4646
IgxFilterCellTemplateDirective,
47-
IgxCustomSummaryCellTemplateDirective
47+
IgxSummaryTemplateDirective
4848
} from './templates.directive';
4949
import { MRLResizeColumnInfo, MRLColumnSizeInfo, IColumnPipeArgs } from './interfaces';
5050
import { DropPosition } from '../moving/moving.service';
@@ -837,8 +837,8 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
837837
/**
838838
* @hidden
839839
*/
840-
@ContentChild(IgxCustomSummaryCellTemplateDirective, { read: IgxCustomSummaryCellTemplateDirective })
841-
public customSummaryCellTemplateDirective: IgxCustomSummaryCellTemplateDirective;
840+
@ContentChild(IgxSummaryTemplateDirective, { read: IgxSummaryTemplateDirective })
841+
protected summaryTemplateDirective: IgxSummaryTemplateDirective;
842842
/**
843843
* @hidden
844844
*/
@@ -1114,6 +1114,39 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
11141114
return '80';
11151115
}
11161116
}
1117+
/**
1118+
* Returns a reference to the `summaryTemplate`.
1119+
* ```typescript
1120+
* let summaryTemplate = this.column.summaryTemplate;
1121+
* ```
1122+
*
1123+
* @memberof IgxColumnComponent
1124+
*/
1125+
@notifyChanges()
1126+
@WatchColumnChanges()
1127+
@Input('summaryTemplate')
1128+
public get summaryTemplate(): TemplateRef<any> {
1129+
return this._summaryTemplate;
1130+
}
1131+
/**
1132+
* Sets the summary template.
1133+
* ```html
1134+
* <ng-template #summaryTemplate igxSummary let-summaryResults>
1135+
* <p>{{ summaryResults[0].label }}: {{ summaryResults[0].summaryResult }}</p>
1136+
* <p>{{ summaryResults[1].label }}: {{ summaryResults[1].summaryResult }}</p>
1137+
* </ng-template>
1138+
* ```
1139+
* ```typescript
1140+
* @ViewChild("'summaryTemplate'", {read: TemplateRef })
1141+
* public summaryTemplate: TemplateRef<any>;
1142+
* this.column.summaryTemplate = this.summaryTemplate;
1143+
* ```
1144+
*
1145+
* @memberof IgxColumnComponent
1146+
*/
1147+
public set summaryTemplate(template: TemplateRef<any>) {
1148+
this._summaryTemplate = template;
1149+
}
11171150
/**
11181151
* Returns a reference to the `bodyTemplate`.
11191152
* ```typescript
@@ -1570,6 +1603,10 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
15701603
* @hidden
15711604
*/
15721605
protected _headerTemplate: TemplateRef<any>;
1606+
/**
1607+
* @hidden
1608+
*/
1609+
protected _summaryTemplate: TemplateRef<any>;
15731610
/**
15741611
* @hidden
15751612
*/
@@ -1677,6 +1714,9 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
16771714
* @hidden
16781715
*/
16791716
public ngAfterContentInit(): void {
1717+
if (this.summaryTemplateDirective) {
1718+
this._summaryTemplate = this.summaryTemplateDirective.template;
1719+
}
16801720
if (this.cellTemplate) {
16811721
this._bodyTemplate = this.cellTemplate.template;
16821722
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ import {
99
IgxCellTemplateDirective,
1010
IgxCollapsibleIndicatorTemplateDirective,
1111
IgxFilterCellTemplateDirective,
12-
IgxCustomSummaryCellTemplateDirective
12+
IgxSummaryTemplateDirective
1313
} from './templates.directive';
1414

1515
@NgModule({
1616
declarations: [
1717
IgxFilterCellTemplateDirective,
18-
IgxCustomSummaryCellTemplateDirective,
18+
IgxSummaryTemplateDirective,
1919
IgxCellTemplateDirective,
2020
IgxCellHeaderTemplateDirective,
2121
IgxCellFooterTemplateDirective,
@@ -32,7 +32,7 @@ import {
3232
],
3333
exports: [
3434
IgxFilterCellTemplateDirective,
35-
IgxCustomSummaryCellTemplateDirective,
35+
IgxSummaryTemplateDirective,
3636
IgxCellTemplateDirective,
3737
IgxCellHeaderTemplateDirective,
3838
IgxCellFooterTemplateDirective,

projects/igniteui-angular/src/lib/grids/columns/templates.directive.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ export class IgxCollapsibleIndicatorTemplateDirective {
5252
}
5353

5454
@Directive({
55-
selector: '[igxCustomSummaryCell]'
55+
selector: '[igxSummary]'
5656
})
57-
export class IgxCustomSummaryCellTemplateDirective {
57+
export class IgxSummaryTemplateDirective {
58+
5859
constructor(public template: TemplateRef<any>) { }
5960
}

projects/igniteui-angular/src/lib/grids/common/grid.interface.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import { IGridGroupingStrategy, IGridSortingStrategy } from './strategy';
3434
import { IForOfState, IgxGridForOfDirective } from '../../directives/for-of/for_of.directive';
3535
import { OverlaySettings } from '../../services/overlay/utilities';
3636
import { IPinningConfig } from '../grid.common';
37-
import { IgxCustomSummaryCellTemplateDirective } from '../columns/templates.directive';
3837

3938
export const IGX_GRID_BASE = new InjectionToken<GridType>('IgxGridBaseToken');
4039
export const IGX_GRID_SERVICE_BASE = new InjectionToken<GridServiceType>('IgxGridServiceBaseToken');
@@ -157,8 +156,8 @@ export interface ColumnType {
157156
filteringIgnoreCase: boolean;
158157
filteringExpressionsTree: FilteringExpressionsTree;
159158
hasSummary: boolean;
160-
customSummaryCellTemplateDirective: IgxCustomSummaryCellTemplateDirective;
161159
summaries: any;
160+
summaryTemplate: TemplateRef<any>;
162161
pinned: boolean;
163162
expanded: boolean;
164163
selected: boolean;

projects/igniteui-angular/src/lib/grids/summaries/summary-cell.component.html

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,11 @@
11
<ng-container *ngIf="hasSummary">
2-
<ng-container *ngTemplateOutlet="column.customSummaryCellTemplateDirective ? customSummary : defaultSummary">
2+
<ng-container *ngTemplateOutlet="column.summaryTemplate ? column.summaryTemplate : defaultSummary; context: { $implicit: summaryResults }">
33
</ng-container>
44
</ng-container>
5-
<ng-template #customSummary>
6-
<ng-container *ngTemplateOutlet="column.customSummaryCellTemplateDirective.template; context: { $implicit: summaryResults }">
7-
</ng-container>
8-
</ng-template>
95
<ng-template #defaultSummary>
106
<ng-container *ngFor="let summary of summaryResults" >
117
<div class="igx-grid-summary__item" [style.height.px]="itemHeight">
128

13-
<ng-container *ngIf="visibleColumnIndex === 0 && firstCellIndentation >= 0">
14-
<div class="igx-grid__tree-cell--padding-level-{{firstCellIndentation}}"></div>
15-
16-
<div #indicator class="igx-grid__tree-grouping-indicator" style="visibility: hidden">
17-
<igx-icon>chevron_right</igx-icon>
18-
</div>
19-
</ng-container>
20-
219
<span class="igx-grid-summary__label" [title]="summary.label">{{ translateSummary(summary) }}</span>
2210
<span class="igx-grid-summary__result" [title]="summary.summaryResult">
2311
{{

src/app/grid-summaries/grid-summaries.sample.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
<ng-template igxCell let-cell="cell" let-val let-row>
3535
${{val}}
3636
</ng-template>
37-
<ng-template igxCustomSummaryCell let-summaryResults>
37+
<ng-template igxSummary let-summaryResults>
3838
<div style="font-size: 0.75rem">
3939
<span>Custom summary cell:</span><br>
4040
<span>Number of Summaries: {{ summaryResults.length }}</span><br>

0 commit comments

Comments
 (0)