---
fonte: 01-canonicos/seed-componentes.md
versao_da_fonte: v1.67
secao: h50
titulo: "Histórico da seção §50 — Agrupamento de linhas (não é regra)"
status: historico
vigente_desde: null
superseded_by: null
tipo_de_fatia: historico
secao_mae: 50
quando_consultar: "Histórico da §50 — NÃO é regra; leia só se a pergunta for sobre o passado (quando e por que a decisão mudou)."
em_uma_frase: null
nao_cobre: null
conceitos: null
vocabulario: null
sequencia: 101 de 172
bytes_do_corpo: 1263
md5_do_corpo: 3a0996b59ba0aee190df95a6e6c55b41
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
---
### Histórico da seção

> **Base (3 rodadas, 2026-08-15):** **R1 canon** — Fiori (agrupamento existe nas tabelas
> responsiva e analítica, com formato de cabeçalho de grupo declarável; a régua de
> personalização é por número de colunas, ~20) · Polaris IndexTable (*subheaders* com props de
> acessibilidade próprias) · Oracle OTM (seleção pelo cabeçalho de grupo abrange o grupo inteiro) ·
> HTML nativo (`<tbody>` como rowgroup, `th scope="rowgroup"/"colgroup"`). **R2 stack** — TanStack
> `grouping` com `groupedColumnMode: 'reorder' | 'remove'`. **R3 normas** — MDN `row` role
> (`aria-expanded` em linha pertence ao padrão **grid/treegrid**, não à tabela estática) ·
> **Adrian Roselli, "Table with Expando Rows"** (o padrão funciona em `<table>` nativa: disclosure
> `<button>` com `aria-expanded`, `display:table-row` × `none`, linhas reveladas DEPOIS do
> controle na ordem do código, `aria-controls` opcional — JAWS retirou o anúncio em 2019) ·
> APG treegrid (*"o código deste exemplo não é para produção"*) + Roselli (*treegrid é widget
> composto, suporte pobre, "não vi em produção"*) · JAWS 2024 issue #791 (**tabela aninhada não
> navega** em JAWS + Chrome/Edge; NVDA navega).

---

