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.
- package/package.json +4 -4
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/charts.md +39 -10
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/data-display.md +6 -6
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/feedback.md +5 -5
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/form-controls.md +8 -8
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout-manager.md +86 -15
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout.md +13 -10
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/data-operations.md +47 -20
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/editing.md +34 -27
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/features.md +70 -30
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/paging-remote.md +23 -23
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/sizing.md +22 -30
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/state.md +47 -34
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/structure.md +25 -22
- 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 `
|
|
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
|
-
|
|
70
|
+
AutoGenerateExclude='@(new string[] { "InternalCode" })'
|
|
71
|
+
ColumnInit="OnColumnInit" />
|
|
71
72
|
|
|
72
73
|
@code {
|
|
73
|
-
private void
|
|
74
|
+
private void OnColumnInit(IgbColumnComponentEventArgs args)
|
|
74
75
|
{
|
|
75
|
-
|
|
76
|
+
var column = args.Detail;
|
|
77
|
+
if (column.Field == "Salary")
|
|
76
78
|
{
|
|
77
|
-
|
|
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` | `
|
|
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
|
-
| `
|
|
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"
|
|
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<
|
|
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(
|
|
320
|
+
private void OnSortingDone(IgbSortingExpressionEventArgs args)
|
|
318
321
|
{
|
|
319
|
-
//
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
|
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` | `
|
|
263
|
-
| `
|
|
264
|
-
| `CascadeOnDelete` | `
|
|
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
|
|
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
|
|
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 `
|
|
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
|
|
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
|
|
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.
|
|
378
|
-
|
|
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
|
-
| `
|
|
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
|
|
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
|
|
406
|
+
Columns = new IgbPivotDimension[]
|
|
437
407
|
{
|
|
438
408
|
new IgbPivotDimension { MemberName = "Year", Enabled = true }
|
|
439
409
|
},
|
|
440
|
-
Values = new
|
|
410
|
+
Values = new IgbPivotValue[]
|
|
441
411
|
{
|
|
442
412
|
new IgbPivotValue
|
|
443
413
|
{
|
|
444
414
|
Member = "Revenue",
|
|
445
|
-
Aggregate = new
|
|
415
|
+
Aggregate = new IgbPivotAggregator { AggregatorName = PivotAggregationType.SUM, Key = "SUM", Label = "Sum of Revenue" },
|
|
446
416
|
Enabled = true
|
|
447
417
|
}
|
|
448
418
|
},
|
|
449
|
-
Filters = new
|
|
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` | `
|
|
473
|
-
| `Columns` | `
|
|
474
|
-
| `Values` | `
|
|
475
|
-
| `Filters` | `
|
|
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` | `
|
|
462
|
+
| `Aggregate` | `IgbPivotAggregator` | Aggregation function |
|
|
493
463
|
| `Enabled` | `bool` | Whether this value is active |
|
|
494
464
|
| `DisplayName` | `string` | Custom display label |
|
|
495
|
-
| `
|
|
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
|
|
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.
|
|
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`.
|