igniteui-angular 22.1.0-beta.0 → 22.1.0-beta.1

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 (40) hide show
  1. package/fesm2022/igniteui-angular-carousel.mjs +2 -2
  2. package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
  3. package/fesm2022/igniteui-angular-core.mjs +83 -24
  4. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  5. package/fesm2022/igniteui-angular-grids-grid.mjs +9 -0
  6. package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
  7. package/fesm2022/igniteui-angular-list.mjs +14 -1
  8. package/fesm2022/igniteui-angular-list.mjs.map +1 -1
  9. package/fesm2022/igniteui-angular-navigation-drawer.mjs +6 -1
  10. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  11. package/package.json +1 -1
  12. package/skills/igniteui-angular-components/SKILL.md +9 -29
  13. package/skills/igniteui-angular-components/references/charts.md +3 -33
  14. package/skills/igniteui-angular-components/references/data-display.md +8 -94
  15. package/skills/igniteui-angular-components/references/directives.md +13 -114
  16. package/skills/igniteui-angular-components/references/feedback.md +1 -4
  17. package/skills/igniteui-angular-components/references/form-controls.md +10 -75
  18. package/skills/igniteui-angular-components/references/layout-manager.md +15 -198
  19. package/skills/igniteui-angular-components/references/layout.md +1 -4
  20. package/skills/igniteui-angular-components/references/mcp-setup.md +28 -29
  21. package/skills/igniteui-angular-components/references/setup.md +6 -4
  22. package/skills/igniteui-angular-figma-to-app/SKILL.md +37 -25
  23. package/skills/igniteui-angular-figma-to-app/references/figma-component-map.md +25 -26
  24. package/skills/igniteui-angular-figma-to-app/references/mcp-setup.md +13 -9
  25. package/skills/igniteui-angular-figma-to-app/references/validation-patterns.md +2 -2
  26. package/skills/igniteui-angular-generate-from-image-design/SKILL.md +22 -7
  27. package/skills/igniteui-angular-generate-from-image-design/references/component-mapping.md +1 -1
  28. package/skills/igniteui-angular-grids/SKILL.md +21 -25
  29. package/skills/igniteui-angular-grids/references/data-operations.md +10 -11
  30. package/skills/igniteui-angular-grids/references/editing.md +3 -4
  31. package/skills/igniteui-angular-grids/references/features.md +16 -38
  32. package/skills/igniteui-angular-grids/references/grid-migration.md +6 -8
  33. package/skills/igniteui-angular-grids/references/paging-remote.md +2 -4
  34. package/skills/igniteui-angular-grids/references/state.md +4 -5
  35. package/skills/igniteui-angular-grids/references/structure.md +16 -9
  36. package/skills/igniteui-angular-grids/references/types.md +19 -33
  37. package/skills/igniteui-angular-theming/SKILL.md +12 -65
  38. package/skills/igniteui-angular-theming/references/mcp-setup.md +28 -31
  39. package/types/igniteui-angular-core.d.ts +32 -5
  40. package/types/igniteui-angular-list.d.ts +5 -0
@@ -6,29 +6,17 @@ user-invocable: true
6
6
 
7
7
  # Ignite UI for Angular — Data Grids
8
8
 
9
- ## MANDATORY AGENT PROTOCOL — YOU MUST FOLLOW THIS BEFORE PRODUCING ANY OUTPUT
9
+ ## Required Workflow
10
10
 
11
- **This file is a routing hub only. It contains NO code examples and NO API details.**
11
+ **This file is a routing hub only. It contains no code examples and no API details.** Grid APIs change between releases, so never write component selectors, import paths, method names, or property names from memory — read the relevant reference files first.
12
12
 
13
- > **DO NOT write any code, component selectors, import paths, method names, or property names from memory.**
14
- > Grid APIs change between versions. Anything generated without reading the reference files will be wrong.
15
-
16
- You are **required** to complete ALL of the following steps before producing any grid-related code or answer:
17
-
18
- **STEP 1 — Identify the grid type.**
19
- Use the Grid Selection Decision Guide below. If the grid type is not explicitly stated, infer it from context or ask.
20
-
21
- **STEP 2 — Identify every task category involved.**
22
- Map the user's request to one or more rows in the Task → Reference File table below. A single request often spans multiple categories (e.g., remote paging AND editing requires reading both `paging-remote.md` AND `editing.md`).
23
-
24
- **STEP 3 — Read every identified reference file in full (PARALLEL).**
25
- Call `read_file` (or equivalent) on **all** reference files identified in Step 2 **in a single parallel batch** — do NOT read them one at a time sequentially. You must do this even if you believe you already know the answer. Do not skip, skim, or partially read a reference file.
26
-
27
- **STEP 4 — Only then produce output.**
28
- Base your code and explanation exclusively on what you read in Step 3. If the reference files do not cover something, say so explicitly rather than guessing.
13
+ 1. **Identify the grid type.** Use the Grid Selection Decision Guide below. If the grid type is not explicitly stated, infer it from context or ask.
14
+ 2. **Identify every task category involved.** Map the user's request to one or more rows in the Task Reference File table below. A single request often spans multiple categories (e.g., remote paging plus editing requires both `paging-remote.md` and `editing.md`).
15
+ 3. **Read every identified reference file in full**, in a single parallel batch of file reads — even if you believe you already know the answer.
16
+ 4. **Then produce output**, based only on what you read. If something is not covered by the reference files, look it up with `get_doc`/`search_docs`/`search_api` from the `igniteui-cli` MCP server when available; otherwise state explicitly that the detail is unverified instead of guessing.
29
17
 
