Componente

Input OTP

Um campo de código único dividido em slots individuais. Defina o comprimento e o padrão aceito, agrupe os slots com separadores, dimensione e colora-os, e leia o valor via binding bidirecional, formulários ou o evento de conclusão.

Código de 6 dígitos agrupado

Value: —

import { ChangeDetectionStrategy, Component, signal } from '@angular/core';

import { HbInputOtpImports } from '@herbst/ui';

@Component({
  selector: 'hb-demo-input-otp-basic',
  imports: [HbInputOtpImports],
  template: `
    <div class="flex flex-col gap-3">
      <hb-input-otp [(hbValue)]="code" [hbMaxLength]="6" (hbComplete)="done.set($event)">
        <hb-input-otp-group>
          <hb-input-otp-slot [hbIndex]="0" />
          <hb-input-otp-slot [hbIndex]="1" />
          <hb-input-otp-slot [hbIndex]="2" />
        </hb-input-otp-group>
        <hb-input-otp-separator />
        <hb-input-otp-group>
          <hb-input-otp-slot [hbIndex]="3" />
          <hb-input-otp-slot [hbIndex]="4" />
          <hb-input-otp-slot [hbIndex]="5" />
        </hb-input-otp-group>
      </hb-input-otp>

      <p class="font-mono text-[12px] text-muted-foreground">
        Value: {{ code() || '—' }}{{ done() ? ' · complete' : '' }}
      </p>
    </div>
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoInputOtpBasicComponent {
  protected readonly code = signal('');
  protected readonly done = signal('');
}

Alfanumérico e grande

Status, somente-leitura e desabilitado

Referência de API

hb-input-otp

PropriedadeDescriçãoTipoPadrão
[hbMaxLength] Número total de caracteres — combine com o número de slots. number 6
[(hbValue)] O código digitado como string. Também funciona como controle de formulário via ngModel / formControl. string ''
[hbPattern] Caracteres aceitos, como preset ou um RegExp que casa um caractere. 'digits' | 'chars' | 'alphanumeric' | RegExp 'digits'
[hbSize] / [hbStatus] Dimensões do slot e coloração de validação, repassadas a todos os slots. size xs–xl / default|success|warning|error 'md' / 'default'
[hbInvalid] / [hbRing] Força a aparência de erro, e alterna o anel do slot ativo. boolean false / true
[hbDisabled] / [hbReadonly] Bloqueia a edição por completo, ou mostra um valor fixo que não pode ser alterado. boolean false
[hbAutoFocus] / [hbName] / [hbInputId] / [hbAriaLabel] Foca ao renderizar, e repassa name, id e aria-label ao input subjacente. boolean / string false / ''
(hbChange) / (hbComplete) Emitem a cada mudança, e uma vez quando o código atinge hbMaxLength. string

Parts

PropriedadeDescriçãoTipoPadrão
hb-input-otp-group Agrupa uma sequência de slots; use vários com separadores entre eles. component
hb-input-otp-slot [hbIndex] Uma célula de um caractere, vinculada à sua posição no valor. number required
hb-input-otp-separator Um divisor visual entre grupos; projeta um ícone de traço por padrão. component