Skip to content

Commit 0b97eac

Browse files
committed
refactor(*): separating grids into their own entry points
1 parent 736d4d6 commit 0b97eac

File tree

312 files changed

+1083
-733
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

312 files changed

+1083
-733
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ The library now supports multiple entry points for better tree-shaking and code
1515
- `igniteui-angular/core` - Core utilities, services, and base types
1616
- `igniteui-angular/directives` - Common directives
1717
- Component-specific entry points: `igniteui-angular/grids`, `igniteui-angular/input-group`, `igniteui-angular/drop-down`, etc.
18+
- Grid-specific entry points for tree-shakable imports:
19+
- `igniteui-angular/grids/core` - Shared grid infrastructure (columns, toolbar, filtering, sorting, etc.)
20+
- `igniteui-angular/grids/grid` - Standard grid component (`IgxGridComponent`)
21+
- `igniteui-angular/grids/tree-grid` - Tree grid component (`IgxTreeGridComponent`)
22+
- `igniteui-angular/grids/hierarchical-grid` - Hierarchical grid component (`IgxHierarchicalGridComponent`, `IgxRowIslandComponent`)
23+
- `igniteui-angular/grids/pivot-grid` - Pivot grid component (`IgxPivotGridComponent`, `IgxPivotDataSelectorComponent`)
1824

1925
**Migration:**
2026
The `ng update` migration will prompt you to optionally migrate your imports to the new entry points. If you choose not to migrate, you can continue using the main entry point with full backwards compatibility.
@@ -28,7 +34,6 @@ ng update igniteui-angular --migrate-only --from=20.1.0 --to=21.0.0 --migrate-im
2834
- Input directives (`IgxHintDirective`, `IgxInputDirective`, `IgxLabelDirective`, `IgxPrefixDirective`, `IgxSuffixDirective`) → `igniteui-angular/input-group`
2935
- `IgxAutocompleteDirective``igniteui-angular/drop-down`
3036
- `IgxRadioGroupDirective``igniteui-angular/radio`
31-
- Grid action components → `igniteui-angular/grids`
3237

