Textarea

O Textarea é um campo de entrada de texto que permite que seu aplicativo aceite um valor de texto potencialmente longo do usuário.

Código compartilhado entre exemplos

Como usar

Propriedades obrigatórias

Atributo Tipo Valor padrão Descrição
class string br-textarea Container do componente

Propriedades Adicionais

Atributo Tipo Valor padrão Descrição
class string small ou large Modifica a densidade.
class string dark-mode Aplica cores para fundos escuros.

Estados

Estado atributo Valores
Desativado disabled
Erro class danger
Sucesso class success
Alerta class warning
Informação class info

Instanciação do Componente

HTML

Incluir o arquivo core.min.js no html.

<script src="node_modules/@govbr-ds/core/dist/core.min.js"></script>

O arquivo core.min.js expõe um objeto chamado core contendo as referências para todas as classes exportadas.

JavaScript

Usar o seguinte código JavaScript para instanciar a classe brTextArea, passando os seguintes parâmetros:

  • Nome da classe (br-textarea)
  • Objeto referenciando a raiz do componente DOM
const textareaList = []
for (const brTextArea of window.document.querySelectorAll('.br-textarea')) {
  textareaList.push(new core.BRTextArea('br-textarea', brTextArea))
}
Esta informação foi útil?

Gostaria de enviar mais detalhes sobre seu feedback?

Selecione a opção que melhor descreve sua insatisfação:


Exemplo de Textarea
Exemplo de Textarea

Utilize o Textarea quando:

  • Houver a necessidade de inserir dados de forma textual através de um sistema ou aplicação;
  • A informação textual requerida for relativamente longa, exigindo múltiplas linhas de texto.

Anatomia

O Textarea é constituído por:

ID Nome Referência Uso
1 Label Fundamento Tipografia Opcional
2 Campo de Entrada de Texto Obrigatório
3 Ícone de Redimensionamento Fundamento Iconografia Obrigatório
4 Placeholder Fundamento Tipografia Opcional
5 Mensagem Componente Message Opcional
6 Texto Auxiliar Fundamento Tipografia Opcional

Anatomia do Textarea
Anatomia do Textarea


Detalhamento dos Itens

Abaixo segue o detalhamento dos itens do Componente Textarea. Para maiores informações consulte também a documentação Padrão de Formulário.

1. Label (Opcional)

Auxiliam o usuário, indicando que tipo de informação deverá ser digitada no Campo de Texto. O texto do Label deverá ser curto e objetivo.

Além disso, o Label também tem a função de indicar ao usuário se o Campo de Texto é obrigatório ou não. Veja detalhes sobre a indicação de Campos Obrigatórios/Opcionais no documento Padrão de Formulário.

Posicionamento do Label

A - O Label posiciona-se por padrão no topo do Campo de Texto.

B - Caso haja necessidade, há um posicionamento alternativo, à esquerda do Campo de Texto, alinhado ao topo. Observe abaixo:

Posições para o Label
Posições para o Label

Atenção: ao optar por um tipo de posicionamento, recomenda-se que todos os campos na página sigam o mesmo posicionamento, seja no topo ou na lateral do Campo.

2. Campo de Entrada de Texto (Obrigatório)

Este é o elemento essencial e obrigatório do componente. Através dele o usuário poderá inserir múltiplas linhas de texto.

É recomendado que o campo Textarea tenha um tamanho aproximado ao texto de entrada esperado, ou seja, recomenda-se prever este tamanho aproximado, dependendo da quantidade de caracteres esperada. Observe o exemplo abaixo:

Tamanho do Textarea
Tamanho do Textarea

3. Ícone de Redimensionamento (Obrigatório)

Este é um elemento padrão do próprio html, que tem como funcionalidade redimensionar o componente Textarea. É posicionado na parte inferior direita do Textarea e o redimensionamento poderá ser feito tanto na horizontal quanto na vertical. Para mais detalhes consulte Comportamento > Redimensionamento.

Exemplo de Ícone de Redimensionamento
Exemplo de Ícone de Redimensionamento

4. Placeholder (Opcional)

O placeholder tem a função de auxiliar o usuário em como preencher os dados solicitados. Obrigatoriamente deverá trazer uma informação mais completa que a contida no Label/Label. Ele desaparecerá logo ao iniciar a digitação no campo de entrada de texto. E retornar no caso de exclusão da informação.

Use o Placeholder quando o usuário não estiver familiarizado com a entrada solicitada ou a formatação estiver em questão (por exemplo, AAAA-MM-DD).

Exemplo de Placeholder
Exemplo de Placeholder

5. Mensagem (Opcional)

O Componente Message é utilizado quando há necessidade de dar uma mensagem de feedback ao usuário. A mensagem pode ter até quatro objetivos diferentes: Erro, Sucesso, Alerta e Informativo. Observe os exemplos abaixo:

Componente Mensagem Erro
Componente Mensagem Erro

