igniteui-cli 15.1.0 → 15.2.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/lib/PromptSession.d.ts +1 -1
- package/lib/PromptSession.js +2 -2
- package/lib/commands/ai-config.d.ts +3 -5
- package/lib/commands/ai-config.js +68 -23
- package/lib/commands/new.js +1 -1
- package/package.json +4 -4
- package/templates/blazor/igb/index.d.ts +1 -0
- package/templates/blazor/igb/index.js +12 -0
- package/templates/blazor/igb/projects/ai-config/files/AGENTS.md +65 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/AGENTS.md +65 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/README.md +61 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/SKILL.md +118 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/charts.md +302 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/data-display.md +350 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/feedback.md +178 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/form-controls.md +365 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout-manager.md +180 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout.md +322 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/mcp-setup.md +78 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/setup.md +214 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/SKILL.md +284 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/component-mapping.md +281 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/gotchas.md +503 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/SKILL.md +188 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/data-operations.md +264 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/editing.md +297 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/features.md +447 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/mcp-setup.md +78 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/paging-remote.md +299 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/sizing.md +284 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/state.md +160 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/structure.md +497 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/types.md +553 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/SKILL.md +259 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/references/common-patterns.md +276 -0
- package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/references/mcp-setup.md +81 -0
- package/templates/blazor/igb/projects/ai-config/index.d.ts +22 -0
- package/templates/blazor/igb/projects/ai-config/index.js +62 -0
- package/templates/blazor/index.d.ts +3 -0
- package/templates/blazor/index.js +11 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
# Charts & Data Visualization
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
|
|
4
|
+
> For project setup and module registration, see [`setup.md`](./setup.md).
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- [Overview](#overview)
|
|
9
|
+
- [Chart Type Decision Guide](#chart-type-decision-guide)
|
|
10
|
+
- [Category Chart](#category-chart)
|
|
11
|
+
- [Data Chart](#data-chart)
|
|
12
|
+
- [Financial / Stock Chart](#financial--stock-chart)
|
|
13
|
+
- [Pie Chart](#pie-chart)
|
|
14
|
+
- [Donut Chart](#donut-chart)
|
|
15
|
+
- [Sparkline](#sparkline)
|
|
16
|
+
- [Treemap](#treemap)
|
|
17
|
+
- [Geographic Map](#geographic-map)
|
|
18
|
+
- [Gauges](#gauges)
|
|
19
|
+
- [Dashboard Tile](#dashboard-tile)
|
|
20
|
+
- [Common Chart Features](#common-chart-features)
|
|
21
|
+
- [Key Rules](#key-rules)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
## Overview
|
|
25
|
+
|
|
26
|
+
Ignite UI for Blazor provides 65+ chart types for data visualization. Charts are part of the IgniteUI.Blazor package (trial watermarked version available in the IgniteUI.Blazor.Trial public NuGet package).
|
|
27
|
+
This reference gives high-level guidance on when to use some of the chart types, their key features, and common API members. For detailed documentation, call `get_doc` and `get_api_reference` from `igniteui-cli` with the specific chart component or feature you're interested in.
|
|
28
|
+
|
|
29
|
+
## Chart Type Decision Guide
|
|
30
|
+
|
|
31
|
+
| Use case | Recommended component |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Simple line/area/column/point/spline/waterfall charts with minimal config | `IgbCategoryChart` |
|
|
34
|
+
| Multiple series types on the same chart, custom axes, annotations | `IgbDataChart` |
|
|
35
|
+
| Candlestick / OHLC financial data with range selector | `IgbFinancialChart` / stock chart docs |
|
|
36
|
+
| Part-to-whole proportions (slices) | `IgbPieChart` |
|
|
37
|
+
| Donut with center label | `IgbDoughnutChart` |
|
|
38
|
+
| Inline sparkline for tables or cards | `IgbSparkline` |
|
|
39
|
+
| Hierarchical part-to-whole data | Treemap docs |
|
|
40
|
+
| Geographic points, shapes, map markers | Geographic Map docs |
|
|
41
|
+
| KPI values, ranges, scales, bullet comparisons | Gauge docs |
|
|
42
|
+
| Auto-generated dashboard visualization from data | Dashboard Tile docs |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Category Chart
|
|
47
|
+
|
|
48
|
+
```csharp
|
|
49
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbCategoryChartModule));
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```razor
|
|
53
|
+
<IgbCategoryChart DataSource="SalesData"
|
|
54
|
+
ChartType="CategoryChartType.Line"
|
|
55
|
+
Height="400px"
|
|
56
|
+
Width="100%"
|
|
57
|
+
YAxisTitle="Revenue (USD)"
|
|
58
|
+
XAxisTitle="Month"
|
|
59
|
+
Brushes="DodgerBlue IndianRed"
|
|
60
|
+
IsHorizontalZoomEnabled="true"
|
|
61
|
+
IsVerticalZoomEnabled="false"
|
|
62
|
+
IsTransitionInEnabled="true" />
|
|
63
|
+
|
|
64
|
+
@code {
|
|
65
|
+
public List<SalesRecord> SalesData { get; set; } = SampleData.GetSales();
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Key attributes: `DataSource`, `ChartType` (`CategoryChartType.Line` / `Area` / `Column` / `Point` / `Spline` / `SplineArea` / `StepLine` / `StepArea` / `Waterfall` / `Auto`), `Height`, `Width`, `YAxisTitle`, `XAxisTitle`, `Brushes`, `Outlines`, `MarkerBrushes`, `IsTransitionInEnabled`, `IsHorizontalZoomEnabled`, `IsVerticalZoomEnabled`.
|
|
70
|
+
|
|
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
|
+
|
|
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"`).
|
|
74
|
+
|
|
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
|
+
|
|
77
|
+
> **AGENT INSTRUCTION:** `IgbCategoryChart` auto-detects numeric properties in `DataSource` objects and creates series for them. To control which properties are charted, use `IncludedProperties` or `ExcludedProperties` attributes. These are **array** parameters - bind them with `@(new string[] { ... })` syntax:
|
|
78
|
+
> ```razor
|
|
79
|
+
> <IgbCategoryChart DataSource="SalesData"
|
|
80
|
+
> ExcludedProperties='@(new string[] { "Id", "InternalCode" })' />
|
|
81
|
+
> ```
|
|
82
|
+
> Do NOT pass a plain string like `ExcludedProperties="Id"` - this causes a type mismatch error.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Data Chart
|
|
87
|
+
|
|
88
|
+
```csharp
|
|
89
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDataChartCoreModule), typeof(IgbDataChartCategoryModule));
|
|
90
|
+
// Add additional modules for other series types:
|
|
91
|
+
// IgbDataChartScatterModule, IgbDataChartFinancialModule, etc.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
```razor
|
|
95
|
+
<IgbDataChart Height="500px" Width="100%" IsHorizontalZoomEnabled="true">
|
|
96
|
+
<IgbCategoryXAxis Name="xAxis" DataSource="ChartData" Label="Month" />
|
|
97
|
+
<IgbNumericYAxis Name="yAxis" />
|
|
98
|
+
<IgbLineSeries DataSource="ChartData"
|
|
99
|
+
XAxisName="xAxis"
|
|
100
|
+
YAxisName="yAxis"
|
|
101
|
+
ValueMemberPath="Revenue"
|
|
102
|
+
Title="Revenue" />
|
|
103
|
+
<IgbColumnSeries DataSource="ChartData"
|
|
104
|
+
XAxisName="xAxis"
|
|
105
|
+
YAxisName="yAxis"
|
|
106
|
+
ValueMemberPath="Expenses"
|
|
107
|
+
Title="Expenses" />
|
|
108
|
+
<IgbChartLegend Name="legend" />
|
|
109
|
+
</IgbDataChart>
|
|
110
|
+
|
|
111
|
+
@code {
|
|
112
|
+
public List<MonthData> ChartData { get; set; } = SampleData.GetMonthly();
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Common axis types: `IgbCategoryXAxis`, `IgbNumericXAxis`, `IgbNumericYAxis`, `IgbCategoryYAxis`, `IgbTimeXAxis`, `IgbOrdinalTimeXAxis`.
|
|
117
|
+
|
|
118
|
+
Common series types: `IgbLineSeries`, `IgbAreaSeries`, `IgbColumnSeries`, `IgbBarSeries`, `IgbSplineSeries`, `IgbBubbleSeries`, `IgbScatterSeries`.
|
|
119
|
+
|
|
120
|
+
Every series must reference its axes by matching `Name` and `XAxisName` / `YAxisName`.
|
|
121
|
+
|
|
122
|
+
> **AGENT INSTRUCTION:** `IgbDataChart` requires separate NuGet module registrations for each category of series. Always check `get_doc` to find the exact module names, for example category, scatter, polar, radial, stacked, or financial modules.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Financial / Stock Chart
|
|
127
|
+
|
|
128
|
+
> **Docs:** [Financial Chart](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/stock-chart)
|
|
129
|
+
|
|
130
|
+
```csharp
|
|
131
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbFinancialChartModule));
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
```razor
|
|
135
|
+
<IgbFinancialChart DataSource="StockData"
|
|
136
|
+
Width="100%"
|
|
137
|
+
Height="500px"
|
|
138
|
+
ChartType="FinancialChartType.Candle"
|
|
139
|
+
ZoomSliderType="FinancialChartZoomSliderType.Line" />
|
|
140
|
+
|
|
141
|
+
@code {
|
|
142
|
+
public List<StockPrice> StockData { get; set; } = SampleData.GetStockPrices();
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The data source must contain `Open`, `High`, `Low`, `Close`, and `Volume` numeric fields plus a `Date`/`Time` field. Key attributes: `ChartType` (`FinancialChartType.Candle` / `Bar` / `Line`), `ZoomSliderType`, `IsTooltipVisible`, `VolumeType`.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Pie Chart
|
|
151
|
+
|
|
152
|
+
> **Docs:** [Pie Chart](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/pie-chart)
|
|
153
|
+
|
|
154
|
+
```csharp
|
|
155
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbPieChartModule));
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
```razor
|
|
159
|
+
<IgbPieChart DataSource="SliceData"
|
|
160
|
+
LabelMemberPath="Department"
|
|
161
|
+
ValueMemberPath="Budget"
|
|
162
|
+
Width="500px"
|
|
163
|
+
Height="400px"
|
|
164
|
+
LegendLabelMemberPath="Department"
|
|
165
|
+
SliceClick="OnSliceClick" />
|
|
166
|
+
|
|
167
|
+
@code {
|
|
168
|
+
public List<BudgetSlice> SliceData { get; set; } = SampleData.GetBudget();
|
|
169
|
+
|
|
170
|
+
void OnSliceClick(IgbSliceClickEventArgs e) { /* handle click */ }
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Key attributes: `DataSource`, `LabelMemberPath`, `ValueMemberPath`, `RadiusFactor` (0-1), `StartAngle`, `OthersCategoryThreshold`, `OthersCategoryType`, `LegendLabelMemberPath`, `LegendItemTemplate`.
|
|
175
|
+
|
|
176
|
+
Events: `SliceClick`.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Donut Chart
|
|
181
|
+
|
|
182
|
+
> **Docs:** [Doughnut Chart](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/donut-chart)
|
|
183
|
+
|
|
184
|
+
```csharp
|
|
185
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDoughnutChartModule), typeof(IgbRingSeriesModule));
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
```razor
|
|
189
|
+
<IgbDoughnutChart Width="400px" Height="400px">
|
|
190
|
+
<IgbRingSeries DataSource="DonutData"
|
|
191
|
+
LabelMemberPath="Category"
|
|
192
|
+
ValueMemberPath="Share" />
|
|
193
|
+
</IgbDoughnutChart>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Supports multiple `IgbRingSeries` for concentric rings.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Sparkline
|
|
201
|
+
|
|
202
|
+
> **Docs:** [Sparkline](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/sparkline-chart)
|
|
203
|
+
|
|
204
|
+
```csharp
|
|
205
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbSparklineModule));
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
```razor
|
|
209
|
+
<IgbSparkline DataSource="TrendData"
|
|
210
|
+
ValueMemberPath="Value"
|
|
211
|
+
DisplayType="SparklineDisplayType.Line"
|
|
212
|
+
Width="120px"
|
|
213
|
+
Height="40px"
|
|
214
|
+
Brushes="DodgerBlue"
|
|
215
|
+
LineThickness="2" />
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Key attributes: `DataSource`, `ValueMemberPath`, `DisplayType` (`SparklineDisplayType.Line` / `Area` / `Column` / `WinLoss`), `Width`, `Height`, `Brushes`, `LineThickness`, `MarkerVisibility`, `FirstMarkerVisibility`, `LastMarkerVisibility`, `HighMarkerVisibility`, `LowMarkerVisibility`.
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Treemap
|
|
223
|
+
|
|
224
|
+
> **Docs:** [Treemap](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/treemap-chart)
|
|
225
|
+
|
|
226
|
+
Use Treemap for hierarchical, weighted, part-to-whole data. Always call `get_doc("treemap-chart")` before writing markup because hierarchy binding, member paths, and layout options are component-specific.
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Geographic Map
|
|
231
|
+
|
|
232
|
+
> **Docs:** [Geographic Map](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/geo-map-type-scatter-area-series)
|
|
233
|
+
|
|
234
|
+
Use Geographic Map for map backgrounds, shape files, geographic points, bubbles, and marker layers. Do not adapt Data Chart axis or series examples to maps unless the Blazor Geographic Map docs explicitly show the same API.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Gauges
|
|
239
|
+
|
|
240
|
+
> **Docs:** [Radial Gauge](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/radial-gauge), [Linear Gauge](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/linear-gauge), [Bullet Graph](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/bullet-graph)
|
|
241
|
+
|
|
242
|
+
Use gauges for KPI values, ranges, thresholds, progress-style numeric summaries, and bullet comparisons. Select the exact gauge doc first, then use the MCP-documented property names for ranges, labels, scale, and value binding.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Dashboard Tile
|
|
247
|
+
|
|
248
|
+
> **Docs:** [Dashboard Tile](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/dashboard-tile)
|
|
249
|
+
|
|
250
|
+
Use Dashboard Tile when the requested component should infer or render compact dashboard visualizations from bound data. Verify supported chart modes and binding shape with MCP before producing code.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Common Chart Features
|
|
255
|
+
|
|
256
|
+
### Legends
|
|
257
|
+
|
|
258
|
+
```razor
|
|
259
|
+
<IgbLegend @ref="Legend" Orientation="LandmarkOrientation.Horizontal" />
|
|
260
|
+
<IgbCategoryChart DataSource="Data" Legend="Legend" />
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Tooltips
|
|
264
|
+
|
|
265
|
+
```razor
|
|
266
|
+
<IgbCategoryChart IsDefaultTooltipEnabled="true" />
|
|
267
|
+
<!-- Or custom tooltip via ToolTipTemplate slot -->
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Animations
|
|
271
|
+
|
|
272
|
+
```razor
|
|
273
|
+
<IgbCategoryChart IsTransitionInEnabled="true" TransitionInDuration="1000" />
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Highlighting
|
|
277
|
+
|
|
278
|
+
```razor
|
|
279
|
+
<IgbCategoryChart IsSeriesHighlightingEnabled="true"
|
|
280
|
+
HighlightingBehavior="SeriesHighlightingBehavior.BrightenSpecificItemsAndDarkenOthers" />
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Zooming and Panning
|
|
284
|
+
|
|
285
|
+
```razor
|
|
286
|
+
<IgbCategoryChart IsHorizontalZoomEnabled="true"
|
|
287
|
+
IsVerticalZoomEnabled="false"
|
|
288
|
+
CrosshairsDisplayMode="CrosshairsDisplayMode.Both" />
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Key Rules
|
|
294
|
+
|
|
295
|
+
1. **`IgbCategoryChart` is the fastest path for standard charts.** It auto-generates series from data. Use `IgbDataChart` only when you need multiple series types, custom axes, or advanced features.
|
|
296
|
+
2. **`IgbDataChart` requires one module per series category.** Check `get_doc` for the exact module name.
|
|
297
|
+
3. **Financial chart data must have `Open`, `High`, `Low`, `Close` fields.** If the data model is different, the chart will not render correctly.
|
|
298
|
+
4. **Always set explicit `Width` and `Height` on charts.** Charts do not auto-size to their container without a height.
|
|
299
|
+
5. **`IgbDataChart` series must match axes by name.** The `XAxisName` / `YAxisName` on each series must match the `Name` attribute of the axis component.
|
|
300
|
+
6. **`IncludedProperties` and `ExcludedProperties` are `string[]` arrays.** Bind with `@(new string[] { "Prop1", "Prop2" })`. Do not pass a plain string.
|
|
301
|
+
7. **`CategoryChartType.Bar` does not exist.** Use `Column` for vertical bars in `IgbCategoryChart`. For horizontal bars, use `IgbDataChart` with `IgbBarSeries`.
|
|
302
|
+
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.
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# Data Display Components
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
|
|
4
|
+
> For project setup and module registration - see [`setup.md`](./setup.md).
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- [Button & Button Group](#button--button-group)
|
|
9
|
+
- [Icon & Icon Button](#icon--icon-button)
|
|
10
|
+
- [Card](#card)
|
|
11
|
+
- [Carousel](#carousel)
|
|
12
|
+
- [List](#list)
|
|
13
|
+
- [Avatar](#avatar)
|
|
14
|
+
- [Badge](#badge)
|
|
15
|
+
- [Chip](#chip)
|
|
16
|
+
- [Circular Progress](#circular-progress)
|
|
17
|
+
- [Linear Progress](#linear-progress)
|
|
18
|
+
- [Dropdown](#dropdown)
|
|
19
|
+
- [Tooltip](#tooltip)
|
|
20
|
+
- [Ripple](#ripple)
|
|
21
|
+
- [Key Rules](#key-rules)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Overview
|
|
26
|
+
This reference gives high-level guidance on data display and action components, their key features, and common API members. For detailed documentation, call `get_doc` from `igniteui-cli`; use `search_api` and `get_api_reference` for Blazor API details.
|
|
27
|
+
|
|
28
|
+
## Button & Button Group
|
|
29
|
+
|
|
30
|
+
> **Docs:** [Button](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/button), [Button Group](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/button-group)
|
|
31
|
+
|
|
32
|
+
```csharp
|
|
33
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbButtonModule), typeof(IgbButtonGroupModule));
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```razor
|
|
37
|
+
<!-- Button variants -->
|
|
38
|
+
<IgbButton Variant="@ButtonVariant.Contained" @onclick="Save">Save</IgbButton>
|
|
39
|
+
<IgbButton Variant="@ButtonVariant.Outlined" @onclick="Cancel">Cancel</IgbButton>
|
|
40
|
+
<IgbButton Variant="@ButtonVariant.Flat">Flat</IgbButton>
|
|
41
|
+
|
|
42
|
+
<!-- Button Group (toggle buttons) -->
|
|
43
|
+
<IgbButtonGroup Selection="ButtonGroupSelection.Single">
|
|
44
|
+
<IgbToggleButton Value="left">Left</IgbToggleButton>
|
|
45
|
+
<IgbToggleButton Value="center" Selected="true">Center</IgbToggleButton>
|
|
46
|
+
<IgbToggleButton Value="right">Right</IgbToggleButton>
|
|
47
|
+
</IgbButtonGroup>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Key attributes on `IgbButton`: `Variant` (`ButtonVariant.Contained` / `Outlined` / `Flat` / `Fab`), `Disabled`, `DisplayType` (`ButtonBaseType.Button` / `Submit` / `Reset`), `Href` (renders as `<a>`).
|
|
51
|
+
|
|
52
|
+
Key attributes on `IgbButtonGroup`: `Selection` (`ButtonGroupSelection.Single` / `SingleRequired` / `Multiple`), `Alignment` (`ContentOrientation.Horizontal` / `ContentOrientation.Vertical`).
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Icon & Icon Button
|
|
57
|
+
|
|
58
|
+
> **Docs:** [Icon](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/icon), [Icon Button](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/icon-button)
|
|
59
|
+
|
|
60
|
+
```csharp
|
|
61
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbIconModule), typeof(IgbIconButtonModule));
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```razor
|
|
65
|
+
<IgbIcon @ref="MyIcon" IconName="home" Collection="material" />
|
|
66
|
+
<IgbIconButton @ref="MenuBtn" IconName="menu" Collection="material" Variant="@IconButtonVariant.Flat" />
|
|
67
|
+
|
|
68
|
+
@code {
|
|
69
|
+
IgbIcon MyIcon { get; set; }
|
|
70
|
+
IgbIconButton MenuBtn { get; set; }
|
|
71
|
+
|
|
72
|
+
protected override async Task OnAfterRenderAsync(bool firstRender)
|
|
73
|
+
{
|
|
74
|
+
if (firstRender && MyIcon != null)
|
|
75
|
+
{
|
|
76
|
+
await MyIcon.EnsureReady();
|
|
77
|
+
string svg = "<svg>...</svg>";
|
|
78
|
+
await MyIcon.RegisterIconFromTextAsync("home", svg, "material");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Key attributes: `IconName`, `Collection`, `Mirrored` (for RTL). Size is controlled via CSS `--ig-size: var(--ig-size-small | --ig-size-medium | --ig-size-large)`.
|
|
85
|
+
|
|
86
|
+
> **AGENT INSTRUCTION - Icon Registration:** Icons are registered by name+collection. Registration must happen in `OnAfterRenderAsync(bool firstRender)` after calling `EnsureReady()`. Re-use the same collection name across the app for consistency.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Card
|
|
91
|
+
|
|
92
|
+
> **Docs:** [Card](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/card)
|
|
93
|
+
|
|
94
|
+
```csharp
|
|
95
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbCardModule));
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```razor
|
|
99
|
+
<IgbCard style="width: 350px;">
|
|
100
|
+
<IgbCardMedia>
|
|
101
|
+
<img src="photo.jpg" alt="Card image" />
|
|
102
|
+
</IgbCardMedia>
|
|
103
|
+
<IgbCardHeader>
|
|
104
|
+
<h3 slot="title">Jane Doe</h3>
|
|
105
|
+
<span slot="subtitle">Photographer</span>
|
|
106
|
+
</IgbCardHeader>
|
|
107
|
+
<IgbCardContent>
|
|
108
|
+
<p>A short description of Jane Doe.</p>
|
|
109
|
+
</IgbCardContent>
|
|
110
|
+
<IgbCardActions>
|
|
111
|
+
<IgbButton slot="start" Variant="@ButtonVariant.Flat">Like</IgbButton>
|
|
112
|
+
<IgbButton slot="start" Variant="@ButtonVariant.Flat">Share</IgbButton>
|
|
113
|
+
</IgbCardActions>
|
|
114
|
+
</IgbCard>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Sub-components: `IgbCardMedia`, `IgbCardHeader`, `IgbCardContent`, `IgbCardActions`. Slots on `IgbCardHeader`: `thumbnail`, `title`, `subtitle`.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Carousel
|
|
122
|
+
|
|
123
|
+
> **Docs:** [Carousel](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/carousel)
|
|
124
|
+
|
|
125
|
+
```csharp
|
|
126
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbCarouselModule));
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
```razor
|
|
130
|
+
<IgbCarousel>
|
|
131
|
+
<IgbCarouselSlide Active="true">
|
|
132
|
+
<img src="slide-1.jpg" alt="Slide 1" />
|
|
133
|
+
</IgbCarouselSlide>
|
|
134
|
+
<IgbCarouselSlide>
|
|
135
|
+
<img src="slide-2.jpg" alt="Slide 2" />
|
|
136
|
+
</IgbCarouselSlide>
|
|
137
|
+
</IgbCarousel>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Use Carousel for image/content slides, banners, onboarding panels, or media galleries. Check the `carousel` MCP doc for current slide APIs, navigation controls, indicators, autoplay, animation, and CSS parts.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## List
|
|
145
|
+
|
|
146
|
+
> **Docs:** [List](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/grids/list)
|
|
147
|
+
|
|
148
|
+
```csharp
|
|
149
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbListModule), typeof(IgbListItemModule), typeof(IgbListHeaderModule));
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```razor
|
|
153
|
+
<IgbList>
|
|
154
|
+
<IgbListHeader>Contacts</IgbListHeader>
|
|
155
|
+
@foreach (var contact in Contacts)
|
|
156
|
+
{
|
|
157
|
+
<IgbListItem>
|
|
158
|
+
<IgbAvatar slot="start" Shape="@AvatarShape.Circle">@contact.Initials</IgbAvatar>
|
|
159
|
+
<span slot="title">@contact.Name</span>
|
|
160
|
+
<span slot="subtitle">@contact.Phone</span>
|
|
161
|
+
<IgbIconButton slot="end" IconName="delete" Collection="material" />
|
|
162
|
+
</IgbListItem>
|
|
163
|
+
}
|
|
164
|
+
</IgbList>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Slots on `IgbListItem`: `start`, `end`, `title`, `subtitle`.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Avatar
|
|
172
|
+
|
|
173
|
+
> **Docs:** [Avatar](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/avatar)
|
|
174
|
+
|
|
175
|
+
```csharp
|
|
176
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbAvatarModule));
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
```razor
|
|
180
|
+
<!-- Image avatar -->
|
|
181
|
+
<IgbAvatar Src="avatar.png" Alt="User photo" Shape="@AvatarShape.Circle" />
|
|
182
|
+
|
|
183
|
+
<!-- Initials avatar -->
|
|
184
|
+
<IgbAvatar Shape="@AvatarShape.Circle">AB</IgbAvatar>
|
|
185
|
+
|
|
186
|
+
<!-- Icon avatar -->
|
|
187
|
+
<IgbAvatar Shape="@AvatarShape.Square">
|
|
188
|
+
<IgbIcon IconName="person" Collection="material" />
|
|
189
|
+
</IgbAvatar>
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Key attributes: `Src`, `Alt`, `Initials`, `Shape` (`AvatarShape.Circle` / `Square` / `Rounded`). Size is controlled via CSS `--ig-size: var(--ig-size-small | --ig-size-medium | --ig-size-large)`.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Badge
|
|
197
|
+
|
|
198
|
+
> **Docs:** [Badge](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/badge)
|
|
199
|
+
|
|
200
|
+
```csharp
|
|
201
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbBadgeModule));
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
```razor
|
|
205
|
+
<IgbBadge Variant="@BadgeVariant.Primary">5</IgbBadge>
|
|
206
|
+
<IgbBadge Variant="@BadgeVariant.Danger" Shape="@BadgeShape.Dot" />
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Key attributes: `Variant` (`BadgeVariant.Primary` / `Info` / `Success` / `Warning` / `Danger`), `Shape` (`BadgeShape.Rounded` / `Square` / `Dot`), `Outlined`.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Chip
|
|
214
|
+
|
|
215
|
+
> **Docs:** [Chip](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/chip)
|
|
216
|
+
|
|
217
|
+
```csharp
|
|
218
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbChipModule));
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
```razor
|
|
222
|
+
<IgbChip Selectable="true" Removable="true" Remove="OnChipRemoved">
|
|
223
|
+
<IgbIcon slot="start" IconName="star" Collection="material" />
|
|
224
|
+
Blazor
|
|
225
|
+
</IgbChip>
|
|
226
|
+
|
|
227
|
+
@code {
|
|
228
|
+
void OnChipRemoved(IgbComponentBoolValueChangedEventArgs e) { /* handle removal */ }
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Key attributes: `Selectable`, `Selected`, `Removable`, `Disabled`, `Variant` (`ChipVariant.Primary` / `Info` / `Success` / `Warning` / `Danger`).
|
|
233
|
+
|
|
234
|
+
Slots: `start`, `end` (prefix/suffix icons).
|
|
235
|
+
|
|
236
|
+
Events: `Select`, `Remove`.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Circular Progress
|
|
241
|
+
|
|
242
|
+
> **Docs:** [Circular Progress](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/circular-progress)
|
|
243
|
+
|
|
244
|
+
```csharp
|
|
245
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbCircularProgressModule));
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
```razor
|
|
249
|
+
<!-- Determinate -->
|
|
250
|
+
<IgbCircularProgress Value="65" Max="100">
|
|
251
|
+
<span slot="default">65%</span>
|
|
252
|
+
</IgbCircularProgress>
|
|
253
|
+
|
|
254
|
+
<!-- Indeterminate (spinner) -->
|
|
255
|
+
<IgbCircularProgress Indeterminate="true" />
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Key attributes: `Value`, `Max`, `Indeterminate`, `AnimationDuration`, `Variant` (`ProgressBaseVariant.Primary` / `Info` / `Success` / `Warning` / `Danger`).
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Linear Progress
|
|
263
|
+
|
|
264
|
+
> **Docs:** [Linear Progress](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/linear-progress)
|
|
265
|
+
|
|
266
|
+
```csharp
|
|
267
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbLinearProgressModule));
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
```razor
|
|
271
|
+
<IgbLinearProgress Value="42" Max="100" Striped="true" />
|
|
272
|
+
<IgbLinearProgress Indeterminate="true" />
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Key attributes: `Value`, `Max`, `Indeterminate`, `Striped`, `Variant`, `LabelAlign` (`LinearProgressLabelAlign.TopStart` / `Top` / `TopEnd` / `BottomStart` / `Bottom` / `BottomEnd`).
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Dropdown
|
|
280
|
+
|
|
281
|
+
> **Docs:** [Dropdown](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/dropdown)
|
|
282
|
+
|
|
283
|
+
```csharp
|
|
284
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDropdownModule));
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
```razor
|
|
288
|
+
<div>
|
|
289
|
+
<IgbDropdown>
|
|
290
|
+
<IgbButton slot="target">Options</IgbButton>
|
|
291
|
+
<IgbDropdownHeader>Actions</IgbDropdownHeader>
|
|
292
|
+
<IgbDropdownItem Value="edit">Edit</IgbDropdownItem>
|
|
293
|
+
<IgbDropdownItem Value="delete">Delete</IgbDropdownItem>
|
|
294
|
+
<IgbDropdownItem Value="disabled" Disabled="true">Archive</IgbDropdownItem>
|
|
295
|
+
</IgbDropdown>
|
|
296
|
+
</div>
|
|
297
|
+
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Key attributes on `IgbDropdown`: `Placement` (`PopoverPlacement.*`), `Flip`, `Distance`, `SameWidth`, `KeepOpenOnOutsideClick`, `KeepOpenOnSelect`. Key attributes on `IgbDropdownItem`: `Value`, `Selected`, `Disabled`. Events on `IgbDropdown`: `Opening`, `Opened`, `Closing`, `Closed`, `Change`.
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## Tooltip
|
|
305
|
+
|
|
306
|
+
> **Docs:** [Tooltip](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/tooltip)
|
|
307
|
+
|
|
308
|
+
```csharp
|
|
309
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbTooltipModule));
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
```razor
|
|
313
|
+
<IgbButton id="hover-button">Hover me</IgbButton>
|
|
314
|
+
<IgbTooltip Anchor="hover-button" Placement="@PopoverPlacement.Top">
|
|
315
|
+
This is a tooltip
|
|
316
|
+
</IgbTooltip>
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Key attributes: `Anchor` (target element ID string), `Placement` (`PopoverPlacement.Top` / `Bottom` / `Left` / `Right` and start/end variants), `ShowDelay`, `HideDelay`, `ShowTriggers`, `HideTriggers`, `Sticky`, `WithArrow`, `Open`.
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
## Ripple
|
|
324
|
+
|
|
325
|
+
> **Docs:** [Ripple](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/ripple)
|
|
326
|
+
|
|
327
|
+
```csharp
|
|
328
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbRippleModule));
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Attach to any element with the `igcRipple` attribute or nest `IgbRipple` inside a container:
|
|
332
|
+
|
|
333
|
+
```razor
|
|
334
|
+
<div style="position: relative; padding: 16px; cursor: pointer;">
|
|
335
|
+
Click me
|
|
336
|
+
<IgbRipple />
|
|
337
|
+
</div>
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
CSS part: `base`. Customize color via `--color` CSS custom property.
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Key Rules
|
|
345
|
+
|
|
346
|
+
1. **Register each module explicitly.** `IgbButtonModule` and `IgbIconButtonModule` are separate modules.
|
|
347
|
+
2. **Icons must be registered before they display.** Use `EnsureReady()` + `RegisterIconFromTextAsync()` in `OnAfterRenderAsync(bool firstRender)`.
|
|
348
|
+
3. **`IgbCard` does not set a default width.** Always set a width via inline style or CSS class.
|
|
349
|
+
4. **Prefer the Dropdown `target` slot for the trigger.** For an external trigger, follow the current `dropdown` MCP doc and call `Show()`, `Hide()`, or `Toggle()` on the dropdown reference.
|
|
350
|
+
5. **`IgbTooltip.Anchor` uses the target element ID string in the documented Blazor pattern.** Give the target an `id` and pass that same value to `Anchor`.
|