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

Radio Group

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

Design System

Grupo semântico de radios que representa um único campo de formulário. Consulte também as diretrizes do Radio no Design System 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

ariaLabel

Atributoaria-label
DescriçãoNome acessível usado quando não há uma legenda visível.
Tipostring
Valor padrãonull

customId

Atributocustom-id
DescriçãoIdentificador usado nas relações acessíveis internas.
Tipostring
Valor padrãogenerateUniqueId()

defaultValue

Atributodefault-value
DescriçãoValor restaurado por form.reset() e usado como seleção inicial.
Tipostring
Valor padrão---

disabled

Atributodisabled
DescriçãoDesabilita o grupo e seus radios.
Tipoboolean
Valor padrãofalse

feedbackState

Atributofeedback-state
DescriçãoEstado visual opcional do feedback. A validade real vem de ElementInternals.
Tipo"invalid" | "valid"
Valor padrão---

label

Atributolabel
DescriçãoTexto visível usado como legenda do grupo.
Tipostring
Valor padrão---

name

Atributoname
DescriçãoNome do campo enviado pelo formulário. (obrigatório)
Tipostring
Valor padrão---

orientation

Atributoorientation
DescriçãoOrientação visual das opções.
Tipo"horizontal" | "vertical"
Valor padrão'vertical'

required

Atributorequired
DescriçãoExige uma opção habilitada selecionada.
Tipoboolean
Valor padrãofalse

validator

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

value

Atributovalue
DescriçãoValor atualmente selecionado; null representa nenhuma seleção.
Tipostring
Valor padrãonull

Slots

NomeDescrição
"default"Radios pertencentes ao grupo.
"description"Texto auxiliar do grupo.
"feedback"Mensagem de validação do grupo.
"label"Legenda do grupo, como alternativa à propriedade label.
"validation-loading"Indicador exibido durante validação assíncrona.

Eventos

EventoDescriçãoDepreciaçãoPropagação
brRadioGroupValidationChangeEmitido ao iniciar e concluir uma validação customizada.---true

Métodos

checkValidity

DescriçãoVerifica a validade do grupo.
AssinaturacheckValidity() => Promise<boolean>
Parâmetros---

getValidationState

DescriçãoRetorna o snapshot de validade do grupo.
AssinaturagetValidationState() => Promise<FormValidationState>
Parâmetros---

reportValidity

DescriçãoVerifica a validade e apresenta a mensagem do grupo.
AssinaturareportValidity() => Promise<boolean>
Parâmetros---

setCustomValidity

DescriçãoDefine a mensagem de validade customizada do grupo.
AssinaturasetCustomValidity(message: string) => Promise<void>
Parâmetrosmessage:

setFocus

DescriçãoMove o foco para o radio marcado ou para o primeiro radio habilitado.
AssinaturasetFocus() => Promise<void>
Parâmetros---

validate

DescriçãoExecuta o validator do grupo.
Assinaturavalidate() => Promise<boolean>
Parâmetros---

CSS Shadow Parts

NomeDescrição
"description"Área de texto auxiliar.
"feedback"Área de mensagem de validação.
"group"Fieldset semântico do grupo.
"legend"Legenda e nome acessível do grupo.
"options"Contêiner das opções.
"validation-loading"Área do indicador de validação assíncrona.

Dependências

Depende de

Gráfico

Validação

br-radio-group é o único campo associado ao formulário quando organiza radios. required, setCustomValidity(), checkValidity(), reportValidity() e getValidationState() operam sobre o valor único do grupo; os radios filhos deixam de contribuir individualmente para FormData e para a validade do formulário.

<br-radio-group name="contato" label="Forma de contato" required>
<br-radio name="contato" value="email" label="E-mail"></br-radio>
<br-radio name="contato" value="telefone" label="Telefone"></br-radio>
</br-radio-group>

Sem o slot feedback, a mensagem de required, do validator ou de setCustomValidity() é renderizada automaticamente. Use o slot para controlar a apresentação. Regras síncronas ou assíncronas podem ser atribuídas pela propriedade validator; elas recebem string | null, são executadas em alterações do usuário ou por validate() e emitem brRadioGroupValidationChange.

O estado inicial vem de defaultValue, depois de value ou do último filho inicialmente marcado. form.reset() restaura esse valor sem emitir input ou change. Alterações programáticas também são silenciosas.

Angular e Vue tratam o grupo como um controle de valor único. Em Angular, a diretiva de validade traduz a Constraint Validation API para webComponentValidity; os accessors finais são atualizados pela geração normal dos wrappers.

O grupo normaliza o name dos radios em runtime. Os exemplos também o declaram nos filhos para preservar a tipagem pública obrigatória e retrocompatível de br-radio nos wrappers.

Acessibilidade

O componente usa fieldset e legend, portanto não precisa adicionar role="radiogroup". Informe label, preencha o slot label ou, quando uma legenda visível não for apropriada, use aria-label. Não deixe o grupo sem nome acessível.

Somente o radio marcado participa da ordem de Tab. Sem seleção, o primeiro radio habilitado recebe Tab. Setas movem foco e seleção com retorno circular; Home seleciona o primeiro e End o último. Radios desabilitados são ignorados. O grupo anuncia o valor por meio do estado checked do input nativo de cada br-radio.

O slot description é ligado por aria-describedby; erros são ligados por aria-errormessage e aria-invalid. Mensagens devem continuar visíveis em texto, sem depender apenas de cor ou ícone. Ao falhar em reportValidity(), o foco é enviado para a opção marcada ou para a primeira habilitada.

Apenas filhos br-radio diretos são gerenciados. Essa restrição mantém ordem visual, ordem de teclado e reconciliação dinâmica iguais. Radios adicionados ou removidos são reavaliados automaticamente.

Eventos nativos

Eventos do valor

O grupo intercepta os eventos dos radios e reemite um único input seguido de change no host. Ambos usam bubbles: true e composed: true; leia o valor atual em event.target.value. A opção individual continua expondo checked, mas seu evento não atravessa o grupo como um segundo evento observável.

Setas, Home e End que alteram a seleção produzem a mesma sequência. Escritas em value ou checked, restauração de estado, inclusão/remoção de filhos e form.reset() são programáticos e não emitem esses eventos.

brRadioGroupValidationChange é um evento customizado separado, emitido no início e no fim de uma validação por validator, com { validating, valid, message }.

Atributos nativos

O host é um Form-Associated Custom Element. name, value, required, disabled e a associação nativa por form pertencem ao grupo. Quando habilitado e selecionado, new FormData(form) contém no máximo uma entrada com o name e o value do grupo.

O grupo normaliza o name dos filhos enquanto eles estiverem gerenciados e restaura o valor anterior quando forem removidos. disabled no grupo impede interação, validação e envio; disabled em uma opção apenas a exclui da seleção e da navegação.

default-value define o valor de reset. orientation="horizontal|vertical" muda a disposição visual; não altera a semântica de escolha única.