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.
Files changed (61) hide show
  1. package/README.md +29 -0
  2. package/fesm2022/igniteui-angular-grids-core.mjs +5 -3
  3. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  4. package/fesm2022/igniteui-angular-grids-grid.mjs +6 -1
  5. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  6. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +1 -0
  7. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-grids-lite.mjs +2 -0
  9. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  10. package/fesm2022/igniteui-angular-simple-combo.mjs +1 -1
  11. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  12. package/lib/core/styles/components/grid/_grid-theme.scss +4 -1
  13. package/migrations/migration-collection.json +7 -0
  14. package/migrations/update-21_1_0_add-agent-skills/index.d.ts +3 -0
  15. package/migrations/update-21_1_0_add-agent-skills/index.js +46 -0
  16. package/package.json +4 -4
  17. package/skills/igniteui-angular-components/SKILL.md +71 -0
  18. package/skills/igniteui-angular-components/references/charts.md +447 -0
  19. package/skills/igniteui-angular-components/references/data-display.md +347 -0
  20. package/skills/igniteui-angular-components/references/directives.md +149 -0
  21. package/skills/igniteui-angular-components/references/feedback.md +141 -0
  22. package/skills/igniteui-angular-components/references/form-controls.md +298 -0
  23. package/skills/igniteui-angular-components/references/layout-manager.md +415 -0
  24. package/skills/igniteui-angular-components/references/layout.md +216 -0
  25. package/skills/igniteui-angular-components/references/setup.md +157 -0
  26. package/skills/igniteui-angular-grids/SKILL.md +110 -0
  27. package/skills/igniteui-angular-grids/references/data-operations.md +436 -0
  28. package/skills/igniteui-angular-grids/references/editing.md +480 -0
  29. package/skills/igniteui-angular-grids/references/features.md +218 -0
  30. package/skills/igniteui-angular-grids/references/paging-remote.md +388 -0
  31. package/skills/igniteui-angular-grids/references/state.md +448 -0
  32. package/skills/igniteui-angular-grids/references/structure.md +290 -0
  33. package/skills/igniteui-angular-grids/references/types.md +428 -0
  34. package/skills/igniteui-angular-theming/SKILL.md +530 -0
  35. package/styles/igniteui-angular-dark.css +1 -1
  36. package/styles/igniteui-angular.css +1 -1
  37. package/styles/igniteui-bootstrap-dark.css +1 -1
  38. package/styles/igniteui-bootstrap-light.css +1 -1
  39. package/styles/igniteui-dark-green.css +1 -1
  40. package/styles/igniteui-fluent-dark-excel.css +1 -1
  41. package/styles/igniteui-fluent-dark-word.css +1 -1
  42. package/styles/igniteui-fluent-dark.css +1 -1
  43. package/styles/igniteui-fluent-light-excel.css +1 -1
  44. package/styles/igniteui-fluent-light-word.css +1 -1
  45. package/styles/igniteui-fluent-light.css +1 -1
  46. package/styles/igniteui-indigo-dark.css +1 -1
  47. package/styles/igniteui-indigo-light.css +1 -1
  48. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  49. package/styles/maps/igniteui-angular.css.map +1 -1
  50. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  51. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  52. package/styles/maps/igniteui-dark-green.css.map +1 -1
  53. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  54. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  55. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  56. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  57. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  58. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  59. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  60. package/styles/maps/igniteui-indigo-light.css.map +1 -1
  61. 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