igniteui-cli 15.1.0-beta.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 +4 -14
- package/lib/PromptSession.js +12 -96
- package/lib/cli.js +1 -9
- package/lib/commands/add.js +6 -6
- package/lib/commands/ai-config.d.ts +9 -3
- package/lib/commands/ai-config.js +150 -19
- package/lib/commands/build.js +2 -2
- package/lib/commands/generate.js +4 -4
- package/lib/commands/list.js +7 -6
- package/lib/commands/mcp.js +0 -1
- package/lib/commands/new.js +23 -10
- package/lib/commands/start.js +0 -1
- package/lib/commands/types.d.ts +0 -2
- package/lib/commands/upgrade.js +2 -2
- 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
- package/templates/react/igr-ts/grid/basic/index.js +1 -1
- package/templates/react/igr-ts/grid/index.js +2 -2
- package/templates/react/igr-ts/projects/_base/files/package.json +1 -1
- package/templates/react/igr-ts/projects/ai-config/index.d.ts +22 -0
- package/templates/react/igr-ts/projects/ai-config/index.js +74 -0
- package/templates/webcomponents/igc-ts/dock-manager/default/index.js +1 -1
- package/templates/webcomponents/igc-ts/projects/_base/files/package.json +1 -1
- package/templates/webcomponents/igc-ts/projects/_base_with_home/files/package.json +2 -2
- package/templates/webcomponents/igc-ts/projects/ai-config/index.d.ts +22 -0
- package/templates/webcomponents/igc-ts/projects/ai-config/index.js +62 -0
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/CLAUDE.md +0 -3
- package/templates/react/igr-ts/projects/_base/files/__dot__github/copilot-instructions.md +0 -3
- package/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/CLAUDE.md +0 -3
- package/templates/webcomponents/igc-ts/projects/_base/files/__dot__github/copilot-instructions.md +0 -3
- /package/templates/react/igr-ts/projects/{_base → ai-config}/files/AGENTS.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/README.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/SKILL.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/CHARTS-GRIDS.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/COMPONENT-CATALOGUE.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/EVENT-HANDLING.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/INSTALLATION.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/JSX-PATTERNS.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/MCP-SERVER.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/REFS-FORMS.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-components/reference/TROUBLESHOOTING.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/SKILL.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/reference/CSS-THEMING.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/reference/MCP-SERVER.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-customize-theme/reference/TROUBLESHOOTING.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-generate-from-image-design/SKILL.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-generate-from-image-design/reference/component-mapping.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-generate-from-image-design/reference/gotchas.md +0 -0
- /package/templates/react/igr-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-react-optimize-bundle-size/SKILL.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base → ai-config}/files/AGENTS.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/README.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-choose-components/SKILL.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-choose-components/reference/mcp-setup.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-customize-component-theme/SKILL.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-generate-from-image-design/SKILL.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-generate-from-image-design/references/component-mapping.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/SKILL.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/angular.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/react.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-integrate-with-framework/references/vue.md +0 -0
- /package/templates/webcomponents/igc-ts/projects/{_base/files/__dot__claude → ai-config/files}/skills/igniteui-wc-optimize-bundle-size/SKILL.md +0 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Feedback & Overlay 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
|
+
- [Dialog](#dialog)
|
|
9
|
+
- [Snackbar](#snackbar)
|
|
10
|
+
- [Toast](#toast)
|
|
11
|
+
- [Banner](#banner)
|
|
12
|
+
- [Key Rules](#key-rules)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
This reference gives high-level guidance on feedback and overlay 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.
|
|
18
|
+
|
|
19
|
+
## Dialog
|
|
20
|
+
|
|
21
|
+
> **Docs:** [Dialog](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/notifications/dialog)
|
|
22
|
+
|
|
23
|
+
```csharp
|
|
24
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDialogModule));
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```razor
|
|
28
|
+
<IgbButton @onclick="OpenDialog">Open Dialog</IgbButton>
|
|
29
|
+
|
|
30
|
+
<IgbDialog @ref="ConfirmDialog"
|
|
31
|
+
Title="Delete Item"
|
|
32
|
+
KeepOpenOnEscape="false"
|
|
33
|
+
CloseOnOutsideClick="false">
|
|
34
|
+
<p>Are you sure you want to delete this item? This action cannot be undone.</p>
|
|
35
|
+
<IgbButton slot="footer" Variant="@ButtonVariant.Flat" @onclick="CloseDialog">Cancel</IgbButton>
|
|
36
|
+
<IgbButton slot="footer" Variant="@ButtonVariant.Contained" @onclick="ConfirmDelete">Delete</IgbButton>
|
|
37
|
+
</IgbDialog>
|
|
38
|
+
|
|
39
|
+
@code {
|
|
40
|
+
public IgbDialog ConfirmDialog { get; set; }
|
|
41
|
+
|
|
42
|
+
Task OpenDialog() => ConfirmDialog.ShowAsync();
|
|
43
|
+
Task CloseDialog() => ConfirmDialog.HideAsync();
|
|
44
|
+
|
|
45
|
+
async Task ConfirmDelete()
|
|
46
|
+
{
|
|
47
|
+
await ConfirmDialog.HideAsync();
|
|
48
|
+
// perform delete
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Key attributes: `Title`, `KeepOpenOnEscape` (default: `false`; set `true` to prevent closing on ESC), `CloseOnOutsideClick` (default: `false`), `Open`, `HideDefaultAction`.
|
|
54
|
+
|
|
55
|
+
Slots: `footer` (action buttons). The default slot is the dialog body.
|
|
56
|
+
|
|
57
|
+
Methods: `ShowAsync()`, `HideAsync()`, `ToggleAsync()`.
|
|
58
|
+
|
|
59
|
+
Events: `Opening` (cancellable), `Opened`, `Closing` (cancellable), `Closed`.
|
|
60
|
+
|
|
61
|
+
CSS parts: `base`, `title`, `footer`, `content`.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Snackbar
|
|
66
|
+
|
|
67
|
+
> **Docs:** [Snackbar](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/notifications/snackbar)
|
|
68
|
+
|
|
69
|
+
```csharp
|
|
70
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbSnackbarModule));
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```razor
|
|
74
|
+
<IgbButton @onclick="ShowMessage">Save</IgbButton>
|
|
75
|
+
|
|
76
|
+
<IgbSnackbar @ref="Snack"
|
|
77
|
+
DisplayTime="3000"
|
|
78
|
+
ActionText="Undo"
|
|
79
|
+
Action="OnUndo">
|
|
80
|
+
Changes saved successfully.
|
|
81
|
+
</IgbSnackbar>
|
|
82
|
+
|
|
83
|
+
@code {
|
|
84
|
+
IgbSnackbar Snack { get; set; }
|
|
85
|
+
|
|
86
|
+
async Task ShowMessage()
|
|
87
|
+
{
|
|
88
|
+
await Snack.ShowAsync();
|
|
89
|
+
// or use JS interop shortcut: id="snackbar" + onclick="snackbar.show()"
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
void OnUndo(IgbVoidEventArgs e) { /* undo logic */ }
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Key attributes: `DisplayTime` (ms, default 4000; 0 keeps it open), `KeepOpen` (overrides `DisplayTime`), `ActionText` (text for the action button).
|
|
97
|
+
|
|
98
|
+
Methods: `ShowAsync()`, `HideAsync()`.
|
|
99
|
+
|
|
100
|
+
Events: `Action` - fires when the action button is clicked.
|
|
101
|
+
|
|
102
|
+
CSS parts: `base`, `message`, `action`, `action-container`.
|
|
103
|
+
|
|
104
|
+
> **TIP - JS interop shortcut:** Add `id="snackbar"` to `IgbSnackbar` and `onclick="snackbar.show()"` to the trigger button as a lightweight alternative when you don't need C# event handling.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Toast
|
|
109
|
+
|
|
110
|
+
> **Docs:** [Toast](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/notifications/toast)
|
|
111
|
+
|
|
112
|
+
```csharp
|
|
113
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbToastModule));
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
```razor
|
|
117
|
+
<IgbButton @onclick="ShowToast">Show Toast</IgbButton>
|
|
118
|
+
|
|
119
|
+
<IgbToast @ref="ToastRef" DisplayTime="4000">
|
|
120
|
+
Operation completed successfully.
|
|
121
|
+
</IgbToast>
|
|
122
|
+
|
|
123
|
+
@code {
|
|
124
|
+
IgbToast ToastRef { get; set; }
|
|
125
|
+
Task ShowToast() => ToastRef.ShowAsync();
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Key attributes: `DisplayTime` (ms), `KeepOpen`.
|
|
130
|
+
|
|
131
|
+
Methods: `ShowAsync()`, `HideAsync()`.
|
|
132
|
+
|
|
133
|
+
> **AGENT INSTRUCTION - Toast vs Snackbar:** `IgbToast` is a simple auto-dismissing notification with no action button. Use `IgbSnackbar` when you need an action button (e.g., "Undo"). Check the doc via `get_doc` for the current difference, as these components evolve.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Banner
|
|
138
|
+
|
|
139
|
+
> **Docs:** [Banner](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/notifications/banner)
|
|
140
|
+
|
|
141
|
+
```csharp
|
|
142
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbBannerModule));
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
```razor
|
|
146
|
+
<IgbBanner @ref="BannerRef">
|
|
147
|
+
<IgbIcon slot="illustration" IconName="wifi_off" Collection="material" />
|
|
148
|
+
You are currently offline.
|
|
149
|
+
<IgbButton slot="actions" @onclick="RetryConnection">Retry</IgbButton>
|
|
150
|
+
</IgbBanner>
|
|
151
|
+
|
|
152
|
+
<IgbButton @onclick="ShowBanner">Show Banner</IgbButton>
|
|
153
|
+
|
|
154
|
+
@code {
|
|
155
|
+
IgbBanner BannerRef { get; set; }
|
|
156
|
+
Task ShowBanner() => BannerRef.ShowAsync();
|
|
157
|
+
void RetryConnection() { /* retry logic */ }
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Slots: `illustration` (icon or image), `actions` (buttons shown at the right or bottom). Default slot = message text.
|
|
162
|
+
|
|
163
|
+
Methods: `ShowAsync()`, `HideAsync()`, `ToggleAsync()`.
|
|
164
|
+
|
|
165
|
+
Events: `Opening` (cancellable), `Opened`, `Closing` (cancellable), `Closed`.
|
|
166
|
+
|
|
167
|
+
CSS parts: `spacer`, `message`, `illustration`, `actions`.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Key Rules
|
|
172
|
+
|
|
173
|
+
1. **Use `@ref` to obtain a component reference**, then call `ShowAsync()` / `HideAsync()` on it from C# code.
|
|
174
|
+
2. **`IgbDialog.KeepOpenOnEscape` is `false` by default** - meaning the dialog closes when the user presses ESC. Set it to `true` to prevent ESC from closing the dialog (forcing users to use your footer buttons).
|
|
175
|
+
3. **`IgbDialog.CloseOnOutsideClick` is `false` by default** - set it to `true` for light-dismiss dialogs.
|
|
176
|
+
4. **`IgbSnackbar.DisplayTime="0"` keeps it open until `HideAsync()` is called.** Use `KeepOpen` for the same effect.
|
|
177
|
+
5. **Footer buttons in `IgbDialog` must use `slot="footer"`.** Without the slot, they render in the body.
|
|
178
|
+
6. **`IgbBanner` is inline** (pushes content down) while `IgbDialog` is a modal overlay. Use banners for persistent, low-urgency messages and dialogs for confirmations or blocking actions.
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
# Form Controls & EditForm Integration
|
|
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
|
+
- [Input](#input)
|
|
9
|
+
- [Combo Box](#combo-box)
|
|
10
|
+
- [Select](#select)
|
|
11
|
+
- [Date Picker](#date-picker)
|
|
12
|
+
- [Date Range Picker](#date-range-picker)
|
|
13
|
+
- [Calendar](#calendar)
|
|
14
|
+
- [Date Time Input](#date-time-input)
|
|
15
|
+
- [Mask Input](#mask-input)
|
|
16
|
+
- [Checkbox](#checkbox)
|
|
17
|
+
- [Radio / Radio Group](#radio--radio-group)
|
|
18
|
+
- [Switch](#switch)
|
|
19
|
+
- [Slider / Range Slider](#slider--range-slider)
|
|
20
|
+
- [Rating](#rating)
|
|
21
|
+
- [Form & Binding Notes](#form--binding-notes)
|
|
22
|
+
- [Key Rules](#key-rules)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
This reference gives high-level guidance on form controls, 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.
|
|
28
|
+
|
|
29
|
+
## Input
|
|
30
|
+
|
|
31
|
+
> **Docs:** [Input](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/input)
|
|
32
|
+
|
|
33
|
+
```csharp
|
|
34
|
+
// Program.cs
|
|
35
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbInputModule));
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```razor
|
|
39
|
+
<IgbInput @bind-Value="UserName" Label="Username" Placeholder="e.g. John Doe">
|
|
40
|
+
<span slot="prefix">User</span>
|
|
41
|
+
</IgbInput>
|
|
42
|
+
|
|
43
|
+
@code {
|
|
44
|
+
string UserName { get; set; } = "";
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Key attributes: `Label`, `Placeholder`, `DisplayType` (`InputType.Text / Email / Password / Tel / Number`), `Required`, `Disabled`, `Readonly`, `MinLength`, `MaxLength`.
|
|
49
|
+
|
|
50
|
+
Slots: `prefix`, `suffix`, `helper-text`.
|
|
51
|
+
|
|
52
|
+
> **AGENT INSTRUCTION - Icons in slots:** Always use `IgbIcon` in `prefix`/`suffix` slots, never `<span class="material-icons">`. Font spans are `display: inline` so `vertical-align` is ignored inside the slot's flex context - the icon floats to the top. `IgbIcon` (`igc-icon`) is `display: inline-flex; align-items: center` and self-centers automatically. Register the icon in `OnAfterRenderAsync(firstRender)` after `EnsureReady()`.
|
|
53
|
+
|
|
54
|
+
Events: `IgbInput` (fires while typing), `Change` (fires on commit/blur).
|
|
55
|
+
|
|
56
|
+
> **AGENT INSTRUCTION:** `IgbInput` has **no** `GetValueAsync()` method. Read values via the synchronous `Value` property or, preferably, use `@bind-Value` bound directly to a model property - that is the correct Blazor pattern and avoids the need to imperatively read the value at all.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Combo Box
|
|
61
|
+
|
|
62
|
+
> **Docs:** [Combo Box](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/combo/overview)
|
|
63
|
+
|
|
64
|
+
```csharp
|
|
65
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbComboModule));
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```razor
|
|
69
|
+
<IgbCombo T="string"
|
|
70
|
+
Data="Cities"
|
|
71
|
+
ValueKey="Id"
|
|
72
|
+
DisplayKey="Name"
|
|
73
|
+
Label="Select Cities"
|
|
74
|
+
Placeholder="Pick a city" />
|
|
75
|
+
|
|
76
|
+
@code {
|
|
77
|
+
private List<City> Cities = SampleData.Cities;
|
|
78
|
+
|
|
79
|
+
record City(string Id, string Name, string Country);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Key attributes: `Data`, `ValueKey` (required for complex objects), `DisplayKey`, `T` (type parameter - must match `ValueKey` property type or `"object"` if no `ValueKey`), `Label`, `Placeholder`, `SingleSelect` (for single-selection mode), `Disabled`, `Required`.
|
|
84
|
+
|
|
85
|
+
Events: `Opening`, `Opened`, `Closing`, `Closed`, `SelectionChanging`.
|
|
86
|
+
|
|
87
|
+
> **AGENT INSTRUCTION:** `IgbCombo` does **not** work inside a standard HTML `<form>`. Use `<EditForm>` with `@bind-Value` instead.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Select
|
|
92
|
+
|
|
93
|
+
> **Docs:** [Select](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/select)
|
|
94
|
+
|
|
95
|
+
```csharp
|
|
96
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbSelectModule));
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
```razor
|
|
100
|
+
<IgbSelect Label="Fruit" Placeholder="Choose a fruit">
|
|
101
|
+
<IgbSelectItem Value="apple">Apple</IgbSelectItem>
|
|
102
|
+
<IgbSelectItem Value="orange">Orange</IgbSelectItem>
|
|
103
|
+
<IgbSelectItem Value="banana">Banana</IgbSelectItem>
|
|
104
|
+
</IgbSelect>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
For grouped options use `IgbSelectHeader` and `IgbSelectGroup`. Key attributes on `IgbSelect`: `Label`, `Placeholder`, `Outlined`, `Disabled`, `Required`, `Name`. On `IgbSelectItem`: `Value`, `Selected`, `Disabled`.
|
|
108
|
+
|
|
109
|
+
Slots on `IgbSelect`: `header`, `footer`, `helper-text`, `prefix`, `suffix`, `toggle-icon`.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## Date Picker
|
|
114
|
+
|
|
115
|
+
> **Docs:** [Date Picker](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/scheduling/date-picker)
|
|
116
|
+
|
|
117
|
+
```csharp
|
|
118
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDatePickerModule));
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
```razor
|
|
122
|
+
<IgbDatePicker @ref="Picker" Value="@SelectedDate" />
|
|
123
|
+
|
|
124
|
+
@code {
|
|
125
|
+
public IgbDatePicker Picker { get; set; }
|
|
126
|
+
public DateTime SelectedDate { get; set; } = DateTime.Today;
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Key attributes: `Value` (DateTime), `Min`, `Max`, `InputFormat`, `DisplayFormat`, `Locale`, `Mode` (`PickerMode.Dropdown` / `PickerMode.Dialog`), `ShowWeekNumbers`, `WeekStart`, `Disabled`, `Required`.
|
|
131
|
+
|
|
132
|
+
Slots: `calendar`, `clear`, `prefix`, `suffix`, `actions` (custom footer buttons).
|
|
133
|
+
|
|
134
|
+
Methods: `StepUp(DatePart)`, `StepDown(DatePart)`, `Clear()`, `Show()`, `Hide()`, `Toggle()`.
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Date Range Picker
|
|
139
|
+
|
|
140
|
+
> **Docs:** [Date Range Picker](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/scheduling/date-range-picker)
|
|
141
|
+
|
|
142
|
+
```csharp
|
|
143
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDateRangePickerModule));
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
```razor
|
|
147
|
+
<IgbDateRangePicker @ref="RangePicker" />
|
|
148
|
+
|
|
149
|
+
@code {
|
|
150
|
+
public IgbDateRangePicker RangePicker { get; set; }
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Returns a start and end `DateTime`. Key attributes: `Min`, `Max`, `InputFormat`, `Locale`, `Mode`.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Calendar
|
|
159
|
+
|
|
160
|
+
> **Docs:** [Calendar](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/scheduling/calendar)
|
|
161
|
+
|
|
162
|
+
```csharp
|
|
163
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbCalendarModule));
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```razor
|
|
167
|
+
<IgbCalendar />
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Use Calendar when the UI needs an always-visible date picker rather than an input/dropdown picker. For multiple selection, range selection, special dates, disabled dates, visible months, week numbers, and localization, use the exact property names from the `calendar` MCP doc before writing markup.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Date Time Input
|
|
175
|
+
|
|
176
|
+
> **Docs:** [Date Time Input](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/date-time-input)
|
|
177
|
+
|
|
178
|
+
```csharp
|
|
179
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbDateTimeInputModule));
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```razor
|
|
183
|
+
<IgbDateTimeInput @bind-Value="SelectedDateTime"
|
|
184
|
+
InputFormat="MM/dd/yyyy HH:mm"
|
|
185
|
+
SpinLoop="true" />
|
|
186
|
+
|
|
187
|
+
@code {
|
|
188
|
+
public DateTime? SelectedDateTime { get; set; } = DateTime.Now;
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Key attributes: `Value` (DateTime?), `InputFormat`, `DisplayFormat`, `Min`, `Max`, `MinutesStep`, `SpinLoop`.
|
|
193
|
+
|
|
194
|
+
Methods: `StepUp()`, `StepDown()`, `Clear()`.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Mask Input
|
|
199
|
+
|
|
200
|
+
> **Docs:** [Mask Input](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/mask-input)
|
|
201
|
+
|
|
202
|
+
```csharp
|
|
203
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbMaskInputModule));
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
```razor
|
|
207
|
+
<IgbMaskInput Mask="(000) 000-0000"
|
|
208
|
+
Label="Phone Number"
|
|
209
|
+
Placeholder="(555) 123-4567" />
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Key attributes: `Mask` (pattern string: `0` = digit, `L` = letter, `A` = alphanumeric), `Placeholder`, `Prompt` (fill character, default `_`), `ValueMode` (`raw` or `withFormatting`).
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Checkbox
|
|
217
|
+
|
|
218
|
+
> **Docs:** [Checkbox](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/checkbox)
|
|
219
|
+
|
|
220
|
+
```csharp
|
|
221
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbCheckboxModule));
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
```razor
|
|
225
|
+
<IgbCheckbox @bind-Checked="IsSubscribed">Subscribe to newsletter</IgbCheckbox>
|
|
226
|
+
|
|
227
|
+
@code {
|
|
228
|
+
bool IsSubscribed { get; set; }
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Key attributes: `Checked`, `Indeterminate`, `Disabled`, `Required`, `Invalid`, `LabelPosition` (`ToggleLabelPosition.After` / `Before`), `Name`, `Value`.
|
|
233
|
+
|
|
234
|
+
CSS parts: `base`, `control`, `indicator`, `label`.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Radio / Radio Group
|
|
239
|
+
|
|
240
|
+
> **Docs:** [Radio & Radio Group](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/radio)
|
|
241
|
+
|
|
242
|
+
```csharp
|
|
243
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbRadioModule), typeof(IgbRadioGroupModule));
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
```razor
|
|
247
|
+
<IgbRadioGroup Alignment="@ContentOrientation.Vertical" Name="plan">
|
|
248
|
+
<IgbRadio Value="basic">Basic</IgbRadio>
|
|
249
|
+
<IgbRadio Value="pro">Pro</IgbRadio>
|
|
250
|
+
<IgbRadio Value="enterprise">Enterprise</IgbRadio>
|
|
251
|
+
</IgbRadioGroup>
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Key attributes on `IgbRadioGroup`: `Alignment` (`ContentOrientation.Horizontal` / `ContentOrientation.Vertical`), `Name`. On `IgbRadio`: `Value`, `Checked`, `Disabled`, `Invalid`, `LabelPosition`.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Switch
|
|
259
|
+
|
|
260
|
+
> **Docs:** [Switch](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/switch)
|
|
261
|
+
|
|
262
|
+
```csharp
|
|
263
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbSwitchModule));
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
```razor
|
|
267
|
+
<IgbSwitch @bind-Checked="IsDarkMode">Dark Mode</IgbSwitch>
|
|
268
|
+
|
|
269
|
+
@code {
|
|
270
|
+
bool IsDarkMode { get; set; }
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Key attributes: `Checked`, `Disabled`, `Required`, `LabelPosition`.
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Slider / Range Slider
|
|
279
|
+
|
|
280
|
+
> **Docs:** [Slider & Range Slider](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/slider)
|
|
281
|
+
|
|
282
|
+
```csharp
|
|
283
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbSliderModule), typeof(IgbRangeSliderModule));
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
```razor
|
|
287
|
+
<!-- Single value -->
|
|
288
|
+
<IgbSlider Value="40" Min="0" Max="100" Step="5" Change="OnSliderChange" />
|
|
289
|
+
|
|
290
|
+
<!-- Range -->
|
|
291
|
+
<IgbRangeSlider Lower="20" Upper="70" Change="OnRangeChange" />
|
|
292
|
+
|
|
293
|
+
@code {
|
|
294
|
+
void OnSliderChange(IgbNumberEventArgs e) => Console.WriteLine(e.Detail);
|
|
295
|
+
void OnRangeChange(IgbRangeSliderValueEventArgs e)
|
|
296
|
+
{
|
|
297
|
+
var lower = e.Detail.Lower;
|
|
298
|
+
var upper = e.Detail.Upper;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Key attributes on `IgbSlider`: `Value`, `Min`, `Max`, `Step`, `Disabled`, `HideTooltip`. On `IgbRangeSlider`: `Lower`, `Upper`, `Min`, `Max`, `Step`.
|
|
304
|
+
|
|
305
|
+
Events (both): `IgbInput` (fires while dragging), `Change` (fires on commit).
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Rating
|
|
310
|
+
|
|
311
|
+
> **Docs:** [Rating](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/rating)
|
|
312
|
+
|
|
313
|
+
```csharp
|
|
314
|
+
builder.Services.AddIgniteUIBlazor(typeof(IgbRatingModule));
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
```razor
|
|
318
|
+
<IgbRating @bind-Value="StarRating" Max="5" />
|
|
319
|
+
|
|
320
|
+
@code {
|
|
321
|
+
double StarRating { get; set; } = 3;
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Key attributes: `Value`, `Max`, `Step` (for half-star: `0.5`), `Disabled`, `Readonly`, `Label`, `ValueFormat`.
|
|
326
|
+
|
|
327
|
+
Events: `Change`, `Hover`.
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Form & Binding Notes
|
|
332
|
+
|
|
333
|
+
> **AGENT INSTRUCTION:** Do not assume one universal form integration pattern. Several Ignite UI Blazor components such as `IgbCombo` and `IgbRadio` do **not** work with a standard HTML `<form>` element. Use the MCP doc for the exact component, bind values explicitly, and only use a form pattern shown by the current docs.
|
|
334
|
+
|
|
335
|
+
```razor
|
|
336
|
+
<IgbInput @bind-Value="Model.Name" Label="Name" Required="true" />
|
|
337
|
+
<IgbCheckbox @bind-Checked="Model.Agreed">I agree to the terms</IgbCheckbox>
|
|
338
|
+
<IgbSelect @bind-Value="Model.Country" Label="Country" Name="country">
|
|
339
|
+
<IgbSelectItem Value="us">United States</IgbSelectItem>
|
|
340
|
+
<IgbSelectItem Value="uk">United Kingdom</IgbSelectItem>
|
|
341
|
+
</IgbSelect>
|
|
342
|
+
|
|
343
|
+
@code {
|
|
344
|
+
public class FormModel
|
|
345
|
+
{
|
|
346
|
+
[Required] public string Name { get; set; } = "";
|
|
347
|
+
public bool Agreed { get; set; }
|
|
348
|
+
public string Country { get; set; } = "";
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
FormModel Model = new();
|
|
352
|
+
|
|
353
|
+
void Save() { /* validate and persist Model using the pattern required by your app */ }
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## Key Rules
|
|
360
|
+
|
|
361
|
+
1. **Do not wrap Ignite UI inputs in a standard HTML `<form>` unless the component doc shows that pattern.** Form behavior differs by component.
|
|
362
|
+
2. **Register every module you use in `Program.cs`** using the `typeof(Igb{Name}Module)` pattern.
|
|
363
|
+
3. **`IgbCombo` requires the `T` type parameter** - set it to the type of your `ValueKey` property, or `"object"` if there is no `ValueKey`.
|
|
364
|
+
4. **Use `@bind-Value` / `@bind-Checked` for two-way data binding** in Blazor. Never call `GetValueAsync()` to read a field value - that method does not exist on `IgbInput`.
|
|
365
|
+
5. **`IgbSlider` and `IgbRangeSlider` have separate modules** - register both if you use range sliders.
|