Ir ao conteúdo
SEED engenhariaDesign System

Componentes

41. Seleção e ações em massa

estávelseed-componentes.md v1.43 · §41seção 43 de 9841-selecao-e-acoes-em-massa-estavel-v0-43-sl1-sl5.md · MD5 13a5baf7

Título completo no canon: Seleção e ações em massa — estável (v0.43) · SL1–SL5 · Bloco 6/6B · lote autônomo 2 · encerra a pendência do indeterminate (§10)

Base (3 rodadas, 2026-08-06): R1 — Carbon data table selection/batch actions (barra de ações aparece com ≥1 selecionado; header-checkbox seleciona A PÁGINA; "selecionar todas" de todas as páginas é ação da barra; Cancelar sai do modo; radio para seleção única; issue #7565 documenta o contrato página×dataset) + Polaris (IndexTable bulk). R2 — TanStack row selection (indeterminate no header; ids ESTÁVEIS como chave da seleção — sobrevive a ordenação/paginação; shift-range na discussão #3068 como prática da stack). R3 — checkbox §10 herdado (o estado indeterminate pendente desde o B2) + 1.13-b (regime contínuo).

# Decisão Porquê Descartado
SL1 Coluna de seleção = 1ª: checkbox §10 nomeado citando o item ("Selecionar proposta N — cliente"); hitbox = a célula inteira (label envolvente); clicar na LINHA não seleciona (linha-clique é navegação/ação — seleção só no checkbox) Carbon (checkbox da linha); Gmail (separação clique×seleção evita seleção acidental) Linha inteira selecionando (conflita com navegar-ao-detalhe)
SL2 Selecionar-tudo do header com INDETERMINATE (encerra a pendência do §10): 3 estados; marca/desmarca A PÁGINA visível, nunca o dataset; página cheia dispara a oferta "Selecionar todas as N" (barra própria); desmarcar no header desfaz SÓ a página Carbon batch guidance literal (contrato página×dataset do #7565); TanStack (toggleAllPage vs All); Gmail Header marcando o dataset silenciosamente (destrutivo invisível em ação de massa)
SL3 Barra de ações em massa SUBSTITUI a toolbar quando há seleção: contagem "N selecionadas" + ações (máx. ~4; destrutiva por último) + Cancelar (limpa e sai do modo); fundo action-primary (par herdado §1) Carbon ("batch action mode" com saída explícita); MN5 herdado p/ a destrutiva Barra flutuante extra (2 toolbars simultâneas); ações sem Cancelar
SL4 Anúncio da contagem = regime CONTÍNUO do 1.13-b: live region nomeada ("Seleção da tabela") com debounce ~400ms — shift-range e select-all coalescem num anúncio só; "Seleção limpa" no cancelamento 1.13-b (contagem que muda rápido é atualização contínua, nunca rajada de mensagens) Anúncio por clique (metralhadora no SR)
SL5 Seleção por ID ESTÁVEL: sobrevive a ordenação e paginação (page 2 chega com as marcas); filtro/busca que muda o conjunto LIMPA a seleção (o "tudo" mudou de significado — com o anúncio); shift+clique seleciona intervalo na página. Persistência entre sessões = produto TanStack (ids como chave); Carbon #7496 (selecionar através de filtro errado é bug documentado); #3068 (shift-range) Seleção por índice (ordena e seleciona o item errado); manter seleção através de filtro

Tokens/pares (contraste-dados.py ✅): linha selecionada ci-900/tq-50 12.92 light · ci-100/tq-900 11.23 dark; borda tq-600/tq-50 4.28 (≥3 ✓); barra = par do botão primário §1. Os 7 testes: 1 medidos ✓ · 2 seleção por fundo+borda+checkbox (3 sinais) · 3 grayscale ok · 4 selecionada×hover a 1s · 5 uma barra, uma live region, uma oferta · 6 contagem visível sem interação · 7 360px hitbox=célula, barra empilha. (Suites: jsdom 6B ✓ incl. página×dataset e shift-range · render R9: fundo pintado + barra visível.)


BancadaSEED DS v2 — Bloco 6 Dados — preview v0.44c (6A–6E: tabela · seleção · toolbar · lista de dados · integração)abrir em página própria ↗

Também cita o §41: tela-lista, tela-tabela.

Esc