igniteui-cli 15.2.1-alpha.3 → 15.2.2-alpha.0

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 (15) hide show
  1. package/package.json +4 -4
  2. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/charts.md +39 -10
  3. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/data-display.md +6 -6
  4. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/feedback.md +5 -5
  5. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/form-controls.md +8 -8
  6. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout-manager.md +86 -15
  7. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout.md +13 -10
  8. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/data-operations.md +47 -20
  9. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/editing.md +34 -27
  10. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/features.md +70 -30
  11. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/paging-remote.md +23 -23
  12. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/sizing.md +22 -30
  13. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/state.md +47 -34
  14. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/structure.md +25 -22
  15. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/types.md +27 -55
@@ -63,23 +63,21 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbGridModule));
63
63
  Width="100%" Height="500px" />
64
64
  ```
65
65
 
66
- When `AutoGenerate="true"`, the grid creates a column for each public property of the data type. You can hook `AutoGenerating` to customize or skip columns:
66
+ When `AutoGenerate="true"`, the grid creates a column for each public property of the data type. You can hook `ColumnInit` to customize columns as they are created, or use `AutoGenerateExclude` to skip specific fields:
67
67
 
68
68
  ```razor
69
69
  <IgbGrid Data="employees" PrimaryKey="Id" AutoGenerate="true"
70
- AutoGenerating="OnAutoGenerating" />
70
+ AutoGenerateExclude='@(new string[] { "InternalCode" })'
71
+ ColumnInit="OnColumnInit" />
71
72
 
72
73
  @code {
73
- private void OnAutoGenerating(IgbColumnAutoGenerateEventArgs args)
74
+ private void OnColumnInit(IgbColumnComponentEventArgs args)
74
75
  {
75
- if (args.Column.Field == "InternalCode")
76
+ var column = args.Detail;
77
+ if (column.Field == "Salary")
76
78
  {
77
- args.Cancel = true; // skip this column
78
- }
79
- else if (args.Column.Field == "Salary")
80
- {
81
- args.Column.DataType = GridColumnDataType.Currency;
82
- args.Column.Editable = false;
79
+ column.DataType = GridColumnDataType.Currency;
80
+ column.Editable = false;
83
81
  }
84
82
  }
85
83
  }
@@ -115,18 +113,16 @@ Use `GridColumnDataType` to set the type. This controls sorting, filtering, edit
115
113
  | `MinWidth` | `string` | - | Minimum column width |
116
114
  | `MaxWidth` | `string` | - | Maximum column width |
117
115
  | `Sortable` | `bool` | `false` | Enables sorting on this column |
118
- | `Filterable` | `bool` | `true` | Enables filtering on this column |
119
- | `Filterable` | `bool` | `false` | Disable filtering on this column |
116
+ | `Filterable` | `bool` | `true` | Enables/disables filtering on this column |
120
117
  | `Editable` | `bool` | `false` | Enables editing on this column |
121
118
  | `Resizable` | `bool` | `false` | Enables column resizing |
122
- | `Movable` | `bool` | `false` | Enables column moving |
123
119
  | `Hidden` | `bool` | `false` | Hides the column |
124
120
  | `Pinned` | `bool` | `false` | Pins the column |
125
121
  | `Groupable` | `bool` | `false` | Enables grouping for this column (IgbGrid only) |
126
122
  | `HasSummary` | `bool` | `false` | Enables summaries for this column |
127
123
  | `DisablePinning` | `bool` | `false` | Disables pinning for this column |
128
124
  | `DisableHiding` | `bool` | `false` | Prevents hiding this column |
129
- | `CellClasses` | `string` | - | CSS class(es) to apply to cells |
125
+ | `CellClasses` | `object` | - | CSS class rules to apply to cells |
130
126
  | `HeaderClasses` | `string` | - | CSS class(es) to apply to the header |
131
127
 
132
128
  ---
@@ -293,20 +289,27 @@ Control whether pinned columns appear at the start or end:
293
289
 