Componente Mensagem Sucesso
Componente Mensagem Sucesso

Componente Mensagem Alerta
Componente Mensagem Alerta

Componente Mensagem Informativa
Componente Mensagem Informativa

6. Texto Auxiliar (Opcional)

O Texto Auxiliar é opcional e tem a função de ajudar o usuário no preenchimento do texto, acrescentando alguma informação mais detalhada. É bastante útil quando a informação no Label e Placeholder não são suficientes.

Exemplo de Texto Auxiliar
Exemplo de Texto Auxiliar


Comportamentos

1. Responsividade

Grid de 12 e 8 Colunas

Na Grid de 12 e 8 colunas o Textarea terá seu tamanho ajustado a um tamanho aproximado da entrada de texto esperada. Poderá variar conforme à necessidade.

Ao reduzir a resolução da tela o Textarea poderá ter dois comportamentos esperados:

1 - Adequa-se a nova largura de tela, quebrando linha e ocupando toda horizontal

2 - Poderá ter sua própria largura comprimida.

Observe abaixo:

Textarea - Grid de 12 colunas
Textarea - Grid de 12 colunas

Textarea - Grid de 8 colunas
Textarea - Grid de 8 colunas ocupando toda largura Horizontal

Textarea - Grid de 8 colunas
Textarea - Grid de 8 colunas com largura comprimida

Grid de 4 Colunas

Na Grid de 4 colunas, o Textarea deverá se estender por toda largura da tela, proporcionando mais espaço para o usuário digitar o texto solicitado. Também deverá ser utilizada uma altura razoável para melhor visualização por parte do usuário.

Textarea - Grid de 4 colunas
Textarea - Grid de 4 colunas

2. Redimensionamento

Através do Ícone de Redimensionamento, o Textarea poderá ser re-ajustado tanto na horizontal quanto na vertical ou em ambas as dimensões simultaneamente. Observe os exemplos abaixo:

Redimensionamento Horizontal
Redimensionamento Horizontal

Redimensionamento Vertical
Redimensionamento Vertical

Redimensionamento Horizontal e Vertical
Redimensionamento em ambas dimensões

Tamanho Fixo Opcional

O redimensionamento do Textarea é um comportamento opcional, este poderá ser configurado para permanecer com o tamanho fixo na tela. Neste caso, o Ícone de Redimensionamento não será exibido.

Textarea com Tamanho Fixo
Textarea com Tamanho Fixo

Tamanho Fixo Obrigatório - Mobile

Em dispositivos móveis, Grid de 4 Colunas, o tamanho do Textarea deve permanecer fixo, ocupando toda largura disponível, devido ao espaço reduzido para realizar o redimensionamento.

3. Barra de Rolagem

Quando o número de caracteres ultrapassa a altura do Textarea, este deverá apresentar uma barra de rolagem. Observe abaixo:

Textarea com Barra de Rolagem
Textarea com Barra de Rolagem

Atenção: a Barra de Rolagem será o elemento nativo renderizado pelo Navegador.

4. Contagem de Caracteres (Opcional)

O Componente Textarea possui o comportamento de contagem de caracteres. Este comportamento é opcional e funciona de duas formas. Observe abaixo:

A. Preenchimento com limite máximo

Compreende em definir uma quantidade máxima de caracteres e através do Texto Auxiliar a quantidade restante de caracteres será atualizada dinamicamente enquanto o usuário digitar. Veja o exemplo abaixo:

1 - O usuário ainda não começou digitar no campo de texto. O Texto Auxiliar informa ao usuário o limite máximo de caracteres permitidos.

2 - O usuário está digitando o texto. A informação de caracteres restantes é atualizada dinamicamente no Texto Auxiliar.

3 - O usuário atinge o limite máximo de caracteres permitido. O Textarea bloqueia o acesso à digitação e o Texto Auxiliar informa que não restam mais caracteres a serem preenchidos.

Contagem de Caracteres com limite
Contagem de Caracteres com limite

B. Preenchimento sem limite máximo de caractere

Nesta situação o contador de caracteres indica a quantidade que já foi digitada apenas como informação ao usuário. Neste tipo, não há limitação da quantidade de caracteres digitada. Observe abaixo:

1 - O usuário ainda não começou a digitar e o Texto Auxiliar informa que não foi digitado qualquer caractere.

2 - O usuário está digitando e o Texto Auxiliar vai sendo atualizado dinamicamente informando a quantidade de caracteres digitada.

3 - Enquanto o usuário continuar digitando a informação será atualizada no Texto Auxiliar. Neste caso não há limite máximo de caracteres.

Contagem de Caracteres sem limite
Contagem de Caracteres sem limite

5. Densidade

O Textarea poderá ser usado com densidades diferentes. A Densidade tem a ver com o espaço interno oferecido no Campo de Entrada de Texto. Consulte os espaçamentos em Design > Tokens.