3338
**Type Renames (to avoid conflicts):**
3439
- `Direction``IgxCarouselDirection` (in carousel)

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,17 +87,17 @@ Some of the Angular chart types included are: [Polar chart](https://www.infragis
8787
|dock manager|:white_check_mark:||[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/dock-manager)|9.1.0 |suffix|:white_check_mark:|[Readme](projects/igniteui-angular/input-group/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input-group)|5.3.0
8888
|drop down|:white_check_mark:|[Readme](projects/igniteui-angular/drop-down/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/drop-down)|6.1.0 |text-highlight|:white_check_mark:|[Readme](projects/igniteui-angular/directives/src/directives/text-highlight/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/texthighlight)|6.0.0
8989
|expansion panel|:white_check_mark:|[Readme](projects/igniteui-angular/expansion-panel/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/expansion-panel)|6.2.0 |toggle|:white_check_mark:|[Readme](projects/igniteui-angular/directives/src/directives/toggle/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/toggle)|6.2.0
90-
|grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/grid)|5.1.0 |tooltip|:white_check_mark:|[Readme](projects/igniteui-angular/directives/src/directives/tooltip/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tooltip)|6.2.0
91-
|hierarchical grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/src/grids/hierarchical-grid/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/hierarchicalgrid/hierarchical-grid)|7.2.0 |**Others**|**Status**||
90+
|grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/grid/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/grid)|5.1.0 |tooltip|:white_check_mark:|[Readme](projects/igniteui-angular/directives/src/directives/tooltip/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tooltip)|6.2.0
91+
|hierarchical grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/hierarchical-grid/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/hierarchicalgrid/hierarchical-grid)|7.2.0 |**Others**|**Status**||
9292
|icon|:white_check_mark:|[Readme](projects/igniteui-angular/icon/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/icon)|2.0.0
9393
|icon button|:white_check_mark:|[Readme](projects/igniteui-angular/icon/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/icon-button)|17.1.0 |Animations|:white_check_mark:|[Readme](projects/igniteui-angular/animations/README.md)||2.0.0|
9494
|input group|:white_check_mark:|[Readme](projects/igniteui-angular/input-group/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/input-group)|5.3.0 |dataUtil|:white_check_mark:|[Readme](projects/igniteui-angular/core/src/core/README.md)||5.1.0|
9595
|linear progress|:white_check_mark:|[Readme](projects/igniteui-angular/progressbar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/linear-progress)|5.1.0 |dataContainer|:white_check_mark:|[Readme](projects/igniteui-angular/core/README.md)||5.1.0||
96-
|list|:white_check_mark:|[Readme](projects/igniteui-angular/list/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/list)|2.0.0 |IgxGridState|:white_check_mark:|[Readme](projects/igniteui-angular/grids/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/state-persistence)|9.0.0||
96+
|list|:white_check_mark:|[Readme](projects/igniteui-angular/list/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/list)|2.0.0 |IgxGridState|:white_check_mark:|[Readme](projects/igniteui-angular/grids/core/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/state-persistence)|9.0.0||
9797
|month picker|:white_check_mark:|[Readme](projects/igniteui-angular/calendar/src/calendar/month-picker/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/month-picker)|7.2.0||||
9898
|navbar|:white_check_mark:|[Readme](projects/igniteui-angular/navbar/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navbar)|2.0.0|||||
9999
|navigation drawer|:white_check_mark:|[Readme](projects/igniteui-angular/navigation-drawer/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)|2.0.0|||||
100-
|pivot grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/src/grids/pivot-grid/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/pivotgrid/pivot-grid)|13.1.0||||
100+
|pivot grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/pivot-grid/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/pivotgrid/pivot-grid)|13.1.0||||
101101
|query builder|:white_check_mark:|[Readme](projects/igniteui-angular/query-builder/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/query-builder)|14.2.0||||
102102
|radio|:white_check_mark:|[Readme](projects/igniteui-angular/radio/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/radio-button)|2.0.0|||||
103103
|rating|:white_check_mark:||[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/rating)|14.1.0||||
@@ -113,7 +113,7 @@ Some of the Angular chart types included are: [Polar chart](https://www.infragis
113113
|time picker|:white_check_mark:|[Readme](projects/igniteui-angular/time-picker/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/time-picker)|5.3.0||||
114114
|toast|:white_check_mark:|[Readme](projects/igniteui-angular/toast/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/toast)|5.1.0||||
115115
|tree|:white_check_mark:|[Readme](projects/igniteui-angular/tree/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tree)|12.0.0||||
116-
|tree grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/src/grids/tree-grid/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/treegrid/tree-grid)|6.2.0||||
116+
|tree grid|:white_check_mark:|[Readme](projects/igniteui-angular/grids/tree-grid/README.md)|[Docs](https://www.infragistics.com/products/ignite-ui-angular/angular/components/treegrid/tree-grid)|6.2.0||||
117117

118118
### Release History
119119

projects/bundle-test/src/app/app.routes.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ export const routes: Routes = [
66
{ path: 'button-group', loadComponent: () => import('./button-group/button-group.component').then(m => m.ButtonGroupComponent) },
77
{ path: 'form', loadComponent: () => import('./form/form.component').then(m => m.FormComponent) },
88
{ path: 'stepper', loadComponent: () => import('./stepper/stepper.component').then(m => m.StepperComponent) },
9-
{ path: 'grid', loadComponent: () => import('./grid/grid.component').then(m => m.GridComponent) }
9+
{ path: 'grid', loadComponent: () => import('./grid/grid.component').then(m => m.GridComponent) },
10+
{ path: 'h-grid', loadComponent: () => import('./h-grid/h-grid.component').then(m => m.HGridComponent) },
11+
{ path: 'pivot-grid', loadComponent: () => import('./pivot-grid/pivot-grid.component').then(m => m.PivotGridComponent) }
1012
];

projects/bundle-test/src/app/grid/grid.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ChangeDetectionStrategy, Component } from '@angular/core';
2-
import { IgxGridComponent } from 'igniteui-angular/grids';
2+
import { IgxGridComponent } from 'igniteui-angular/grids/grid';
33