294
290
  | Parameter | Type | Default | Description |
295
291
  |---|---|---|---|
296
- | `SortingMode` | `SortingMode` | `Single` | `Single` - one column at a time; `Multiple` - multi-column sort |
292
+ | `SortingOptions` | `IgbSortingOptions` | - | `Mode = SortingOptionsMode.Single` - one column at a time; `Mode = SortingOptionsMode.Multiple` - multi-column sort |
297
293
 
298
294
  ```razor
299
- <IgbGrid Data="data" PrimaryKey="Id" SortingMode="SortingMode.Multiple">
295
+ <IgbGrid Data="data" PrimaryKey="Id" SortingOptions="sortingOptions">
300
296
  <IgbColumn Field="Department" Sortable="true" />
301
297
  <IgbColumn Field="Name" Sortable="true" />
302
298
  </IgbGrid>
299
+
300
+ @code {
301
+ private IgbSortingOptions sortingOptions = new IgbSortingOptions
302
+ {
303
+ Mode = SortingOptionsMode.Multiple
304
+ };
305
+ }
303
306
  ```
304
307
 
305
308
  ### Sorting events
306
309
 
307
310
  | Event | Type | Description |
308
311
  |---|---|---|
309
- | `SortingDone` | `EventCallback<IgbSortingEventArgs>` | Fires after sorting is applied |
312
+ | `SortingDone` | `EventCallback<IgbSortingExpressionEventArgs>` | Fires after sorting is applied |
310
313
 
311
314
  ```razor
312
315
  <IgbGrid Data="data" PrimaryKey="Id" SortingDone="OnSortingDone">
@@ -314,9 +317,9 @@ Control whether pinned columns appear at the start or end:
314
317
  </IgbGrid>
315
318
 
316
319
  @code {
317
- private void OnSortingDone(IgbSortingEventArgs args)
320
+ private void OnSortingDone(IgbSortingExpressionEventArgs args)
318
321
  {
319
- // React to sorting changes
322
+ // args.Detail contains IgbSortingExpression[]
320
323
  }
321
324
  }
322
325
  ```
@@ -400,14 +403,14 @@ The filter condition depends on the column's `DataType`:
400
403
  ```razor
401
404
  <IgbGrid Data="data" PrimaryKey="Id"
402
405
  RowSelection="GridSelectionMode.Multiple"
403
- RowSelectionChanged="OnRowSelection">
406
+ RowSelectionChanging="OnRowSelection">
404
407
  ...
405
408
  </IgbGrid>
406
409
 
407
410
  @code {
408
411
  private void OnRowSelection(IgbRowSelectionEventArgs args)
409
412
  {
410
- var newSelection = args.NewSelection; // selected row data
413
+ var newSelection = args.Detail.NewSelection; // selected row keys
411
414
  }
412
415
  }
413
416
  ```
@@ -429,7 +432,7 @@ The filter condition depends on the column's `DataType`:
429
432
  </IgbGrid>
430
433
 
