Ir para o conteúdo principal
WBC - GovBR-DS
Copiar página como Markdown para IA

Tag

Componente estável e recomendada para novos projetos.
Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.

Visão Geral

Para a documentação completa, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o Design System do GovBR.

Exemplo(s)

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
Compartilhar URL
Mudar fundo
Abrir no StackBlitz
Tela cheia
HTML
Controles
JS
CSS
Console
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Formatar código
Resetar código para o estado inicial
Copiar para a área de transferência

Propriedades

ariaDescribedby

Atributoaria-describedby
DescriçãoID do elemento que fornece descrição adicional da tag.
Referencia um elemento na página que contém informações complementares sobre a tag.
A descrição é lida após o conteúdo principal, fornecendo contexto extra aos usuários de leitores de tela.
Exemplo: aria-describedby="help-status" onde existe
Aguardando aprovação
Tipostring
Valor padrãonull

ariaLabel

Atributoaria-label
DescriçãoDefine o rótulo acessível usado por tecnologias assistivas.
Tipostring
Valor padrão---

bgColor

Atributobg-color
DescriçãoA propriedade 'color' permite definir a cor do componente.
Aceita valores como 'red', 'blue', entre outros, e é refletida no DOM.
Tipostring
Valor padrão''

customId

Atributocustom-id
DescriçãoIdentificador único do componente.
Quando omitido, um valor é gerado automaticamente.

> Padrão: valor único gerado por generateUniqueId().
Tipostring
Valor padrãogenerateUniqueId()

density

Atributodensity
DescriçãoDefine a densidade visual do componente.

- small: Alta densidade (componente menor, mais compacto e com menos espaçamento).
- medium: Densidade intermediária, padrão recomendado para a maioria dos casos.
- large: Baixa densidade (componente maior, mais espaçamento e altura).
Tipo"large" | "medium" | "small"
Valor padrão'medium'

disabled

Atributodisabled
DescriçãoDesabilita a interação com o componente.
Tipoboolean
Valor padrãofalse

iconName Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.

Atributoicon-name
DepreciaçãoUse o slot icon com um SVG, asset ou elemento de ícone controlado pela aplicação.
DescriçãoA propriedade 'iconName' define um nome Iconify para o ícone exibido ao lado do texto.
Tipostring
Valor padrão''

interaction Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.

Atributointeraction
DepreciaçãoUse variant="action".
DescriçãoInteração deve ser habilitada.
Tipoboolean
Valor padrãofalse

interactionSelect Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.

Atributointeraction-select
DepreciaçãoUse variant="selectable".
DescriçãoInteração de seleção deve ser habilitada.
Tipoboolean
Valor padrãofalse

label

Atributolabel
DescriçãoA propriedade 'label' é uma string que representa o texto a ser exibido no componente.
Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.
Tipostring
Valor padrão''

maxSelections

Atributomax-selections
DescriçãoQuantidade máxima de tags selecionadas no mesmo grupo. Zero significa sem limite.
Tiponumber
Valor padrão0

minSelections

Atributomin-selections
DescriçãoQuantidade mínima de tags selecionadas no mesmo grupo.
Tiponumber
Valor padrão0

multiple

Atributomultiple
DescriçãoA tag permite seleção múltipla.
Tipoboolean
Valor padrãofalse

name

Atributoname
DescriçãoA propriedade 'name' é uma string que representa o nome do grupo da tag para seleção.
Ela é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.
Tipostring
Valor padrão''

required

Atributorequired
DescriçãoExige uma seleção no grupo quando interaction-select está ativo.
Tipoboolean
Valor padrãofalse

selected

Atributoselected
DescriçãoA tag está selecionada.
Tipoboolean
Valor padrãofalse

shape

Atributoshape
DescriçãoA propriedade 'shape' define o formato do componente.
Tipo"circle" | "default" | "rounded"
Valor padrão'default'

size

Atributosize
DescriçãoDefine o tamanho personalizado do componente quando o formato for circular (circle), arredondado (rounded) ou status.
Aceita qualquer valor de tamanho CSS válido (ex: 16px, 1.5rem).
Tipostring
Valor padrão''

status Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.