30
18
  ### Task → Reference File
31
-
19
+
32
20
  | Task | Reference file to read |
33
21
  |---|---|
34
22
  | Grid type selection, column config, column templates, column groups, MRL, pinning, sorting UI, filtering UI, selection | [`references/structure.md`](./references/structure.md) |
@@ -39,19 +27,20 @@ Base your code and explanation exclusively on what you read in Step 3. If the re
39
27
  | Paging, remote data, server-side ops, noop strategies, virtual scroll, multi-grid coordination | [`references/paging-remote.md`](./references/paging-remote.md) |
40
28
  | State persistence, Tree Grid / Hierarchical Grid / Pivot Grid data operations | [`references/state.md`](./references/state.md) |
41
29
  | Grid sizing (width, height, column sizing, null/px/% modes, cell spacing CSS variables) | [`references/sizing.md`](./references/sizing.md) |
30
+ | Migrating from Grid Lite (`igx-grid-lite`) to the full `igx-grid` when features outgrow Grid Lite | [`references/grid-migration.md`](./references/grid-migration.md) |
42
31
 
43
- > **When in doubt, read more rather than fewer reference files.** The cost of an unnecessary file read is negligible; the cost of hallucinated API usage is a broken application.
32
+ > When in doubt, read more rather than fewer reference files an unnecessary file read is cheap; a hallucinated API is a broken application.
44
33
 
45
34
  ---
46
35
 
47
36
  ## Overview
48
- This reference gives high-level guidance on grids and their features. For detailed documentation, call `get_doc` and `get_api_reference` from `igniteui-cli` with the specific component and feature you're interested in.
37
+ This skill gives high-level guidance on grids and their features. The `igniteui-cli` MCP server (when available) has **full docs for grid toolbars and export** (`grid-toolbar`, `grid-export-excel`, `exporter-pdf`, and the tree/hierarchical/pivot variants — call `list_components` to see the current catalog) and an API-member index via `search_api`/`get_api_reference` for member-level lookups. For everything else, the reference files below are the primary guidance.
49
38
 
50
39
  ---
51
40
 
52
41
  ## Prerequisites
53
42
 
54
- - Angular 20+ project
43
+ - An Angular project on the major version matching the installed `igniteui-angular` package (igniteui-angular majors track Angular majors)
55
44
  - `igniteui-angular` installed, **or** `@infragistics/igniteui-angular` for licensed users — both packages share the same entry-point structure
56
45
  - A theme applied (see [`igniteui-angular-theming`](../igniteui-angular-theming/SKILL.md))
57
46
 
@@ -75,7 +64,7 @@ After choosing the grid type, **you must still complete Steps 2–4 from the man
75
64
 
76
65
  ### Grid Types & Imports
77
66
 
78
- > **AGENT INSTRUCTION:** Check `package.json` to determine whether the project uses `igniteui-angular` or `@infragistics/igniteui-angular`. Always import from the specific entry point. Never import from the root barrel of either package.
67
+ > **Important:** Check `package.json` to determine whether the project uses `igniteui-angular` or `@infragistics/igniteui-angular`. Always import from the specific entry point. Never import from the root barrel of either package.
79
68
 
80
69
  | Grid | Selector | Component | Directives | Entry Point |
81
70
  |---|---|---|---|---|
@@ -87,7 +76,14 @@ After choosing the grid type, **you must still complete Steps 2–4 from the man
87
76
 
88
77
  Replace `igniteui-angular` with `@infragistics/igniteui-angular` for the licensed package — entry-point paths are identical.
89
78
 
90
- > **AGENT INSTRUCTION — Documentation URL Pattern**: For grid-specific topics (sorting, filtering, editing, paging, etc.), docs URLs follow this naming pattern per grid type:
79
+ ### Universal Rules (every grid type)
80
+
81
+ - **Use the matching component type for `viewChild`** — `IgxGridLiteComponent`, `IgxGridComponent`, `IgxTreeGridComponent`, `IgxHierarchicalGridComponent`, or `IgxPivotGridComponent`
82
+ - **Import the matching directives bundle** from the table above — or individual imports for Grid Lite
83
+ - **Use signals for data** — `[data]="myData()"` with `signal<T[]>([])`
84
+ - **Virtualization is automatic** (rows and columns) — never wrap a grid in a virtual-scroll container; set a fixed `height` instead
85
+
86
+ > **Important — Documentation URL Pattern**: For grid-specific topics (sorting, filtering, editing, paging, etc.), docs URLs follow this naming pattern per grid type:
91
87
  > - Grid Lite: `.../components/grid-lite/{topic}`
