---
fonte: 01-canonicos/seed-componentes.md
versao_da_fonte: v1.43
secao: 40-b
titulo: "Tabela — EXTENSÃO F7.2 · DT9–DT12 *(`rascunho`; o §40 v0.43 segue `estável` no que não é tocado)*"
sequencia: 56 de 98
bytes_do_corpo: 3021
md5_do_corpo: b4ac82fea21b5cf7f7042dd065d73e0b
gerado_por: 06-validacao/geradores/gen-camada-ia.py
nota: fatia GERADA — o corpo abaixo é byte a byte o trecho do canônico; edite o canônico, nunca esta fatia. Canônico inteiro em https://ds.seed.eng.br/01-canonicos/seed-componentes.md
---
## 40-b. Tabela — EXTENSÃO F7.2 · DT9–DT12 *(`rascunho`; o §40 v0.43 segue `estável` no que não é tocado)*

> **Contexto.** O §40 fechou em 2026-08-06 com uma fronteira explícita no DT5: *"multi-sort é
> lacuna do ARIA #283, fora da v1"*. A F7.2 reabre exatamente essa fronteira, por decisão do
> Rafael em 2026-08-15 ("entra agora"), porque o gabarito A2 exige **agrupar por X e ordenar
> dentro por Y** — que já é ordenação de dois níveis na prática. As decisões abaixo **estendem**
> o §40; nenhuma o contradiz.

| # | Decisão | Porquê | Descartado |
|---|---|---|---|
| DT9 | **Ordenação multi-coluna com TETO DE TRÊS.** Gesto duplo: `Shift`+clique **e** item "adicionar à ordenação" no menu do cabeçalho (CP30: ponteiro único não é o mesmo que teclado) | TanStack expõe `maxMultiSortColCount` justamente porque o ilimitado é ingovernável; três é o que cabe num resumo legível | Ilimitado · só `Shift`+clique (modificador não é caminho de ponteiro único) |
| DT10 | **A ORDEM é dita por NÚMERO ao lado da seta** (1, 2, 3), e o estado completo é anunciado em **live region**. `aria-sort` continua em cada `th`, e a lacuna fica **declarada**: ele diz a direção, não a posição (ARIA #283) | Sem o número, a única pista da ordem é a posição do cabeçalho na tela — que muda com reorder de coluna (§51) e não existe para quem não vê | Ordem só pela posição visual · inventar `aria-sort="ascending 2"` (valor inválido) |
| DT11 | **FONTE ÚNICA de ordenação:** o cabeçalho e o painel de ordenação editam o MESMO estado | Fato medido no Fiori: *"usar a ordenação do cabeçalho substitui TODAS as opções de ordenação do diálogo"* — duas fontes de verdade, e o usuário perde a configuração sem aviso | Diálogo e cabeçalho independentes (o defeito medido) |
| DT12 | **Numeração de linha (C22) é OPT-IN, POSICIONAL e nunca endereço.** O cabeçalho da coluna existe e é **oculto só visualmente** (a célula permanece na matriz — célula `aria-hidden` quebra a tabela); o endereço estável é o identificador do registro. **`aria-rowindex`/`aria-rowcount` NÃO entram**: são de tabela **paginada virtual**, e usá-los para reposicionar linhas é uso errado documentado | Medição do produto de referência: numeração a **3,32** de contraste (reprova) e endereço instável — ao ordenar, "linha 14" vira outra coisa, o que é **enganoso em ambiente colaborativo**. Nossa numeração usa `text-muted` (**5,61**/**6,80**) | Numeração sempre ligada · numeração como referência compartilhada · `aria-rowindex` "para dar posição" (Roselli: em teste com usuários, o salto de numeração **confundiu**) |

**Exceção bidimensional de reflow, declarada aqui (CP28):** a tabela pode rolar nos dois eixos
dentro do wrapper `role="region"` focável e nomeado do DT1. **Alternativa de leitura declarada:**
a degradação por importância de coluna (LD3) mais o identificador estável em cada linha.

---

