igniteui-angular 21.1.0-rc.4 → 21.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/fesm2022/igniteui-angular-grids-core.mjs +5 -3
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +6 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +1 -0
- package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-lite.mjs +2 -0
- package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
- package/fesm2022/igniteui-angular-simple-combo.mjs +1 -1
- package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
- package/lib/core/styles/components/grid/_grid-theme.scss +4 -1
- package/migrations/migration-collection.json +7 -0
- package/migrations/update-21_1_0_add-agent-skills/index.d.ts +3 -0
- package/migrations/update-21_1_0_add-agent-skills/index.js +46 -0
- package/package.json +4 -4
- package/skills/igniteui-angular-components/SKILL.md +71 -0
- package/skills/igniteui-angular-components/references/charts.md +447 -0
- package/skills/igniteui-angular-components/references/data-display.md +347 -0
- package/skills/igniteui-angular-components/references/directives.md +149 -0
- package/skills/igniteui-angular-components/references/feedback.md +141 -0
- package/skills/igniteui-angular-components/references/form-controls.md +298 -0
- package/skills/igniteui-angular-components/references/layout-manager.md +415 -0
- package/skills/igniteui-angular-components/references/layout.md +216 -0
- package/skills/igniteui-angular-components/references/setup.md +157 -0
- package/skills/igniteui-angular-grids/SKILL.md +110 -0
- package/skills/igniteui-angular-grids/references/data-operations.md +436 -0
- package/skills/igniteui-angular-grids/references/editing.md +480 -0
- package/skills/igniteui-angular-grids/references/features.md +218 -0
- package/skills/igniteui-angular-grids/references/paging-remote.md +388 -0
- package/skills/igniteui-angular-grids/references/state.md +448 -0
- package/skills/igniteui-angular-grids/references/structure.md +290 -0
- package/skills/igniteui-angular-grids/references/types.md +428 -0
- package/skills/igniteui-angular-theming/SKILL.md +530 -0
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
- package/types/igniteui-angular-grids-lite.d.ts +2 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# Grid Structure — Column Configuration, Sorting, Filtering & Selection
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-angular-grids`](../SKILL.md) skill hub.**
|
|
4
|
+
> For grid type selection, imports, and feature availability — see the hub.
|
|
5
|
+
> For editing, grouping, summaries, toolbar, export — see [`features.md`](./features.md).
|
|
6
|
+
> For Tree Grid, Hierarchical Grid, Grid Lite, Pivot Grid specifics — see [`types.md`](./types.md).
|
|
7
|
+
> For programmatic data operations — see [`data-operations.md`](./data-operations.md).
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
### Imports
|
|
12
|
+
|
|
13
|
+
> **AGENT INSTRUCTION:** Check `package.json` to determine whether the project uses `igniteui-angular` or `@infragistics/igniteui-angular`. Always import from the specific entry point of whichever package is installed. Never import from the root barrel of either package.
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
// Open-source package — import from specific entry points
|
|
17
|
+
import { IgxGridComponent, IGX_GRID_DIRECTIVES } from 'igniteui-angular/grids/grid';
|
|
18
|
+
|
|
19
|
+
// Licensed package — same entry-point structure, different prefix
|
|
20
|
+
// import { IgxGridComponent, IGX_GRID_DIRECTIVES } from '@infragistics/igniteui-angular/grids/grid';
|
|
21
|
+
|
|
22
|
+
// AVOID — never import from the root barrel (wrong for BOTH variants)
|
|
23
|
+
// import { IgxGridComponent } from 'igniteui-angular';
|
|
24
|
+
// import { IgxGridComponent } from '@infragistics/igniteui-angular';
|
|
25
|
+
|
|
26
|
+
import { Component, ChangeDetectionStrategy, signal, viewChild } from '@angular/core';
|
|
27
|
+
|
|
28
|
+
@Component({
|
|
29
|
+
selector: 'app-users-grid',
|
|
30
|
+
imports: [IGX_GRID_DIRECTIVES],
|
|
31
|
+
templateUrl: './users-grid.component.html',
|
|
32
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
33
|
+
})
|
|
34
|
+
export class UsersGridComponent {
|
|
35
|
+
// Signal-based view child — use #grid on the template element
|
|
36
|
+
gridRef = viewChild.required<IgxGridComponent>('grid');
|
|
37
|
+
|
|
38
|
+
protected users = signal<User[]>([]);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Basic Grid
|
|
43
|
+
|
|
44
|
+
```html
|
|
45
|
+
<igx-grid #grid
|
|
46
|
+
[data]="users()"
|
|
47
|
+
[primaryKey]="'id'"
|
|
48
|
+
[autoGenerate]="false"
|
|
49
|
+
height="600px"
|
|
50
|
+
width="100%">
|
|
51
|
+
|
|
52
|
+
<igx-column field="id" header="ID" [hidden]="true"></igx-column>
|
|
53
|
+
<igx-column field="name" header="Name" [sortable]="true" [filterable]="true" [resizable]="true"></igx-column>
|
|
54
|
+
<igx-column field="email" header="Email" [sortable]="true" [filterable]="true"></igx-column>
|
|
55
|
+
<igx-column field="role" header="Role" [groupable]="true" [filterable]="true"></igx-column>
|
|
56
|
+
<igx-column field="salary" header="Salary" dataType="number" [hasSummary]="true"></igx-column>
|
|
57
|
+
<igx-column field="hireDate" header="Hire Date" dataType="date" [sortable]="true"></igx-column>
|
|
58
|
+
<igx-column field="active" header="Active" dataType="boolean"></igx-column>
|
|
59
|
+
|
|
60
|
+
</igx-grid>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Column Configuration
|
|
64
|
+
|
|
65
|
+
> **Docs:** [Column Types](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/column-types)
|
|
66
|
+
|
|
67
|
+
### Data Types
|
|
68
|
+
|
|
69
|
+
Set `dataType` to enable proper formatting, filtering, sorting, and editing:
|
|
70
|
+
|
|
71
|
+
| dataType | Behavior |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `string` | Text input, string filtering |
|
|
74
|
+
| `number` | Numeric input, number filtering, number summaries |
|
|
75
|
+
| `boolean` | Checkbox editor, boolean filtering |
|
|
76
|
+
| `date` | Date picker editor, date filtering |
|
|
77
|
+
| `dateTime` | Date+time editor |
|
|
78
|
+
| `time` | Time picker editor |
|
|
79
|
+
| `currency` | Currency formatting, number filtering |
|
|
80
|
+
| `percent` | Percentage formatting |
|
|
81
|
+
| `image` | Image rendering (read-only) |
|
|
82
|
+
|
|
83
|
+
### Column Templates
|
|
84
|
+
|
|
85
|
+
> **Docs:** [Column Configuration](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/grid#angular-grid-column-configuration)
|
|
86
|
+
|
|
87
|
+
Override default rendering with template directives:
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<igx-column field="status" header="Status">
|
|
91
|
+
<!-- Custom cell template -->
|
|
92
|
+
<ng-template igxCell let-cell="cell">
|
|
93
|
+
<igx-badge [type]="cell.value === 'Active' ? 'success' : 'error'">
|
|
94
|
+
{{ cell.value }}
|
|
95
|
+
</igx-badge>
|
|
96
|
+
</ng-template>
|
|
97
|
+
|
|
98
|
+
<!-- Custom header template -->
|
|
99
|
+
<ng-template igxHeader let-column>
|
|
100
|
+
<igx-icon>verified</igx-icon> {{ column.header }}
|
|
101
|
+
</ng-template>
|
|
102
|
+
|
|
103
|
+
<!-- Custom editor template -->
|
|
104
|
+
<ng-template igxCellEditor let-cell="cell">
|
|
105
|
+
<igx-select [(ngModel)]="cell.editValue">
|
|
106
|
+
<igx-select-item value="Active">Active</igx-select-item>
|
|
107
|
+
<igx-select-item value="Inactive">Inactive</igx-select-item>
|
|
108
|
+
</igx-select>
|
|
109
|
+
</ng-template>
|
|
110
|
+
|
|
111
|
+
<!-- Custom filter cell template -->
|
|
112
|
+
<ng-template igxFilterCellTemplate let-column="column">
|
|
113
|
+
<input (input)="onCustomFilter($event, column)" />
|
|
114
|
+
</ng-template>
|
|
115
|
+
|
|
116
|
+
<!-- Custom summary template -->
|
|
117
|
+
<ng-template igxSummary let-summaryResults>
|
|
118
|
+
Active: {{ getActiveCount(summaryResults) }}
|
|
119
|
+
</ng-template>
|
|
120
|
+
</igx-column>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Column Groups
|
|
124
|
+
|
|
125
|
+
> **Docs:** [Collapsible Column Groups](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/collapsible-column-groups)
|
|
126
|
+
|
|
127
|
+
Group columns under a shared header:
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<igx-column-group header="Personal Info">
|
|
131
|
+
<igx-column field="firstName" header="First Name"></igx-column>
|
|
132
|
+
<igx-column field="lastName" header="Last Name"></igx-column>
|
|
133
|
+
</igx-column-group>
|
|
134
|
+
|
|
135
|
+
<igx-column-group header="Contact">
|
|
136
|
+
<igx-column field="email" header="Email"></igx-column>
|
|
137
|
+
<igx-column field="phone" header="Phone"></igx-column>
|
|
138
|
+
</igx-column-group>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Multi-Row Layout (MRL)
|
|
142
|
+
|
|
143
|
+
> **Docs:** [Multi-Row Layout](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/multi-row-layout)
|
|
144
|
+
|
|
145
|
+
Create complex cell layouts spanning multiple rows/columns:
|
|
146
|
+
|
|
147
|
+
```html
|
|
148
|
+
<igx-column-layout>
|
|
149
|
+
<igx-column field="name" [rowStart]="1" [colStart]="1" [colEnd]="3"></igx-column>
|
|
150
|
+
<igx-column field="email" [rowStart]="2" [colStart]="1"></igx-column>
|
|
151
|
+
<igx-column field="phone" [rowStart]="2" [colStart]="2"></igx-column>
|
|
152
|
+
</igx-column-layout>
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Column Pinning
|
|
156
|
+
|
|
157
|
+
> **Docs:** [Column Pinning](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/column-pinning)
|
|
158
|
+
|
|
159
|
+
```html
|
|
160
|
+
<igx-column field="name" [pinned]="true"></igx-column>
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Or programmatically: `this.gridRef().pinColumn('name')`.
|
|
164
|
+
|
|
165
|
+
## Sorting
|
|
166
|
+
|
|
167
|
+
> **Docs:** [Sorting](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/sorting) (substitute URL prefix per grid type — see hub instruction)
|
|
168
|
+
|
|
169
|
+
```html
|
|
170
|
+
<igx-grid
|
|
171
|
+
[data]="data()"
|
|
172
|
+
[(sortingExpressions)]="sortExprs"
|
|
173
|
+
[sortingOptions]="{ mode: 'multiple' }">
|
|
174
|
+
<igx-column field="name" [sortable]="true"></igx-column>
|
|
175
|
+
</igx-grid>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Programmatic sorting:
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
this.gridRef().sort({ fieldName: 'name', dir: SortingDirection.Asc, ignoreCase: true });
|
|
182
|
+
this.gridRef().clearSort();
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Events: `(sorting)` (cancelable), `(sortingDone)`.
|
|
186
|
+
|
|
187
|
+
For advanced programmatic sorting patterns, custom sort strategies, and sorting events — see [`data-operations.md`](./data-operations.md).
|
|
188
|
+
|
|
189
|
+
## Filtering
|
|
190
|
+
|
|
191
|
+
### Quick Filter (Row Filter)
|
|
192
|
+
|
|
193
|
+
> **Docs:** [Filtering](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/filtering)
|
|
194
|
+
|
|
195
|
+
```html
|
|
196
|
+
<igx-grid [allowFiltering]="true" [filterMode]="'quickFilter'">
|
|
197
|
+
<igx-column field="name" [filterable]="true"></igx-column>
|
|
198
|
+
</igx-grid>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Excel-Style Filter
|
|
202
|
+
|
|
203
|
+
> **Docs:** [Excel-Style Filtering](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/excel-style-filtering)
|
|
204
|
+
|
|
205
|
+
```html
|
|
206
|
+
<igx-grid [allowFiltering]="true" [filterMode]="'excelStyleFilter'">
|
|
207
|
+
<igx-column field="name" [filterable]="true"></igx-column>
|
|
208
|
+
</igx-grid>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Advanced Filtering Dialog
|
|
212
|
+
|
|
213
|
+
> **Docs:** [Advanced Filtering](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/advanced-filtering)
|
|
214
|
+
|
|
215
|
+
```html
|
|
216
|
+
<igx-grid [allowAdvancedFiltering]="true">
|
|
217
|
+
<!-- Advanced filtering UI is shown via toolbar or API -->
|
|
218
|
+
</igx-grid>
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Programmatic Filtering
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
this.gridRef().filter('name', 'John', IgxStringFilteringOperand.instance().condition('contains'), true);
|
|
225
|
+
this.gridRef().clearFilter('name');
|
|
226
|
+
this.gridRef().clearFilter(); // clear all
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Events: `(filtering)` (cancelable), `(filteringDone)`.
|
|
230
|
+
|
|
231
|
+
For advanced programmatic filtering, complex AND/OR trees, and remote filtering patterns — see [`data-operations.md`](./data-operations.md).
|
|
232
|
+
|
|
233
|
+
## Selection
|
|
234
|
+
|
|
235
|
+
### Row Selection
|
|
236
|
+
|
|
237
|
+
> **Docs:** [Row Selection](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/row-selection)
|
|
238
|
+
|
|
239
|
+
```html
|
|
240
|
+
<igx-grid [rowSelection]="'multiple'" [primaryKey]="'id'" [(selectedRows)]="selectedIds">
|
|
241
|
+
<!-- Optional: Custom row selector checkbox -->
|
|
242
|
+
<ng-template igxRowSelector let-rowContext>
|
|
243
|
+
<igx-checkbox [checked]="rowContext.selected" (change)="rowContext.select(!rowContext.selected)">
|
|
244
|
+
</igx-checkbox>
|
|
245
|
+
</ng-template>
|
|
246
|
+
</igx-grid>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Modes: `'none'`, `'single'`, `'multiple'`, `'multipleCascade'` (tree grids).
|
|
250
|
+
|
|
251
|
+
### Cell Selection
|
|
252
|
+
|
|
253
|
+
> **Docs:** [Cell Selection](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/cell-selection)
|
|
254
|
+
|
|
255
|
+
```html
|
|
256
|
+
<igx-grid [cellSelection]="'multiple'"></igx-grid>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Column Selection
|
|
260
|
+
|
|
261
|
+
> **Docs:** [Column Selection](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/column-selection)
|
|
262
|
+
|
|
263
|
+
```html
|
|
264
|
+
<igx-grid [columnSelection]="'multiple'">
|
|
265
|
+
<igx-column field="name" [selectable]="true"></igx-column>
|
|
266
|
+
</igx-grid>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Events: `(rowSelectionChanging)`, `(columnSelectionChanging)`, `(selected)` (cell).
|
|
270
|
+
|
|
271
|
+
## Key Rules
|
|
272
|
+
|
|
273
|
+
1. **Pick the right grid type first** — see the [hub](../SKILL.md) for the decision guide
|
|
274
|
+
2. **Always set `[primaryKey]`** — required for editing, selection, row operations (Flat, Tree, Hierarchical, Pivot grids; NOT Grid Lite)
|
|
275
|
+
3. **Import the correct directives/components** — `IGX_GRID_DIRECTIVES`, `IGX_TREE_GRID_DIRECTIVES`, `IGX_HIERARCHICAL_GRID_DIRECTIVES`, `IGX_PIVOT_GRID_DIRECTIVES`, or individual Grid Lite imports
|
|
276
|
+
4. **Use the right component type for `viewChild`** — `IgxGridLiteComponent`, `IgxGridComponent`, `IgxTreeGridComponent`, `IgxHierarchicalGridComponent`, or `IgxPivotGridComponent`
|
|
277
|
+
5. **Set `[autoGenerate]="false"`** and define columns explicitly for production grids (except Pivot Grid where columns are auto-generated)
|
|
278
|
+
6. **Set `dataType` on every column** for correct filtering, sorting, editing, and summaries
|
|
279
|
+
7. **Use signals** for data binding — `[data]="myData()"` with `signal<T[]>([])`
|
|
280
|
+
8. **Virtualization is automatic** — don't wrap grids in virtual scroll containers
|
|
281
|
+
|
|
282
|
+
## See Also
|
|
283
|
+
|
|
284
|
+
- [`features.md`](./features.md) — Editing, grouping, summaries, toolbar, export, row drag, action strip, master-detail
|
|
285
|
+
- [`types.md`](./types.md) — Tree Grid, Hierarchical Grid, Grid Lite, Pivot Grid specifics
|
|
286
|
+
- [`data-operations.md`](./data-operations.md) — Programmatic sorting, filtering, grouping, canonical import patterns
|
|
287
|
+
- [`paging-remote.md`](./paging-remote.md) — Paging, remote data operations, virtualization
|
|
288
|
+
- [`editing.md`](./editing.md) — Cell editing, row editing, batch editing, validation, summaries
|
|
289
|
+
- [`state.md`](./state.md) — State persistence, grid-type-specific operations
|
|
290
|
+
- [`../../igniteui-angular-theming/SKILL.md`](../../igniteui-angular-theming/SKILL.md) — Grid styling and theming
|