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

Checkbox

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 checkbox.
Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.
Tipoboolean
Valor padrãofalse

customId

Atributocustom-id
DescriçãoIdentificador único.
Caso não seja fornecido, um ID gerado automaticamente será usado.
Tipostring
Valor padrãobr-checkbox-${checkboxId++}

disabled

Atributodisabled
DescriçãoDesativa o checkbox, 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 checkbox deve ser oculto.
Se definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional.
Tipoboolean
Valor padrãofalse

indeterminate

Atributoindeterminate
DescriçãoDefine o estado intermediário do checkbox.
Quando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.
Útil para representar grupos onde alguns itens estão selecionados, mas não todos.
Ao clicar no checkbox neste estado, ele será automaticamente alterado para marcado.
Tipoboolean
Valor padrãofalse

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

Atributois-father
DepreciaçãoConfigure seleção coletiva em br-checkbox-group/br-checkgroup.
DescriçãoIndica se o checkbox é pai de um grupo de checkboxes.
Tipoboolean
Valor padrãofalse

label

Atributolabel
DescriçãoTexto descritivo exibido à direita do checkbox.
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 checkbox, que é utilizado para agrupar checkboxes 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 checkbox é obrigatório e deve ser marcado antes que o formulário possa ser enviado.
Tipoboolean
Valor padrãofalse

state

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

validator

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

value

Atributovalue
DescriçãoDefine o valor associado ao checkbox quando ele faz parte de um formulário nativo (<form>).
Esse valor é enviado com o formulário quando o checkbox está selecionado.
Nota: Esta propriedade não deve ser utilizada para determinar se o checkbox 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 checkbox, como alternativa à propriedade label.
"feedback"Mensagem de validação, normalmente um br-message.

Eventos

EventoDescriçãoDepreciaçãoPropagação
brCheckboxValidationChangeEmitido 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
indeterminateChangeDisparado depois que o valor do indeterminate foi alterado.---true

Métodos

checkValidity

DescriçãoRetorna true se o valor do checkbox for válido, caso contrário false.
Se o checkbox 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 checkbox 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 checkbox.
Se a mensagem for uma string vazia, o erro customizado é limpo.
AssinaturasetCustomValidity(message: string) => Promise<void>
Parâmetrosmessage:

setIndeterminate

DescriçãoDefine o estado indeterminado do checkbox.
AssinaturasetIndeterminate(value: boolean) => Promise<void>
Parâmetrosvalue: Novo valor para o estado indeterminado.

setNumberOfChildren

DescriçãoDefine o número de checkboxes filhos em um grupo de checkboxes.
AssinaturasetNumberOfChildren(value: number) => Promise<void>
Parâmetrosvalue: Número de checkboxes filhos.

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 checkbox e retorna se o valor atual é válido.
Assinaturavalidate() => Promise<boolean>
Parâmetros---

Dependências

Usado por

Depende de

Gráfico

Migração de <br-checkbox> (1.x → 2.x)

O checkbox mantém o elemento e o modelo de seleção, mas a validação e a comunicação de mudanças seguem a API nativa e as propriedades de estado atuais.

Propriedades e eventos

API 1.xAPI 2.xAção na migração
checked, disabled, required, name, valuemesmos nomesMantenha e revise a passagem de atributos.
dataChildisFatherMantenha apenas quando estiver migrando uma relação pai/filhos; prefira br-checkbox-group para agrupamento.
inlineRemova; organize o layout no contêiner.
invalid / validstateUse o estado semântico atual.
labellabel ou slotMantenha a propriedade ou use conteúdo customizado.
update:checkedinput / changeEscute os eventos nativos do Web Component.

Exemplo

1.x:

<br-checkbox :checked="value" label="Aceito" @update:checked="onChange"></br-checkbox>

2.x:

<br-checkbox checked label="Aceito"></br-checkbox>
<script>
checkbox.addEventListener('change', onChange)
</script>

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

Use required para exigir que checked seja verdadeiro. O valor enviado usa name e value; a validade pode ser consultada por checkValidity()/getValidationState() ou apresentada por reportValidity().

Para uma regra de negócio, use setCustomValidity() e limpe a mensagem quando o usuário corrigir a seleção. A mensagem é renderizada automaticamente como br-message quando não existe feedback:

<br-checkbox id="termos" name="termos" required label="Aceito os termos"></br-checkbox>

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

<br-checkbox id="termos" name="termos" label="Aceito os termos">
<br-message slot="feedback" state="danger">Você deve aceitar os termos.</br-message>
</br-checkbox>

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

Acessibilidade

Use label textual visível. O componente expõe semântica de checkbox, mantém checked e aria-checked sincronizados e delega foco ao controle nativo interno. A tecla Espaço alterna o estado; Enter não deve ser usado como substituto.

Associe instruções e erros com aria-describedby/aria-errormessage e não comunique erro apenas por cor.

Eventos nativos

Elemento HTML de referência

br-checkbox representa <input type="checkbox"> e mantém esse controle dentro do Shadow DOM.

Como ouvir os eventos

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

Eventos nativos suportados

EventoQuando ocorreBubblesComposedCancelableHostObservações
changeestado alternaSimSimNãoSimUma ocorrência por clique.
clickativação por ponteiro/SpaceSimSimSimSimPreservado pelo navegador.
inputestado alternaSimSimNãoSimOcorre antes de change.
eventos de focofoco entra ou saiconforme o tipoSimNãoSimDelegação usa focusin/focusout.

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

beforeinput, composição e clipboard não se aplicam. Escrita em checked, reset e inicialização não emitem input/change.

Eventos customizados

checkedChange é alias depreciado; indeterminateChange comunica o estado adicional indeterminate.

Valor, frameworks e acessibilidade

Leia event.target.checked e value; somente marcado participa de FormData. HTML, React, Angular e Vue recebem o par nativo. Space alterna o controle e aria-checked="mixed" representa indeterminado.

Evidência de teste

src/shared/platform-contract.e2e.tsx cobre clique real, ordem, flags, target, caminho, delegação e FormData em Chromium headless.