Makuco UI
ComponentesData Entry & Selection

Textarea

Campo de texto multilinha para captura de conteúdo extenso, com suporte a validação, contador de caracteres e integração nativa com formulários. Usa a tag `mk-textarea`.

O mk-textarea é o campo de texto multilinha do Makuco UI. Suporta texto de suporte, mensagem de erro, contador de caracteres, número de linhas visíveis e integração nativa com formulários via ElementInternals.

Integração com Angular Forms

Para usar com ngModel ou FormControl, importe MkTextareaModule em vez de MkTextareaComponent. Veja Formulários com Angular.

Padrão

import { MkTextarea } from '@db1/makuco-ui-react';

<MkTextarea label="Mensagem" placeholder="Digite sua mensagem..." />
<mk-textarea label="Mensagem" placeholder="Digite sua mensagem..."></mk-textarea>

Texto de suporte

Use supportText para exibir uma dica abaixo do campo quando não há erro.

<MkTextarea label="Bio" supportText="Máximo 200 caracteres." placeholder="Conte algo sobre você..." />
<mk-textarea label="Bio" support-text="Máximo 200 caracteres." placeholder="Conte algo sobre você..."></mk-textarea>

Estado de erro

Defina errorMessage para ativar o estado inválido e exibir a mensagem abaixo do campo.

<MkTextarea label="Descrição" errorMessage="Campo obrigatório." />
<mk-textarea label="Descrição" error-message="Campo obrigatório."></mk-textarea>

Obrigatório

<MkTextarea label="Observações" required />
<mk-textarea label="Observações" required></mk-textarea>

Desabilitado e somente leitura

<MkTextarea label="Desabilitado" disabled value="Conteúdo não editável" />
<MkTextarea label="Somente leitura" readonly value="Apenas visualização" />
<mk-textarea label="Desabilitado" [disabled]="true" value="Conteúdo não editável"></mk-textarea>
<mk-textarea label="Somente leitura" [readonly]="true" value="Apenas visualização"></mk-textarea>

Contador de caracteres

Defina maxLength para habilitar o contador atual/máximo abaixo do campo.

<MkTextarea label="Bio" maxLength={200} placeholder="Conte algo sobre você..." />
<mk-textarea label="Bio" [max-length]="200" placeholder="Conte algo sobre você..."></mk-textarea>

Número de linhas

Use rows para controlar a altura inicial do campo em linhas de texto visíveis.

<MkTextarea label="Resumo" rows={4} />
<MkTextarea label="Detalhes" rows={8} />
<mk-textarea label="Resumo" [rows]="4"></mk-textarea>
<mk-textarea label="Detalhes" [rows]="8"></mk-textarea>

Formulários

O mk-textarea é form-associated e integra com <form> nativo via ElementInternals.

<form onSubmit={handleSubmit}>
  <MkTextarea label="Mensagem" name="mensagem" required />
  <MkButton type="submit">Enviar</MkButton>
</form>
<form (ngSubmit)="handleSubmit()">
  <mk-textarea label="Mensagem" name="mensagem" required></mk-textarea>
  <mk-button type="submit">Enviar</mk-button>
</form>

Props

PropTipoPadrãoDescrição
labelstringTexto do rótulo exibido acima do campo. Obrigatório.
valuestringValor controlado do textarea.
placeholderstringPlaceholder exibido quando o campo está vazio.
supportTextstringTexto auxiliar abaixo do campo, visível quando não há erro.
errorMessagestringMensagem de erro. Quando definida, ativa o estado inválido.
maxLengthnumberLimite de caracteres. Habilita o contador atual/máximo abaixo do campo.
rowsnumber1Número de linhas de texto visíveis — controla a altura inicial do campo.
requiredbooleanfalseMarca o campo como obrigatório com asterisco no rótulo.
disabledbooleanfalseDesabilita o campo, impedindo qualquer interação.
readonlybooleanfalseTorna o campo somente leitura — foco permitido, mas valor não pode ser alterado.
namestringAtributo name para envio em formulários.
requiredMessagestring"This field is required"Mensagem do tooltip de validação nativa quando required e vazio. Substitua para i18n.

Eventos

EventoPayloadDescrição
mkInputstringEmitido a cada tecla digitada com o valor atual do campo.
mkChangestringEmitido quando o campo perde o foco e o valor foi alterado.
mkFocusvoidEmitido quando o campo recebe foco.
mkBlurvoidEmitido quando o campo perde foco.

Acessibilidade

  • Usa <textarea> nativo internamente — foco e navegação por teclado estão inclusos.
  • aria-invalid="true" aplicado automaticamente quando errorMessage está definida.
  • aria-describedby aponta para o texto de suporte ou mensagem de erro.
  • O asterisco de campo obrigatório tem aria-hidden="true" — a semântica de obrigatoriedade é transmitida pelo atributo required nativo.
  • Com delegatesFocus: true, o foco é delegado ao <textarea> interno ao clicar no host.

On this page