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.
- package/fesm2022/igniteui-angular-carousel.mjs +2 -2
- package/fesm2022/igniteui-angular-carousel.mjs.map +1 -1
- package/fesm2022/igniteui-angular-core.mjs +83 -24
- package/fesm2022/igniteui-angular-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +9 -0
- package/fesm2022/igniteui-angular-grids-grid.mjs.map +1 -1
- package/fesm2022/igniteui-angular-list.mjs +14 -1
- package/fesm2022/igniteui-angular-list.mjs.map +1 -1
- package/fesm2022/igniteui-angular-navigation-drawer.mjs +6 -1
- package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
- package/package.json +1 -1
- package/skills/igniteui-angular-components/SKILL.md +9 -29
- package/skills/igniteui-angular-components/references/charts.md +3 -33
- package/skills/igniteui-angular-components/references/data-display.md +8 -94
- package/skills/igniteui-angular-components/references/directives.md +13 -114
- package/skills/igniteui-angular-components/references/feedback.md +1 -4
- package/skills/igniteui-angular-components/references/form-controls.md +10 -75
- package/skills/igniteui-angular-components/references/layout-manager.md +15 -198
- package/skills/igniteui-angular-components/references/layout.md +1 -4
- package/skills/igniteui-angular-components/references/mcp-setup.md +28 -29
- package/skills/igniteui-angular-components/references/setup.md +6 -4
- package/skills/igniteui-angular-figma-to-app/SKILL.md +37 -25
- package/skills/igniteui-angular-figma-to-app/references/figma-component-map.md +25 -26
- package/skills/igniteui-angular-figma-to-app/references/mcp-setup.md +13 -9
- package/skills/igniteui-angular-figma-to-app/references/validation-patterns.md +2 -2
- package/skills/igniteui-angular-generate-from-image-design/SKILL.md +22 -7
- package/skills/igniteui-angular-generate-from-image-design/references/component-mapping.md +1 -1
- package/skills/igniteui-angular-grids/SKILL.md +21 -25
- package/skills/igniteui-angular-grids/references/data-operations.md +10 -11
- package/skills/igniteui-angular-grids/references/editing.md +3 -4
- package/skills/igniteui-angular-grids/references/features.md +16 -38
- package/skills/igniteui-angular-grids/references/grid-migration.md +6 -8
- package/skills/igniteui-angular-grids/references/paging-remote.md +2 -4
- package/skills/igniteui-angular-grids/references/state.md +4 -5
- package/skills/igniteui-angular-grids/references/structure.md +16 -9
- package/skills/igniteui-angular-grids/references/types.md +19 -33
- package/skills/igniteui-angular-theming/SKILL.md +12 -65
- package/skills/igniteui-angular-theming/references/mcp-setup.md +28 -31
- package/types/igniteui-angular-core.d.ts +32 -5
- 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
|
-
##
|
|
9
|
+
## Required Workflow
|
|
10
10
|
|
|
11
|
-
**This file is a routing hub only. It contains
|
|
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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
>
|
|
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
|
|
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
|
|
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
|
-
> **
|
|
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
|
-
|
|
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 |
|
|
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
|
-
> **
|
|
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**:
|
|
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
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
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
|
-
> **
|
|
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
|
-
|
|
473
|
-
|
|
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 (
|
|
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
|
-
|
|
102
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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. **
|
|
232
|
-
|
|
233
|
-
|
|
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
|
-
##
|
|
9
|
+
## Required Workflow
|
|
10
10
|
|
|
11
|
-
|
|
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 `
|
|
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
|
|
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
|
-
> **
|
|
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
|
-
|
|
382
|
-
|
|
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
|
-
|
|
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
|
-
|
|
294
|
-
|
|
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
|
-
> **
|
|
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
|
-
|
|
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. **
|
|
261
|
-
4. **
|
|
262
|
-
5. **
|
|
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
|
-
> **
|
|
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,
|
|
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
|
-
- **
|
|
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
|
-
```
|
|
432
|
+
```typescript
|
|
433
|
+
// Data shape — nested objects are flattened via memberFunction:
|
|
434
434
|
export const DATA = [
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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
|
|
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
|