44
@Component({
55
selector: 'app-grid',
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<div class="h-grid-container">
2+
<h2>Hierarchical Grid Example</h2>
3+
4+
<igx-hierarchical-grid
5+
[data]="data"
6+
[primaryKey]="'ID'"
7+
[autoGenerate]="false"
8+
[height]="'600px'"
9+
[width]="'100%'">
10+
11+
<igx-column field="ID" header="ID" [width]="'100px'"></igx-column>
12+
<igx-column field="CompanyName" header="Company Name" [width]="'200px'"></igx-column>
13+
<igx-column field="ContactName" header="Contact Name" [width]="'200px'"></igx-column>
14+
<igx-column field="ContactTitle" header="Contact Title" [width]="'180px'"></igx-column>
15+
<igx-column field="City" header="City" [width]="'150px'"></igx-column>
16+
<igx-column field="Country" header="Country" [width]="'120px'"></igx-column>
17+
<igx-column field="Phone" header="Phone" [width]="'150px'"></igx-column>
18+
19+
<igx-row-island [key]="'ChildCompanies'" [primaryKey]="'ID'" [autoGenerate]="false">
20+
<igx-column field="ID" header="ID" [width]="'100px'"></igx-column>
21+
<igx-column field="CompanyName" header="Company Name" [width]="'200px'"></igx-column>
22+
<igx-column field="ContactName" header="Contact Name" [width]="'200px'"></igx-column>
23+
<igx-column field="ContactTitle" header="Contact Title" [width]="'180px'"></igx-column>
24+
<igx-column field="City" header="City" [width]="'150px'"></igx-column>
25+
<igx-column field="Phone" header="Phone" [width]="'150px'"></igx-column>
26+
</igx-row-island>
27+
</igx-hierarchical-grid>
28+
</div>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.h-grid-container {
2+
padding: 20px;
3+
4+
h2 {
5+
margin-bottom: 20px;
6+
color: #333;
7+
}
8+
}
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import { Component } from '@angular/core';
2+
import { IGX_HIERARCHICAL_GRID_DIRECTIVES } from 'igniteui-angular/grids/hierarchical-grid';
3+
4+
@Component({
5+
selector: 'app-h-grid',
6+
templateUrl: './h-grid.component.html',
7+
styleUrls: ['./h-grid.component.scss'],
8+
imports: [IGX_HIERARCHICAL_GRID_DIRECTIVES]
9+
})
10+
export class HGridComponent {
11+
public data = [
12+
{
13+
ID: 1,
14+
CompanyName: 'Company A',
15+
ContactName: 'John Doe',
16+
ContactTitle: 'Sales Manager',
17+
Address: '123 Main St',
18+
City: 'New York',
19+
Region: 'NY',
20+
PostalCode: '10001',
21+
Country: 'USA',
22+
Phone: '555-1234',
23+
Fax: '555-1235',
24+
ChildCompanies: [
25+
{
26+
ID: 11,
27+
CompanyName: 'Subsidiary A1',
28+
ContactName: 'Jane Smith',
29+
ContactTitle: 'Manager',
30+
Address: '456 Park Ave',
31+
City: 'New York',
32+
Region: 'NY',
33+
PostalCode: '10002',
34+
Country: 'USA',
35+
Phone: '555-2345',
36+
Fax: '555-2346'
37+
},
38+
{
39+
ID: 12,
40+
CompanyName: 'Subsidiary A2',
41+
ContactName: 'Bob Johnson',
42+
ContactTitle: 'Director',
43+
Address: '789 Broadway',
44+
City: 'New York',
45+
Region: 'NY',
46+
PostalCode: '10003',
47+
Country: 'USA',
48+
Phone: '555-3456',
49+
Fax: '555-3457'
50+
}
51+
]
52+
},
53+
{
54+
ID: 2,
55+
CompanyName: 'Company B',
56+
ContactName: 'Alice Williams',
57+
ContactTitle: 'CEO',
58+
Address: '321 Oak St',
59+
City: 'Los Angeles',
60+
Region: 'CA',
61+
PostalCode: '90001',
62+
Country: 'USA',
63+
Phone: '555-4567',
64+
Fax: '555-4568',
65+
ChildCompanies: [
66+
{
67+
ID: 21,
68+
CompanyName: 'Subsidiary B1',
69+
ContactName: 'Charlie Brown',
70+
ContactTitle: 'VP',
71+
Address: '654 Sunset Blvd',
72+
City: 'Los Angeles',
73+
Region: 'CA',
74+
PostalCode: '90002',
75+
Country: 'USA',
76+
Phone: '555-5678',
77+
Fax: '555-5679'
78+
}
79+
]
80+
},
81+
{
82+
ID: 3,
83+
CompanyName: 'Company C',
84+
ContactName: 'David Miller',
85+
ContactTitle: 'President',
86+
Address: '987 Elm St',
87+
City: 'Chicago',
88+
Region: 'IL',
89+
PostalCode: '60601',
90+
Country: 'USA',
91+
Phone: '555-6789',
92+
Fax: '555-6790',
93+
ChildCompanies: []
94+
}
95+
];
96+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<div class="pivot-grid-container">
2+
<h2>Pivot Grid Example</h2>
3+
4+
<igx-pivot-grid
5+
[data]="data"
6+
[pivotConfiguration]="pivotConfigHierarchy"
7+
[height]="'600px'"
8+
[width]="'100%'"
9+
[allowFiltering]="true">
10+
</igx-pivot-grid>
11+
</div>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.pivot-grid-container {
2+
padding: 20px;
3+
4+
h2 {
5+
margin-bottom: 20px;
6+
color: #333;
7+
}
8+
}
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
import { Component } from '@angular/core';
2+
import { IGX_PIVOT_GRID_DIRECTIVES } from 'igniteui-angular/grids/pivot-grid';
3+
import { IgxPivotDateDimension, IPivotConfiguration } from 'igniteui-angular/grids/core';
4+
5+
@Component({
6+
selector: 'app-pivot-grid',
7+
templateUrl: './pivot-grid.component.html',
8+
styleUrls: ['./pivot-grid.component.scss'],
9+
imports: [IGX_PIVOT_GRID_DIRECTIVES]
10+
})
11+
export class PivotGridComponent {
12+
public data = [
13+
{
14+
ProductCategory: 'Clothing',
15+
ProductName: 'Shirt',
16+
SellerName: 'John Doe',
17+
SellerCity: 'New York',
18+
Date: new Date('2023-01-15'),
19+
UnitsSold: 20,
20+
UnitPrice: 25.99,
21+
Revenue: 519.8
22+
},
23+
{
24+
ProductCategory: 'Clothing',
25+
ProductName: 'Shirt',
26+
SellerName: 'Jane Smith',
27+
SellerCity: 'Los Angeles',
28+
Date: new Date('2023-01-20'),
29+
UnitsSold: 15,
30+
UnitPrice: 25.99,
31+
Revenue: 389.85
32+
},
33+
{
34+
ProductCategory: 'Clothing',
35+
ProductName: 'Pants',
36+
SellerName: 'John Doe',
37+
SellerCity: 'New York',
38+
Date: new Date('2023-02-10'),
39+
UnitsSold: 10,
40+
UnitPrice: 45.50,
41+
Revenue: 455
42+
},
43+
{
44+
ProductCategory: 'Electronics',
45+
ProductName: 'Phone',
46+
SellerName: 'Bob Johnson',
47+
SellerCity: 'Chicago',
48+
Date: new Date('2023-02-15'),
49+
UnitsSold: 8,
50+
UnitPrice: 699.99,
51+
Revenue: 5599.92
52+
},
53+
{
54+
ProductCategory: 'Electronics',
55+
ProductName: 'Laptop',
56+
SellerName: 'Alice Williams',
57+
SellerCity: 'New York',
58+
Date: new Date('2023-03-01'),
59+
UnitsSold: 5,
60+
UnitPrice: 1299.99,
61+
Revenue: 6499.95
62+
},
63+
{
64+
ProductCategory: 'Electronics',
65+
ProductName: 'Phone',
66+
SellerName: 'Jane Smith',
67+
SellerCity: 'Los Angeles',
68+
Date: new Date('2023-03-10'),
69+
UnitsSold: 12,
70+
UnitPrice: 699.99,
71+
Revenue: 8399.88
72+
},
73+
{
74+
ProductCategory: 'Clothing',
75+
ProductName: 'Jacket',
76+
SellerName: 'Bob Johnson',
77+
SellerCity: 'Chicago',
78+
Date: new Date('2023-03-20'),
79+
UnitsSold: 7,
80+
UnitPrice: 89.99,
81+
Revenue: 629.93
82+
},
83+
{
84+
ProductCategory: 'Electronics',
85+
ProductName: 'Tablet',
86+
SellerName: 'John Doe',
87+
SellerCity: 'New York',
88+
Date: new Date('2023-04-05'),
89+
UnitsSold: 6,
90+
UnitPrice: 499.99,
91+
Revenue: 2999.94
92+
}
93+
];
94+
95+
public pivotConfigHierarchy: IPivotConfiguration = {
96+
rows: [
97+
{
98+
memberName: 'ProductCategory',
99+
enabled: true
100+
},
101+
{
102+
memberName: 'ProductName',
103+
enabled: true
104+
}
105+
],
106+
columns: [
107+
new IgxPivotDateDimension(
108+
{
109+
memberName: 'Date',
110+
enabled: true
111+
},
112+
{
113+
months: false,
114+
quarters: true,
115+
years: true
116+
}
117+
),
118+
{
119+
memberName: 'SellerCity',
120+
enabled: true
121+
}
122+
],
123+
values: [
124+
{
125+
member: 'UnitsSold',
126+
displayName: 'Units Sold',
127+
aggregate: {
128+
aggregator: (members: any[], data?: any[]) => members.reduce((acc, val) => acc + val, 0),
129+
key: 'SUM',
130+
label: 'Sum'
131+
},
132+
enabled: true
133+
},
134+
{
135+
member: 'Revenue',
136+
displayName: 'Revenue',
137+
aggregate: {
138+
aggregator: (members: any[], data?: any[]) => members.reduce((acc, val) => acc + val, 0),
139+
key: 'SUM',
140+
label: 'Sum'
141+
},
142+
enabled: true,
143+
dataType: 'currency'
144+
}
145+
],
146+
filters: null
147+
};
148+
}

0 commit comments

Comments
 (0)