5.8 KiB
5.8 KiB
SbTextField
A text input component with support for labels, placeholders, adornments, password visibility toggle, and form validation. Can be used with its own Label and Required parameters, or wrapped in SbFormField for label, helper text, and error message layout.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Value | TValue | - | The current value (two-way bindable) |
| ValueChanged | EventCallback<TValue> | - | Callback when value changes |
| Label | string? | null | Label text displayed above the input |
| Placeholder | string? | null | Placeholder text |
| Type | string | "text" | Input type (text, password, email, search, etc.) |
| Required | bool | false | Whether the field is required |
| Disabled | bool | false | Whether the input is disabled |
| ReadOnly | bool | false | Whether the input is read-only |
| Clearable | bool | false | Whether to show a clear button |
| Id | string? | auto-generated | Element ID |
| InputMode | string? | null | Input mode hint for mobile keyboards |
| AutoComplete | string? | null | Autocomplete attribute value. When Type is "password" and not set, defaults to "new-password" to prevent browser autofill with cached credentials (e.g., connection strings, API keys). Use "current-password" explicitly for login forms. |
| AriaDescribedBy | string? | null | IDs of elements that describe this input |
| Style | string? | null | Inline styles for the wrapper |
| ClearAriaLabel | string? | null | Aria label for clear button (when null, uses localized default) |
| ShowPasswordAriaLabel | string? | null | Aria label for show password button (when null, uses localized default) |
| HidePasswordAriaLabel | string? | null | Aria label for hide password button (when null, uses localized default) |
| InvalidValueMessage | string | "The value '{0}' is not valid." | Validation error message format (used for non-string TValue parse errors) |
| AdditionalAttributes | Dictionary<string, object>? | - | Additional HTML attributes for the input (from InputBase) |
Events
| Event | Type | Description |
|---|---|---|
| ValueChanged | EventCallback<TValue> | Fired when the value changes |
| OnClear | EventCallback | Fired when the clear button is clicked |
Templates / Slots (RenderFragments)
| Slot | Type | Description |
|---|---|---|
| StartAdornment | RenderFragment | Content shown at the start of the input (e.g., icon) |
| EndAdornment | RenderFragment | Content shown at the end of the input (e.g., icon) |
Template Usage Examples
StartAdornment
<SbTextField @bind-Value="email" Type="email" Label="Email">
<StartAdornment>
<SbIcon Name="mail" />
</StartAdornment>
</SbTextField>
EndAdornment
<SbTextField @bind-Value="search" Placeholder="Search...">
<EndAdornment>
<SbIcon Name="search" />
</EndAdornment>
</SbTextField>
CSS Classes
sb-text-field-wrapper- Outer wrappersb-text-field- Input containersb-text-field__label- Label elementsb-text-field__input- The actual input elementsb-text-field__required- Required asterisksb-text-field__adornment- Adornment wrappersb-text-field__adornment--start- Start adornmentsb-text-field__adornment--end- End adornmentsb-text-field__clear- Clear buttonsb-text-field__toggle-password- Password visibility togglesb-text-field--disabled- Disabled statesb-text-field--readonly- Read-only statesb-text-field--error- Error statesb-text-field--has-start- Has start adornmentsb-text-field--has-end- Has end adornment
Accessibility
- Uses native
<input>element aria-invalidset when there are validation errorsaria-requiredset when Required is truearia-describedbyfor error message association- Password toggle buttons have appropriate aria-labels
- Label properly associated via
forattribute
Examples
Basic Usage (standalone label)
<SbTextField @bind-Value="name" Label="Name" Placeholder="Enter your name" />
With SbFormField (label, helper text, error)
<SbFormField Label="Email" HelperText="We'll never share your email" InputId="email">
<SbTextField TValue="string" @bind-Value="email" Id="email" Type="email" Placeholder="name@domain.com" />
</SbFormField>
Password Field
<SbTextField @bind-Value="password" Type="password" Label="Password" Required="true" />
Password fields default to autocomplete="new-password" to prevent browsers from autofilling with cached credentials (useful for connection strings, API keys, and other sensitive non-login fields). For login forms where autofill is desired, set AutoComplete="current-password":
<SbTextField @bind-Value="password" Type="password" Label="Password" AutoComplete="current-password" />
Email with Icon
<SbTextField @bind-Value="email" Type="email" Label="Email" Required="true">
<StartAdornment>
<SbIcon Name="mail" Size="SbSize.Sm" />
</StartAdornment>
</SbTextField>
Clearable Search
<SbTextField @bind-Value="search"
Type="search"
Placeholder="Search..."
Clearable="true"
OnClear="HandleClear">
<StartAdornment>
<SbIcon Name="search" Size="SbSize.Sm" />
</StartAdornment>
</SbTextField>
With Form Validation
<EditForm Model="model">
<DataAnnotationsValidator />
<SbTextField @bind-Value="model.Username"
Label="Username"
Required="true"
AriaDescribedBy="username-error" />
<SbFieldError For="() => model.Username" Id="username-error" />
</EditForm>
Read-Only Field
<SbTextField @bind-Value="apiKey" Label="API Key" ReadOnly="true" />