431
434
  @code {
432
- private void OnRangeSelected(IgbGridForOfState<IgbCellType> args)
435
+ private void OnRangeSelected(IgbGridSelectionRangeEventArgs args)
433
436
  {
434
437
  // Handle range selection
435
438
  }
@@ -219,37 +219,7 @@ Control how many levels are expanded by default:
219
219
 
220
220
  ### Load on Demand
221
221
 
222
- Load child data lazily when a parent row is expanded:
223
-
224
- ```razor
225
- <IgbTreeGrid Data="rootData" PrimaryKey="Id" HasChildrenKey="HasChildren"
226
- LoadChildrenOnDemand="OnLoadChildren">
227
- <IgbColumn Field="Name" Header="Name" />
228
- <IgbColumn Field="EmployeeCount" Header="Count" />
229
- </IgbTreeGrid>
230
-
231
- @code {
232
- private List<Department> rootData = new();
233
-
234
- private async Task OnLoadChildren(IgbTreeGridLoadOnDemandEventArgs args)
235
- {
236
- var parentId = (int)args.ParentID;
237
- var children = await DepartmentService.GetChildrenAsync(parentId);
238
- args.ChildData = children.ToArray();
239
- }
240
-
241
- public class Department
242
- {
243
- public int Id { get; set; }
244
- public string Name { get; set; } = "";
245
- public int EmployeeCount { get; set; }
246
- public bool HasChildren { get; set; }
247
- }
248
- }
249
- ```
250
-
251
- - `HasChildrenKey` tells the grid which rows have children (so it shows the expand arrow).
252
- - `LoadChildrenOnDemand` is the callback that fetches and supplies children.
222
+ > **Note:** Load-on-demand in the Blazor Tree Grid is handled via **JavaScript interop** only. There is no pure-C# `LoadChildrenOnDemand` callback. Use `HasChildrenKey` to indicate which rows have children, and register a JS handler via `LoadChildrenOnDemandScript` to fetch and supply child data when a row is expanded.
253
223
 
254
224
  ### Tree Grid key parameters
255
225
 
@@ -259,9 +229,9 @@ Load child data lazily when a parent row is expanded:
259
229
  | `ForeignKey` | `string` | Parent reference field (flat data) |
260
230
  | `ChildDataKey` | `string` | Child collection property (nested data) |
261
231
  | `HasChildrenKey` | `string` | Boolean field for load-on-demand |
262
- | `ExpansionDepth` | `int` | Initial expansion level |
263
- | `LoadChildrenOnDemand` | `EventCallback<IgbTreeGridLoadOnDemandEventArgs>` | Lazy-load callback |
264
- | `CascadeOnDelete` | `CascadeOnDelete` | `CascadeOnDelete.None` or `CascadeOnDelete.Cascade` - controls whether deleting a parent deletes children |
232
+ | `ExpansionDepth` | `double` | Initial expansion level |
233
+ | `HasChildrenKey` | `string` | Boolean field indicating which rows have children (for load-on-demand) |
234
+ | `CascadeOnDelete` | `bool` | Whether deleting a parent also deletes its children |
265
235
 
266
236
  ---
267
237
 
@@ -284,12 +254,12 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbHierarchicalGridModule));
284
254
  <IgbColumn Field="CompanyName" Header="Company" DataType="GridColumnDataType.String" />
285
255
  <IgbColumn Field="ContactName" Header="Contact" DataType="GridColumnDataType.String" />
286
256
 
287
- <IgbRowIsland Key="Orders" PrimaryKey="OrderId" AutoGenerate="false">
257
+ <IgbRowIsland ChildDataKey="Orders" PrimaryKey="OrderId" AutoGenerate="false">
288
258
  <IgbColumn Field="OrderId" Header="Order ID" DataType="GridColumnDataType.Number" />
289
259
  <IgbColumn Field="OrderDate" Header="Date" DataType="GridColumnDataType.Date" />
290
260
  <IgbColumn Field="ShipCountry" Header="Ship Country" DataType="GridColumnDataType.String" />
291
261
 
292
- <IgbRowIsland Key="OrderDetails" PrimaryKey="DetailId" AutoGenerate="false">
262
+ <IgbRowIsland ChildDataKey="OrderDetails" PrimaryKey="DetailId" AutoGenerate="false">
293
263
  <IgbColumn Field="DetailId" Header="Detail ID" DataType="GridColumnDataType.Number" />
294
264
  <IgbColumn Field="ProductName" Header="Product" DataType="GridColumnDataType.String" />
295
265
  <IgbColumn Field="Quantity" Header="Qty" DataType="GridColumnDataType.Number" />
@@ -334,7 +304,7 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbHierarchicalGridModule));
334
304
 
335
305
  ### How `IgbRowIsland` works
336
306
 
