Skip to content

Commit e0e7a70

Browse files
Copilotdamyanpetev
andcommitted
feat(grid-lite): Update all components to use declarative column API v0.4.0
Co-authored-by: damyanpetev <3198469+damyanpetev@users.noreply.github.com>
1 parent 8767e3f commit e0e7a70

30 files changed

Lines changed: 277 additions & 640 deletions

File tree

package-lock.json

Lines changed: 39 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
"igniteui-angular-extras": "^21.0.0",
8080
"igniteui-angular-i18n": "^21.0.0",
8181
"igniteui-dockmanager": "^1.17.0",
82-
"igniteui-grid-lite": "^0.0.1",
82+
"igniteui-grid-lite": "~0.4.0",
8383
"igniteui-live-editing": "^3.3.0",
8484
"igniteui-webcomponents": "^6.5.0",
8585
"marked": "^17.0.1",

src/app/grid-lite/grid-lite-column-config-dynamic/grid-lite-column-config-dynamic.component.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111

1212
<igc-grid-lite
1313
#gridLite
14-
[columns]="columns"
1514
[data]="data">
15+
<igc-grid-lite-column field="id" header="ID" width="15rem" hidden></igc-grid-lite-column>
16+
<igc-grid-lite-column field="name" header="Product Name" width="15rem"></igc-grid-lite-column>
17+
<igc-grid-lite-column field="price" header="Price" data-type="number" width="15rem" [cellTemplate]="hasFormatters ? formatCurrency : undefined"></igc-grid-lite-column>
18+
<igc-grid-lite-column field="sold" header="Units sold" data-type="number" width="15rem"></igc-grid-lite-column>
19+
<igc-grid-lite-column field="total" header="Total sold" width="15rem" [cellTemplate]="hasFormatters ? formatCurrency : undefined"></igc-grid-lite-column>
20+
<igc-grid-lite-column field="rating" header="Customer rating" data-type="number" width="15rem" [cellTemplate]="formatRating"></igc-grid-lite-column>
1621
</igc-grid-lite>
1722
</div>

src/app/grid-lite/grid-lite-column-config-dynamic/grid-lite-column-config-dynamic.component.ts

