mad-otp-field
Inputs separados para OTP/PIN/serial com auto-focus.
Campo de entrada para codigos de verificacao (OTP), PINs e chaves de licenca. Inputs individuais com auto-focus, paste, navegacao por teclado.
Props
| Prop | Tipo | Default | Descricao |
|---|---|---|---|
| name | string | '' | Nome do campo (obrigatorio) |
| label | string | '' | Label do campo |
| width | string | '' | Largura fixa do campo (CSS) |
| max-width | string | '' | Largura maxima do campo (CSS) |
| length | int | 6 | Numero de inputs |
| mode | string | 'numeric' | numeric, alpha, alphanumeric |
| separator | int | 0 | Separador visual a cada N digitos (0 = sem) |
| private | bool | false | Mascara os caracteres (tipo senha/PIN) |
| auto-submit | bool | false | Submete o mad-form pai ao completar |
| hint | string | '' | Texto de ajuda |
| error | string | '' | Mensagem de erro |
| required | bool | false | Campo obrigatorio |
| disabled | bool | false | Campo desabilitado |
| attrs | string | '' | Atributos HTML extras |
Codigo de verificacao (6 digitos)
<mad-otp-field name="codigo" label="Codigo de verificacao" />
PIN mascarado (4 digitos)
<mad-otp-field name="pin" label="PIN" length="4" private />
Chave de licenca alfanumerica com separador
<mad-otp-field name="licenca" label="Chave de licenca"
length="9" mode="alphanumeric" separator="3" />
Auto-submit ao completar
<mad-otp-field name="otp" label="OTP" auto-submit />
Com callback PHP ao completar
<mad-otp-field name="codigo" label="Codigo"
mad:change="onVerificar" />
public function onVerificar(string $codigo): MadResponse
{
if ($codigo === '123456') {
return (new MadResponse())
->toast('Codigo valido!', 'success')
->closeDrawer();
}
return MadMessage::error('Erro', 'Codigo invalido');
}
Dentro de formulario
<mad-form submit="onVerificar">
<mad-otp-field name="codigo" label="Codigo de verificacao" required />
<mad-btn type="submit" variant="primary" icon="check">Verificar</mad-btn>
</mad-form>
Modos
| Modo | Aceita | Uso |
|---|---|---|
numeric |
0-9 | OTP, PIN, codigo SMS |
alpha |
A-Z (auto uppercase) | Codigos alfabeticos |
alphanumeric |
A-Z + 0-9 | Chave de licenca, serial |
Comportamento
- Auto-focus: ao digitar, foco avanca para o proximo input
- Backspace: apaga e volta o foco para o anterior
- Paste: distribui caracteres validos entre os inputs
- Arrow keys: navega entre inputs
- Filtro: rejeita caracteres fora do modo selecionado
- Auto uppercase: modo alpha/alphanumeric converte para maiuscula
- autocomplete="one-time-code": no primeiro input para autofill de SMS
- Hidden input: valor concatenado com mad:model para integracao com MadForm
NUNCA fazer
{{-- ERRADO: montar inputs OTP manualmente --}}
<div style="display:flex;gap:8px;">
<input type="text" maxlength="1" style="width:48px;text-align:center;">
<input type="text" maxlength="1" style="width:48px;text-align:center;">
<input type="text" maxlength="1" style="width:48px;text-align:center;">
</div>
{{-- CERTO --}}
<mad-otp-field name="codigo" label="Codigo" length="3" />
{{-- ERRADO: usar input normal para codigo de verificacao --}}
<mad-input-field name="codigo" label="Codigo" maxlength="6" />
{{-- CERTO --}}
<mad-otp-field name="codigo" label="Codigo" />