Skip to content
Versão preliminar. Cores, componentes e layout ainda vão mudar: falta receber o padrão de interface do TJES (template-basico-vue) e o manual de identidade visual.

BaseRadioGroup e BaseRadio ​

Escolha de uma única opção entre poucas, todas visíveis. BaseRadioGroup dá a pergunta, a ajuda e o erro; cada BaseRadio é uma opção. As opções do grupo compartilham o mesmo name e o mesmo v-model sem configuração.

Lei de licitação

Define o limite de aditivo do contrato.

Tipo de obra (opcional)

Valor escolhido: 14133

Uso ​

  • Use para escolher uma opção entre duas e sete, quando ver todas ajuda a decidir. Com mais opções, use uma lista de seleção.
  • Para várias escolhas ao mesmo tempo, use caixas de seleção. Para ligar e desligar algo com efeito imediato, use um interruptor.
  • O rótulo do grupo é a pergunta ("Lei de licitação"); o rótulo da opção é a resposta, curto e sem pontuação final.
  • Ordene as opções de forma lógica: a mais comum primeiro, ou em ordem natural (tempo, tamanho).
  • Deixe uma opção marcada quando houver um padrão seguro. Sem padrão, comece sem nenhuma e marque o grupo como required.
  • orientation="horizontal" só para duas ou três opções curtas. Em telas estreitas as opções quebram linha sozinhas.

Estados ​

Inválido

Escolha a lei que rege o contrato

Aviso

A Lei 8.666/1993 não vale para contratos novos

Somente leitura
Desabilitado
Uma opção desabilitada
  • Somente leitura mostra a escolha sem permitir mudança. As opções continuam no foco do teclado e legíveis.
  • Inválido sempre mostra texto e ícone. Sem invalid-text, aparece "Escolha uma opção"; prefira uma mensagem que diga o que corrigir.
  • Aviso só aparece com warn-text. Com invalid e warn ao mesmo tempo, vale o erro.
  • Desabilitado é para quando a escolha não se aplica agora. Diga perto do campo por quê.

Estilo ​

PropriedadeToken
Círculo16 px, borda 1,5 px --tj-border-strong-02, fundo --tj-field-01
Marcadoponto --tj-interactive, borda --tj-border-interactive
Hoverborda --tj-border-interactive
Hover marcadoponto e borda --tj-interactive-hover
Pressionadoborda --tj-interactive-active; marcado, ponto --tj-interactive-active
Fococontorno sólido de 2 px --tj-border-interactive, afastado 2 px (no erro, --tj-support-error-text)
Erroborda --tj-support-error-text, mensagem --tj-support-error-text
Avisoborda --tj-support-warning-text, mensagem --tj-support-warning-text
Somente leituraborda tracejada --tj-border-strong-01, ponto --tj-icon-primary
Desabilitadofundo --tj-field-disabled, borda --tj-border-subtle-02, ponto --tj-icon-secondary, texto --tj-text-helper (igual a BaseCheckbox e BaseSwitch)
Rótulo do grupo--tj-text-secondary, --tj-text-sm, semibold
Texto da opção--tj-text-primary, --tj-text-md
Espaço entre opções--tj-space-2 na vertical; --tj-space-6 entre colunas na horizontal
Área de cliquerótulo inteiro até o fim do texto, altura mínima --tj-space-6 (24 px)
Movimento--tj-duration-fast-02, --tj-easing-standard; desligado com prefers-reduced-motion

Diferenças em relação ao protótipo v3: a área de clique subiu de 20 px para 24 px (WCAG 2.5.8), e o espaço vertical entre opções é --tj-space-2 em vez de --tj-space-3, porque a área maior já separa as opções. O foco usa contorno sólido porque o halo translúcido de --tj-ring fica fraco demais num círculo de 16 px. Não há size: o círculo de 16 px com área de 24 px já é o mínimo acessível, e uma versão menor ficaria abaixo dele.

Código ​

vue
<BaseRadioGroup v-model="lei" label="Lei de licitação" :invalid="erro" invalid-text="Escolha a lei que rege o contrato" required>
  <BaseRadio value="14133" label="Lei 14.133/2021" />
  <BaseRadio value="8666" label="Lei 8.666/1993" />
</BaseRadioGroup>

BaseRadioGroup

PropriedadeTipoPadrãoDescrição
v-modelstring—Valor da opção marcada; undefined quando nenhuma está marcada
labelstring—Pergunta do grupo (obrigatório), vira a legenda
namestringgeradoNome do campo no formulário, igual para todas as opções
orientation'vertical' | 'horizontal''vertical'Opções em coluna ou em linha
helperTextstring—Ajuda abaixo das opções
invalid / invalidTextboolean / string— / 'Escolha uma opção'Erro, no lugar da ajuda
warn / warnTextboolean / string—Aviso, no lugar da ajuda; sem warnText não aparece
required / optionalboolean—Marca na legenda
disabledboolean—Desabilita todas as opções
readonlyboolean—Mostra a escolha sem permitir mudança; tira o required nativo das opções, como o navegador faz com campo somente leitura
hideLabelboolean—Legenda só para leitor de tela

Evento: update:modelValue com o value da opção escolhida.

BaseRadio

PropriedadeTipoDescrição
valuestringValor gravado no v-model do grupo (obrigatório)
labelstringTexto da opção; o slot padrão substitui para conteúdo mais rico
disabledbooleanDesabilita só esta opção

BaseRadio só funciona dentro de um BaseRadioGroup; fora dele, o componente avisa com um erro.

Não coloque BaseRadioGroup dentro de BaseField: o grupo já tem legenda, ajuda e erro, e o BaseField criaria um segundo rótulo apontando para nenhum campo.

Acessibilidade ​

Segue o padrão Radio Group do WAI-ARIA APG.

  • O grupo é um <fieldset role="radiogroup"> com <legend>; o leitor de tela anuncia a pergunta ao entrar no grupo.
  • Cada opção é um <input type="radio"> nativo dentro do próprio <label>: clicar no texto marca a opção.
  • Teclado: Tab entra no grupo pela opção marcada; sem opção marcada, pela primeira habilitada (ou pela última com Shift+Tab) e sai dele; as setas movem e marcam a opção seguinte ou a anterior; Espaço marca a opção em foco.
  • Ajuda, erro e aviso ficam em aria-describedby de cada opção, como no BaseInput, para o leitor de tela ler a mensagem quando o foco chega a uma opção. Com erro, o grupo recebe aria-invalid="true"; a cor nunca é o único sinal, há sempre ícone e texto.
  • required marca o grupo com aria-required e as opções com required. O asterisco fica escondido do leitor de tela.
  • Somente leitura usa aria-readonly e borda tracejada: as opções seguem focáveis e anunciadas, mas a escolha não muda, nem por clique nem pelas setas.
  • O foco é um contorno sólido de 2 px com contraste de pelo menos 3:1, em tema claro e escuro.
  • Em alto contraste do Windows (forced-colors), círculo, ponto e foco usam as cores do sistema (Canvas, CanvasText, Highlight, GrayText).
  • Testado com axe em todos os estados, inclusive opção desabilitada, conteúdo no slot e erro sem texto. O axe roda sem layout, então o contraste das cores é conferido na documentação renderizada.