92
88
  > - Flat Grid: `.../components/grid/{topic}`
93
89
  > - Tree Grid: `.../components/treegrid/{topic}`
@@ -100,7 +96,7 @@ Replace `igniteui-angular` with `@infragistics/igniteui-angular` for the license
100
96
  |---|---|---|---|---|---|
101
97
  | Column sorting | Yes | Yes | Yes (per-level) | Yes (per grid level) | Per-dimension only |
102
98
  | Column filtering | Yes | Yes | Yes (recursive — keeps matching parents) | Yes (per grid level) | Per-dimension only |
103
- | GroupBy | No | **Exclusive** | No (use tree hierarchy) | No | Inherent via dimensions |
99
+ | GroupBy | No | Yes (built-in `groupBy()` API) | Yes (via `igx-tree-grid-group-by-area` + grouping pipe) | No | Inherent via dimensions |
104
100
  | Paging | No | Yes | Yes | Yes (each level independent) | No |
105
101
  | Batch editing | No | Yes | Yes (hierarchical transactions) | Yes (propagated from root) | No |
106
102
  | Cell / Row editing | No | Yes | Yes | Yes (per grid level) | No |
@@ -18,7 +18,7 @@
18
18
 
19
19
  All programmatic data operations require a reference to the grid component. Use `viewChild` with the **correct component type** for your grid.
20
20
 
21
- > **AGENT INSTRUCTION:** Check `package.json` to determine whether the project uses `igniteui-angular` or `@infragistics/igniteui-angular`. Replace the package prefix in every import accordingly. Always use specific entry points — never the root barrel of either package.
21
+ > **Important:** Check `package.json` to determine whether the project uses `igniteui-angular` or `@infragistics/igniteui-angular`. Replace the package prefix in every import accordingly. Always use specific entry points — never the root barrel of either package.
22
22
 
23
23
  ### Flat Grid Example
24
24
 