337
- - The `Key` property matches the collection property name on the parent data object (e.g., `Key="Orders"` matches `Customer.Orders`).
307
+ - The `ChildDataKey` property matches the collection property name on the parent data object (e.g., `ChildDataKey="Orders"` matches `Customer.Orders`).
338
308
  - Each `IgbRowIsland` is a **template** - it defines columns and features for all child grids at that level.
339
309
  - Row islands can be nested to any depth.
340
310
  - Each child grid instance is independent - it has its own sorting, filtering, selection, and paging state.
@@ -347,7 +317,7 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbHierarchicalGridModule));
347
317
  AllowFiltering="true">
348
318
  <IgbColumn Field="CompanyName" Sortable="true" Filterable="true" />
349
319
 
350
- <IgbRowIsland Key="Orders" PrimaryKey="OrderId"
320
+ <IgbRowIsland ChildDataKey="Orders" PrimaryKey="OrderId"
351
321
  RowSelection="GridSelectionMode.Single"
352
322
  AllowFiltering="true"
353
323
  FilterMode="FilterMode.ExcelStyleFilter">
@@ -364,7 +334,7 @@ When a user expands a row, a child grid instance is created. Access it via the `
364
334
  ```razor
365
335
  <IgbHierarchicalGrid Data="customers" PrimaryKey="CustomerId">
366
336
  <IgbColumn Field="CompanyName" />
367
- <IgbRowIsland Key="Orders" PrimaryKey="OrderId"
337
+ <IgbRowIsland ChildDataKey="Orders" PrimaryKey="OrderId"
368
338
  GridCreated="OnChildGridCreated">
369
339
  <IgbColumn Field="OrderId" />
370
340
  <IgbColumn Field="Total" />
@@ -374,8 +344,8 @@ When a user expands a row, a child grid instance is created. Access it via the `
374
344
  @code {
375
345
  private void OnChildGridCreated(IgbGridCreatedEventArgs args)
376
346
  {
377
- var childGrid = args.Owner; // the IgbGrid instance for this child level
378
- // Perform operations on the child grid
347
+ var childGrid = args.Detail.Grid; // the IgbHierarchicalGrid instance for this child level
348
+ var rowIsland = args.Detail.Owner; // the IgbRowIsland template that created it
379
349
  }
380
350
  }
381
351
  ```
