Skip to main content

Checkbox

Apresentação

O componente Checkbox é responsável por criar caixas de seleção que permitem ao usuário selecionar uma ou mais opções. Ele é ideal para formulários, listas de seleção e qualquer situação que exija uma escolha binária (sim/não) ou múltipla.

Quando usar

  • Em formulários de seleção múltipla
  • Para aceitar termos e condições
  • Para selecionar preferências
  • Para marcar itens em listas
  • Para ativar/desativar opções
  • Para selecionar filtros
  • Para escolher categorias
  • Para marcar tarefas concluídas
  • Para selecionar itens em tabelas
  • Para ativar configurações

Forma básica de uso

import { Checkbox } from 'eitri-luminus';

// Checkbox básico
<Checkbox />

// Checkbox com label
<div className="form-control">
<label className="label cursor-pointer">
<span className="label-text">Lembrar-me</span>
<Checkbox />
</label>
</div>

// Checkbox com diferentes tamanhos
<Checkbox className="checkbox-xs" />
<Checkbox className="checkbox-sm" />
<Checkbox className="checkbox-md" />
<Checkbox className="checkbox-lg" />

// Checkbox com diferentes cores
<Checkbox className="checkbox-primary" />
<Checkbox className="checkbox-secondary" />
<Checkbox className="checkbox-accent" />

// Checkbox desabilitado
<Checkbox disabled />

// Checkbox marcado por padrão
<Checkbox defaultChecked />

// Checkbox com evento de mudança
<Checkbox onChange={(e) => console.log(e.target.checked)} />

// Checkbox em um grupo
<div className="form-control">
<label className="label cursor-pointer">
<span className="label-text">Opção 1</span>
<Checkbox name="grupo" value="1" />
</label>
<label className="label cursor-pointer">
<span className="label-text">Opção 2</span>
<Checkbox name="grupo" value="2" />
</label>
<label className="label cursor-pointer">
<span className="label-text">Opção 3</span>
<Checkbox name="grupo" value="3" />
</label>
</div>

// Checkbox com métodos via ref
import { useRef } from 'react';

const MyComponent = () => {
const checkboxRef = useRef<Checkbox>(null);

const handleGetValue = () => {
const isChecked = checkboxRef.current?.getValue();
console.log('Checkbox está marcado:', isChecked);
};

const handleSetValue = (checked: boolean) => {
checkboxRef.current?.setValue(checked);
};

const handleToggle = () => {
checkboxRef.current?.toggle();
};

return (
<div>
<Checkbox ref={checkboxRef} onChange={(e) => console.log('Mudou:', e.target.checked)} />
<button onClick={handleGetValue}>Verificar valor</button>
<button onClick={() => handleSetValue(true)}>Marcar</button>
<button onClick={() => handleSetValue(false)}>Desmarcar</button>
<button onClick={handleToggle}>Alternar</button>
</div>
);
};

Métodos via Ref

O componente Checkbox expõe os seguintes métodos públicos que podem ser acessados através de uma ref:

MétodoTipo de RetornoDescrição
getValue()booleanRetorna se o checkbox está marcado
setValue(checked: boolean)voidDefine se o checkbox está marcado
toggle()voidAlterna o estado do checkbox (marca/desmarca)

Exemplo de uso dos métodos

import { useRef } from 'react';
import { Checkbox } from 'eitri-luminus';

const MyForm = () => {
const termsCheckboxRef = useRef<Checkbox>(null);

const handleAcceptAll = () => {
// Marca todos os checkboxes de termos
termsCheckboxRef.current?.setValue(true);
};

const handleRejectAll = () => {
// Desmarca todos os checkboxes de termos
termsCheckboxRef.current?.setValue(false);
};

const handleToggleTerms = () => {
// Alterna o estado do checkbox de termos
termsCheckboxRef.current?.toggle();
};

return (
<div>
<Checkbox
ref={termsCheckboxRef}
onChange={(e) => console.log('Termos:', e.target.checked)}
/>
<label>Eu aceito os termos e condições</label>
<button onClick={handleAcceptAll}>Aceitar</button>
<button onClick={handleRejectAll}>Rejeitar</button>
<button onClick={handleToggleTerms}>Alternar</button>
</div>
);
};

Propriedades

O componente Checkbox herda todas as propriedades de um input HTML padrão, exceto 'type', 'dangerouslySetInnerHTML' e 'children', além das propriedades comuns da biblioteca. As principais propriedades incluem:

PropriedadeTipoDescrição
checkedbooleanEstado de seleção do checkbox
defaultCheckedbooleanEstado inicial de seleção
disabledbooleanDesabilita o checkbox
namestringNome do campo no formulário
valuestringValor do checkbox
onChangefunctionFunção chamada ao mudar o estado
classNamestringClasses CSS adicionais
idstringIdentificador único do componente

Heranças

O componente Checkbox herda todas as propriedades comuns da biblioteca através da interface CommonProps, que inclui:

  • Propriedades de estilo (margin, padding, etc)
  • Propriedades de layout (flex, grid, etc)
  • Propriedades de posicionamento
  • Propriedades de acessibilidade
  • Propriedades de identificação (id, data-e)

Observações

  • O componente usa a classe 'checkbox' para estilização base
  • Suporta diferentes tamanhos (xs, sm, md, lg)
  • Suporta diferentes cores (primary, secondary, accent)
  • É possível personalizar a aparência usando classes do Tailwind
  • O componente é responsivo por padrão
  • Mantém a semântica HTML apropriada
  • Pode ser usado em grupos de seleção
  • Suporta estados desabilitado e marcado
  • É especialmente útil para seleções múltiplas
  • Pode ser combinado com outros componentes
  • Suporta eventos de mudança
  • Mantém o tipo "checkbox" por padrão
  • Pode ser usado em formulários
  • Suporta validação de formulários
  • Suporta métodos públicos via ref para controle programático (getValue, setValue, toggle)