@@ -331,7 +331,7 @@ onFilteringDone(event: IFilteringExpressionsTree) {
331
331
 
332
332
  ## Grouping (Flat Grid Only)
333
333
 
334
- > **NOTE**: GroupBy is **exclusive to the Flat Grid** (`igx-grid`). Tree Grid uses its natural hierarchy. Hierarchical Grid uses row islands. Pivot Grid uses dimensions.
334
+ > **NOTE**: The programmatic `groupBy()` API is **exclusive to the Flat Grid** (`igx-grid`). Tree Grid groups via `igx-tree-grid-group-by-area` + grouping pipe (see [`features.md`](./features.md#grouping-flat-and-tree-grid-only)). Hierarchical Grid uses row islands. Pivot Grid uses dimensions.
335
335
 
336
336
  ### Template-Driven Grouping
337
337
 
@@ -401,15 +401,14 @@ const monthGroupComparer = (a: Date, b: Date) => {
401
401
 
402
402
  ## Key Rules
403
403
 
404
- 1. **Use the correct component type for `viewChild`** `IgxGridLiteComponent`, `IgxGridComponent`, `IgxTreeGridComponent`, `IgxHierarchicalGridComponent`, or `IgxPivotGridComponent`
405
- 2. **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 (with `CUSTOM_ELEMENTS_SCHEMA`)
406
- 3. **Set `dataType` on every column** — enables correct filtering operands, sorting behavior, and editors
407
- 4. **Cancelable events** — use `event.cancel = true` in `(sorting)`, `(filtering)` to prevent the action
408
- 5. **Use signals for data** — `[data]="myData()"` with `signal<T[]>([])`
409
- 6. **GroupBy is Flat Grid only** — Tree Grid uses hierarchy, Hierarchical Grid uses row islands, Pivot Grid uses dimensions
410
- 7. **Tree Grid filtering is recursive** — parents of matching children are always shown and auto-expanded
411
- 8. **Hierarchical Grid levels are independent** — sorting/filtering don't cascade; configure on `<igx-row-island>`
412
- 9. **Use `filteringExpressionsTree` for programmatic filtering** — `advancedFilteringExpressionsTree` is only for the advanced filtering dialog
404
+ Universal rules (viewChild types, directive bundles, signals) are in the [hub](../SKILL.md#universal-rules-every-grid-type).
405
+
406
+ 1. **Set `dataType` on every column** — enables correct filtering operands, sorting behavior, and editors
407
+ 2. **Cancelable events** — use `event.cancel = true` in `(sorting)`, `(filtering)` to prevent the action
408
+ 3. **The `groupBy()` API is Flat Grid only** — Tree Grid groups via `igx-tree-grid-group-by-area` + grouping pipe (see [`features.md`](./features.md#grouping-flat-and-tree-grid-only)); Hierarchical Grid uses row islands, Pivot Grid uses dimensions
409
+ 4. **Tree Grid filtering is recursive** — parents of matching children are always shown and auto-expanded
410
+ 5. **Hierarchical Grid levels are independent** — sorting/filtering don't cascade; configure on `<igx-row-island>`
411
+ 6. **Use `filteringExpressionsTree` for programmatic filtering** — `advancedFilteringExpressionsTree` is only for the advanced filtering dialog
413
412
 
414
413
  ## See Also
415
414
 
@@ -17,7 +17,7 @@
17
17
 
18
18
  ## Editing Data Through the Grid
19
19
 
20
- > **AGENT INSTRUCTION:** When a user says they want to "edit data through the grid", "make the grid editable", or "allow CRUD in the grid", use this section to pick the right editing mode before writing any code.
20
+ > **Important:** When a user says they want to "edit data through the grid", "make the grid editable", or "allow CRUD in the grid", use this section to pick the right editing mode before writing any code.
21
21
 
22
22
  ### Choosing an Editing Mode
23
23
 
@@ -469,9 +469,8 @@ When grouping is enabled, summaries appear for each group. Control this with:
469
469
  4. **Batch editing requires `[primaryKey]`** — call `endEdit(true)` before `transactions.undo()`/`redo()`, commit via `transactions.commit(data)`
470
470
  5. **Cancelable events** — use `event.cancel = true` in `(cellEdit)`, `(rowEdit)`, `(rowEditEnter)`, `(cellEditEnter)` to prevent the action
471
471
  6. **Validation** — use template-driven validators on columns (`required`, `min`, `max`, `email`, `pattern`) or reactive validators via `(formGroupCreated)`
472
- 7. **Use the correct component type for `viewChild`** — `IgxGridComponent`, `IgxTreeGridComponent`, `IgxHierarchicalGridComponent`, or `IgxPivotGridComponent`
473
- 8. **Import the correct directives/components** `IGX_GRID_DIRECTIVES`, `IGX_TREE_GRID_DIRECTIVES`, `IGX_HIERARCHICAL_GRID_DIRECTIVES`, or `IGX_PIVOT_GRID_DIRECTIVES`
474
- 9. **Use signals for data** — `[data]="myData()"` with `signal<T[]>([])`
472
+
473
+ Universal rules (viewChild types, directive bundles, signals) are in the [hub](../SKILL.md#universal-rules-every-grid-type).
475
474
 
476
475
  ## See Also
477
476
 
@@ -8,7 +8,7 @@
8
8
  ## Contents
9
9
 
10
10
  - [Editing](#editing)
11
- - [Grouping (Grid only)](#grouping-grid-only)
11
+ - [Grouping (Flat and Tree Grid only)](#grouping-flat-and-tree-grid-only)
12
12
  - [Summaries](#summaries)
13
13
  - [Cell Merging](#cell-merging)
14
14
  - [Toolbar](#toolbar)
@@ -32,7 +32,12 @@ Quick reference:
32
32
  | **Row editing** (recommended default) | `[rowEditable]="true"` + `[editable]="true"` on columns + `(rowEditDone)` |
33
33
  | **Batch editing** | `[batchEditing]="true"` + `[rowEditable]="true"` + `transactions.commit(data)` |
34
34
 
35
- ## Grouping (Grid and Tree Grid only)
35
+ ## Grouping (Flat and Tree Grid only)
36
+
37
+ The two grids group differently:
38
+
39
+ - **Flat Grid** has built-in GroupBy — `[groupable]="true"` on columns (not on the grid component itself) plus the `groupBy()`/`clearGrouping()` API.
40
+ - **Tree Grid** has no `groupBy()` API — it groups via `IgxTreeGridGroupByAreaComponent` (`<igx-tree-grid-group-by-area>`) paired with the tree-grid grouping pipe that reshapes flat data into a grouped hierarchy.
36
41
 
37
42
  ```html
38
43
  <igx-grid [data]="data()" [groupsExpanded]="true">
@@ -45,7 +50,7 @@ Quick reference:
45
50
  </igx-grid>
46
51
  ```
47
52
 
48
- Programmatic:
53
+ Programmatic (Flat Grid):
49
54
 
50
55
  ```typescript
51
56
  this.gridRef().groupBy({ fieldName: 'category', dir: SortingDirection.Asc });
@@ -98,9 +103,9 @@ customMerge = new PriceRangeMergeStrategy();
98
103
 
99
104
  ## Toolbar
100
105
 
101
- ```typescript
102
- import { IgxGridToolbarComponent } from 'igniteui-angular/grids/core';
103
- ```
106
+ > **Full docs in the MCP** — `get_doc` with `grid-toolbar`, `treegrid-toolbar`, or `hierarchicalgrid-toolbar` covers title, built-in actions (hiding, pinning, advanced filtering, exporter), custom content, progress indication, and theming. Prefer those over memory.
107
+
108
+ Toolbar components (`IgxGridToolbarComponent` and the action components) import from `igniteui-angular/grids/core` and nest inside the grid element:
104
109
 
105
110
  ```html
106
111
  <igx-grid [data]="data()">
@@ -113,42 +118,15 @@ import { IgxGridToolbarComponent } from 'igniteui-angular/grids/core';
113
118
  <igx-grid-toolbar-advanced-filtering></igx-grid-toolbar-advanced-filtering>
114
119
  </igx-grid-toolbar-actions>
115
120
  </igx-grid-toolbar>
116
-
117
121
  <igx-column field="name"></igx-column>
118
122
  </igx-grid>
119
123
  ```
120
124
 
121
125
  ## Export
122
126
 
123
- ### Excel Export
127
+ > **Full docs in the MCP** — `get_doc` with `grid-export-excel`, `treegrid-export-excel`, `hierarchicalgrid-export-excel`, `pivotGrid-export-excel`, or `exporter-pdf` covers setup, full-data vs. visible exports, multi-column headers, customization events, and known limitations. Prefer those over memory.
124
128
 
125
- ```typescript
126
- import { IgxExcelExporterService, IgxExcelExporterOptions } from 'igniteui-angular/grids/core';
127
-
128
- export class MyComponent {
129
- private excelExporter = inject(IgxExcelExporterService);
130
-
131
- exportToExcel() {
132
- this.excelExporter.exportData(this.data(), new IgxExcelExporterOptions('export'));
133
- // Or export the grid (respects filtering/sorting)
134
- this.excelExporter.export(this.grid, new IgxExcelExporterOptions('export'));
135
- }
136
- }
137
- ```
138
-
139
- ### CSV Export
140
-
141
- ```typescript
142
- import { IgxCsvExporterService, IgxCsvExporterOptions, CsvFileTypes } from 'igniteui-angular/grids/core';
143
-
144
- export class MyComponent {
145
- private csvExporter = inject(IgxCsvExporterService);
146
-
147
- exportToCsv() {
148
- this.csvExporter.export(this.grid, new IgxCsvExporterOptions('export', CsvFileTypes.CSV));
149
- }
150
- }
151
- ```
129
+ Quick reference — exporter services (`IgxExcelExporterService`, `IgxCsvExporterService`, and their `*ExporterOptions`) import from `igniteui-angular/grids/core`; `inject()` the service and call `export(grid, options)` (respects filtering/sorting) or `exportData(data, options)` (raw data).
152
130
 
153
131
  ## Virtualization & Performance
154
132
 
@@ -228,9 +206,9 @@ Grids support copy to clipboard by default. Configure via:
228
206
  ## Key Rules
229
207
 
230
208
  1. **Cancelable events** — use `event.cancel = true` in `(rowEdit)`, `(cellEdit)`, `(sorting)`, `(filtering)` to prevent the action
231
- 2. **Use signals** for data binding — `[data]="myData()"` with `signal<T[]>([])`
232
- 3. **Virtualization is automatic** — don't wrap grids in virtual scroll containers
233
- 4. **GroupBy is Flat Grid only** — Tree Grid uses hierarchy, Hierarchical Grid uses row islands, Pivot Grid uses dimensions
209
+ 2. **The `groupBy()` API is Flat Grid only** Tree Grid groups via `igx-tree-grid-group-by-area` + grouping pipe; Hierarchical Grid uses row islands, Pivot Grid uses dimensions
210
+
211
+ Universal rules (viewChild types, directive bundles, signals, virtualization) are in the [hub](../SKILL.md#universal-rules-every-grid-type).
234
212
 
235
213
  ## See Also
236
214
 
@@ -6,15 +6,13 @@
6
6
 
7
7
  This skill automates the migration from the **open-source Grid Lite** (`igx-grid-lite`, MIT licensed) to the **Premium Data Grid** (`igx-grid`, commercially licensed). Use it when a project outgrows Grid Lite's read-only capabilities and needs enterprise features such as editing, selection, paging, grouping, summaries, export, or state persistence.
8
8
 
9
- ## MANDATORY AGENT PROTOCOL
9
+ ## Required Workflow
10
10
 
11
- > **DO NOT write any code from memory.** Grid APIs change between versions.
12
-
13
- Before producing migration code:
11
+ Grid APIs change between releases — do not write migration code from memory. Before producing migration code:
14
12
 
15
13
  1. **Identify the current Grid Lite usage** - read the user's existing component files to understand their column configuration, templates, data binding, and any `dataPipelineConfiguration` usage.
16
14
  2. **Consult the grids skill** - read the relevant reference files from [`igniteui-angular-grids`](../SKILL.md) for the target features the user needs after migration.
17
- 3. **Use the MCP server** - call `mcp_igniteui-cli_get_doc` or `mcp_igniteui-cli_search_docs` for Angular to verify current API details when in doubt.
15
+ 3. **Use the MCP server when in doubt** - call `get_doc` or `search_docs` from the `igniteui-cli` MCP server (if available) for Angular to verify current API details.
18
16
  4. **Only then produce output** - base all code on verified references, not memory.
19
17
 
20
18
  ---
@@ -29,7 +27,7 @@ Migrate from Grid Lite to the Premium Grid when the user needs **any** of these
29
27
  | Row adding / deleting | No | Yes |
30
28
  | Row / Cell / Column selection | No | Yes |
31
29
  | Paging (client or remote) | No | Yes |
32
- | GroupBy | No | Yes (exclusive to flat grid) |
30
+ | GroupBy | No | Yes |
33
31
  | Summaries (built-in & custom) | No | Yes |
34
32
  | Column pinning | No | Yes |
35
33
  | Column moving | No | Yes |
@@ -53,7 +51,7 @@ Migrate from Grid Lite to the Premium Grid when the user needs **any** of these
53
51
 
54
52
  Grid Lite uses the separate `igniteui-grid-lite` npm package. The Premium Grid is part of the main `igniteui-angular` (or `@infragistics/igniteui-angular`) package.
55
53
 
56
- > **AGENT INSTRUCTION:** Check `package.json` to determine which package variant is installed. If only `igniteui-grid-lite` is present, the user needs to install the full package.
54
+ > **Important:** Check `package.json` to determine which package variant is installed. If only `igniteui-grid-lite` is present, the user needs to install the full package.
57
55
 
58
56
  ```bash
59
57
  # Open-source package
@@ -318,7 +316,7 @@ export class DataViewComponent {
318
316
  | `(sorting)` | `(sorting)` | Both cancelable |
319
317
  | `(sorted)` | `(sortingDone)` | Name changed |
320
318
  | `(filtering)` | `(filtering)` | Both cancelable |
321
- | `(filtered)` | `(filteringDone)` | Name changed |
319
+ | `(filtered)` | `(filteringDone)` | Name changed. For **remote** filtering, bind `(filteringExpressionsTreeChange)` instead — see Step 6 and [`paging-remote.md`](./paging-remote.md) |
322
320
 
323
321
  ### Step 8 - Migrate Programmatic Sort/Filter API
324
322
 
@@ -378,10 +378,8 @@ export class MasterDetailComponent {
378
378
  2. **Remote data requires noop strategies** — apply `NoopSortingStrategy` and `NoopFilteringStrategy` to disable client-side operations when the server handles them
379
379
  3. **Track sort/filter state for remote operations** — store current expressions and include them in every server request
380
380
  4. **Debounce rapid virtual scroll** — use `debounceTime` on `(dataPreLoad)` to avoid flooding the server
381
- 5. **Virtualization is automatic** — don't wrap grids in virtual scroll containers; just set a fixed `height`
382
- 6. **Use the correct component type for `viewChild`** `IgxGridComponent`, `IgxTreeGridComponent`, `IgxHierarchicalGridComponent`, or `IgxPivotGridComponent`
383
- 7. **Import the correct directives/components** — `IGX_GRID_DIRECTIVES`, `IGX_TREE_GRID_DIRECTIVES`, `IGX_HIERARCHICAL_GRID_DIRECTIVES`, or `IGX_PIVOT_GRID_DIRECTIVES`
384
- 8. **Use signals for data** — `[data]="myData()"` with `signal<T[]>([])`
381
+
382
+ Universal rules (viewChild types, directive bundles, signals, virtualization) are in the [hub](../SKILL.md#universal-rules-every-grid-type).
385
383
 
386
384
  ## See Also
387
385
 
@@ -94,11 +94,11 @@ restoreState() {
94
94
  Column templates are also not serialized. Use the `columnInit` event to reassign them:
95
95
 
96
96
  ```typescript
97
- @ViewChild('activeTemplate', { static: true }) public activeTemplate: TemplateRef<any>;
97
+ activeTemplate = viewChild.required<TemplateRef<any>>('activeTemplate');
98
98
 
99
99
  onColumnInit(column: IgxColumnComponent) {
100
100
  if (column.field === 'IsActive') {
101
- column.bodyTemplate = this.activeTemplate;
101
+ column.bodyTemplate = this.activeTemplate();
102
102
  }
103
103
  }
104
104
  ```
@@ -290,9 +290,8 @@ this.pivotGridRef().sortDimension(this.pivotConfig.rows[0], SortingDirection.Des
290
290
  3. **Hierarchical Grid levels are independent** — sorting/filtering/paging don't cascade; configure on `<igx-row-island>`
291
291
  4. **Pivot Grid is read-only** — no editing, paging, or standard filtering/sorting; use `pivotConfiguration` for all data operations
292
292
  5. **Grid Lite has its own API** — uses `IgxGridLiteSortingExpression`/`IgxGridLiteFilteringExpression` (NOT `ISortingExpression`/`FilteringExpressionsTree`), `dataPipelineConfiguration` for remote ops (NOT noop strategies), and has no editing, grouping, paging, summaries, or selection
293
- 6. **Use the correct component type for `viewChild`** — `IgxGridLiteComponent`, `IgxGridComponent`, `IgxTreeGridComponent`, `IgxHierarchicalGridComponent`, or `IgxPivotGridComponent`
294
- 7. **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 (with `CUSTOM_ELEMENTS_SCHEMA`)
295
- 8. **Use signals for data** — `[data]="myData()"` with `signal<T[]>([])`
293
+
294
+ Universal rules (viewChild types, directive bundles, signals) are in the [hub](../SKILL.md#universal-rules-every-grid-type).
296
295
 
297
296
  ## See Also
298
297
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  ### Imports
21
21
 
22
- > **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.
22
+ > **Important:** 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.
23
23
 
24
24
  ```typescript
25
25
  // Open-source package — import from specific entry points
@@ -161,7 +161,16 @@ Create complex cell layouts spanning multiple rows/columns:
161
161
 
162
162
  Or programmatically: `this.gridRef().pinColumn('name')`.
163
163
 
164
- ## Sorting
164
+ ### Column Moving
165
+
166
+ Enable column moving (drag-to-reorder headers) with `[moving]="true"` on the grid.
167
+ There is no [movable] input on <igx-column>.
168
+
169
+ ```html
170
+ <igx-grid [moving]="true" ...>
171
+ <igx-column field="name" ...></igx-column>
172
+ </igx-grid>
173
+
165
174
 
166
175
  ```html
167
176
  <igx-grid
@@ -255,15 +264,13 @@ Events: `(rowSelectionChanging)`, `(columnSelectionChanging)`, `(selected)` (cel
255
264
 
256
265
  ## Key Rules
257
266
 
267
+ Universal rules (viewChild types, directive bundles, signals, virtualization) are in the [hub](../SKILL.md#universal-rules-every-grid-type).
268
+
258
269
  1. **Pick the right grid type first** — see the [hub](../SKILL.md) for the decision guide
259
270
  2. **Always set `[primaryKey]`** — required for editing, selection, row operations (Flat, Tree, Hierarchical, Pivot grids; NOT Grid Lite)
260
- 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
261
- 4. **Use the right component type for `viewChild`** `IgxGridLiteComponent`, `IgxGridComponent`, `IgxTreeGridComponent`, `IgxHierarchicalGridComponent`, or `IgxPivotGridComponent`
262
- 5. **Set `[autoGenerate]="false"`** and define columns explicitly for production grids (except Pivot Grid where columns are auto-generated)
263
- 6. **Set `dataType` on every column** for correct filtering, sorting, editing, and summaries
264
- 7. **Use signals** for data binding — `[data]="myData()"` with `signal<T[]>([])`
265
- 8. **Virtualization is automatic** — don't wrap grids in virtual scroll containers
266
- 9. **Omit `width` on generated `<igx-column>` elements.** Columns without `width` equally share available grid width. Only set `width` when the user explicitly asks for fixed or percentage column sizing. If column widths are used, at least one column must not have a specified width so that it fills the remaining space in the grid.
271
+ 3. **Set `[autoGenerate]="false"`** and define columns explicitly for production grids (except Pivot Grid where columns are auto-generated)
272
+ 4. **Set `dataType` on every column** for correct filtering, sorting, editing, and summaries
273
+ 5. **Omit `width` on generated `<igx-column>` elements.** Columns without `width` equally share available grid width. Only set `width` when the user explicitly asks for fixed or percentage column sizing. If column widths are used, at least one column must not have a specified width so that it fills the remaining space in the grid.
267
274
 
268
275
  ## See Also
269
276
 
@@ -167,7 +167,7 @@ The **lightest grid option** — an open-source (MIT licensed) Web Component wit
167
167
 
168
168
  > **When to recommend Grid Lite vs. Flat Grid**: If the user only needs to display data with basic sorting/filtering and doesn't need editing, batch operations, paging, grouping, summaries, or export, Grid Lite is the lighter, faster choice. If any of those enterprise features are needed, **upgrade strictly to `igx-grid` (`IgxGridComponent`)** from `igniteui-angular/grids/grid` — do NOT recommend other non-grid components as a substitute.
169
169
 
170
- > **AGENT INSTRUCTION — Grid Lite → Grid Upgrade**: When a user is working with `igx-grid-lite` and you identify that their requirements exceed Grid Lite's capabilities (e.g., they need editing, selection, paging, grouping, summaries, export, row operations, or any feature not available in Grid Lite), you MUST recommend upgrading to `igx-grid` (`IgxGridComponent`). Never suggest a different component type — the upgrade path from Grid Lite is always to `igx-grid`. Replace `IgxGridLiteComponent` with `IgxGridComponent`, update imports from `igniteui-angular/grids/lite` to `igniteui-angular/grids/grid`, use `IGX_GRID_DIRECTIVES` instead of individual Grid Lite imports, and remove `CUSTOM_ELEMENTS_SCHEMA`.
170
+ > **Important — Grid Lite → Grid Upgrade**: When a user is working with `igx-grid-lite` and you identify that their requirements exceed Grid Lite's capabilities (e.g., they need editing, selection, paging, grouping, summaries, export, row operations, or any feature not available in Grid Lite), you MUST recommend upgrading to `igx-grid` (`IgxGridComponent`). Never suggest a different component type — the upgrade path from Grid Lite is always to `igx-grid`. Replace `IgxGridLiteComponent` with `IgxGridComponent`, update imports from `igniteui-angular/grids/lite` to `igniteui-angular/grids/grid`, use `IGX_GRID_DIRECTIVES` instead of individual Grid Lite imports, and remove `CUSTOM_ELEMENTS_SCHEMA` if it was added for direct web-component usage. See [`grid-migration.md`](./grid-migration.md) for the full migration checklist.
171
171
 
172
172
  ### Installation
173
173
 
@@ -180,7 +180,7 @@ npm install igniteui-grid-lite
180
180
  ### Setup
181
181
 
182
182
  ```typescript
183
- import { Component, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, viewChild } from '@angular/core';
183
+ import { Component, ChangeDetectionStrategy, viewChild } from '@angular/core';
184
184
  import {
185
185
  IgxGridLiteComponent,
186
186
  IgxGridLiteColumnComponent,
@@ -196,7 +196,6 @@ import {
196
196
  IgxGridLiteCellTemplateDirective,
197
197
  IgxGridLiteHeaderTemplateDirective
198
198
  ],
199
- schemas: [CUSTOM_ELEMENTS_SCHEMA], // Required — Grid Lite is a Web Component
200
199
  templateUrl: './users-lite.component.html',
201
200
  changeDetection: ChangeDetectionStrategy.OnPush
202
201
  })
@@ -359,7 +358,7 @@ These features are **NOT available** in Grid Lite:
359
358
  ### Grid Lite Key Differences from Flat Grid
360
359
 
361
360
  - **Separate package**: `npm install igniteui-grid-lite`
362
- - **Requires `CUSTOM_ELEMENTS_SCHEMA`** in the component's `schemas`
361
+ - **`CUSTOM_ELEMENTS_SCHEMA` is not required** — the `IgxGridLiteComponent` Angular wrapper declares it internally; add it to your component's `schemas` only when using the underlying web component tag directly
363
362
  - **No directives bundle** — import `IgxGridLiteComponent`, `IgxGridLiteColumnComponent`, and template directives individually
364
363
  - **No `[primaryKey]`** — not needed (no editing, selection, or row operations)
365
364
  - **No editing** of any kind (cell, row, batch)
@@ -430,35 +429,17 @@ export class PivotGridBasicSampleComponent {
430
429
  </igx-pivot-grid>
431
430
  ```
432
431
 
433
- ```json
432
+ ```typescript
433
+ // Data shape — nested objects are flattened via memberFunction:
434
434
  export const DATA = [
435
- {
436
- Product: {
437
- Name: 'Clothing',
438
- UnitPrice: '12.814860936633712'
439
- },
440
- Seller: {
441
- Name: 'Stanley Brooker',
442
- City: 'Seattle'
443
- },
444
- Date: '2007-01-01T00:00:00',
445
- Value: '94.2652032683907',
446
- NumberOfUnits: '282'
447
- },
448
- {
449
- Product: {
450
- Name: 'Clothing',
451
- UnitPrice: '49.579375120615296'
452
- },
453
- Seller: {
454
- Name: 'Elisa Longbottom',
455
- City: 'Sofia'
456
- },
457
- Date: '2007-01-05T00:00:00',
458
- Value: '70.798922689072285',
459
- NumberOfUnits: '296'
460
- }
461
- ...
435
+ {
436
+ Product: { Name: 'Clothing', UnitPrice: '12.81' },
437
+ Seller: { Name: 'Stanley Brooker', City: 'Seattle' },
438
+ Date: '2007-01-01T00:00:00',
439
+ Value: '94.27',
440
+ NumberOfUnits: '282'
441
+ },
442
+ // ...
462
443
  ];
463
444
  ```
464
445
 
@@ -466,6 +447,11 @@ export const DATA = [
466
447
 
467
448
  Provide a drag-and-drop UI for users to reshape the pivot interactively:
468
449
 
450
+ ```typescript
451
+ // Component class — reference the pivot grid instance for the selector
452
+ pivotGridRef = viewChild.required<IgxPivotGridComponent>('pivotGrid');
453
+ ```
454
+
469
455
  ```html
470
456
  <igx-pivot-data-selector [grid]="pivotGridRef()"></igx-pivot-data-selector>
471
457
  <igx-pivot-grid #pivotGrid [data]="salesData()" [pivotConfiguration]="pivotConfig"></igx-pivot-grid>
@@ -486,7 +472,7 @@ Provide a drag-and-drop UI for users to reshape the pivot interactively:
486
472
  1. **Tree Grid**: use `[primaryKey]` + `[foreignKey]` for flat data or `[childDataKey]` for nested objects; filtering is recursive (parents of matching children are always shown)
487
473
  2. **Hierarchical Grid**: sorting/filtering/paging are independent per level; configure features on the `<igx-row-island>` blueprint
488
474
  3. **Pivot Grid is read-only** — editing, paging, pinning, column moving, row dragging are all disabled; use `pivotConfiguration` for all data operations
489
- 4. **Grid Lite requires `CUSTOM_ELEMENTS_SCHEMA`** and `igniteui-grid-lite` npm package — it has no editing, selection, paging, or export
475
+ 4. **Grid Lite requires the `igniteui-grid-lite` npm package** — it has no editing, selection, paging, or export; `CUSTOM_ELEMENTS_SCHEMA` is not needed when using the `IgxGridLiteComponent` wrapper
490
476
  5. **Omit `width` on generated `<igx-grid-lite-column>` elements.** Columns without `width` equally share available grid width. Only set `width` when the user explicitly asks for it. If column widths are used, at least one column must not have a specified width so that it fills the remaining space in the grid.
491
477
 
492
478
  ## See Also