A. Densidade Baixa

É bastante útil quando for necessária uma área de ‘respiro’ maior ou quando for mais adequado ao projeto de layout.
Densidade do Textarea

B. Densidade Média

É a densidade comum utilizada nos campos de entrada de texto. Geralmente utilizada, na maioria dos casos, em resoluções para Tablet e Desktop.
Densidade do Textarea

C. Densidade Alta

É a situação onde o espaçamento interno do campo é bastante reduzido.

Densidade do Textarea
Densidade do Textarea

6. Estados

O componente Textarea é bem parecido com o componente input. Portanto, boa parte dos comportamentos são similares e podem ser “reaproveitados”.

Para simplificação, utilize o comportamento Estados da mesma forma como é encontrado no Input (tanto na parte de uso em fundos claros e escuros como nas suas limitações descritas).


Especificações

Cores

Name Property Token/Value
Label/Label color --gray-80
Label/Label Fundo Escuro color --pure-0
Placeholder color --gray-80
Texto Auxiliar color --gray-80
Campo de texto background --pure-0
Borda Campo de texto background --gray-40

Tipografia

Name Token Size Token Weight
Label/Label --font-size-scale-base --font-weight-semi-bold
Placeholder --font-size-scale-base --font-weight-regular
Texto Auxiliar --font-size-scale-base --font-weight-regular

Dimensões

Name Property Token/Value
Campo de texto Width variável
Campo de texto Height variável
Campo de texto Border-Radius --surface-rounder-sm

Espaçamentos

Name Property Token/Value
Label/Label Topo margin-bottom --spacing-scale-half
Label/Label Lateral margin-right --spacing-scale-base
Placeholder margin-left --spacing-scale-2x
Placeholder margin-top --spacing-scale-base
Texto Auxiliar margin-top --spacing-scale-base
Campo de texto margin-top --spacing-scale-half
Campo de texto margin-bottom --spacing-scale-base
Campo de texto Densidade Baixa padding-top --spacing-scale-2x
Campo de texto Densidade Baixa padding-bottom --spacing-scale-2x
Campo de texto Densidade Baixa padding-left --spacing-scale-2x
Campo de texto Densidade Baixa padding-right --spacing-scale-2x
Campo de texto Densidade Média padding-top --spacing-scale-baseh
Campo de texto Densidade Média padding-bottom --spacing-scale-baseh
Campo de texto Densidade Média padding-left --spacing-scale-baseh
Campo de texto Densidade Média padding-right --spacing-scale-2x
Campo de texto Densidade Alta padding-top --spacing-scale-base
Campo de texto Densidade Alta padding-bottom --spacing-scale-base
Campo de texto Densidade Alta padding-left --spacing-scale-base
Campo de texto Densidade Alta padding-right --spacing-scale-2x
Esta informação foi útil?

Gostaria de enviar mais detalhes sobre seu feedback?

Selecione a opção que melhor descreve sua insatisfação:

Acessibilidade no Textarea

  • Textareas devem ser acessíveis por meio de navegação via teclado, por meio da tecla Tab;

  • Utilize a marcação correta para o estado de foco previsto na diretriz de estados quando o foco estiver ativo no textarea;

  • Após o textarea receber o foco, permita que o usuário possa digitar imediatamente o texto sem necessidade de qualquer outro passo anterior;

  • Siga uma ordem lógica para tabulação, focalizando primeiramente o rótulo associado ao textarea, depois ícones/botões de informação associados ao rótulo e o textarea;

  • Por padrão, o usuário deve conseguir navegar entre as palavras do texto digitado com o uso das teclas Ctrl + left/right no Windows ou Option + left/right no Mac.

Recomendações para Estilo e Design

  • Utilize rótulos (labels) claros e descritivos para que o usuário compreenda o propósito do campo de texto;

  • Adicione ajuda contextual, fornecendo informações adicionais ou instruções para os usuários entenderem detalhes a respeito do preenchimento do textarea. Utilize um texto auxiliar abaixo do textarea ou um ícone de informação ao lado do rótulo;

  • Para validação em campos de texto, é importante fornecer feedback visual imediato quando o usuário preencher o textarea. Marque o textarea com a cor correspondente ao estado de sucesso, se o usuário preencher corretamente, ou cor correspondente ao estado de erro, se houver erro no preenchimento do campo.

Recomendações para Código

  • Utilize a marcação semântica correta no código HTML, com a tag <textarea>;

  • Associe o textarea ao rótulo usando o atributo for na tag <label> e um id com mesmo valor na tags <textarea>;

  • Caso seja necessário, use o atributo aria-describedby para vincular a um elemento de ajuda ou instrução e fornecer informações adicionais aos usuários que podem precisar de mais contexto.

Referências

Esta informação foi útil?

Gostaria de enviar mais detalhes sobre seu feedback?

Selecione a opção que melhor descreve sua insatisfação: