igniteui-angular 21.1.0-rc.5 → 21.1.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-directives.mjs +28 -28
- package/fesm2022/igniteui-angular-directives.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-core.mjs +3 -0
- package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
- package/fesm2022/igniteui-angular-grids-grid.mjs +8 -7
- package/fesm2022/igniteui-angular-grids-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-grids-pivot-grid.mjs +2 -2
- package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
- package/package.json +4 -4
- package/skills/igniteui-angular-components/SKILL.md +10 -12
- package/skills/igniteui-angular-components/references/charts.md +20 -10
- package/skills/igniteui-angular-components/references/data-display.md +102 -22
- package/skills/igniteui-angular-components/references/directives.md +127 -4
- package/skills/igniteui-angular-components/references/feedback.md +11 -3
- package/skills/igniteui-angular-components/references/form-controls.md +27 -4
- package/skills/igniteui-angular-components/references/layout-manager.md +5 -0
- package/skills/igniteui-angular-components/references/layout.md +11 -2
- package/skills/igniteui-angular-components/references/setup.md +29 -9
- package/skills/igniteui-angular-grids/SKILL.md +7 -7
- package/skills/igniteui-angular-grids/references/data-operations.md +15 -5
- package/skills/igniteui-angular-grids/references/editing.md +12 -1
- package/skills/igniteui-angular-grids/references/features.md +26 -10
- package/skills/igniteui-angular-grids/references/paging-remote.md +13 -4
- package/skills/igniteui-angular-grids/references/state.md +17 -151
- package/skills/igniteui-angular-grids/references/structure.md +9 -0
- package/skills/igniteui-angular-grids/references/types.md +107 -26
- package/skills/igniteui-angular-theming/SKILL.md +6 -106
- package/skills/igniteui-angular-theming/references/common-patterns.md +45 -0
- package/skills/igniteui-angular-theming/references/mcp-setup.md +77 -0
- package/types/igniteui-angular-grids-grid.d.ts +1 -0
- package/types/igniteui-angular-grids-lite.d.ts +2 -0
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
> **Part of the [`igniteui-angular-components`](../SKILL.md) skill hub.**
|
|
4
4
|
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [Installation](#installation)
|
|
8
|
+
- [Required Providers (`app.config.ts`)](#required-providers-appconfigts)
|
|
9
|
+
- [Architecture — Standalone Components](#architecture--standalone-components)
|
|
10
|
+
- [Multi-Entry-Point Imports](#multi-entry-point-imports)
|
|
11
|
+
|
|
5
12
|
## Installation
|
|
6
13
|
|
|
7
14
|
```bash
|
|
@@ -50,7 +57,7 @@ All Ignite UI components are **standalone** — no NgModules needed. Import them
|
|
|
50
57
|
|
|
51
58
|
```typescript
|
|
52
59
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
53
|
-
import { IgxButtonDirective } from 'igniteui-angular/
|
|
60
|
+
import { IgxButtonDirective } from 'igniteui-angular/directives';
|
|
54
61
|
import { IgxDialogComponent } from 'igniteui-angular/dialog';
|
|
55
62
|
|
|
56
63
|
@Component({
|
|
@@ -94,7 +101,7 @@ import { IgxComboComponent } from 'igniteui-angular';
|
|
|
94
101
|
| Stepper | `igniteui-angular/stepper` |
|
|
95
102
|
| Accordion / Expansion Panel | `igniteui-angular/expansion-panel` |
|
|
96
103
|
| Splitter | `igniteui-angular/splitter` |
|
|
97
|
-
| Navigation Drawer | `igniteui-angular/
|
|
104
|
+
| Navigation Drawer | `igniteui-angular/navigation-drawer` |
|
|
98
105
|
| Bottom Navigation | `igniteui-angular/bottom-nav` |
|
|
99
106
|
| List | `igniteui-angular/list` |
|
|
100
107
|
| Tree | `igniteui-angular/tree` |
|
|
@@ -109,24 +116,37 @@ import { IgxComboComponent } from 'igniteui-angular';
|
|
|
109
116
|
| Icon | `igniteui-angular/icon` |
|
|
110
117
|
| Carousel | `igniteui-angular/carousel` |
|
|
111
118
|
| Paginator | `igniteui-angular/paginator` |
|
|
112
|
-
| Linear Progress | `igniteui-angular/
|
|
113
|
-
| Circular Progress | `igniteui-angular/
|
|
119
|
+
| Linear Progress | `igniteui-angular/progressbar` |
|
|
120
|
+
| Circular Progress | `igniteui-angular/progressbar` |
|
|
114
121
|
| Chat | `igniteui-angular/chat` |
|
|
115
|
-
| Button / Icon Button | `igniteui-angular/
|
|
116
|
-
|
|
|
117
|
-
|
|
|
118
|
-
|
|
|
122
|
+
| Button / Icon Button | `igniteui-angular/directives` |
|
|
123
|
+
| Button Group | `igniteui-angular/button-group` |
|
|
124
|
+
| Ripple | `igniteui-angular/directives` |
|
|
125
|
+
| IgxTooltipDirective, IgxTooltipTargetDirective | `igniteui-angular/directives` |
|
|
126
|
+
| Drag & Drop | `igniteui-angular/directives` |
|
|
119
127
|
| Layout Manager (`igxLayout`, `igxFlex`) | `igniteui-angular/directives` |
|
|
128
|
+
| Core utilities, services, base types | `igniteui-angular/core` |
|
|
120
129
|
| Icon Service | `igniteui-angular/icon` |
|
|
121
130
|
| Overlay Service | `igniteui-angular/core` |
|
|
122
131
|
| **Dock Manager** | `igniteui-dockmanager` *(separate package — `npm install igniteui-dockmanager`)* |
|
|
123
132
|
|
|
133
|
+
**Grid-specific entry points** (tree-shakable imports):
|
|
134
|
+
|
|
135
|
+
| Component / Feature | Entry Point |
|
|
136
|
+
|---|---|
|
|
137
|
+
| Shared grid infrastructure (columns, toolbar, filtering, sorting, etc.) | `igniteui-angular/grids/core` |
|
|
138
|
+
| Standard grid (`IgxGridComponent`) | `igniteui-angular/grids/grid` |
|
|
139
|
+
| Tree grid (`IgxTreeGridComponent`) | `igniteui-angular/grids/tree-grid` |
|
|
140
|
+
| Hierarchical grid (`IgxHierarchicalGridComponent`, `IgxRowIslandComponent`) | `igniteui-angular/grids/hierarchical-grid` |
|
|
141
|
+
| Pivot grid (`IgxPivotGridComponent`, `IgxPivotDataSelectorComponent`) | `igniteui-angular/grids/pivot-grid` |
|
|
142
|
+
|
|
124
143
|
### Convenience Directive Collections
|
|
125
144
|
|
|
126
145
|
For complex components, use the bundled directive arrays instead of listing every sub-directive individually:
|
|
127
146
|
|
|
128
147
|
| Token | Entry Point | Includes |
|
|
129
148
|
|---|---|---|
|
|
149
|
+
| `IGX_BUTTON_GROUP_DIRECTIVES` | `igniteui-angular/button-group` | Button group + button directive |
|
|
130
150
|
| `IGX_INPUT_GROUP_DIRECTIVES` | `igniteui-angular/input-group` | Input group + label, hint, prefix, suffix |
|
|
131
151
|
| `IGX_TABS_DIRECTIVES` | `igniteui-angular/tabs` | Tabs + tab item, header, content |
|
|
132
152
|
| `IGX_STEPPER_DIRECTIVES` | `igniteui-angular/stepper` | Stepper + step |
|
|
@@ -140,7 +160,7 @@ For complex components, use the bundled directive arrays instead of listing ever
|
|
|
140
160
|
- [`layout.md`](./layout.md) — Tabs, Stepper, Accordion, Splitter, Navigation Drawer
|
|
141
161
|
- [`data-display.md`](./data-display.md) — List, Tree, Card, Chips, Avatar, Badge, Icon, Carousel, Paginator, Progress, Chat
|
|
142
162
|
- [`feedback.md`](./feedback.md) — Dialog, Snackbar, Toast, Banner
|
|
143
|
-
- [`directives.md`](./directives.md) — Button, Ripple, Tooltip, Drag and Drop
|
|
163
|
+
- [`directives.md`](./directives.md) — Button, Icon Button, Button Group, Ripple, Tooltip, Drag and Drop
|
|
144
164
|
- [`layout-manager.md`](./layout-manager.md) — Layout Manager directives, Dock Manager
|
|
145
165
|
- [`../../igniteui-angular-grids/SKILL.md`](../../igniteui-angular-grids/SKILL.md) — Data Grids
|
|
146
166
|
- [`../../igniteui-angular-theming/SKILL.md`](../../igniteui-angular-theming/SKILL.md) — Theming & Styling
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: igniteui-angular-grids
|
|
3
|
-
description: "
|
|
4
|
-
user-
|
|
3
|
+
description: "Provides guidance on all Ignite UI for Angular data grid types (Flat Grid, Tree Grid, Hierarchical Grid, Grid Lite, Pivot Grid) including setup, column configuration, sorting, filtering, selection, editing, grouping, summaries, toolbar, export, paging, remote data, and state persistence. Use when users ask about grids, tables, data grids, tabular data display, cell editing, batch editing, row selection, column pinning, column hiding, grouping rows, pivot tables, tree-structured data, hierarchical data, master-detail views, or exporting grid data. Do NOT use for non-grid UI components (forms, dialogs, navigation, charts) — use igniteui-angular-components instead. Do NOT use for theming or styling — use igniteui-angular-theming instead."
|
|
4
|
+
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Ignite UI for Angular — Data Grids
|
|
@@ -21,8 +21,8 @@ Use the Grid Selection Decision Guide below. If the grid type is not explicitly
|
|
|
21
21
|
**STEP 2 — Identify every task category involved.**
|
|
22
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
23
|
|
|
24
|
-
**STEP 3 — Read every identified reference file in full.**
|
|
25
|
-
Call `read_file` (or equivalent) on
|
|
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
26
|
|
|
27
27
|
**STEP 4 — Only then produce output.**
|
|
28
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.
|
|
@@ -33,11 +33,11 @@ Base your code and explanation exclusively on what you read in Step 3. If the re
|
|
|
33
33
|
|---|---|
|
|
34
34
|
| Grid type selection, column config, column templates, column groups, MRL, pinning, sorting UI, filtering UI, selection | [`references/structure.md`](./references/structure.md) |
|
|
35
35
|
| Grouping, summaries, cell merging, toolbar, export, row drag, action strip, master-detail, clipboard | [`references/features.md`](./references/features.md) |
|
|
36
|
-
| Tree Grid specifics, Hierarchical Grid specifics, Grid Lite setup, Pivot Grid setup | [`references/types.md`](./references/types.md) |
|
|
36
|
+
| Tree Grid specifics, Hierarchical Grid specifics, Grid Lite setup, Grid Lite data operations, Pivot Grid setup | [`references/types.md`](./references/types.md) |
|
|
37
37
|
| Programmatic sorting / filtering / grouping, canonical import patterns, `viewChild` access | [`references/data-operations.md`](./references/data-operations.md) |
|
|
38
38
|
| Cell editing, row editing, batch editing, transactions, validation, summaries | [`references/editing.md`](./references/editing.md) |
|
|
39
39
|
| Paging, remote data, server-side ops, noop strategies, virtual scroll, multi-grid coordination | [`references/paging-remote.md`](./references/paging-remote.md) |
|
|
40
|
-
| State persistence, Tree Grid / Hierarchical Grid / Pivot Grid
|
|
40
|
+
| State persistence, Tree Grid / Hierarchical Grid / Pivot Grid data operations | [`references/state.md`](./references/state.md) |
|
|
41
41
|
|
|
42
42
|
> **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.
|
|
43
43
|
|
|
@@ -59,7 +59,7 @@ Ignite UI has **five grid types**. Picking the correct one is the most important
|
|
|
59
59
|
|
|
60
60
|
Ask these questions in order:
|
|
61
61
|
|
|
62
|
-
1. **Does the user need a lightweight, read-only data display** with sorting, filtering, and virtualization but no editing, selection, or paging? → **Grid Lite** (open-source, MIT licensed)
|
|
62
|
+
1. **Does the user need a lightweight, read-only data display** with sorting, filtering, and virtualization but no editing, selection, or paging? → **Grid Lite** (open-source, MIT licensed). **If the user later needs features beyond Grid Lite's capabilities, upgrade strictly to `igx-grid` (`IgxGridComponent`)** — never recommend non-grid components as a substitute.
|
|
63
63
|
2. **Does the user need pivot-table analytics** (rows/columns/values/aggregations that users can drag-and-drop to reshape)? → **Pivot Grid**
|
|
64
64
|
3. **Does the data have parent-child relationships where each level has a DIFFERENT schema** (e.g., Companies → Departments → Employees)? → **Hierarchical Grid**
|
|
65
65
|
4. **Does the data have parent-child relationships within a SINGLE schema** (e.g., Employees with a `managerId` field, or nested children arrays)? → **Tree Grid**
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
> For editing and validation — see [`editing.md`](./editing.md).
|
|
7
7
|
> For state persistence — see [`state.md`](./state.md).
|
|
8
8
|
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
- [Accessing the Grid Instance](#accessing-the-grid-instance)
|
|
12
|
+
- [Sorting](#sorting)
|
|
13
|
+
- [Filtering](#filtering)
|
|
14
|
+
- [Grouping (Flat Grid Only)](#grouping-flat-grid-only)
|
|
15
|
+
- [Key Rules](#key-rules)
|
|
16
|
+
|
|
9
17
|
## Accessing the Grid Instance
|
|
10
18
|
|
|
11
19
|
All programmatic data operations require a reference to the grid component. Use `viewChild` with the **correct component type** for your grid.
|
|
@@ -145,7 +153,8 @@ Sorting modes:
|
|
|
145
153
|
### Programmatic Sorting
|
|
146
154
|
|
|
147
155
|
```typescript
|
|
148
|
-
import { SortingDirection } from 'igniteui-angular/
|
|
156
|
+
import { SortingDirection } from 'igniteui-angular/core';
|
|
157
|
+
// import { SortingDirection } from '@infragistics/igniteui-angular/core'; for licensed package
|
|
149
158
|
|
|
150
159
|
// Sort a single column
|
|
151
160
|
this.gridRef().sort({ fieldName: 'name', dir: SortingDirection.Asc, ignoreCase: true });
|
|
@@ -189,7 +198,7 @@ onSortingDone(event: ISortingEventArgs) {
|
|
|
189
198
|
Implement `ISortingStrategy` to control how values are compared:
|
|
190
199
|
|
|
191
200
|
```typescript
|
|
192
|
-
import { ISortingStrategy, SortingDirection } from 'igniteui-angular/
|
|
201
|
+
import { ISortingStrategy, SortingDirection } from 'igniteui-angular/core';
|
|
193
202
|
|
|
194
203
|
class PrioritySortStrategy implements ISortingStrategy {
|
|
195
204
|
private priorityOrder = ['Critical', 'High', 'Medium', 'Low'];
|
|
@@ -248,7 +257,8 @@ import {
|
|
|
248
257
|
IgxBooleanFilteringOperand,
|
|
249
258
|
FilteringExpressionsTree,
|
|
250
259
|
FilteringLogic
|
|
251
|
-
} from 'igniteui-angular/
|
|
260
|
+
} from 'igniteui-angular/core';
|
|
261
|
+
// import { ... } from '@infragistics/igniteui-angular/core'; for licensed package
|
|
252
262
|
|
|
253
263
|
// Simple single-column filter
|
|
254
264
|
this.gridRef().filter('name', 'John', IgxStringFilteringOperand.instance().condition('contains'), true);
|
|
@@ -308,7 +318,7 @@ Control the AND/OR logic between **different column** filters:
|
|
|
308
318
|
```
|
|
309
319
|
|
|
310
320
|
```typescript
|
|
311
|
-
import { FilteringLogic } from 'igniteui-angular
|
|
321
|
+
import { FilteringLogic } from 'igniteui-angular';
|
|
312
322
|
|
|
313
323
|
// FilteringLogic.And (default) — row must match ALL column filters
|
|
314
324
|
// FilteringLogic.Or — row must match ANY column filter
|
|
@@ -368,7 +378,7 @@ onFilteringDone(event: IFilteringEventArgs) {
|
|
|
368
378
|
### Programmatic Grouping
|
|
369
379
|
|
|
370
380
|
```typescript
|
|
371
|
-
import { SortingDirection } from 'igniteui-angular/
|
|
381
|
+
import { SortingDirection } from 'igniteui-angular/core';
|
|
372
382
|
|
|
373
383
|
// Group by a column
|
|
374
384
|
this.gridRef().groupBy({ fieldName: 'category', dir: SortingDirection.Asc, ignoreCase: true });
|
|
@@ -5,6 +5,16 @@
|
|
|
5
5
|
> For state persistence — see [`state.md`](./state.md).
|
|
6
6
|
> For paging and remote data — see [`paging-remote.md`](./paging-remote.md).
|
|
7
7
|
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
- [Editing Data Through the Grid](#editing-data-through-the-grid)
|
|
11
|
+
- [Batch Editing & Transactions](#batch-editing--transactions)
|
|
12
|
+
- [Excel-Style Editing Workflows](#excel-style-editing-workflows)
|
|
13
|
+
- [Editing Events Reference](#editing-events-reference)
|
|
14
|
+
- [Validation](#validation)
|
|
15
|
+
- [Summaries](#summaries)
|
|
16
|
+
- [Key Rules](#key-rules)
|
|
17
|
+
|
|
8
18
|
## Editing Data Through the Grid
|
|
9
19
|
|
|
10
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.
|
|
@@ -423,7 +433,8 @@ Default summaries by type:
|
|
|
423
433
|
### Custom Summary Operand
|
|
424
434
|
|
|
425
435
|
```typescript
|
|
426
|
-
import { IgxNumberSummaryOperand
|
|
436
|
+
import { IgxNumberSummaryOperand } from 'igniteui-angular/grids/core';
|
|
437
|
+
import { IgxSummaryResult } from 'igniteui-angular/core';
|
|
427
438
|
|
|
428
439
|
class RevenueSummary extends IgxNumberSummaryOperand {
|
|
429
440
|
operate(data: number[]): IgxSummaryResult[] {
|
|
@@ -5,6 +5,21 @@
|
|
|
5
5
|
> For Tree Grid, Hierarchical Grid, Grid Lite, Pivot Grid specifics — see [`types.md`](./types.md).
|
|
6
6
|
> For full editing coverage (cell/row/batch) — see [`editing.md`](./editing.md).
|
|
7
7
|
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
- [Editing](#editing)
|
|
11
|
+
- [Grouping (Grid only)](#grouping-grid-only)
|
|
12
|
+
- [Summaries](#summaries)
|
|
13
|
+
- [Cell Merging](#cell-merging)
|
|
14
|
+
- [Toolbar](#toolbar)
|
|
15
|
+
- [Export](#export)
|
|
16
|
+
- [Virtualization & Performance](#virtualization--performance)
|
|
17
|
+
- [Row Drag](#row-drag)
|
|
18
|
+
- [Action Strip](#action-strip)
|
|
19
|
+
- [Master-Detail (Grid only)](#master-detail-grid-only)
|
|
20
|
+
- [Clipboard](#clipboard)
|
|
21
|
+
- [Key Rules](#key-rules)
|
|
22
|
+
|
|
8
23
|
## Editing
|
|
9
24
|
|
|
10
25
|
> **Full editing coverage is in [`editing.md`](./editing.md)**, which includes cell editing, row editing, batch editing with transactions, row adding/deleting, validation, and summaries. Use that reference for any editing task.
|
|
@@ -43,15 +58,9 @@ For advanced programmatic grouping patterns — see [`data-operations.md`](./dat
|
|
|
43
58
|
|
|
44
59
|
## Summaries
|
|
45
60
|
|
|
46
|
-
> **Full summaries coverage
|
|
47
|
-
|
|
48
|
-
Quick reference
|
|
49
|
-
|
|
50
|
-
```html
|
|
51
|
-
<igx-column field="salary" dataType="number" [hasSummary]="true"></igx-column>
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Default summaries by type: **number** → Count/Min/Max/Sum/Average; **date** → Count/Earliest/Latest; **string/boolean** → Count.
|
|
61
|
+
> **Full summaries coverage — built-in summaries, custom summary operands, and summaries with grouping — is in [`editing.md`](./editing.md#summaries).**
|
|
62
|
+
>
|
|
63
|
+
> Quick reference: enable per-column summaries with `[hasSummary]="true"` on an `igx-column`. Default operands: **number** → Count/Min/Max/Sum/Average; **date** → Count/Earliest/Latest; **string/boolean** → Count.
|
|
55
64
|
|
|
56
65
|
## Cell Merging
|
|
57
66
|
|
|
@@ -68,7 +77,10 @@ Or apply a custom merge strategy:
|
|
|
68
77
|
```
|
|
69
78
|
|
|
70
79
|
```typescript
|
|
71
|
-
|
|
80
|
+
import { IGridMergeStrategy } from 'igniteui-angular/core';
|
|
81
|
+
// import { IGridMergeStrategy } from '@infragistics/igniteui-angular/core'; for licensed package
|
|
82
|
+
|
|
83
|
+
priceRangeMerge: IGridMergeStrategy = {
|
|
72
84
|
shouldMerge(prevCell, curCell) {
|
|
73
85
|
return Math.abs(prevCell.value - curCell.value) < 10;
|
|
74
86
|
}
|
|
@@ -79,6 +91,10 @@ priceRangeMerge: IgxCellMergeStrategy = {
|
|
|
79
91
|
|
|
80
92
|
> **Docs:** [Toolbar](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/toolbar)
|
|
81
93
|
|
|
94
|
+
```typescript
|
|
95
|
+
import { IgxGridToolbarComponent } from 'igniteui-angular/grids/core';
|
|
96
|
+
```
|
|
97
|
+
|
|
82
98
|
```html
|
|
83
99
|
<igx-grid [data]="data()">
|
|
84
100
|
<igx-grid-toolbar>
|
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
> For editing and validation — see [`editing.md`](./editing.md).
|
|
6
6
|
> For state persistence — see [`state.md`](./state.md).
|
|
7
7
|
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
- [Paging](#paging)
|
|
11
|
+
- [Remote Data Operations](#remote-data-operations)
|
|
12
|
+
- [Virtualization](#virtualization)
|
|
13
|
+
- [Multi-Grid Coordination](#multi-grid-coordination)
|
|
14
|
+
- [Key Rules](#key-rules)
|
|
15
|
+
|
|
8
16
|
## Paging
|
|
9
17
|
|
|
10
18
|
> **Docs:** [Paging — Remote Paging](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/paging#remote-paging) (substitute URL prefix per grid type)
|
|
@@ -51,7 +59,8 @@ this.gridRef().paginator.perPage = 25;
|
|
|
51
59
|
### Remote Paging
|
|
52
60
|
|
|
53
61
|
```typescript
|
|
54
|
-
import { GridPagingMode } from 'igniteui-angular/grids/
|
|
62
|
+
import { GridPagingMode } from 'igniteui-angular/grids/core';
|
|
63
|
+
import { IPageEventArgs } from 'igniteui-angular/paginator';
|
|
55
64
|
|
|
56
65
|
export class RemotePagingComponent {
|
|
57
66
|
data = signal<Product[]>([]);
|
|
@@ -120,12 +129,12 @@ import { Component, ChangeDetectionStrategy, signal, viewChild, inject, DestroyR
|
|
|
120
129
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
121
130
|
import { IgxGridComponent, IGX_GRID_DIRECTIVES } from 'igniteui-angular/grids/grid';
|
|
122
131
|
import {
|
|
123
|
-
IForOfState,
|
|
124
|
-
ISortingEventArgs,
|
|
125
132
|
IFilteringExpressionsTree,
|
|
126
133
|
NoopSortingStrategy,
|
|
127
134
|
NoopFilteringStrategy
|
|
128
|
-
} from 'igniteui-angular/
|
|
135
|
+
} from 'igniteui-angular/core';
|
|
136
|
+
import { IForOfState } from 'igniteui-angular/directives';
|
|
137
|
+
import { ISortingEventArgs } from 'igniteui-angular/grids/core';
|
|
129
138
|
import { debounceTime, Subject } from 'rxjs';
|
|
130
139
|
|
|
131
140
|
@Component({
|
|
@@ -5,6 +5,15 @@
|
|
|
5
5
|
> For Tree Grid / Hierarchical Grid / Pivot Grid / Grid Lite setup — see [`types.md`](./types.md).
|
|
6
6
|
> For paging and remote data — see [`paging-remote.md`](./paging-remote.md).
|
|
7
7
|
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
- [State Persistence](#state-persistence)
|
|
11
|
+
- [Tree Grid Data Operations](#tree-grid-data-operations)
|
|
12
|
+
- [Hierarchical Grid Data Operations](#hierarchical-grid-data-operations)
|
|
13
|
+
- [Pivot Grid Data Operations](#pivot-grid-data-operations)
|
|
14
|
+
- [Grid Lite Data Operations](#grid-lite-data-operations)
|
|
15
|
+
- [Key Rules](#key-rules)
|
|
16
|
+
|
|
8
17
|
## State Persistence
|
|
9
18
|
|
|
10
19
|
> **Docs:** [State Persistence](https://www.infragistics.com/products/ignite-ui-angular/angular/components/grid/state-persistence) (substitute URL prefix per grid type)
|
|
@@ -20,7 +29,7 @@ Use `IgxGridStateDirective` to persist sorting, filtering, grouping, paging, sel
|
|
|
20
29
|
```
|
|
21
30
|
|
|
22
31
|
```typescript
|
|
23
|
-
import { IgxGridStateDirective } from 'igniteui-angular/grids/
|
|
32
|
+
import { IgxGridStateDirective } from 'igniteui-angular/grids/core';
|
|
24
33
|
|
|
25
34
|
export class StatefulGridComponent {
|
|
26
35
|
gridState = viewChild.required(IgxGridStateDirective);
|
|
@@ -234,7 +243,7 @@ Setting `[batchEditing]="true"` on the root hierarchical grid automatically prop
|
|
|
234
243
|
### Dimension-Based Filtering
|
|
235
244
|
|
|
236
245
|
```typescript
|
|
237
|
-
import { FilteringExpressionsTree, FilteringLogic, IgxStringFilteringOperand } from 'igniteui-angular/
|
|
246
|
+
import { FilteringExpressionsTree, FilteringLogic, IgxStringFilteringOperand } from 'igniteui-angular/core';
|
|
238
247
|
|
|
239
248
|
// Create a filter for a dimension
|
|
240
249
|
const regionFilter = new FilteringExpressionsTree(FilteringLogic.Or);
|
|
@@ -277,155 +286,12 @@ this.pivotGridRef().pipeTrigger++;
|
|
|
277
286
|
|
|
278
287
|
## Grid Lite Data Operations
|
|
279
288
|
|
|
280
|
-
**Grid Lite
|
|
281
|
-
|
|
282
|
-
>
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
```typescript
|
|
287
|
-
import {
|
|
288
|
-
IgxGridLiteComponent,
|
|
289
|
-
IgxGridLiteSortingExpression,
|
|
290
|
-
IgxGridLiteSortingOptions
|
|
291
|
-
} from 'igniteui-angular/grids/lite';
|
|
292
|
-
|
|
293
|
-
@Component({
|
|
294
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
295
|
-
// ...
|
|
296
|
-
})
|
|
297
|
-
export class GridLiteSortExample {
|
|
298
|
-
gridRef = viewChild<IgxGridLiteComponent<Product>>('grid');
|
|
299
|
-
|
|
300
|
-
// Sorting options: mode can be 'single' or 'multiple'
|
|
301
|
-
sortingOptions: IgxGridLiteSortingOptions = { mode: 'multiple' };
|
|
302
|
-
|
|
303
|
-
// Initial sort state
|
|
304
|
-
sortExprs: IgxGridLiteSortingExpression[] = [
|
|
305
|
-
{ key: 'name', direction: 'ascending' }
|
|
306
|
-
];
|
|
307
|
-
|
|
308
|
-
sortByPrice() {
|
|
309
|
-
// Sort programmatically (single expression or array)
|
|
310
|
-
this.gridRef().sort({ key: 'price', direction: 'descending' });
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
clearAllSorts() {
|
|
314
|
-
this.gridRef().clearSort(); // clear all
|
|
315
|
-
// or: this.gridRef().clearSort('price'); // clear specific column
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
```html
|
|
321
|
-
<igx-grid-lite #grid
|
|
322
|
-
[data]="data"
|
|
323
|
-
[sortingOptions]="sortingOptions"
|
|
324
|
-
[(sortingExpressions)]="sortExprs"
|
|
325
|
-
(sorting)="onSorting($event)"
|
|
326
|
-
(sorted)="onSorted($event)">
|
|
327
|
-
<igx-grid-lite-column field="name" header="Name" sortable></igx-grid-lite-column>
|
|
328
|
-
<igx-grid-lite-column field="price" header="Price" dataType="number" sortable></igx-grid-lite-column>
|
|
329
|
-
</igx-grid-lite>
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
Sort expression shape: `{ key: string, direction: 'ascending' | 'descending' | 'none' }`
|
|
333
|
-
|
|
334
|
-
Sorting modes:
|
|
335
|
-
- `'single'` — only one column sorted at a time
|
|
336
|
-
- `'multiple'` — multi-column sorting
|
|
337
|
-
- `triState: true` — allows cycling through ascending → descending → none
|
|
338
|
-
|
|
339
|
-
### Grid Lite Filtering
|
|
340
|
-
|
|
341
|
-
```typescript
|
|
342
|
-
import {
|
|
343
|
-
IgxGridLiteComponent,
|
|
344
|
-
IgxGridLiteFilteringExpression
|
|
345
|
-
} from 'igniteui-angular/grids/lite';
|
|
346
|
-
|
|
347
|
-
// Filter expression shape
|
|
348
|
-
const filters: IgxGridLiteFilteringExpression[] = [
|
|
349
|
-
{ key: 'price', condition: 'greaterThan', searchTerm: 100 },
|
|
350
|
-
{ key: 'name', condition: 'contains', searchTerm: 'Widget' }
|
|
351
|
-
];
|
|
352
|
-
|
|
353
|
-
// Programmatic filtering
|
|
354
|
-
this.gridRef().filter({ key: 'price', condition: 'greaterThan', searchTerm: 100 });
|
|
355
|
-
this.gridRef().clearFilter('price');
|
|
356
|
-
this.gridRef().clearFilter(); // clear all
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
```html
|
|
360
|
-
<igx-grid-lite #grid
|
|
361
|
-
[data]="data"
|
|
362
|
-
[(filteringExpressions)]="filterExprs"
|
|
363
|
-
(filtering)="onFiltering($event)"
|
|
364
|
-
(filtered)="onFiltered($event)">
|
|
365
|
-
<igx-grid-lite-column field="name" header="Name" filterable></igx-grid-lite-column>
|
|
366
|
-
<igx-grid-lite-column field="price" header="Price" dataType="number" filterable></igx-grid-lite-column>
|
|
367
|
-
</igx-grid-lite>
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
Filter expression shape: `{ key: string, condition: string, searchTerm: any, criteria?: any[], caseSensitive?: boolean }`
|
|
371
|
-
|
|
372
|
-
Filter conditions depend on `dataType`:
|
|
373
|
-
- **string**: `contains`, `startsWith`, `endsWith`, `equals`, `doesNotContain`, `doesNotEqual`, `empty`, `notEmpty`, `null`, `notNull`
|
|
374
|
-
- **number**: `equals`, `doesNotEqual`, `greaterThan`, `lessThan`, `greaterThanOrEqualTo`, `lessThanOrEqualTo`, `empty`, `notEmpty`, `null`, `notNull`
|
|
375
|
-
- **boolean**: `all`, `true`, `false`, `empty`, `notEmpty`, `null`, `notNull`
|
|
376
|
-
- **date**: `equals`, `doesNotEqual`, `before`, `after`, `today`, `yesterday`, `thisMonth`, `lastMonth`, `nextMonth`, `thisYear`, `lastYear`, `nextYear`, `empty`, `notEmpty`, `null`, `notNull`
|
|
377
|
-
|
|
378
|
-
### Grid Lite Remote Data Operations
|
|
379
|
-
|
|
380
|
-
Grid Lite uses `dataPipelineConfiguration` — a callback-based approach (NOT noop strategies):
|
|
381
|
-
|
|
382
|
-
```typescript
|
|
383
|
-
import { IgxGridLiteDataPipelineConfiguration } from 'igniteui-angular/grids/lite';
|
|
384
|
-
|
|
385
|
-
dataPipeline: IgxGridLiteDataPipelineConfiguration<Product> = {
|
|
386
|
-
sort: async (params) => {
|
|
387
|
-
// params.grid — the grid instance
|
|
388
|
-
// params.data — current data array
|
|
389
|
-
// params.type — 'sort'
|
|
390
|
-
const result = await fetch(`/api/products?sort=${JSON.stringify(params.grid.sortingExpressions)}`);
|
|
391
|
-
return await result.json();
|
|
392
|
-
},
|
|
393
|
-
filter: async (params) => {
|
|
394
|
-
const result = await fetch(`/api/products?filter=${JSON.stringify(params.grid.filteringExpressions)}`);
|
|
395
|
-
return await result.json();
|
|
396
|
-
}
|
|
397
|
-
};
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
```html
|
|
401
|
-
<igx-grid-lite #grid
|
|
402
|
-
[data]="data"
|
|
403
|
-
[dataPipelineConfiguration]="dataPipeline">
|
|
404
|
-
</igx-grid-lite>
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
Callbacks can be synchronous (return `T[]`) or asynchronous (return `Promise<T[]>`). When a `dataPipelineConfiguration` callback is provided for a given operation, the client-side pipeline for that operation is bypassed entirely.
|
|
408
|
-
|
|
409
|
-
### Grid Lite Events
|
|
410
|
-
|
|
411
|
-
| Event | Cancelable | Payload |
|
|
412
|
-
|---|---|---|
|
|
413
|
-
| `(sorting)` | Yes (`event.detail.cancel = true`) | Sorting expression about to be applied |
|
|
414
|
-
| `(sorted)` | No | Sorting completed |
|
|
415
|
-
| `(filtering)` | Yes (`event.detail.cancel = true`) | Filter expression about to be applied |
|
|
416
|
-
| `(filtered)` | No | Filtering completed |
|
|
417
|
-
|
|
418
|
-
### Grid Lite Limitations (No Data Operations)
|
|
419
|
-
|
|
420
|
-
These data operations are **NOT available** in Grid Lite:
|
|
421
|
-
- Editing (cell, row, batch) — no `[editable]`, no `beginEdit()`, no transactions
|
|
422
|
-
- Grouping — no `groupBy()`, no `IgxGroupByRow`
|
|
423
|
-
- Paging — no `IgxPaginatorComponent`
|
|
424
|
-
- Summaries — no `IgxSummaryOperand`
|
|
425
|
-
- Selection — no `rowSelection`, `cellSelection`, or `columnSelection`
|
|
426
|
-
- State persistence — no `IgxGridStateDirective`
|
|
427
|
-
- Export — no `IgxExcelExporterService` or `IgxCsvExporterService`
|
|
428
|
-
- Advanced filtering — no `advancedFilteringExpressionsTree`
|
|
289
|
+
> **Grid Lite sorting, filtering, remote data, events, and limitations are fully documented in [`types.md`](./types.md#grid-lite).** Refer to that file for all Grid Lite data operations — this section intentionally avoids duplicating that content.
|
|
290
|
+
>
|
|
291
|
+
> Key differences from Flat/Tree/Hierarchical Grid APIs:
|
|
292
|
+
> - Uses `IgxGridLiteSortingExpression` / `IgxGridLiteFilteringExpression` (NOT `ISortingExpression` / `FilteringExpressionsTree`)
|
|
293
|
+
> - Uses `dataPipelineConfiguration` for remote ops (NOT noop strategies + events)
|
|
294
|
+
> - Has no editing, grouping, paging, summaries, selection, state persistence, or export
|
|
429
295
|
|
|
430
296
|
## Key Rules
|
|
431
297
|
|
|
@@ -6,6 +6,15 @@
|
|
|
6
6
|
> For Tree Grid, Hierarchical Grid, Grid Lite, Pivot Grid specifics — see [`types.md`](./types.md).
|
|
7
7
|
> For programmatic data operations — see [`data-operations.md`](./data-operations.md).
|
|
8
8
|
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
- [Quick Start](#quick-start)
|
|
12
|
+
- [Column Configuration](#column-configuration)
|
|
13
|
+
- [Sorting](#sorting)
|
|
14
|
+
- [Filtering](#filtering)
|
|
15
|
+
- [Selection](#selection)
|
|
16
|
+
- [Key Rules](#key-rules)
|
|
17
|
+
|
|
9
18
|
## Quick Start
|
|
10
19
|
|
|
11
20
|
### Imports
|