@igniteui/angular-templates 21.1.14100-alpha.2 → 21.1.14100-alpha.4
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/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/SKILL.md +68 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/charts.md +457 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/data-display.md +360 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/directives.md +272 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/feedback.md +149 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/form-controls.md +313 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/layout-manager.md +420 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/layout.md +225 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/setup.md +166 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/SKILL.md +110 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/data-operations.md +445 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/editing.md +491 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/features.md +234 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/paging-remote.md +397 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/state.md +314 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/structure.md +299 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/types.md +507 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/SKILL.md +439 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/references/common-patterns.md +45 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/references/contributing.md +471 -0
- package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/references/mcp-setup.md +77 -0
- package/igx-ts/projects/_base/files/__dot__vscode/mcp.json +2 -2
- package/package.json +2 -2
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# Application Setup & Architecture
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-angular-components`](../SKILL.md) skill hub.**
|
|
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
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Open-source
|
|
16
|
+
npm install igniteui-angular
|
|
17
|
+
|
|
18
|
+
# Licensed (requires @infragistics registry configured)
|
|
19
|
+
npm install @infragistics/igniteui-angular
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Both packages share identical entry-point paths. Everywhere below, replace `igniteui-angular` with `@infragistics/igniteui-angular` if using the licensed package.
|
|
23
|
+
|
|
24
|
+
## Required Providers (`app.config.ts`)
|
|
25
|
+
|
|
26
|
+
> **AGENT INSTRUCTION:** Before adding any Ignite UI component, verify that `app.config.ts` contains the providers listed below. Missing `provideAnimations()` is the most common cause of runtime errors — all overlay and animated components (Dialog, Combo, Select, Date Picker, Snackbar, Toast, Banner, Navigation Drawer, Dropdown) will silently fail or throw without it.
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { ApplicationConfig } from '@angular/core';
|
|
30
|
+
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
31
|
+
import { provideRouter } from '@angular/router';
|
|
32
|
+
import { provideIgniteIntl } from 'igniteui-angular/core';
|
|
33
|
+
|
|
34
|
+
export const appConfig: ApplicationConfig = {
|
|
35
|
+
providers: [
|
|
36
|
+
provideAnimations(), // REQUIRED — all overlay and animated components
|
|
37
|
+
provideRouter(appRoutes),
|
|
38
|
+
provideIgniteIntl(), // recommended — localization for date/time pickers, grids, etc.
|
|
39
|
+
]
|
|
40
|
+
};
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
| Provider | Package | Required for |
|
|
44
|
+
|---|---|---|
|
|
45
|
+
| `provideAnimations()` | `@angular/platform-browser/animations` | **All overlay and animated components** — Dialog, Combo, Select, Dropdown, Date/Time Picker, Snackbar, Toast, Banner, Navigation Drawer, Carousel, Overlay service |
|
|
46
|
+
| `importProvidersFrom(HammerModule)` | `@angular/platform-browser` | OPTIONAL — touch gestures (Slider, Drag & Drop, swipe) |
|
|
47
|
+
| `provideIgniteIntl()` | `igniteui-angular/core` | Localization for grids, date/time pickers, and components displaying formatted values |
|
|
48
|
+
|
|
49
|
+
> **`provideAnimationsAsync()`** lazy-loads the animations module — prefer it for SSR or when optimizing initial bundle size:
|
|
50
|
+
> ```typescript
|
|
51
|
+
> import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
|
|
52
|
+
> ```
|
|
53
|
+
|
|
54
|
+
## Architecture — Standalone Components
|
|
55
|
+
|
|
56
|
+
All Ignite UI components are **standalone** — no NgModules needed. Import them directly into your component's `imports` array:
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
60
|
+
import { IgxButtonDirective } from 'igniteui-angular/directives';
|
|
61
|
+
import { IgxDialogComponent } from 'igniteui-angular/dialog';
|
|
62
|
+
|
|
63
|
+
@Component({
|
|
64
|
+
selector: 'app-example',
|
|
65
|
+
imports: [IgxButtonDirective, IgxDialogComponent],
|
|
66
|
+
templateUrl: './example.component.html',
|
|
67
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
68
|
+
})
|
|
69
|
+
export class ExampleComponent {}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Multi-Entry-Point Imports
|
|
73
|
+
|
|
74
|
+
> **AGENT INSTRUCTION:** Always import from specific entry points, never from the root barrel. Check `package.json` to determine whether the project uses `igniteui-angular` or `@infragistics/igniteui-angular` — that prefix applies to every import path.
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
// CORRECT — tree-shakeable, specific entry point
|
|
78
|
+
import { IgxComboComponent } from 'igniteui-angular/combo';
|
|
79
|
+
import { IgxDatePickerComponent } from 'igniteui-angular/date-picker';
|
|
80
|
+
|
|
81
|
+
// AVOID — pulls in entire library
|
|
82
|
+
import { IgxComboComponent } from 'igniteui-angular';
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Common Entry Points
|
|
86
|
+
|
|
87
|
+
| Component / Directive | Entry Point |
|
|
88
|
+
|---|---|
|
|
89
|
+
| Input Group | `igniteui-angular/input-group` |
|
|
90
|
+
| Combo / Simple Combo | `igniteui-angular/combo` |
|
|
91
|
+
| Select | `igniteui-angular/select` |
|
|
92
|
+
| Date Picker | `igniteui-angular/date-picker` |
|
|
93
|
+
| Date Range Picker | `igniteui-angular/date-range-picker` |
|
|
94
|
+
| Time Picker | `igniteui-angular/time-picker` |
|
|
95
|
+
| Calendar | `igniteui-angular/calendar` |
|
|
96
|
+
| Checkbox | `igniteui-angular/checkbox` |
|
|
97
|
+
| Radio | `igniteui-angular/radio` |
|
|
98
|
+
| Switch | `igniteui-angular/switch` |
|
|
99
|
+
| Slider | `igniteui-angular/slider` |
|
|
100
|
+
| Tabs | `igniteui-angular/tabs` |
|
|
101
|
+
| Stepper | `igniteui-angular/stepper` |
|
|
102
|
+
| Accordion / Expansion Panel | `igniteui-angular/expansion-panel` |
|
|
103
|
+
| Splitter | `igniteui-angular/splitter` |
|
|
104
|
+
| Navigation Drawer | `igniteui-angular/navigation-drawer` |
|
|
105
|
+
| Bottom Navigation | `igniteui-angular/bottom-nav` |
|
|
106
|
+
| List | `igniteui-angular/list` |
|
|
107
|
+
| Tree | `igniteui-angular/tree` |
|
|
108
|
+
| Card | `igniteui-angular/card` |
|
|
109
|
+
| Dialog | `igniteui-angular/dialog` |
|
|
110
|
+
| Snackbar | `igniteui-angular/snackbar` |
|
|
111
|
+
| Toast | `igniteui-angular/toast` |
|
|
112
|
+
| Banner | `igniteui-angular/banner` |
|
|
113
|
+
| Chips | `igniteui-angular/chips` |
|
|
114
|
+
| Avatar | `igniteui-angular/avatar` |
|
|
115
|
+
| Badge | `igniteui-angular/badge` |
|
|
116
|
+
| Icon | `igniteui-angular/icon` |
|
|
117
|
+
| Carousel | `igniteui-angular/carousel` |
|
|
118
|
+
| Paginator | `igniteui-angular/paginator` |
|
|
119
|
+
| Linear Progress | `igniteui-angular/progressbar` |
|
|
120
|
+
| Circular Progress | `igniteui-angular/progressbar` |
|
|
121
|
+
| Chat | `igniteui-angular/chat` |
|
|
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` |
|
|
127
|
+
| Layout Manager (`igxLayout`, `igxFlex`) | `igniteui-angular/directives` |
|
|
128
|
+
| Core utilities, services, base types | `igniteui-angular/core` |
|
|
129
|
+
| Icon Service | `igniteui-angular/icon` |
|
|
130
|
+
| Overlay Service | `igniteui-angular/core` |
|
|
131
|
+
| **Dock Manager** | `igniteui-dockmanager` *(separate package — `npm install igniteui-dockmanager`)* |
|
|
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
|
+
|
|
143
|
+
### Convenience Directive Collections
|
|
144
|
+
|
|
145
|
+
For complex components, use the bundled directive arrays instead of listing every sub-directive individually:
|
|
146
|
+
|
|
147
|
+
| Token | Entry Point | Includes |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| `IGX_BUTTON_GROUP_DIRECTIVES` | `igniteui-angular/button-group` | Button group + button directive |
|
|
150
|
+
| `IGX_INPUT_GROUP_DIRECTIVES` | `igniteui-angular/input-group` | Input group + label, hint, prefix, suffix |
|
|
151
|
+
| `IGX_TABS_DIRECTIVES` | `igniteui-angular/tabs` | Tabs + tab item, header, content |
|
|
152
|
+
| `IGX_STEPPER_DIRECTIVES` | `igniteui-angular/stepper` | Stepper + step |
|
|
153
|
+
| `IGX_EXPANSION_PANEL_DIRECTIVES` | `igniteui-angular/expansion-panel` | Panel + header, body |
|
|
154
|
+
| `IGX_LIST_DIRECTIVES` | `igniteui-angular/list` | List + list item |
|
|
155
|
+
| `IGX_TREE_DIRECTIVES` | `igniteui-angular/tree` | Tree + tree node |
|
|
156
|
+
|
|
157
|
+
## See Also
|
|
158
|
+
|
|
159
|
+
- [`form-controls.md`](./form-controls.md) — Input Group, Combo, Select, Date/Time Pickers, Calendar, Checkbox, Radio, Switch, Slider, forms integration
|
|
160
|
+
- [`layout.md`](./layout.md) — Tabs, Stepper, Accordion, Splitter, Navigation Drawer
|
|
161
|
+
- [`data-display.md`](./data-display.md) — List, Tree, Card, Chips, Avatar, Badge, Icon, Carousel, Paginator, Progress, Chat
|
|
162
|
+
- [`feedback.md`](./feedback.md) — Dialog, Snackbar, Toast, Banner
|
|
163
|
+
- [`directives.md`](./directives.md) — Button, Icon Button, Button Group, Ripple, Tooltip, Drag and Drop
|
|
164
|
+
- [`layout-manager.md`](./layout-manager.md) — Layout Manager directives, Dock Manager
|
|
165
|
+
- [`../../igniteui-angular-grids/SKILL.md`](../../igniteui-angular-grids/SKILL.md) — Data Grids
|
|
166
|
+
- [`../../igniteui-angular-theming/SKILL.md`](../../igniteui-angular-theming/SKILL.md) — Theming & Styling
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: igniteui-angular-grids
|
|
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
|
+
---
|
|
6
|
+
|
|
7
|
+
# Ignite UI for Angular — Data Grids
|
|
8
|
+
|
|
9
|
+
## MANDATORY AGENT PROTOCOL — YOU MUST FOLLOW THIS BEFORE PRODUCING ANY OUTPUT
|
|
10
|
+
|
|
11
|
+
**This file is a routing hub only. It contains NO code examples and NO API details.**
|
|
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.
|
|
29
|
+
|
|
30
|
+
### Task → Reference File
|
|
31
|
+
|
|
32
|
+
| Task | Reference file to read |
|
|
33
|
+
|---|---|
|
|
34
|
+
| Grid type selection, column config, column templates, column groups, MRL, pinning, sorting UI, filtering UI, selection | [`references/structure.md`](./references/structure.md) |
|
|
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, Grid Lite data operations, Pivot Grid setup | [`references/types.md`](./references/types.md) |
|
|
37
|
+
| Programmatic sorting / filtering / grouping, canonical import patterns, `viewChild` access | [`references/data-operations.md`](./references/data-operations.md) |
|
|
38
|
+
| Cell editing, row editing, batch editing, transactions, validation, summaries | [`references/editing.md`](./references/editing.md) |
|
|
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 data operations | [`references/state.md`](./references/state.md) |
|
|
41
|
+
|
|
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
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Prerequisites
|
|
47
|
+
|
|
48
|
+
- Angular 20+ project
|
|
49
|
+
- `igniteui-angular` installed, **or** `@infragistics/igniteui-angular` for licensed users — both packages share the same entry-point structure
|
|
50
|
+
- A theme applied (see [`igniteui-angular-theming`](../igniteui-angular-theming/SKILL.md))
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Choosing the Right Grid
|
|
55
|
+
|
|
56
|
+
Ignite UI has **five grid types**. Picking the correct one is the most important decision — each has different data structures, features, and constraints.
|
|
57
|
+
|
|
58
|
+
### Grid Selection Decision Guide
|
|
59
|
+
|
|
60
|
+
Ask these questions in order:
|
|
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). **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
|
+
2. **Does the user need pivot-table analytics** (rows/columns/values/aggregations that users can drag-and-drop to reshape)? → **Pivot Grid**
|
|
64
|
+
3. **Does the data have parent-child relationships where each level has a DIFFERENT schema** (e.g., Companies → Departments → Employees)? → **Hierarchical Grid**
|
|
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**
|
|
66
|
+
5. **Is the data a flat list/table with enterprise features needed** (editing, batch editing, grouping, paging, export, etc.)? → **Flat Grid**
|
|
67
|
+
|
|
68
|
+
After choosing the grid type, **you must still complete Steps 2–4 from the mandatory protocol above** — return to the routing table and read every applicable `references/` file before writing any code. The decision guide and the tables on this page are discovery aids only; they do not replace the reference files.
|
|
69
|
+
|
|
70
|
+
### Grid Types & Imports
|
|
71
|
+
|
|
72
|
+
> **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.
|
|
73
|
+
|
|
74
|
+
| Grid | Selector | Component | Directives | Entry Point |
|
|
75
|
+
|---|---|---|---|---|
|
|
76
|
+
| **Grid Lite** | `igx-grid-lite` | `IgxGridLiteComponent` | Individual imports | `igniteui-angular/grids/lite` |
|
|
77
|
+
| **Flat Grid** | `igx-grid` | `IgxGridComponent` | `IGX_GRID_DIRECTIVES` | `igniteui-angular/grids/grid` |
|
|
78
|
+
| **Tree Grid** | `igx-tree-grid` | `IgxTreeGridComponent` | `IGX_TREE_GRID_DIRECTIVES` | `igniteui-angular/grids/tree-grid` |
|
|
79
|
+
| **Hierarchical Grid** | `igx-hierarchical-grid` | `IgxHierarchicalGridComponent` | `IGX_HIERARCHICAL_GRID_DIRECTIVES` | `igniteui-angular/grids/hierarchical-grid` |
|
|
80
|
+
| **Pivot Grid** | `igx-pivot-grid` | `IgxPivotGridComponent` | `IGX_PIVOT_GRID_DIRECTIVES` | `igniteui-angular/grids/pivot-grid` |
|
|
81
|
+
|
|
82
|
+
Replace `igniteui-angular` with `@infragistics/igniteui-angular` for the licensed package — entry-point paths are identical.
|
|
83
|
+
|
|
84
|
+
> **AGENT INSTRUCTION — Documentation URL Pattern**: For grid-specific topics (sorting, filtering, editing, paging, etc.), docs URLs follow this naming pattern per grid type:
|
|
85
|
+
> - Flat Grid: `.../components/grid/{topic}`
|
|
86
|
+
> - Tree Grid: `.../components/treegrid/{topic}`
|
|
87
|
+
> - Hierarchical Grid: `.../components/hierarchicalgrid/{topic}`
|
|
88
|
+
> - Pivot Grid: `.../components/pivotGrid/{topic}`
|
|
89
|
+
|
|
90
|
+
### Feature Availability per Grid Type
|
|
91
|
+
|
|
92
|
+
| Feature | Grid Lite | Flat Grid | Tree Grid | Hierarchical Grid | Pivot Grid |
|
|
93
|
+
|---|---|---|---|---|---|
|
|
94
|
+
| Column sorting | Yes | Yes | Yes (per-level) | Yes (per grid level) | Per-dimension only |
|
|
95
|
+
| Column filtering | Yes | Yes | Yes (recursive — keeps matching parents) | Yes (per grid level) | Per-dimension only |
|
|
96
|
+
| GroupBy | No | **Exclusive** | No (use tree hierarchy) | No | Inherent via dimensions |
|
|
97
|
+
| Paging | No | Yes | Yes | Yes (each level independent) | No |
|
|
98
|
+
| Batch editing | No | Yes | Yes (hierarchical transactions) | Yes (propagated from root) | No |
|
|
99
|
+
| Cell / Row editing | No | Yes | Yes | Yes (per grid level) | No |
|
|
100
|
+
| Row adding | No | Yes | Yes (with parent support) | Yes (per grid level) | No |
|
|
101
|
+
| Master-Detail | No | **Exclusive** | No | No (use row islands) | No |
|
|
102
|
+
| Row selection | No | Yes | Yes + `multipleCascade` | Yes (per grid level) | Limited |
|
|
103
|
+
| Load on demand | No | No | **Exclusive** | No | No |
|
|
104
|
+
| Column pinning / moving | No | Yes | Yes | Yes | No |
|
|
105
|
+
| Column hiding | Yes | Yes | Yes | Yes | No |
|
|
106
|
+
| Column resizing | Yes | Yes | Yes | Yes | No |
|
|
107
|
+
| Summaries | No | Yes | Yes (per-level) | Yes (per grid level) | Horizontal summaries only |
|
|
108
|
+
| State persistence | No | Yes | Yes | Yes + row island state | Pivot config serialization |
|
|
109
|
+
| Remote data ops | `dataPipelineConfiguration` | Events + noop strategies | Events + noop strategies | Events + noop strategies | N/A |
|
|
110
|
+
| Row virtualization | Yes | Yes (rows + columns) | Yes (rows + columns) | Yes (rows + columns) | Yes |
|