Atributostatus
DepreciaçãoUse variant="status".
DescriçãoTransforma a tag em um indicador de status, com aparência circular.
É flexível podendo ser utilizado com label ou apenas a superfície circular (informação é transmitida por meio de cores).
Tipoboolean
Valor padrãofalse

validator

Atributo---
DescriçãoRegra síncrona ou assíncrona aplicada ao estado e valor da tag.
Tipo(value: TagValidationValue) => string | Promise<string>
Valor padrão---

value

Atributovalue
DescriçãoValor submetido quando a tag selecionável está ativa.
Tipostring
Valor padrão''

variant

Atributovariant
DescriçãoVariante funcional canônica. Quando informada, tem precedência sobre os modos booleanos legados.
Tipo"action" | "default" | "selectable" | "status"
Valor padrão---

Slots

NomeDescrição
"close-button"Botão de fechar customizado. Quando utilizado, o botão padrão é substituído.
"default"Slot para inserir o conteúdo da tag, como rótulo ou ícone.
"feedback"Mensagem de validação, normalmente um br-message.
"icon"Ícone customizado da tag. Quando utilizado, a prop icon é ignorada.
"label"Rótulo customizado da tag. Quando utilizado, a prop label é ignorada.

Eventos

EventoDescriçãoDepreciaçãoPropagação
brTagValidationChangeEmitido ao iniciar e concluir a validação customizada.---true
radioSelected Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.Evento emitido quando a tag é selecionada.Use input/change e leia event.target.selected.true

CSS Shadow Parts

NomeDescrição
"feedback"Contêiner da mensagem de validação.
"input"Elemento input da tag de seleção.
"label"Rótulo da tag de seleção.
"tag"Elemento principal da tag.

Dependências

Usado por

Depende de

Gráfico

Validação

Para o contrato geral e a matriz de componentes, consulte o guia de formulários. Esta seção documenta o contrato específico do br-tag.

Com interaction-select, use required para exigir seleção e min-selections/max-selections no grupo quando aplicável. Leia selected, name e value no target do evento.

Regras de domínio devem ser sincronizadas por setCustomValidity() e consultadas por getValidationState().

Em interaction-select, a mensagem é renderizada como br-message quando não existe feedback. Use o slot feedback para fornecer o conteúdo e manter a referência ARIA.

Para regras de domínio, use validator por property binding. Ele recebe { selected, value, label }, permitindo validar o item sem depender do texto renderizado. A validação também pode ser acionada por await tag.validate() e emite brTagValidationChange.

Acessibilidade

Tags selecionáveis precisam de nome textual, estado selecionado determinável e foco visível. Use grupo nomeado quando várias tags formarem uma escolha relacionada; não use tags decorativas como controles.

Ofereça ativação por Enter/Espaço, mantenha aria-selected sincronizado e associe ajuda/erro por referências ARIA válidas.

Eventos nativos

Elemento HTML de referência

Somente a tag selecionável possui referência nativa: checkbox em modo múltiplo e radio em modo exclusivo. Tags informativas/removíveis não são controles de formulário equivalentes.

Como ouvir os eventos

const tag = document.querySelector('br-tag[interaction-select]');
tag.addEventListener('change', () => console.log(tag.selected));

Eventos nativos suportados

EventoQuando ocorreBubblesComposedCancelableHostObservações
changeseleção é confirmadaSimSimNãoSimDepois de input.
inputseleção mudaSimSimNãoSimApenas no modo selecionável.
click, teclado e focotag selecionável é ativadaconforme o tipoSimconforme o tipoSimSemântica depende do modo.

Eventos não aplicáveis ou não suportados

Tags não selecionáveis não emitem input/change. Eventos de edição textual não se aplicam. Escrita externa e reset são silenciosos.

Eventos customizados

radioSelected é alias legado. A remoção possui evento próprio porque não equivale a mudança de valor de um input.

Valor, frameworks e acessibilidade

Leia selected e value no host. FormData existe apenas no modo associado a formulário. Wrappers usam os modelos documentados. O papel, estado e teclado devem corresponder ao modo checkbox/radio.

Evidência de teste

src/shared/platform-contract.e2e.tsx cobre API comum de formulário; _tests/tag.e2e.tsx cobre seleção e teclado em Chromium. Flags e FormData por modo permanecem pendentes.