Lines changed: 15 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -20,72 +20,31 @@ export class GridLiteColumnConfigDynamicComponent implements OnInit {
2020
@ViewChild('gridLite', { static: false }) gridLite!: ElementRef;
2121

2222
public data: ProductInfo[] = [];
23-
public columns: any[] = [];
2423
public hasFormatters = true;
2524

26-
private formatter = new Intl.NumberFormat('en-EN', {
25+
public formatter = new Intl.NumberFormat('en-US', {
2726
style: 'currency',
2827
currency: 'EUR'
2928
});
3029

3130
ngOnInit() {
3231
this.data = this.dataService.generateProducts(50);
33-
34-
this.columns = [
35-
{
36-
key: 'id',
37-
hidden: true,
38-
headerText: 'ID',
39-
width: '15rem'
40-
},
41-
{
42-
key: 'name',
43-
headerText: 'Product Name',
44-
width: '15rem'
45-
},
46-
{
47-
key: 'price',
48-
headerText: 'Price',
49-
type: 'number',
50-
width: '15rem',
51-
cellTemplate: (params: any) => {
52-
const span = document.createElement('span');
53-
span.textContent = this.formatter.format(params.value);
54-
return span;
55-
}
56-
},
57-
{
58-
key: 'sold',
59-
type: 'number',
60-
headerText: 'Units sold',
61-
width: '15rem'
62-
},
63-
{
64-
key: 'total',
65-
headerText: 'Total sold',
66-
width: '15rem',
67-
cellTemplate: (params: any) => {
68-
const span = document.createElement('span');
69-
span.textContent = this.formatter.format(params.value);
70-
return span;
71-
}
72-
},
73-
{
74-
key: 'rating',
75-
type: 'number',
76-
headerText: 'Customer rating',
77-
width: '15rem',
78-
cellTemplate: (params: any) => {
79-
const rating = document.createElement('igc-rating');
80-
rating.setAttribute('readonly', '');
81-
rating.setAttribute('step', '0.01');
82-
rating.setAttribute('value', params.value.toString());
83-
return rating;
84-
}
85-
}
86-
];
8732
}
8833

34+
formatCurrency = (params: any) => {
35+
const span = document.createElement('span');
36+
span.textContent = this.formatter.format(params.value);
37+
return span;
38+
};
39+
40+
formatRating = (params: any) => {
41+
const rating = document.createElement('igc-rating');
42+
rating.setAttribute('readonly', '');
43+
rating.setAttribute('step', '0.01');
44+
rating.setAttribute('value', params.value.toString());
45+
return rating;
46+
};
47+
8948
updateColumnProperty(key: string, prop: string, value: any) {
9049
const grid = this.gridLite?.nativeElement as any;
9150
if (grid && grid.updateColumns) {
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<div class="grid-lite-wrapper">
2-
<igc-grid-lite
3-
[columns]="columns"
4-
[data]="data">
2+
<igc-grid-lite [data]="data">
3+
<igc-grid-lite-column field="name" header="Product Name"></igc-grid-lite-column>
4+
<igc-grid-lite-column field="price" header="Price (€)" data-type="number"></igc-grid-lite-column>
5+
<igc-grid-lite-column field="sold" header="Units Sold" data-type="number"></igc-grid-lite-column>
6+
<igc-grid-lite-column field="total" header="Total Revenue" data-type="number"></igc-grid-lite-column>
7+
<igc-grid-lite-column field="rating" header="Customer Rating ⭐" data-type="number" [cellTemplate]="formatRating"></igc-grid-lite-column>
58
</igc-grid-lite>
69
</div>

src/app/grid-lite/grid-lite-column-config-headers/grid-lite-column-config-headers.component.ts

Lines changed: 8 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,43 +18,16 @@ export class GridLiteColumnConfigHeadersComponent implements OnInit {
1818
private dataService = inject(GridLiteDataService);
1919

2020
public data: ProductInfo[] = [];
21-
public columns: any[] = [];
2221

2322
ngOnInit() {
2423
this.data = this.dataService.generateProducts(50);
25-
26-
this.columns = [
27-
{
28-
key: 'name',
29-
headerText: 'Product Name'
30-
},
31-
{
32-
key: 'price',
33-
headerText: 'Price (€)',
34-
type: 'number'
35-
},
36-
{
37-
key: 'sold',
38-
type: 'number',
39-
headerText: 'Units Sold'
40-
},
41-
{
42-
key: 'total',
43-
headerText: 'Total Revenue',
44-
type: 'number'
45-
},
46-
{
47-
key: 'rating',
48-
type: 'number',
49-
headerText: 'Customer Rating ⭐',
50-
cellTemplate: (params: any) => {
51-
const rating = document.createElement('igc-rating');
52-
rating.setAttribute('readonly', '');
53-
rating.setAttribute('step', '0.01');
54-
rating.setAttribute('value', params.value.toString());
55-
return rating;
56-
}
57-
}
58-
];
5924
}
25+
26+
formatRating = (params: any) => {
27+
const rating = document.createElement('igc-rating');
28+
rating.setAttribute('readonly', '');
29+
rating.setAttribute('step', '0.01');
30+
rating.setAttribute('value', params.value.toString());
31+
return rating;
32+
};
6033
}
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<div class="grid-lite-wrapper">
2-
<igc-grid-lite
3-
[columns]="columns"
4-
[data]="data">
2+
<igc-grid-lite [data]="data">
3+
<igc-grid-lite-column field="name" header="Product Name"></igc-grid-lite-column>
4+
<igc-grid-lite-column field="price" header="Price" data-type="number" [cellTemplate]="formatCurrency"></igc-grid-lite-column>
5+
<igc-grid-lite-column field="sold" header="Units sold" data-type="number"></igc-grid-lite-column>
6+
<igc-grid-lite-column field="total" header="Total sold" [cellTemplate]="formatCurrency"></igc-grid-lite-column>
7+
<igc-grid-lite-column field="rating" header="Customer rating" data-type="number" [cellTemplate]="formatRating"></igc-grid-lite-column>
58
</igc-grid-lite>
69
</div>

src/app/grid-lite/grid-lite-column-config-simple/grid-lite-column-config-simple.component.ts

Lines changed: 15 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -18,57 +18,27 @@ export class GridLiteColumnConfigSimpleComponent implements OnInit {
1818
private dataService = inject(GridLiteDataService);
1919

2020
public data: ProductInfo[] = [];
21-
public columns: any[] = [];
2221

23-
private formatter = new Intl.NumberFormat('en-EN', {
22+
public formatter = new Intl.NumberFormat('en-US', {
2423
style: 'currency',
2524
currency: 'EUR'
2625
});
2726

2827
ngOnInit() {
2928
this.data = this.dataService.generateProducts(50);
30-
31-
this.columns = [
32-
{
33-
key: 'name',
34-
headerText: 'Product Name'
35-
},
36-
{
37-
key: 'price',
38-
headerText: 'Price',
39-
type: 'number',
40-
cellTemplate: (params: any) => {
41-
const span = document.createElement('span');
42-
span.textContent = this.formatter.format(params.value);
43-
return span;
44-
}
45-
},
46-
{
47-
key: 'sold',
48-
type: 'number',
49-
headerText: 'Units sold'
50-
},
51-
{
52-
key: 'total',
53-
headerText: 'Total sold',
54-
cellTemplate: (params: any) => {
55-
const span = document.createElement('span');
56-
span.textContent = this.formatter.format(params.value);
57-
return span;
58-
}
59-
},
60-
{
61-
key: 'rating',
62-
type: 'number',
63-
headerText: 'Customer rating',
64-
cellTemplate: (params: any) => {
65-
const rating = document.createElement('igc-rating');
66-
rating.setAttribute('readonly', '');
67-
rating.setAttribute('step', '0.01');
68-
rating.setAttribute('value', params.value.toString());
69-
return rating;
70-
}
71-
}
72-
];
7329
}
30+
31+
formatCurrency = (params: any) => {
32+
const span = document.createElement('span');
33+
span.textContent = this.formatter.format(params.value);
34+
return span;
35+
};
36+
37+
formatRating = (params: any) => {
38+
const rating = document.createElement('igc-rating');
39+
rating.setAttribute('readonly', '');
40+
rating.setAttribute('step', '0.01');
41+
rating.setAttribute('value', params.value.toString());
42+
return rating;
43+
};
7444
}

src/app/grid-lite/grid-lite-data-binding-dynamic/grid-lite-data-binding-dynamic.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<igc-button (click)="switchData()">Switch data</igc-button>
33
<igc-grid-lite
44
#gridLite
5-
auto-generate
5+
[autoGenerateColumns]="true"
66
[data]="data">
77
</igc-grid-lite>
88
</div>

src/app/grid-lite/grid-lite-data-binding-dynamic/grid-lite-data-binding-dynamic.component.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,17 @@ export class GridLiteDataBindingDynamicComponent implements OnInit {
2121

2222
public data: (ProductInfo | UserSimple)[] = [];
2323
public dataType: 'products' | 'users' = 'products';
24-
public autoGenerate = true;
2524

2625
ngOnInit() {
2726
this.data = this.dataService.generateProducts(50);
2827
}
2928

3029
switchData() {
3130
this.dataType = this.dataType === 'products' ? 'users' : 'products';
32-
const grid = this.gridLite?.nativeElement as any;
33-
34-
if (grid) {
35-
grid.columns = [];
36-
if (this.dataType === 'products') {
37-
this.data = this.dataService.generateProducts(50);
38-
} else {
39-
this.data = this.dataService.generateSimpleUsers(50);
40-
}
41-
grid.data = this.data;
31+
if (this.dataType === 'products') {
32+
this.data = this.dataService.generateProducts(50);
33+
} else {
34+
this.data = this.dataService.generateSimpleUsers(50);
4235
}
4336
}
4437
}

0 commit comments

Comments
 (0)