igniteui-cli 15.2.2-alpha.1 → 15.2.2-alpha.3

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 (18) hide show
  1. package/lib/commands/upgrade.js +22 -3
  2. package/package.json +4 -4
  3. package/templates/blazor/igb/projects/ai-config/files/skills/AGENTS.md +4 -3
  4. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/SKILL.md +2 -2
  5. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/charts.md +3 -2
  6. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/component-mapping.md +10 -0
  7. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/gotchas.md +16 -0
  8. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/SKILL.md +3 -2
  9. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/SKILL.md +2 -1
  10. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/references/common-patterns.md +8 -0
  11. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/CHARTS-GRIDS.md +1 -1
  12. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/COMPONENT-CATALOGUE.md +6 -6
  13. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/EVENT-HANDLING.md +1 -1
  14. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/JSX-PATTERNS.md +4 -4
  15. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/REFS-FORMS.md +6 -6
  16. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-generate-from-image-design/reference/component-mapping.md +5 -5
  17. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-choose-components/SKILL.md +3 -6
  18. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-generate-from-image-design/references/component-mapping.md +4 -2
@@ -10,6 +10,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const cli_core_1 = require("@igniteui/cli-core");
13
+ const FRAMEWORK_PROJECT_TYPE_MAP = {
14
+ angular: "igx-ts",
15
+ react: "igr-ts",
16
+ webcomponents: "igc-ts"
17
+ };
13
18
  const command = {
14
19
  command: "upgrade-packages",
15
20
  aliases: ["upgrade"],
@@ -34,9 +39,23 @@ const command = {
34
39
  },
35
40
  upgrade(argv) {
36
41
  return __awaiter(this, void 0, void 0, function* () {
42
+ var _a, _b, _c;
37
43
  const config = cli_core_1.ProjectConfig.getConfig();
38
- const framework = config.project.framework;
39
- const projectType = config.project.projectType;
44
+ let framework = (_a = config.project) === null || _a === void 0 ? void 0 : _a.framework;
45
+ let projectType = (_b = config.project) === null || _b === void 0 ? void 0 : _b.projectType;
46
+ if (!framework) {
47
+ const detected = (0, cli_core_1.detectFrameworkFromPackageJson)();
48
+ if (!detected) {
49
+ cli_core_1.Util.warn("Unable to determine the project framework. " +
50
+ "Please ensure you are running this command in a project directory with a package.json file, " +
51
+ "or create an ignite-ui-cli.json configuration file.", "yellow");
52
+ return;
53
+ }
54
+ framework = detected;
55
+ }
56
+ if (!projectType) {
57
+ projectType = FRAMEWORK_PROJECT_TYPE_MAP[framework.toLowerCase()] || "";
58
+ }
40
59
  switch (framework.toLowerCase()) {
41
60
  case "jquery":
42
61
  cli_core_1.Util.log("Upgrading packages for jQuery projects is currently not supported!");
@@ -48,7 +67,7 @@ const command = {
48
67
  const templateManager = cli_core_1.App.container.get(cli_core_1.TEMPLATE_MANAGER);
49
68
  const projectLibrary = templateManager.getProjectLibrary(framework, projectType);
50
69
  let project;
51
- if (!config.project.projectTemplate || !projectLibrary.hasProject(config.project.projectTemplate)) {
70
+ if (!((_c = config.project) === null || _c === void 0 ? void 0 : _c.projectTemplate) || !projectLibrary.hasProject(config.project.projectTemplate)) {
52
71
  // in case project template is missing from the config we provide backward.
53
72
  project = projectLibrary.getProject(projectLibrary.projectIds[0]);
54
73
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "igniteui-cli",
3
- "version": "15.2.2-alpha.1",
3
+ "version": "15.2.2-alpha.3",
4
4
  "description": "CLI tool for creating Ignite UI projects",
5
5
  "keywords": [
6
6
  "CLI",
@@ -66,9 +66,9 @@
66
66
  "all": true
67
67
  },
68
68
  "dependencies": {
69
- "@igniteui/angular-templates": "^21.2.1522-alpha.1",
70
- "@igniteui/cli-core": "^15.2.2-alpha.1",
71
- "@igniteui/mcp-server": "^15.2.2-alpha.1",
69
+ "@igniteui/angular-templates": "^21.2.1522-alpha.3",
70
+ "@igniteui/cli-core": "^15.2.2-alpha.3",
71
+ "@igniteui/mcp-server": "^15.2.2-alpha.3",
72
72
  "@inquirer/prompts": "^7.9.0",
73
73
  "chalk": "^5.3.0",
74
74
  "glob": "^11.0.0",
@@ -1,4 +1,4 @@
1
- You are an expert in C#, Blazor, and scalable web application development. You write functional, maintainable, performant, and accessible code following .NET and Blazor best practices. You are currently immersed in the latest .NET and Blazor, adopting modern C# features, component-based architecture with clean separation of concerns, and modern Blazor patterns for reactive UI and dependencygit pull injection.
1
+ You are an expert in C#, Blazor, and scalable web application development. You write functional, maintainable, performant, and accessible code following .NET and Blazor best practices. You are currently immersed in the latest .NET and Blazor, adopting modern C# features, component-based architecture with clean separation of concerns, and modern Blazor patterns for reactive UI and dependency injection.
2
2
 
3
3
  ## Coding Standards
4
4
 
@@ -57,9 +57,10 @@ You are an expert in C#, Blazor, and scalable web application development. You w
57
57
 
58
58
  ## UI Components
59
59
 
60
- - Use `IgniteUI.Blazor.Lite`, `IgniteUI.Blazor.GridLite` for general purpose components and light-weight grid, and `IgniteUI.Blazor` (trial version available publicly as `IgniteUI.Blazor.Trial`) for specialized feature-rich grids and charts.
60
+ - Use `IgniteUI.Blazor.Lite`, `IgniteUI.Blazor.GridLite` for general purpose components and light-weight grid, and `IgniteUI.Blazor` (trial version available publicly as `IgniteUI.Blazor.Trial`) for specialized feature-rich grids and charts. If the project already references full `IgniteUI.Blazor`, do not add `IgniteUI.Blazor.Lite` or `IgniteUI.Blazor.GridLite` unless the user explicitly chooses to switch package strategy.
61
61
  - Components use the `Igb` prefix (e.g., `IgbGrid`, `IgbCombo`, `IgbDatePicker`).
62
62
  - Every component requires module registration in `Program.cs`: `builder.Services.AddIgniteUIBlazor(typeof(IgbGridModule))`.
63
63
  - Add `@using IgniteUI.Blazor.Controls` to `_Imports.razor`.
64
64
  - Link a theme stylesheet in the host page (e.g., `_content/IgniteUI.Blazor/themes/light/bootstrap.css`).
65
- - If the `IgniteUI.Blazor.Lite`, `IgniteUI.Blazor.GridLite` NuGet packages are not present in the project file, add it first.
65
+ - Add the Ignite UI runtime script before the Blazor framework script in the host page: `<script src="_content/IgniteUI.Blazor/app.bundle.js"></script>`.
66
+ - If no Ignite UI package is present, add the package that matches the chosen package strategy.
@@ -12,7 +12,7 @@ user-invocable: true
12
12
  - The correct NuGet package installed: `IgniteUI.Blazor.Lite` (NuGet.org, MIT) for general purpose UI components; `IgniteUI.Blazor.GridLite` (NuGet.org, MIT) for the lightweight grid; `IgniteUI.Blazor` (Infragistics private feed, licensed) for the full suite including charts, maps, gauges, and enterprise grids; or `IgniteUI.Blazor.Trial` (NuGet.org) for evaluation of the full suite
13
13
  - `builder.Services.AddIgniteUIBlazor(...)` called in `Program.cs`
14
14
  - `@using IgniteUI.Blazor.Controls` added to `_Imports.razor`
15
- - A theme CSS file linked in the host page (see [`references/setup.md`](./references/setup.md))
15
+ - A theme CSS file and `_content/IgniteUI.Blazor/app.bundle.js` runtime script linked in the host page (see [`references/setup.md`](./references/setup.md))
16
16
  - The **Ignite UI CLI MCP server** (`igniteui-cli`) is available as a tool provider
17
17
 
18
18
  > **AGENT INSTRUCTION - MCP Server Setup (REQUIRED)**
@@ -78,7 +78,7 @@ Base your code and explanation exclusively on what you read. If the reference fi
78
78
  | `IgniteUI.Blazor` | Infragistics private NuGet feed (`https://packages.infragistics.com/nuget/licensed/`) | Licensed / enterprise users that need the full component suite (grids, charts, maps, gauges, Dock Manager) |
79
79
  | `IgniteUI.Blazor.Trial` | NuGet.org | Evaluation users — same full suite as `IgniteUI.Blazor` but with a trial watermark |
80
80
 
81
- `IgniteUI.Blazor.Lite` contains the open-source UI component set, while `IgniteUI.Blazor.GridLite` contains the free `IgbGridLite` data grid package. Both use the `IgniteUI.Blazor.Controls` namespace. Do **not** mix the licensed `IgniteUI.Blazor` package with `IgniteUI.Blazor.Lite` in the same project; they use the same namespaces and duplicate some components.
81
+ `IgniteUI.Blazor.Lite` contains the open-source UI component set, while `IgniteUI.Blazor.GridLite` contains the free `IgbGridLite` data grid package. Both use the `IgniteUI.Blazor.Controls` namespace. Do **not** mix the licensed `IgniteUI.Blazor` package with `IgniteUI.Blazor.Lite` in the same project; they use the same namespaces and duplicate some components. If full `IgniteUI.Blazor` is already referenced, do not add Lite/GridLite unless the user explicitly asks to switch package strategy.
82
82
 
83
83
  ## Key Blazor-Specific Notes
84
84
 
@@ -70,7 +70,7 @@ Key attributes: `DataSource`, `ChartType` (`CategoryChartType.Line` / `Area` / `
70
70
 
71
71
  > **AGENT INSTRUCTION:** `CategoryChartType.Bar` does **not** exist. For a horizontal bar-style chart, use `CategoryChartType.Column` (vertical) or switch to `IgbDataChart` with `IgbBarSeries` for true horizontal bars. Never generate `ChartType="CategoryChartType.Bar"`.
72
72
 
73
- > **AGENT INSTRUCTION:** The `XAxisLabel` parameter on `IgbCategoryChart` is not a plain string property name. To control which data field is used as the X-axis label, set `XAxisMemberPath` with the property name string (e.g., `XAxisMemberPath="Month"`).
73
+ > **AGENT INSTRUCTION:** `IgbCategoryChart` auto-detects which string or date property in the data to use as X-axis labels. To control which data properties are charted, use `IncludedProperties` or `ExcludedProperties` (string arrays).
74
74
 
75
75
  Brush list properties such as `Brushes`, `Outlines`, `MarkerBrushes`, and `MarkerOutlines` are **string** parameters. Separate multiple colors with spaces, as in `Brushes="DodgerBlue IndianRed"`.
76
76
 
@@ -328,4 +328,5 @@ Use Dashboard Tile when the requested component should infer or render compact d
328
328
  5. **`IgbDataChart` series must match axes by name.** The `XAxisName` / `YAxisName` on each series must match the `Name` attribute of the axis component.
329
329
  6. **`IncludedProperties` and `ExcludedProperties` are `string[]` arrays.** Bind with `@(new string[] { "Prop1", "Prop2" })`. Do not pass a plain string.
330
330
  7. **`CategoryChartType.Bar` does not exist.** Use `Column` for vertical bars in `IgbCategoryChart`. For horizontal bars, use `IgbDataChart` with `IgbBarSeries`.
331
- 8. **Use `XAxisMemberPath` to set the X-axis label field**, not `XAxisLabel`. Passing a property name string to `XAxisLabel` is evaluated as a C# expression and silently fails.
331
+ 8. **Do not use `XAxisLabel` to specify a data field.** It controls label formatting only. Use `IncludedProperties`/`ExcludedProperties` on `IgbCategoryChart`, or `Label` on `IgbCategoryXAxis` for `IgbDataChart`.
332
+ 9. **Scatter and bubble series use `XMemberPath`/`YMemberPath`, not `XAxisMemberPath`.** For `IgbScatterSeries` and `IgbBubbleSeries`, map data fields with `XMemberPath="FieldX"` and `YMemberPath="FieldY"`. `IgbBubbleSeries` additionally requires `RadiusMemberPath`.
@@ -270,6 +270,16 @@ builder.Services.AddIgniteUIBlazor(
270
270
  <link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
271
271
  ```
272
272
 
273
+ > **If the generated view includes any full-featured grid** (`IgbGrid`, `IgbTreeGrid`, `IgbHierarchicalGrid`, `IgbPivotGrid`), also add the grid-specific stylesheet immediately after:
274
+ > ```html
275
+ > <link href="_content/IgniteUI.Blazor/themes/grid/light/bootstrap.css" rel="stylesheet" />
276
+ > ```
277
+ >
278
+ > **If the generated view includes `IgbGridLite`**, replace both links above with the single Grid Lite stylesheet (from the `IgniteUI.Blazor.GridLite` package):
279
+ > ```html
280
+ > <link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css" rel="stylesheet" />
281
+ > ```
282
+
273
283
  ### 5. JS interop script (`wwwroot/index.html` or `App.razor`)
274
284
 
275
285
  ```html
@@ -378,6 +378,22 @@ Switch the theme `<link>` from light to dark:
378
378
  <link href="_content/IgniteUI.Blazor/themes/dark/bootstrap.css" rel="stylesheet" />
379
379
  ```
380
380
 
381
+ > **If the view includes any full-featured grid**, switch the grid-specific stylesheet variant too:
382
+ > ```html
383
+ > <!-- Light -->
384
+ > <link href="_content/IgniteUI.Blazor/themes/grid/light/bootstrap.css" rel="stylesheet" />
385
+ > <!-- Dark -->
386
+ > <link href="_content/IgniteUI.Blazor/themes/grid/dark/bootstrap.css" rel="stylesheet" />
387
+ > ```
388
+ >
389
+ > **If the view uses `IgbGridLite`**, switch its single stylesheet instead:
390
+ > ```html
391
+ > <!-- Light -->
392
+ > <link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css" rel="stylesheet" />
393
+ > <!-- Dark -->
394
+ > <link href="_content/IgniteUI.Blazor.GridLite/css/themes/dark/bootstrap.css" rel="stylesheet" />
395
+ > ```
396
+
381
397
  ### CSS custom properties for dark panels
382
398
  When the design has multiple dark surface depths (e.g., sidebar darker than content area), define semantic tokens:
383
399
  ```css
@@ -62,7 +62,8 @@ Before using any Ignite UI for Blazor grid component you must have:
62
62
  | NuGet package | `IgniteUI.Blazor` (licensed) for all full-featured grids; `IgniteUI.Blazor.GridLite` (MIT, separate NuGet) for Grid Lite only - grids are **not** included in `IgniteUI.Blazor.Lite` |
63
63
  | Service registration | `builder.Services.AddIgniteUIBlazor(typeof(IgbGridModule), ...)` in **Program.cs** with required module types |
64
64
  | Using directive | `@using IgniteUI.Blazor.Controls` in **_Imports.razor** |
65
- | CSS theme | `<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />` in **index.html** or **_Host.cshtml** |
65
+ | CSS theme (IgbGrid / IgbTreeGrid / IgbHierarchicalGrid / IgbPivotGrid) | Add **both** in **index.html** / **_Host.cshtml**: base theme `<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />` **and** grid-specific `<link href="_content/IgniteUI.Blazor/themes/grid/light/bootstrap.css" rel="stylesheet" />` (always required when any full-featured grid is used) |
66
+ | CSS theme (IgbGridLite) | `<link href="_content/IgniteUI.Blazor.GridLite/css/themes/light/bootstrap.css" rel="stylesheet" />` — from the `IgniteUI.Blazor.GridLite` package; do **not** use the paths above |
66
67
  | JS interop script | `<script src="_content/IgniteUI.Blazor/app.bundle.js"></script>` in **index.html** or **_Host.cshtml** |
67
68
  | Ignite UI CLI MCP | The **Ignite UI CLI MCP server** (`igniteui-cli`) available as a tool provider - see [`references/mcp-setup.md`](./references/mcp-setup.md) |
68
69
 
@@ -154,7 +155,7 @@ builder.Services.AddIgniteUIBlazor(
154
155
  | State persistence | ❌ | ✅ | ✅ | ✅ | ✅ |
155
156
  | Virtualization | ✅ | ✅ | ✅ | ✅ | ✅ |
156
157
  | Cell merging | ❌ | ✅ | ❌ | ❌ | ❌ |
157
- | Load on demand | ❌ | ❌ | ✅ **Exclusive** | | ❌ |
158
+ | Load on demand | ❌ | ❌ | ✅ (JS interop via `LoadChildrenOnDemandScript`) | (`GridCreatedScript` on `IgbRowIsland` + JS interop) | ❌ |
158
159
  | Remote data ops | `DataPipelineConfiguration` | Events + noop strategies | Events + noop strategies | Events + noop strategies | N/A |
159
160
 
160
161
  ---
@@ -13,7 +13,7 @@ This skill teaches AI agents how to theme Ignite UI for Blazor applications usin
13
13
  ## Prerequisites
14
14
 
15
15
  - A Blazor project using Ignite UI for Blazor components
16
- - A theme CSS file linked in the host page (see [`references/common-patterns.md`](./references/common-patterns.md))
16
+ - A theme CSS file and `_content/IgniteUI.Blazor/app.bundle.js` runtime script linked in the host page (see [`references/common-patterns.md`](./references/common-patterns.md))
17
17
  - The **Ignite UI Theming MCP server** (`igniteui-theming`) available as a tool provider
18
18
 
19
19
  > **AGENT INSTRUCTION - MCP Server Setup (REQUIRED)**
@@ -182,6 +182,7 @@ Place generated CSS in an app stylesheet loaded after the Ignite UI theme CSS, s
182
182
  ```html
183
183
  <link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
184
184
  <link href="css/app.css" rel="stylesheet" />
185
+ <script src="_content/IgniteUI.Blazor/app.bundle.js"></script>
185
186
  ```
186
187
 
187
188
  Palette and global layout CSS normally go in `:root`. Component theme CSS goes on the generated `igc-*` selector or under a scoped wrapper selector.
@@ -46,6 +46,14 @@ Add a single `<link>` tag in your host page:
46
46
  <link href="_content/IgniteUI.Blazor/themes/light/material.css" rel="stylesheet" />
47
47
  ```
48
48
 
49
+ ### Additional
50
+
51
+ Also add the Ignite UI runtime script before the Blazor framework script:
52
+
53
+ ```html
54
+ <script src="_content/IgniteUI.Blazor/app.bundle.js"></script>
55
+ ```
56
+
49
57
  ### .NET 9+ Web App - use `Assets` collection
50
58
 
51
59
  ```razor
@@ -374,7 +374,7 @@ const currencyTemplate = (ctx: IgrCellContext<Order>) => (
374
374
  );
375
375
 
376
376
  const dateTemplate = (ctx: IgrCellContext<Order>) => (
377
- <span>${(ctx.value as Date).toLocaleDateString()}</span>
377
+ <span>{(ctx.value as Date).toLocaleDateString()}</span>
378
378
  );
379
379
 
380
380
  const statusTemplate = (ctx: IgrCellContext<Order>) => {
@@ -57,7 +57,7 @@ Use the tables below to map a UI need to the right React component. All componen
57
57
  | UI Need | Component | Import | Docs |
58
58
  |---|---|---|---|
59
59
  | Full calendar view | `IgrCalendar` | `igniteui-react` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/scheduling/calendar) |
60
- | Date picker (popup calendar) | `IgrDatepicker` | `igniteui-react` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/scheduling/date-picker) |
60
+ | Date picker (popup calendar) | `IgrDatePicker` | `igniteui-react` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/scheduling/date-picker) |
61
61
  | Date range selection | `IgrDateRangePicker` | `igniteui-react` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/scheduling/date-range-picker) |
62
62
 
63
63
  ### Notifications & Feedback
@@ -109,7 +109,7 @@ Use the tables below to map a UI need to the right React component. All componen
109
109
  | Simple scrollable list | `IgrList` | `igniteui-react` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grids/list) |
110
110
  | Hierarchical / tree data | `IgrTree` | `igniteui-react` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grids/tree) |
111
111
  | Tabular data (MIT, lightweight) | `IgrGridLite` | `igniteui-react/grid-lite` (requires both `igniteui-react` and `igniteui-grid-lite` packages) | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grid-lite/overview) |
112
- | Full-featured tabular data grid | `IgrDataGrid` | `igniteui-react-grids` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grids/grid/overview) |
112
+ | Full-featured tabular data grid | `IgrGrid` | `igniteui-react-grids` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grids/grid/overview) |
113
113
  | Nested / master-detail grid | `IgrHierarchicalGrid` | `igniteui-react-grids` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grids/hierarchical-grid/overview) |
114
114
  | Parent-child relational tree grid | `IgrTreeGrid` | `igniteui-react-grids` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grids/tree-grid/overview) |
115
115
  | Cross-tabulation / BI pivot table | `IgrPivotGrid` | `igniteui-react-grids` | [Docs](https://www.infragistics.com/products/ignite-ui-react/react/components/grids/pivot-grid/overview) |
@@ -156,8 +156,8 @@ Use the **Component Catalogue** tables above to find matching components. When i
156
156
  | Simple static list | `IgrList` | Data Grid |
157
157
  | Basic dropdown | `IgrSelect` | `IgrCombo` |
158
158
  | Searchable or multi-select dropdown | `IgrCombo` | `IgrSelect` |
159
- | Tabular data with basic display | `IgrGridLite` (grid-lite) | `IgrDataGrid` (commercial) |
160
- | Tabular data, advanced features needed | `IgrDataGrid` | `IgrGridLite` (grid-lite) |
159
+ | Tabular data with basic display | `IgrGridLite` (grid-lite) | `IgrGrid` (commercial) |
160
+ | Tabular data, advanced features needed | `IgrGrid` | `IgrGridLite` (grid-lite) |
161
161
  | Single dismissible message | `IgrToast` | `IgrSnackbar` |
162
162
  | Message requiring user action | `IgrSnackbar` | `IgrToast` |
163
163
  | Collapsible single section | `IgrExpansionPanel` | `IgrAccordion` |
@@ -249,7 +249,7 @@ function Dashboard() {
249
249
 
250
250
  - `IgrInput` — search bar
251
251
  - `IgrCombo` — filter dropdowns
252
- - `IgrGridLite` (grid-lite) or `IgrDataGrid` — tabular data
252
+ - `IgrGridLite` (grid-lite) or `IgrGrid` — tabular data
253
253
  - `IgrButton` / `IgrIconButton` — actions
254
254
  - `IgrDialog` — confirm delete modal
255
255
  - `IgrBadge` — status indicators
@@ -269,7 +269,7 @@ function Dashboard() {
269
269
  - `IgrNavDrawer` — side navigation
270
270
  - `IgrCard` — KPI summary cards
271
271
  - `IgrTabs` or `IgrTileManager` — section layout
272
- - `IgrDataGrid` or `IgrPivotGrid` — detailed data tables
272
+ - `IgrGrid` or `IgrPivotGrid` — detailed data tables
273
273
  - `IgrCategoryChart` — charts (from `igniteui-react-charts`)
274
274
  - `IgrLinearProgress` / `IgrCircularProgress` — loading indicators
275
275
 
@@ -50,7 +50,7 @@ function MyForm() {
50
50
  | `IgrDialog` | `onClosed` | Dialog has closed |
51
51
  | `IgrTabs` | `onChange` | Active tab changes |
52
52
  | `IgrCalendar` | `onChange` | Selected date changes |
53
- | `IgrDatepicker` | `onChange` | Selected date changes |
53
+ | `IgrDatePicker` | `onChange` | Selected date changes |
54
54
 
55
55
  ## TypeScript Event Types
56
56
 
@@ -51,6 +51,7 @@ Ignite UI components use the web component **slot** mechanism under the hood. In
51
51
  Some components like the Data Grid support **render props** for custom cell rendering:
52
52
 
53
53
  ```tsx
54
+ import { IgrBadge } from 'igniteui-react';
54
55
  import { IgrGrid, IgrColumn } from 'igniteui-react-grids';
55
56
 
56
57
  function UserGrid({ users }: { users: User[] }) {
@@ -152,10 +153,9 @@ function MainLayout() {
152
153
  const location = useLocation();
153
154
 
154
155
  const handleTabChange = (e: CustomEvent) => {
155
- const selectedIndex = (e.target as any).selectedIndex;
156
- if (selectedIndex !== undefined && tabs[selectedIndex]) {
157
- navigate(tabs[selectedIndex].path);
158
- }
156
+ const selectedLabel = (e.detail as any).label as string;
157
+ const tab = tabs.find(t => t.label === selectedLabel);
158
+ if (tab) navigate(tab.path);
159
159
  };
160
160
 
161
161
  return (
@@ -57,7 +57,7 @@ import { IgrInput, IgrSelect, IgrSelectItem, IgrButton } from 'igniteui-react';
57
57
  function SimpleForm() {
58
58
  const handleSubmit = (e: React.SubmitEvent<HTMLFormElement>) => {
59
59
  // e.preventDefault(); // optionally prevent default submit for custom handling
60
- const formData = new FormData(e.target);
60
+ const formData = new FormData(e.currentTarget);
61
61
  console.log(formData.get('name')); // input value
62
62
  console.log(formData.get('role')); // selected option value
63
63
  };
@@ -84,7 +84,7 @@ Wire up Ignite UI form components with React state for controlled behavior:
84
84
 
85
85
  ```tsx
86
86
  import { useState } from 'react';
87
- import { IgrInput, IgrCheckbox, IgrSelect, IgrSelectItem } from 'igniteui-react';
87
+ import { IgrInput, IgrCheckbox, IgrSelect, IgrSelectItem, IgrCheckboxChangeEventArgsDetail } from 'igniteui-react';
88
88
 
89
89
  function ProfileForm() {
90
90
  const [name, setName] = useState('');
@@ -101,7 +101,7 @@ function ProfileForm() {
101
101
 
102
102
  <IgrCheckbox
103
103
  checked={newsletter}
104
- onChange={(e: CustomEvent<IgcCheckboxChangeEventArgs>) =>
104
+ onChange={(e: CustomEvent<IgrCheckboxChangeEventArgsDetail>) =>
105
105
  setNewsletter(e.detail.checked)
106
106
  }
107
107
  >
@@ -111,7 +111,7 @@ function ProfileForm() {
111
111
  <IgrSelect
112
112
  label="Role"
113
113
  value={role}
114
- onChange={(e: CustomEvent<IgcSelectItemComponent>) =>
114
+ onChange={(e: CustomEvent<IgrSelectItem>) =>
115
115
  setRole(e.detail.value)
116
116
  }
117
117
  >
@@ -130,7 +130,7 @@ Ignite UI components are form-associated web components. You can integrate them
130
130
 
131
131
  ```tsx
132
132
  import { useForm, Controller } from 'react-hook-form';
133
- import { IgrInput, IgrCheckbox, IgrButton } from 'igniteui-react';
133
+ import { IgrInput, IgrCheckbox, IgrButton, IgrCheckboxChangeEventArgsDetail } from 'igniteui-react';
134
134
 
135
135
  interface FormData {
136
136
  email: string;
@@ -172,7 +172,7 @@ function SignUpForm() {
172
172
  render={({ field }) => (
173
173
  <IgrCheckbox
174
174
  checked={field.value || false}
175
- onChange={(e: CustomEvent<IgcCheckboxChangeEventArgs>) =>
175
+ onChange={(e: CustomEvent<IgrCheckboxChangeEventArgsDetail>) =>
176
176
  field.onChange(e.detail.checked)
177
177
  }
178
178
  >
@@ -39,10 +39,10 @@ Component decision matrix (by visual pattern, domain-neutral):
39
39
  | Content blocks / summary cards | `IgrCard` | Use when card chrome helps match the panel shape and structure. Use `IgrCardHeader`, `IgrCardContent`, and `IgrCardActions`, or plain `<div>` containers for flat or highly custom tiles |
40
40
  | Any text input field | `IgrInput` | Use when the input anatomy matches the screenshot, including search fields and inline editors. Apply CSS to match the screenshot's border/radius style |
41
41
  | Dropdown or select | `IgrSelect` | Use when the screenshot clearly shows select/dropdown behavior |
42
- | Form fields with labels and inputs | `IgrInput`, `IgrSelect`, `IgrCombo`, `IgrDatepicker`, `IgrDateTimeInput` | Cover text, select, combo, and date/time inputs |
42
+ | Form fields with labels and inputs | `IgrInput`, `IgrSelect`, `IgrCombo`, `IgrDatePicker`, `IgrDateTimeInput` | Cover text, select, combo, and date/time inputs |
43
43
  | Multi-step form / wizard | `IgrStepper` | Use when a sequence of steps is visually present |
44
44
  | Filter chips / tag inputs | `IgrChip` | Use when chip anatomy matches status badges, filter tags, or removable labels in the screenshot |
45
- | Calendar or date picker as a primary view element | `IgrCalendar`, `IgrDatepicker`, `IgrDateRangePicker` | Use when scheduling or date selection is the core UI |
45
+ | Calendar or date picker as a primary view element | `IgrCalendar`, `IgrDatePicker`, `IgrDateRangePicker` | Use when scheduling or date selection is the core UI |
46
46
  | Top icon/action bar | `IgrNavbar` with `IgrButton` / `IgrIconButton` | Use when a navbar structure matches the screenshot; use plain icon buttons or custom containers when that is a closer fit |
47
47
 
48
48
  ## Chart Components
@@ -51,7 +51,7 @@ Component decision matrix (by visual pattern, domain-neutral):
51
51
  |---|---|---|
52
52
  | Area chart | `IgrCategoryChart` | `chartType`, `markerTypes`, `areaFillOpacity` |
53
53
  | Line chart | `IgrCategoryChart` | `chartType`, `markerTypes` |
54
- | Column/bar chart | `IgrCategoryChart` | `chartType`, `markerTypes`, `includedProperties` |
54
+ | Column chart | `IgrCategoryChart` | `chartType`, `markerTypes`, `includedProperties` |
55
55
  | Sparkline (mini chart) | `IgrSparkline` or `IgrDataChart` | `displayType`, `valueMemberPath`, sized container |
56
56
  | Pie/donut chart | `IgrPieChart` | `valueMemberPath`, `labelMemberPath` |
57
57
  | Financial chart | `IgrFinancialChart` | OHLC/candlestick data |
@@ -68,7 +68,7 @@ Decision rule:
68
68
  | UI Pattern | Ignite UI Component | Key Properties |
69
69
  |---|---|---|
70
70
  | Item list | `IgrList` | slot-based row content, selection, and dense list styling |
71
- | User avatar | `IgrAvatar` | `initials`, `shape`, `size` |
71
+ | User avatar | `IgrAvatar` | `initials`, `shape`, `src` |
72
72
  | Status badge | `IgrBadge` | value/children plus token-based styling |
73
73
  | Icons | `IgrIcon` | icon name, collection, styling |
74
74
  | Progress bar | `IgrLinearProgress` | `value`, `max` |
@@ -91,7 +91,7 @@ Decision rule:
91
91
  | Text input | `IgrInput` | `label`, `placeholder`, `type` |
92
92
  | Dropdown select | `IgrSelect` | option children, label, value |
93
93
  | Searchable multi-select | `IgrCombo` | `data`, `displayKey`, `valueKey` |
94
- | Date picker | `IgrDatepicker` | value and label props |
94
+ | Date picker | `IgrDatePicker` | value and label props |
95
95
  | Date/time input | `IgrDateTimeInput` | value, format options |
96
96
  | Toggle switch | `IgrSwitch` | checked state, change events |
97
97
  | Checkbox | `IgrCheckbox` | checked state, `indeterminate` |
@@ -70,9 +70,6 @@ Ignite UI for Web Components is distributed across several packages depending on
70
70
  |---|---|---|---|
71
71
  | [`igniteui-webcomponents`](https://www.npmjs.com/package/igniteui-webcomponents) | MIT | `npm install igniteui-webcomponents` | General UI components (inputs, layouts, notifications, scheduling) |
72
72
  | [`igniteui-webcomponents-grids`](https://www.npmjs.com/package/igniteui-webcomponents-grids) | Commercial | `npm install igniteui-webcomponents-grids` (trial) | Advanced data grids (Data Grid, Tree Grid, Hierarchical Grid, Pivot Grid) with many built-in functionalities |
73
- | [`igniteui-grid-lite`](https://www.npmjs.com/package/igniteui-grid-lite) | MIT | `npm install igniteui-grid-lite` | Lightweight data grid for simpler tabular data |
74
- | [`igniteui-dockmanager`](https://www.npmjs.com/package/igniteui-dockmanager) | Commercial | `npm install igniteui-dockmanager` (trial) | Windowing / docking layouts (IDE-style panels) |
75
- | [`igniteui-webcomponents-grids`](https://www.npmjs.com/package/igniteui-webcomponents-grids) | Commercial | `npm install igniteui-webcomponents-grids` (trial) | Advanced data grids (Data Grid, Tree Grid, Hierarchical Grid, Pivot Grid) with many built-in functionalities |
76
73
  | [`@infragistics/igniteui-webcomponents-grids`](https://packages.infragistics.com/feeds/js-licensed/@infragistics/igniteui-webcomponents-grids) | Commercial | `npm install @infragistics/igniteui-webcomponents-grids` (licensed) | Advanced data grids (Data Grid, Tree Grid, Hierarchical Grid, Pivot Grid) with many built-in functionalities |
77
74
  | [`igniteui-grid-lite`](https://www.npmjs.com/package/igniteui-grid-lite) | MIT | `npm install igniteui-grid-lite` | Lightweight data grid for simpler tabular data |
78
75
  | [`igniteui-dockmanager`](https://www.npmjs.com/package/igniteui-dockmanager) | Commercial | `npm install igniteui-dockmanager` (trial) | Windowing / docking layouts (IDE-style panels) |
@@ -113,7 +110,7 @@ All inputs are form-associated and integrate natively with `<form>`.
113
110
  | On/off toggle | Switch | `<igc-switch>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/switch) |
114
111
  | Single choice from a list | Radio / Radio Group | `<igc-radio>` / `<igc-radio-group>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/radio) |
115
112
  | Star / score rating | Rating | `<igc-rating>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/rating) |
116
- | Formatted / masked text input | Mask Input | `<igc-mask-input>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/input) |
113
+ | Formatted / masked text input | Mask Input | `<igc-mask-input>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/mask-input) |
117
114
  | Date and time input | Date Time Input | `<igc-date-time-input>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/date-time-input) |
118
115
  | File upload | File Input | `<igc-file-input>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/file-input) |
119
116
  | Simple dropdown / select | Select | `<igc-select>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/inputs/select) |
@@ -136,7 +133,7 @@ All inputs are form-associated and integrate natively with `<form>`.
136
133
  | UI Need | Component | Tag | Docs |
137
134
  |---|---|---|---|
138
135
  | Full calendar view | Calendar | `<igc-calendar>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/scheduling/calendar) |
139
- | Date picker (popup calendar) | Date Picker | `<igc-datepicker>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/scheduling/date-picker) |
136
+ | Date picker (popup calendar) | Date Picker | `<igc-date-picker>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/scheduling/date-picker) |
140
137
  | Date range selection | Date Range Picker | `<igc-date-range-picker>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/scheduling/date-range-picker) |
141
138
 
142
139
  ### Notifications & Feedback
@@ -191,7 +188,7 @@ All inputs are form-associated and integrate natively with `<form>`.
191
188
  | Full-featured tabular data grid | Data Grid | `<igc-grid>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/grids/grid/overview) |
192
189
  | Nested / master-detail grid | Hierarchical Grid | `<igc-hierarchical-grid>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/grids/hierarchical-grid/overview) |
193
190
  | Parent-child relational tree grid | Tree Grid | `<igc-tree-grid>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/grids/tree-grid/overview) |
194
- | Cross-tabulation / BI pivot table | Pivot Grid | `<igc-pivot-grid>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/web-components/components/grids/pivot-grid/overview) |
191
+ | Cross-tabulation / BI pivot table | Pivot Grid | `<igc-pivot-grid>` | [Docs](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/grids/pivot-grid/overview) |
195
192
 
196
193
  ### Charting & Visualization
197
194
 
@@ -51,9 +51,11 @@ Component decision matrix (by visual pattern, domain-neutral):
51
51
  |---|---|---|
52
52
  | Area chart | `IgcCategoryChartComponent` | `chartType`, `markerTypes`, `brushes`, `outlines` |
53
53
  | Line chart | `IgcCategoryChartComponent` | `chartType`, `markerTypes`, `brushes` |
54
- | Column/bar chart | `IgcCategoryChartComponent` or `IgcDataChartComponent` | `chartType`, `markerTypes`, series configuration |
54
+ | Column chart | `IgcCategoryChartComponent` | `chartType`, `markerTypes`|
55
+ | Bar chart | `IgcDataChartComponent` | `IgxBarSeriesComponent`, `valueMemberPath`, `argumentMemberPath` |
55
56
  | Sparkline (mini chart) | `IgcSparklineComponent` | `displayType`, `valueMemberPath` |
56
- | Pie/donut chart | `IgcPieChartComponent` / `IgcDoughnutChartComponent` | `valueMemberPath`, `labelMemberPath` |
57
+ | Pie chart | `IgcPieChartComponent` | `valueMemberPath`, `labelMemberPath` |
58
+ | Donut chart | `IgcDoughnutChartComponent` | `innerExtent`; bind data via child `IgcRingSeriesBaseComponent` with `valueMemberPath`, `labelMemberPath` |
57
59
  | Financial chart | `IgcFinancialChartComponent` | OHLC/candlestick data |
58
60
  | Complex multi-series | `IgcDataChartComponent` | multiple series plus axes |
59
61