@@ -392,7 +362,7 @@ When a user expands a row, a child grid instance is created. Access it via the `
392
362
 
393
363
  | Parameter | Type | Description |
394
364
  |---|---|---|
395
- | `Key` | `string` | Property name of the child collection on the parent object |
365
+ | `ChildDataKey` | `string` | Property name of the child collection on the parent object |
396
366
  | `PrimaryKey` | `string` | Unique identifier for this level |
397
367
  | `AutoGenerate` | `bool` | Auto-generate columns |
398
368
  | `GridCreated` | `EventCallback<IgbGridCreatedEventArgs>` | Fires when a child grid is created on expand |
@@ -428,25 +398,25 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbPivotGridModule));
428
398
 
429
399
  pivotConfig = new IgbPivotConfiguration
430
400
  {
431
- Rows = new List<IgbPivotDimension>
401
+ Rows = new IgbPivotDimension[]
432
402
  {
433
403
  new IgbPivotDimension { MemberName = "Country", Enabled = true },
434
404
  new IgbPivotDimension { MemberName = "City", Enabled = true }
435
405
  },
436
- Columns = new List<IgbPivotDimension>
406
+ Columns = new IgbPivotDimension[]
437
407
  {
438
408
  new IgbPivotDimension { MemberName = "Year", Enabled = true }
439
409
  },
440
- Values = new List<IgbPivotValue>
410
+ Values = new IgbPivotValue[]
441
411
  {
442
412
  new IgbPivotValue
443
413
  {
444
414
  Member = "Revenue",
445
- Aggregate = new IgbPivotAggregation { AggregatorName = PivotAggregationType.SUM, Key = "SUM", Label = "Sum of Revenue" },
415
+ Aggregate = new IgbPivotAggregator { AggregatorName = PivotAggregationType.SUM, Key = "SUM", Label = "Sum of Revenue" },
446
416
  Enabled = true
447
417
  }
448
418
  },
449
- Filters = new List<IgbPivotDimension>
419
+ Filters = new IgbPivotDimension[]
450
420
  {
451
421
  new IgbPivotDimension { MemberName = "ProductCategory", Enabled = true }
452
422
  }
@@ -469,10 +439,10 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbPivotGridModule));
469
439
 
470
440
  | Property | Type | Description |
471
441
  |---|---|---|
472
- | `Rows` | `List<IgbPivotDimension>` | Dimensions placed on rows |
473
- | `Columns` | `List<IgbPivotDimension>` | Dimensions placed on columns |
474
- | `Values` | `List<IgbPivotValue>` | Measures/aggregations |
475
- | `Filters` | `List<IgbPivotDimension>` | Dimensions used as filters (shown in filter chip area) |
442
+ | `Rows` | `IgbPivotDimension[]` | Dimensions placed on rows |
443
+ | `Columns` | `IgbPivotDimension[]` | Dimensions placed on columns |
444
+ | `Values` | `IgbPivotValue[]` | Measures/aggregations |
445
+ | `Filters` | `IgbPivotDimension[]` | Dimensions used as filters (shown in filter chip area) |
476
446
 
477
447
  ### IgbPivotDimension
478
448
 
@@ -489,10 +459,10 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbPivotGridModule));
489
459
  | Property | Type | Description |
490
460
  |---|---|---|
491
461
  | `Member` | `string` | Data property to aggregate |
492
- | `Aggregate` | `IgbPivotAggregation` | Aggregation function |
462
+ | `Aggregate` | `IgbPivotAggregator` | Aggregation function |
493
463
  | `Enabled` | `bool` | Whether this value is active |
494
464
  | `DisplayName` | `string` | Custom display label |
495
- | `Formatter` | `Func<object, string>?` | Custom value formatter |
465
+ | `FormatterScript` | `string` | JS interop formatter function name (register via `igRegisterScript`) |
496
466
 
497
467
  ### Built-in aggregation types
498
468
 
@@ -503,6 +473,8 @@ builder.Services.AddIgniteUIBlazor(typeof(IgbPivotGridModule));
503
473
  | `MIN` | Minimum value |
504
474
  | `MAX` | Maximum value |
505
475
  | `AVG` | Average value |
476
+ | `EARLIEST` | Earliest date/time value |
477
+ | `LATEST` | Latest date/time value |
506
478
 
507
479
  ### Pivot Data Selector
508
480
 
@@ -535,11 +507,11 @@ The Pivot Grid does not support cell editing, row editing, or batch editing. It
535
507
  2. `PrimaryKey` is required.
536
508
  3. Root rows have `null`/`0`/default in the foreign key field, or are the top-level objects in a nested collection.
537
509
  4. `MultipleCascade` selection cascades to all descendants.
538
- 5. Load-on-demand requires both `HasChildrenKey` and `LoadChildrenOnDemand`.
510
+ 5. Load-on-demand requires `HasChildrenKey` and a JS interop handler via `LoadChildrenOnDemandScript`.
539
511
 
540
512
  ### Hierarchical Grid rules
541
513
 
542
- 1. `IgbRowIsland.Key` must exactly match the collection property name on the parent data class (case-sensitive).
514
+ 1. `IgbRowIsland.ChildDataKey` must exactly match the collection property name on the parent data class (case-sensitive).
543
515
  2. Each level is independent - it has its own columns, sorting, filtering, and editing state.
544
516
  3. Access child grid instances via `GridCreated`, never assume a child grid exists before expansion.
545
517
  4. Nesting depth is unlimited - nest `IgbRowIsland` within `IgbRowIsland`.