3.3 KiB
3.3 KiB
SbFormField
A wrapper component that provides consistent label, help text, and error display for form inputs.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Label | string? | null | Label text for the field |
| HelpText | string? | null | Help text displayed below the input |
| Required | bool | false | Whether to show required indicator |
| Id | string? | null | ID to associate label with input |
| Error | string? | null | Error message to display |
| Class | string? | null | Additional CSS classes |
| Style | string? | null | Inline styles |
Templates / Slots (RenderFragments)
| Slot | Type | Description |
|---|---|---|
| ChildContent | RenderFragment | The form input to wrap |
| LabelTemplate | RenderFragment | Custom label content (overrides Label) |
| HelpTemplate | RenderFragment | Custom help content (overrides HelpText) |
Template Usage Examples
Custom LabelTemplate
<SbFormField>
<LabelTemplate>
<span>Email</span>
<SbBadge Color="SbColor.Primary" Size="SbSize.Sm">Required</SbBadge>
</LabelTemplate>
<ChildContent>
<SbTextField @bind-Value="email" Type="email" />
</ChildContent>
</SbFormField>
Custom HelpTemplate
<SbFormField Label="Password">
<ChildContent>
<SbTextField @bind-Value="password" Type="password" />
</ChildContent>
<HelpTemplate>
<ul class="password-requirements">
<li class="@(hasMinLength ? "valid" : "")">At least 8 characters</li>
<li class="@(hasNumber ? "valid" : "")">Contains a number</li>
<li class="@(hasSpecial ? "valid" : "")">Contains a special character</li>
</ul>
</HelpTemplate>
</SbFormField>
CSS Classes
sb-form-field- Base classsb-form-field__label- Label elementsb-form-field__required- Required asterisksb-form-field__input- Input wrappersb-form-field__help- Help textsb-form-field__error- Error messagesb-form-field--error- Error state
Accessibility
- Label associated with input via
forattribute when Id is provided - Help text can be linked via aria-describedby
- Error messages displayed with appropriate styling
Examples
Basic Usage
<SbFormField Label="Username" HelpText="Choose a unique username">
<SbTextField @bind-Value="username" />
</SbFormField>
Required Field
<SbFormField Label="Email" Required="true">
<SbTextField @bind-Value="email" Type="email" />
</SbFormField>
With Error
<SbFormField Label="Password" Error="@passwordError">
<SbTextField @bind-Value="password" Type="password" />
</SbFormField>
With ID Association
<SbFormField Label="Name" Id="name-field">
<SbTextField @bind-Value="name" Id="name-field" />
</SbFormField>
Wrapping Other Components
<SbFormField Label="Color Theme">
<SbColorPicker @bind-Value="themeColor" />
</SbFormField>
<SbFormField Label="Priority Level">
<SbSlider TNumber="int" @bind-Value="priority" Min="1" Max="5" />
</SbFormField>
<SbFormField Label="Skills" HelpText="Select up to 5 skills">
<SbMultiSelect TItem="string" TValue="string"
Items="@skills"
@bind-Values="selectedSkills"
MaxSelected="5" />
</SbFormField>