---
url: "https://vueda.dev/v3/reference/api/vue/InputOTP.md"
title: "InputOTP"
---

# InputOTP

## Overview

A styled OTP (one-time password) input built on vue-input-otp's OTPInput, with slot forwarding for custom slot rendering.

Theme entry: [InputOTP](/v3/reference/theming/keys/InputOTP.md)

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-themeOverride">themeOverride</span> | `Object` |  | `null` | A partial ThemeObject keyed by component name, merged over this component's theme and provided to descendants. |
| <span id="prop-class">class</span> | `string\|array\|object` |  | `undefined` | Additional CSS classes to apply to the container element. |
| <span id="prop-modelValue">modelValue</span> | `string` |  | `undefined` | The controlled value (used with v-model). |
| <span id="prop-maxlength">maxlength</span> | `number` | yes |  | The maximum length (number of OTP slots). Required. |
| <span id="prop-textAlign">textAlign</span> | `string` |  | `undefined` | Text alignment of characters within slots. |
| <span id="prop-inputmode">inputmode</span> | `string` |  | `undefined` | Input mode for the underlying input element. |
| <span id="prop-pushPasswordManagerStrategy">pushPasswordManagerStrategy</span> | `string` |  | `undefined` | Strategy for handling password manager icon placement. |
| <span id="prop-noScriptCssFallback">noScriptCssFallback</span> | `string` |  | `undefined` | CSS fallback string injected via noscript for browsers without JS. |
| <span id="prop-defaultValue">defaultValue</span> | `string` |  | `undefined` | The default value when uncontrolled. |
| <span id="prop-pasteTransformer">pasteTransformer</span> | `func` |  | `undefined` | A function to transform pasted text before applying it. |

## Slots

### `default` {#slot-default}

Scoped slot.

## Events

| Name | Description |
| --- | --- |
| `update:modelValue` | Emitted when the value changes. |
| `complete` | Emitted when all slots are filled. |
| `change` | Emitted when the value changes. |
| `select` | Emitted when an item is selected. |
| `input` | Emitted on each keystroke. |
| `focus` | Emitted when the input gains focus. |
| `blur` | Emitted when the input loses focus. |
| `mouseover` | Emitted when the pointer enters the element. |
| `mouseleave` | Emitted when the pointer leaves the element. |
| `paste` | Emitted when the user pastes into the input. |

[Full event reference](/v3/reference/api/vue/InputOTP/events.md)

## Source

`client/lib/controls/input-otp/InputOTP.vue`
