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

Radio

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

Para a documentação completa de design, 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

checked

Atributochecked
DescriçãoDefine o estado de seleção do radio.
Se definido como verdadeiro, o radio estará marcado. Caso contrário, estará desmarcado.
Tipoboolean
Valor padrãofalse

customId

Atributocustom-id
DescriçãoIdentificador único; gerado automaticamente quando omitido.
Tipostring
Valor padrãogenerateUniqueId()

disabled

Atributodisabled
DescriçãoDesativa o radio, tornando-o não interativo.
Tipoboolean
Valor padrãofalse

feedbackState

Atributofeedback-state
DescriçãoEstado de feedback canônico. Quando informado, tem precedência sobre state.
Tipo"invalid" | "valid"
Valor padrão---

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

Atributohas-hidden-label
DepreciaçãoUse labelHidden.
DescriçãoDefine se o label associado ao radio deve ser oculto.
Se definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.
Tipoboolean
Valor padrãofalse

label

Atributolabel
DescriçãoTexto descritivo exibido à direita do radio.
Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.
Tipostring
Valor padrão---

labelHidden

Atributolabel-hidden
DescriçãoOculta visualmente o rótulo. Quando informada, tem precedência sobre hasHiddenLabel.
Tipoboolean
Valor padrão---

name

Atributoname
DescriçãoDefine o nome do radio, que é utilizado para agrupar radios em formulários e identificar o campo.
O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários. (obrigatório)
Tipostring
Valor padrão---

required

Atributorequired
DescriçãoSe verdadeiro, o radio é obrigatório e uma opção deve ser selecionada antes que o formulário possa ser enviado.
Tipoboolean
Valor padrãofalse

state

Atributostate
DescriçãoIndica a validade do radio.
Se não for especificado, o valor padrão é null, indicando que a validade não foi definida.
Tipo"invalid" | "valid"
Valor padrão---

uncheckOnDoubleClick

Atributouncheck-on-double-click
DescriçãoPermite desmarcar o radio ao clicar duas vezes sobre ele.
Por padrão, um radio selecionado permanece marcado ao receber um segundo clique.
Tipoboolean
Valor padrãofalse

validator

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

value

Atributovalue
DescriçãoDefine o valor associado ao radio quando ele faz parte de um formulário nativo (<form>).
Esse valor é enviado com o formulário quando o radio está selecionado.
Nota: Esta propriedade não deve ser utilizada para determinar se o radio está selecionado; para verificar o estado de seleção, use a propriedade checked.
Tipostring
Valor padrão---

Slots

NomeDescrição
"default"Slot para o rótulo do rádio, como alternativa à propriedade label.
"feedback"Mensagem de validação, normalmente um br-message.

Eventos

EventoDescriçãoDepreciaçãoPropagação
brRadioValidationChangeEmitido ao iniciar e concluir a validação customizada.---true
checkedChange Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.Disparado depois que o valor do checked foi alterado.Use input/change e leia event.target.checked.true

Métodos

checkValidity

DescriçãoRetorna true se o valor do radio for válido, caso contrário false.
Se o radio for inválido, dispara um evento 'invalid'.
AssinaturacheckValidity() => Promise<boolean>
Parâmetros---

getValidationState

DescriçãoRetorna um snapshot serializável da Constraint Validation API.
AssinaturagetValidationState() => Promise<FormValidationState>
Parâmetros---

reportValidity

DescriçãoRetorna true se o valor do radio for válido, caso contrário false.
Se for inválido, exibe a mensagem de erro padrão do navegador.
AssinaturareportValidity() => Promise<boolean>
Parâmetros---

setCustomValidity

DescriçãoDefine uma mensagem de validação customizada para o radio.
Se a mensagem for uma string vazia, o erro customizado é limpo.
AssinaturasetCustomValidity(message: string) => Promise<void>
Parâmetrosmessage:

setFocus

DescriçãoMove o foco para o input radio nativo interno.
AssinaturasetFocus() => Promise<void>
Parâmetros---

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

DescriçãoInverte o valor da prop checked
AssinaturatoggleChecked() => Promise<void>
DepreciaçãoAtualize a propriedade checked diretamente.
Parâmetros---

validate

DescriçãoExecuta o validator do radio e retorna se o valor atual é válido.
Assinaturavalidate() => Promise<boolean>
Parâmetros---

CSS Shadow Parts

NomeDescrição
"container"Contêiner visual do radio.
"feedback"Contêiner da mensagem de validação.
"radio-input"Elemento input nativo do radio.
"radio-label"Rótulo do radio.

Dependências

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-radio.

Rádios com o mesmo name formam um grupo. required exige uma opção do grupo e o accessor Angular preserva o valor semântico de value, em vez de expor somente booleano.

Use getValidationState() no grupo/controle e setCustomValidity() para regras de domínio. A mensagem é renderizada automaticamente como br-message quando não existe feedback:

<br-radio name="contato" value="email" label="E-mail" required></br-radio>

Para controlar o conteúdo, use o slot canônico feedback. O rádio referencia o conteúdo com aria-describedby e aria-errormessage; não combine um slot preenchido com outra mensagem visual para evitar duplicidade:

<br-radio name="contato" value="email" label="E-mail">
<br-message slot="feedback" state="danger">Selecione uma forma de contato.</br-message>
</br-radio>

O reset restaura a opção inicial sem eventos artificiais.

Para regras de domínio síncronas ou assíncronas, use validator com property binding. Ele recebe checked, pode ser acionado por await radio.validate() e emite brRadioValidationChange.

Acessibilidade

Agrupe rádios em fieldset com legend ou forneça um nome equivalente. A roving tabindex mantém somente a opção ativa na ordem de Tab; setas, Home e End mudam a opção conforme o padrão APG.

Mantenha name, value, checked e o label visível. Mensagens de erro devem ser associadas ao grupo e anunciadas em texto.

Eventos nativos

Elemento HTML de referência

br-radio representa <input type="radio">. Cada host contém um radio e controles com o mesmo name formam o grupo.

Como ouvir os eventos

const radio = document.querySelector('br-radio');
radio.addEventListener('change', () => console.log(radio.checked, radio.value));

Eventos nativos suportados

EventoQuando ocorreBubblesComposedCancelableHostObservações
changeradio é selecionadoSimSimNãoSimNão ocorre no radio desmarcado pelo grupo.
click e focoativação/navegaçãoconforme o tipoSimconforme o tipoSimSetas e tabulação seguem o grupo.
inputradio é selecionadoSimSimNãoSimOcorre antes de change.

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

beforeinput, composição e clipboard não se aplicam. Escrita externa e reset são silenciosos.

Eventos customizados

checkedChange é alias depreciado. Prefira input/change.

Valor, frameworks e acessibilidade

Leia checked e value no target; o selecionado participa de FormData. Os wrappers usam o mesmo grupo por name. Setas movem a seleção e há um único ponto de tabulação.

Evidência de teste

src/shared/platform-contract.e2e.tsx cobre clique, ordem, flags e FormData; _tests/radio.e2e.tsx cobre foco, setas e grupos em Chromium headless.