Skip to content

Commit f0c7dd0

Browse files
fix(grids): improve the appearance of the pinning icon in the Custom Column Pinning UI samples - vNext (#3183)
* fix(grids): improve the pinning icon in Custom Column Pinning UI samples * fix(grids): add a missing CSS class to the header's text * fix(grids): set width to all columns Co-authored-by: Deyan Kamburov <dkamburov@users.noreply.github.com>
1 parent 2cee12b commit f0c7dd0

10 files changed

Lines changed: 107 additions & 111 deletions

live-editing/configs/HierarchicalGridConfigGenerator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ export class HierarchicalGridConfigGenerator implements IConfigGenerator {
342342
}));
343343

344344
configs.push(new Config({
345-
additionalFiles: ['/src/app/directives/prevent-scroll.directive.ts', '/src/app/data/hierarchical-data.ts'],
345+
additionalFiles: ['/src/app/directives/prevent-scroll.directive.ts', '/src/app/data/hierarchical-data.ts', '/src/app/services/svgIcons.ts'],
346346
appModuleConfig: new AppModuleConfig({
347347
imports: ['IgxHierarchicalGridModule', 'HGridPinningSampleComponent', 'IgxPreventDocumentScrollModule'],
348348
ngDeclarations: ['HGridPinningSampleComponent'],

live-editing/configs/TreeGridConfigGenerator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ export class TreeGridConfigGenerator implements IConfigGenerator {
221221

222222
// TreeGrid Column Pinning sample
223223
configs.push(new Config({
224-
additionalFiles: ['/src/app/directives/prevent-scroll.directive.ts', '/src/app/tree-grid/data/employees-flat-detailed.ts'],
224+
additionalFiles: ['/src/app/directives/prevent-scroll.directive.ts', '/src/app/tree-grid/data/employees-flat-detailed.ts', '/src/app/services/svgIcons.ts'],
225225
appModuleConfig: new AppModuleConfig({
226226
imports: ['IgxPreventDocumentScrollModule', 'IgxTreeGridModule', 'TreeGridColumnPinningSampleComponent', 'IgxIconModule'],
227227
ngDeclarations: ['TreeGridColumnPinningSampleComponent'],
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<div class="grid__wrapper" style='width: 100%;'>
22
<igx-grid [igxPreventDocumentScroll]="true" #grid1 [data]="data" [width]="'100%'" [height]="'480px'">
3-
<igx-column #col *ngFor="let c of columns" [field]="c.field" [header]="c.header" [width]="c.width" [pinned]='c.pinned'
4-
[hidden]='c.hidden' [headerClasses]="'customHeaderSyle'">
3+
<igx-column #col *ngFor="let c of columns" [field]="c.field" [header]="c.header" [width]="c.width"
4+
[pinned]='c.pinned' [hidden]='c.hidden' [headerClasses]="'customHeaderSyle'">
55
<ng-template igxHeader>
66
<div class="title-inner">
7-
<span style="float:left">{{col.header}}</span>
8-
<igx-icon class="pin-icon" family="filtering-icons" name="{{col.pinned ? 'unpin' : 'pin'}}" (click)="toggleColumn(col)"></igx-icon>
7+
<span class="header-text">{{col.header}}</span>
8+
<igx-icon class="pin-icon" [class.pinned]="col.pinned" [class.unpinned]="!col.pinned"
9+
family="filtering-icons" name="{{col.pinned ? 'unpin' : 'pin'}}" (click)="toggleColumn(col)">
10+
</igx-icon>
911
</div>
1012
</ng-template>
1113
</igx-column>
1214
</igx-grid>
13-
</div>
15+
</div>
Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,39 @@
1-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fontawesome.css");
2-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-regular.css");
3-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-solid.css");
4-
5-
.header-icon {
6-
font-size: 1.1em;
7-
width: 1.1em;
8-
height: 1.1em;
9-
float: right;
10-
cursor: pointer;
1+
.grid__wrapper {
2+
margin: 0 auto;
3+
padding: 16px;
114
}
125

13-
.header {
14-
height: 100%;
6+
.title-inner {
7+
display: flex;
8+
justify-content: space-between;
9+
align-items: center;
1510
}
1611

17-
:host ::ng-deep .title {
18-
width: 100%;
12+
.header-text {
13+
white-space: nowrap;
14+
overflow: hidden;
15+
text-overflow: ellipsis;
1916
}
2017

2118
.pin-icon {
2219
margin-left: 8px;
23-
font-size: 14px;
2420
cursor: pointer;
2521
display: flex;
2622
align-items: center;
27-
color: #999;
23+
}
24+
25+
.pinned {
26+
color: #444;
2827

2928
&:hover {
30-
color: #444
29+
color: #999;
3130
}
3231
}
3332

34-
.igx-grid__th--pinned {
35-
.pin-icon {
36-
color: #444;
33+
.unpinned {
34+
color: #999;
3735

38-
&:hover {
39-
color: #999
40-
}
36+
&:hover {
37+
color: #444;
4138
}
4239
}
43-
44-
.title-inner {
45-
display: flex;
46-
justify-content: space-between;
47-
align-items: center;
48-
}
49-
50-
.grid__wrapper {
51-
margin: 0 auto;
52-
padding: 16px;
53-
}

src/app/hierarchical-grid/hierarchical-grid-column-pinning/hierarchical-grid-pinning.component.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<div class="grid__wrapper">
22
<ng-template igxHeader let-column #pinTemplate>
33
<div class="title-inner">
4-
<span style="float:left">{{column.header || column.field}}</span>
5-
<igx-icon class="pin-icon" [class.pinned]="column.pinned" [class.unpinned]="!column.pinned" family="fas" name="fa-thumbtack"
6-
(click)="toggleColumn(column)"></igx-icon>
4+
<span class="header-text">{{column.header || column.field}}</span>
5+
<igx-icon class="pin-icon" [class.pinned]="column.pinned" [class.unpinned]="!column.pinned"
6+
family="filtering-icons" name="{{column.pinned ? 'unpin' : 'pin'}}" (click)="toggleColumn(column)">
7+
</igx-icon>
78
</div>
89
</ng-template>
910
<igx-hierarchical-grid [igxPreventDocumentScroll]="true" class="hierarchicalGrid" [data]="localdata" [autoGenerate]="false"
Lines changed: 20 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,39 @@
1-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fontawesome.css");
2-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-regular.css");
3-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-solid.css");
4-
5-
.header-icon {
6-
font-size: 1.1em;
7-
width: 1.1em;
8-
height: 1.1em;
9-
float: right;
10-
cursor: pointer;
1+
.grid__wrapper {
2+
margin: 0 auto;
3+
padding: 16px;
114
}
125

13-
.header {
14-
height: 100%;
6+
.title-inner {
7+
display: flex;
8+
justify-content: space-between;
9+
align-items: center;
1510
}
1611

17-
:host ::ng-deep .title {
18-
width: 100%;
12+
.header-text {
13+
white-space: nowrap;
14+
overflow: hidden;
15+
text-overflow: ellipsis;
1916
}
2017

2118
.pin-icon {
2219
margin-left: 8px;
23-
font-size: 14px;
2420
cursor: pointer;
2521
display: flex;
2622
align-items: center;
27-
color: #999;
28-
29-
&:hover {
30-
color: #444
31-
}
3223
}
3324

34-
.igx-grid__th--pinned {
35-
.pin-icon {
36-
color: #444;
25+
.pinned {
26+
color: #444;
3727

38-
&:hover {
39-
color: #999
40-
}
28+
&:hover {
29+
color: #999;
4130
}
4231
}
4332

44-
.title-inner {
45-
display: flex;
46-
justify-content: space-between;
47-
align-items: center;
48-
}
33+
.unpinned {
34+
color: #999;
4935

50-
.photo {
51-
vertical-align: middle;
52-
max-height: 62px;
53-
}
54-
.cell__inner_2 {
55-
margin: 1px
36+
&:hover {
37+
color: #444;
38+
}
5639
}
57-
58-
.grid__wrapper {
59-
margin: 0 auto;
60-
padding: 16px;
61-
}
Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,35 @@
1-
import { Component } from '@angular/core';
2-
import { ColumnType } from 'igniteui-angular';
1+
2+
import { AfterViewInit, ChangeDetectorRef, Component } from '@angular/core';
3+
import { ColumnType, IgxIconService } from 'igniteui-angular';
34
import { CUSTOMERS } from '../../data/hierarchical-data';
5+
import { icons } from "../../services/svgIcons";
46

7+
const FILTERING_ICONS_FONT_SET = 'filtering-icons';
58
@Component({
69
selector: 'app-hierarchical-grid-pinning',
710
styleUrls: ['./hierarchical-grid-pinning.component.scss'],
811
templateUrl: 'hierarchical-grid-pinning.component.html'
912
})
1013

11-
export class HGridPinningSampleComponent {
14+
export class HGridPinningSampleComponent implements AfterViewInit {
1215
public localdata;
1316

14-
constructor() {
17+
constructor(private cdr: ChangeDetectorRef, private iconService: IgxIconService) {
1518
this.localdata = CUSTOMERS;
1619
}
1720

18-
public toggleColumn(col: ColumnType) {
19-
col.pinned ? col.unpin() : col.pin();
21+
22+
public ngAfterViewInit() {
23+
const pinnedIcons = icons.filter(icon => icon.name === "pin" || icon.name === "unpin");
24+
pinnedIcons.forEach(icon => {
25+
if (!this.iconService.isSvgIconCached(icon.name, FILTERING_ICONS_FONT_SET)) {
26+
this.iconService.addSvgIconFromText(icon.name, icon.value, FILTERING_ICONS_FONT_SET);
27+
}
28+
});
29+
}
30+
31+
public toggleColumn(column: ColumnType) {
32+
column.pinned ? column.unpin() : column.pin();
33+
this.cdr.detectChanges();
2034
}
2135
}

src/app/tree-grid/tree-grid-column-pinning-sample/tree-grid-column-pinning-sample.component.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<ng-template igxHeader let-column #pinTemplate>
22
<div class="title-inner">
3-
<span style="float:left">{{column.header || column.field}}</span>
4-
<igx-icon class="pin-icon" [class.pinned]="column.pinned" [class.unpinned]="!column.pinned" family="fas" name="fa-thumbtack"
5-
(click)="toggleColumn(column)"></igx-icon>
3+
<span class="header-text">{{column.header || column.field}}</span>
4+
<igx-icon class="pin-icon" [class.pinned]="column.pinned" [class.unpinned]="!column.pinned"
5+
family="filtering-icons" name="{{column.pinned ? 'unpin' : 'pin'}}" (click)="toggleColumn(column)">
6+
</igx-icon>
67
</div>
78
</ng-template>
89
<div class="grid__wrapper">

src/app/tree-grid/tree-grid-column-pinning-sample/tree-grid-column-pinning-sample.component.scss

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
1-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fontawesome.css");
2-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-regular.css");
3-
@import url("https://unpkg.com/@fortawesome/fontawesome-free-webfonts@^1.0.9/css/fa-solid.css");
4-
51
.grid__wrapper {
6-
padding: 16px;
2+
margin: 0 auto;
3+
padding: 16px;
4+
}
5+
6+
.title-inner {
7+
display: flex;
8+
justify-content: space-between;
9+
align-items: center;
10+
}
11+
12+
.header-text {
13+
white-space: nowrap;
14+
overflow: hidden;
15+
text-overflow: ellipsis;
716
}
817

918
.pin-icon {
1019
margin-left: 8px;
11-
font-size: 14px;
1220
cursor: pointer;
1321
display: flex;
1422
align-items: center;
@@ -29,9 +37,3 @@
2937
color: #444;
3038
}
3139
}
32-
33-
.title-inner {
34-
display: flex;
35-
justify-content: space-between;
36-
align-items: center;
37-
}
Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,33 @@
1-
import { Component, ViewChild } from '@angular/core';
2-
import { ColumnType, IgxTreeGridComponent } from 'igniteui-angular';
1+
import { AfterViewInit, ChangeDetectorRef, Component, ViewChild } from '@angular/core';
2+
import { ColumnType, IgxIconService, IgxTreeGridComponent } from 'igniteui-angular';
33
import { generateEmployeeDetailedFlatData } from '../data/employees-flat-detailed';
4+
import { icons } from "../../services/svgIcons";
45

6+
const FILTERING_ICONS_FONT_SET = "filtering-icons";
57
@Component({
68
selector: 'app-tree-grid-column-pinning-sample',
79
styleUrls: ['./tree-grid-column-pinning-sample.component.scss'],
810
templateUrl: './tree-grid-column-pinning-sample.component.html'
911
})
10-
export class TreeGridColumnPinningSampleComponent {
12+
export class TreeGridColumnPinningSampleComponent implements AfterViewInit {
1113
@ViewChild('treeGrid', { static: true }) public treeGrid: IgxTreeGridComponent;
1214
public data: any[];
1315

14-
constructor() {
16+
constructor(private cdr: ChangeDetectorRef, private iconService: IgxIconService) {
1517
this.data = generateEmployeeDetailedFlatData();
1618
}
1719

20+
public ngAfterViewInit() {
21+
const pinnedIcons = icons.filter(icon => icon.name === "pin" || icon.name === "unpin");
22+
pinnedIcons.forEach(icon => {
23+
if (!this.iconService.isSvgIconCached(icon.name, FILTERING_ICONS_FONT_SET)) {
24+
this.iconService.addSvgIconFromText(icon.name, icon.value, FILTERING_ICONS_FONT_SET);
25+
}
26+
});
27+
}
28+
1829
public toggleColumn(column: ColumnType) {
1930
column.pinned ? column.unpin() : column.pin();
31+
this.cdr.detectChanges();
2032
}
2133
}

0 commit comments

Comments
 (0)