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​

O br-radio-group agrupa opções de múltipla escolha onde apenas uma pode ser selecionada.

Adicione os elementos br-radio no slot padrão. Defina o rótulo do grupo em label e o valor selecionado em value.

<br-radio-group label="Turno de atendimento" name="turno">
<br-radio value="manha" label="Manhã"></br-radio>
<br-radio value="tarde" label="Tarde"></br-radio>
<br-radio value="noite" label="Noite"></br-radio>
</br-radio-group>

Em formulários HTML, o grupo integra-se via ElementInternals, controlando validação nativa com required.

Quando usar​

  • Entre 2 e 5 opções mutuamente exclusivas que devem permanecer visíveis.

Quando evitar​

  • Mais de 6 opções: use br-select para economizar espaço de tela.
  • Seleção de múltiplas opções ao mesmo tempo: use br-checkbox-group.
  • Liga/desliga imediato: use br-switch.

Consulte as diretrizes de design do GovBR.

Exemplo(s)​

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
Compartilhar URL
Ativar movimento reduzido
Mudar fundo
Abrir no StackBlitz
Mais opções
Tela cheia
Carregando preview…
HTML
Controles do componente
Console: logs, eventos e erros
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Desfazer alteração
Refazer alteração
Comparar alterações
Formatar código
Resetar código para o estado inicial
Escolher formato para copiar

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. Valores inválidos não aplicam estado. 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. Valores inválidos usam vertical.
Tipo"horizontal" | "vertical"
Valor padrão'vertical'

required​

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

validator Componente/funcionalidade ainda em testes. Use com cuidado, pois podemos fazer alterações.​

Atributo---
DescriçãoRegra síncrona ou assíncrona aplicada ao valor do grupo.
Recebe a string selecionada ou null quando nenhuma opção está marcada.
Exemplo de uso
const group = document.querySelector('br-radio-group');
group.validator = (value) => value ? null : 'Escolha uma alternativa';
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" Componente/funcionalidade ainda em testes. Use com cuidado, pois podemos fazer alterações.Indicador exibido durante validação assíncrona.

Eventos​

EventoDescriçãoDepreciaçãoPropagação
brRadioGroupValidationChange Componente/funcionalidade ainda em testes. Use com cuidado, pois podemos fazer alterações.Emitido 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 Componente/funcionalidade ainda em testes. Use com cuidado, pois podemos fazer alterações.​

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" Componente/funcionalidade ainda em testes. Use com cuidado, pois podemos fazer alterações.Área do indicador de validação assíncrona.

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.

Dependências​

Depende de​

Gráfico​

Comece aquiComponentesQuickstartsSobre o projetoRepositório GitLabVersõesDiscordGovBR-DSFAQWikiRedefinir cookies