Part of the
igniteui-blazor-componentsskill hub. For project setup and module registration - seesetup.md.
- Input
- Combo Box
- Select
- Date Picker
- Date Range Picker
- Calendar
- Date Time Input
- Mask Input
- Checkbox
- Radio / Radio Group
- Switch
- Slider / Range Slider
- Rating
- Form & Binding Notes
- Key Rules
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.
Docs: Input
// Program.cs
builder.Services.AddIgniteUIBlazor(typeof(IgbInputModule));<IgbInput @bind-Value="UserName" Label="Username" Placeholder="e.g. John Doe">
<span slot="prefix">User</span>
</IgbInput>
@code {
string UserName { get; set; } = "";
}Key attributes: Label, Placeholder, DisplayType (InputType.Text / Email / Password / Tel / Number), Required, Disabled, Readonly, MinLength, MaxLength.
Slots: prefix, suffix, helper-text.
Events: IgbInput (fires while typing), Change (fires on commit/blur).
Docs: Combo Box
builder.Services.AddIgniteUIBlazor(typeof(IgbComboModule));<IgbCombo T="City"
Data="Cities"
ValueKey="Id"
DisplayKey="Name"
Label="Select Cities"
Placeholder="Pick a city" />
@code {
private List<City> Cities = SampleData.Cities;
record City(string Id, string Name, string Country);
}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.
Events: Opening, Opened, Closing, Closed, SelectionChanging.
AGENT INSTRUCTION:
IgbCombodoes not work inside a standard HTML<form>. Use<EditForm>with@bind-Valueinstead.
Docs: Select
builder.Services.AddIgniteUIBlazor(typeof(IgbSelectModule));<IgbSelect Label="Fruit" Placeholder="Choose a fruit">
<IgbSelectItem Value="apple">Apple</IgbSelectItem>
<IgbSelectItem Value="orange">Orange</IgbSelectItem>
<IgbSelectItem Value="banana">Banana</IgbSelectItem>
</IgbSelect>For grouped options use IgbSelectHeader and IgbSelectGroup. Key attributes on IgbSelect: Label, Placeholder, Outlined, Disabled, Required, Name. On IgbSelectItem: Value, Selected, Disabled.
Slots on IgbSelect: header, footer, helper-text, prefix, suffix, toggle-icon.
Docs: Date Picker
builder.Services.AddIgniteUIBlazor(typeof(IgbDatePickerModule));<IgbDatePicker @ref="Picker" Value="@SelectedDate" />
@code {
public IgbDatePicker Picker { get; set; }
public DateTime SelectedDate { get; set; } = DateTime.Today;
}Key attributes: Value (DateTime), Min, Max, InputFormat, DisplayFormat, Locale, Mode (PickerMode.Dropdown / PickerMode.Dialog), ShowWeekNumbers, WeekStart, Disabled, Required.
Slots: calendar, clear, prefix, suffix, actions (custom footer buttons).
Methods: StepUp(DatePart), StepDown(DatePart), Clear(), Show(), Hide(), Toggle().
Docs: Date Range Picker
builder.Services.AddIgniteUIBlazor(typeof(IgbDateRangePickerModule));<IgbDateRangePicker @ref="RangePicker" />
@code {
public IgbDateRangePicker RangePicker { get; set; }
}Returns a start and end DateTime. Key attributes: Min, Max, InputFormat, Locale, Mode.
Docs: Calendar
builder.Services.AddIgniteUIBlazor(typeof(IgbCalendarModule));<IgbCalendar />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.
Docs: Date Time Input
builder.Services.AddIgniteUIBlazor(typeof(IgbDateTimeInputModule));<IgbDateTimeInput @bind-Value="SelectedDateTime"
InputFormat="MM/dd/yyyy HH:mm"
SpinLoop="true" />
@code {
public DateTime? SelectedDateTime { get; set; } = DateTime.Now;
}Key attributes: Value (DateTime?), InputFormat, DisplayFormat, Min, Max, MinutesStep, SpinLoop.
Methods: StepUp(), StepDown(), Clear().
Docs: Mask Input
builder.Services.AddIgniteUIBlazor(typeof(IgbMaskInputModule));<IgbMaskInput Mask="(000) 000-0000"
Label="Phone Number"
Placeholder="(555) 123-4567" />Key attributes: Mask (pattern string: 0 = digit, L = letter, A = alphanumeric), Placeholder, Prompt (fill character, default _), ValueMode (raw or withFormatting).
Docs: Checkbox
builder.Services.AddIgniteUIBlazor(typeof(IgbCheckboxModule));<IgbCheckbox @bind-Checked="IsSubscribed">Subscribe to newsletter</IgbCheckbox>
@code {
bool IsSubscribed { get; set; }
}Key attributes: Checked, Indeterminate, Disabled, Required, Invalid, LabelPosition (ToggleLabelPosition.After / Before), Name, Value.
CSS parts: base, control, indicator, label.
Docs: Radio & Radio Group
builder.Services.AddIgniteUIBlazor(typeof(IgbRadioModule), typeof(IgbRadioGroupModule));<IgbRadioGroup Alignment="@ContentOrientation.Vertical" Name="plan">
<IgbRadio Value="basic">Basic</IgbRadio>
<IgbRadio Value="pro">Pro</IgbRadio>
<IgbRadio Value="enterprise">Enterprise</IgbRadio>
</IgbRadioGroup>Key attributes on IgbRadioGroup: Alignment (ContentOrientation.Horizontal / ContentOrientation.Vertical), Name. On IgbRadio: Value, Checked, Disabled, Invalid, LabelPosition.
Docs: Switch
builder.Services.AddIgniteUIBlazor(typeof(IgbSwitchModule));<IgbSwitch @bind-Checked="IsDarkMode">Dark Mode</IgbSwitch>
@code {
bool IsDarkMode { get; set; }
}Key attributes: Checked, Disabled, Required, LabelPosition.
Docs: Slider & Range Slider
builder.Services.AddIgniteUIBlazor(typeof(IgbSliderModule), typeof(IgbRangeSliderModule));<!-- Single value -->
<IgbSlider Value="40" Min="0" Max="100" Step="5" Change="OnSliderChange" />
<!-- Range -->
<IgbRangeSlider Lower="20" Upper="70" Change="OnRangeChange" />
@code {
void OnSliderChange(IgbNumberEventArgs e) => Console.WriteLine(e.Detail);
void OnRangeChange(IgbRangeSliderValueEventArgs e)
{
var lower = e.Detail.Lower;
var upper = e.Detail.Upper;
}
}Key attributes on IgbSlider: Value, Min, Max, Step, Disabled, HideTooltip. On IgbRangeSlider: Lower, Upper, Min, Max, Step.
Events (both): IgbInput (fires while dragging), Change (fires on commit).
Docs: Rating
builder.Services.AddIgniteUIBlazor(typeof(IgbRatingModule));<IgbRating @bind-Value="StarRating" Max="5" />
@code {
double StarRating { get; set; } = 3;
}Key attributes: Value, Max, Step (for half-star: 0.5), Disabled, Readonly, Label, ValueFormat.
Events: Change, Hover.
AGENT INSTRUCTION: Do not assume one universal form integration pattern. Several Ignite UI Blazor components such as
IgbComboandIgbRadiodo 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.
<IgbInput @bind-Value="Model.Name" Label="Name" Required="true" />
<IgbCheckbox @bind-Checked="Model.Agreed">I agree to the terms</IgbCheckbox>
<IgbSelect @bind-Value="Model.Country" Label="Country" Name="country">
<IgbSelectItem Value="us">United States</IgbSelectItem>
<IgbSelectItem Value="uk">United Kingdom</IgbSelectItem>
</IgbSelect>
@code {
public class FormModel
{
[Required] public string Name { get; set; } = "";
public bool Agreed { get; set; }
public string Country { get; set; } = "";
}
FormModel Model = new();
void Save() { /* validate and persist Model using the pattern required by your app */ }
}- Do not wrap Ignite UI inputs in a standard HTML
<form>unless the component doc shows that pattern. Form behavior differs by component. - Register every module you use in
Program.csusing thetypeof(Igb{Name}Module)pattern. IgbComborequires theTtype parameter - set it to the type of yourValueKeyproperty, or"object"if there is noValueKey.- Use
@bind-Value/@bind-Checkedfor two-way data binding in Blazor. IgbSliderandIgbRangeSliderhave separate modules - register both if you use range sliders.