Accent color
# OtpInput ## Description The OTP input is used for MFA procedure of authenticating users by a one-time password. ## Parameters | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | AutoFocus | `bool` | false | If true, the first input is auto focused. | | AutoShift | `bool` | false | Enables auto shifting the indexes while clearing the inputs using Delete or Backspace. | | Classes | `BitOtpInputClassStyles?` | null | Custom CSS classes for different parts of the BitOtpInput. | | Label | `string?` | null | Label displayed above the inputs. | | LabelTemplate | `RenderFragment?` | null | Custom template for the label displayed above the inputs. | | Length | `int` | 5 | Length of the OTP or number of the inputs. | | OnFill | `EventCallback<string?>` | | Callback for when all of the inputs are filled. | | OnFocusIn | `EventCallback<FocusEventArgs>` | | onfocusin event callback for each input. | | OnFocusOut | `EventCallback<FocusEventArgs>` | | onfocusout event callback for each input. | | OnInput | `EventCallback<ChangeEventArgs>` | | oninput event callback for each input. | | OnKeyDown | `EventCallback<KeyboardEventArgs>` | | onkeydown event callback for each input. | | OnPaste | `EventCallback<ClipboardEventArgs>` | | onpaste event callback for each input. | | Reversed | `bool` | false | Defines whether to render inputs in the opposite direction. | | Size | `BitSize?` | null | The size of the inputs. | | Styles | `BitOtpInputClassStyles?` | null | Custom CSS styles for different parts of the BitOtpInput. | | Type | `BitInputType?` | null | Type of the inputs. | | Vertical | `bool` | false | Defines whether to render inputs vertically. | | DefaultValue | `TValue?` | null | The default value of the input to be used in uncontrolled mode (i.e. when the Value is not bound), typically used alongside the OnChange callback. | | DisplayName | `string?` | null | Gets or sets the display name for this field. | | InputHtmlAttributes | `IReadOnlyDictionary<string, object>?` | null | Gets or sets a collection of additional attributes that will be applied to the created element. | | Name | `string?` | null | Gets or sets the name of the element. Allows access by name from the associated form. | | NoValidate | `bool` | false | Disables the validation of the input. | | OnChange | `EventCallback<TValue?>` | | Callback for when the input value changes. | | ReadOnly | `bool` | false | Makes the input read-only. | | Required | `bool` | false | Makes the input required. | | Value | `TValue?` | null | Gets or sets the value of the input. This should be used with two-way binding. | | AriaLabel | `string?` | null | Gets or sets the accessible label for the component, used by assistive technologies. | | Class | `string?` | null | Gets or sets the CSS class name(s) to apply to the rendered element. | | Dir | `BitDir?` | null | Gets or sets the text directionality for the component's content. | | ForceAnimation | `bool` | false | Gets or sets a value indicating whether the component's animations play at their full duration even when reduced motion is requested. | | HtmlAttributes | `Dictionary<string, object>` | new Dictionary<string, object>() | Captures additional HTML attributes to be applied to the rendered element, in addition to the component's parameters. | | Id | `string?` | null | Gets or sets the unique identifier for the component's root element. | | IsEnabled | `bool` | true | Gets or sets a value indicating whether the component is enabled and can respond to user interaction. | | Style | `string?` | null | Gets or sets the CSS style string to apply to the rendered element. | | TabIndex | `string?` | null | Gets or sets the tab order index for the component when navigating with the keyboard. | | Visibility | `BitVisibility` | BitVisibility.Visible | Gets or sets the visibility state (visible, hidden, or collapsed) of the component. | ## Public Members | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | InputElements | `ElementReference[]` | | The ElementReferences to the input elements of the BitOtpInput. | | FocusAsync | `ValueTask` | | Gives focus to a specific input element of the BitOtpInput. | | InputElement | `ElementReference` | | The ElementReference of the input element. | | FocusAsync() | `() => ValueTask` | | Gives focus to the input element. | | FocusAsync(bool preventScroll) | `(bool preventScroll) => ValueTask` | | Gives focus to the input element. | | UniqueId | `Guid` | Guid.NewGuid() | Gets the readonly unique identifier for the component's root element, assigned when the component instance is constructed. | | RootElement | `ElementReference` | | Gets the reference to the root HTML element associated with this component. | ## Enums ### BitSize Enum | Name | Value | Description | | :--- | :--- | :---------- | | Small | 0 | The small size. | | Medium | 1 | The medium size. | | Large | 2 | The large size. | ### BitInputType Enum | Name | Value | Description | | :--- | :--- | :---------- | | Text | 0 | The input expects text characters. | | Password | 1 | The input expects password characters. | | Number | 2 | The input expects number characters. | | Email | 3 | The input expects email characters. | | Tel | 4 | The input expects tel characters. | | Url | 5 | The input expects url characters. | ### BitVisibility Enum | Name | Value | Description | | :--- | :--- | :---------- | | Visible | 0 | The content of the component is visible. | | Hidden | 1 | The content of the component is hidden, but the space it takes on the page remains (visibility:hidden). | | Collapsed | 2 | The component is hidden (display:none). | ### BitDir Enum | Name | Value | Description | | :--- | :--- | :---------- | | Ltr | 0 | Ltr (left to right) is to be used for languages that are written from the left to the right (like English). | | Rtl | 1 | Rtl (right to left) is to be used for languages that are written from the right to the left (like Arabic). | | Auto | 2 | Auto lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then applies that directionality to the whole element. | ## Sub Classes ### BitOtpInputClassStyles Properties | Name | Type | Default Value | Description | | :--- | :--- | :------------ | :---------- | | Root | `string?` | null | Custom CSS classes/styles for the root element of the otp input. | | Label | `string?` | null | Custom CSS classes/styles for the label of the otp input. | | InputsWrapper | `string?` | null | Custom CSS classes/styles for the wrapper element of the inputs. | | Input | `string?` | null | Custom CSS classes/styles for each input in otp input. | | Focused | `string?` | null | Custom CSS classes/styles for the focused input in otp input. | ## Examples \n**Basic**: ```razor ``` \n**Label**: ```razor Custom label ``` \n**Type**: ```razor ``` \n**Directions**: ```razor ``` \n**Binding**: ```razor ``` ```csharp private string? oneWayValue; private string? twoWayValue; ``` \n**Events**: ```razor
OnChange value: @onChangeValue
OnFill value: @onFillValue
Focus type: @onFocusInArgs?.Event.Type
Input index: @onFocusInArgs?.Index
Focus type: @onFocusOutArgs?.Event.Type
Input index: @onFocusOutArgs?.Index
Value: @onInputArgs?.Event.Value
Input index: @onInputArgs?.Index
Key & Code: [@onKeyDownArgs?.Event.Key] [@onKeyDownArgs?.Event.Code]
Input index: @onKeyDownArgs?.Index
Focus type: @onPasteArgs?.Event.Type
Input index: @onPasteArgs?.Index
``` ```csharp private string? onChangeValue; private string? onFillValue; private (FocusEventArgs Event, int Index)? onFocusInArgs; private (FocusEventArgs Event, int Index)? onFocusOutArgs; private (ChangeEventArgs Event, int Index)? onInputArgs; private (KeyboardEventArgs Event, int Index)? onKeyDownArgs; private (ClipboardEventArgs Event, int Index)? onPasteArgs; ``` \n**Validation**: ```razor Submit ``` ```csharp public class ValidationOtpInputModel { [Required(ErrorMessage = "The OTP value is required.")] [MinLength(6, ErrorMessage = "Minimum length is 6.")] public string OtpValue { get; set; } } private ValidationOtpInputModel validationOtpInputModel = new(); private void HandleValidSubmit() { } private void HandleInvalidSubmit() { } ``` \n**Size**: ```razor ``` \n**Style & Class**: ```razor ``` \n**RTL**: ```razor ```