Ir para o conteúdo principal
WBC - GovBR-DS
Copiar página como Markdown para IA

Table

Componente estável e recomendada para novos projetos.
Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.

Visão Geral​

O componente br-table é o elemento oficial do GovBR-DS para exibição e gerenciamento de dados tabulares estruturados em linhas e colunas, desenvolvido com suporte a CSS Grid, responsividade e alta flexibilidade de composição.

Para que serve​

  • Apresentação de conjuntos de dados relacionais: Organiza registros com múltiplos atributos comparáveis (ex.: relatórios, tabelas de processos, listagens financeiras).
  • Recursos interativos avançados: Suporta ordenação por coluna, seleção simples ou múltipla de linhas, densidades variadas (alta, média, baixa) e paginação integrada com br-pagination.
  • Acessibilidade WAI-ARIA: Preserva a semântica de tabela acessível (role="table", role="columnheader", role="row", role="cell") mesmo em leiautes baseados em CSS Grid.

Quando utilizar​

  • Utilize quando:
    • As informações compartilharem campos e atributos fixos que justifiquem a comparação lado a lado em colunas.
    • A pessoa usuária precisar ordenar, filtrar ou selecionar múltiplos registros da lista.
  • Evite e prefira outro componente quando:
    • Os itens forem heterogêneos com estruturas visuais distintas (prefira br-card).
    • Houver apenas um texto linear simples por item (prefira br-list).

Composição e Subcomponentes​

O ecossistema da Tabela segue a hierarquia semântica modular:

SubcomponentePapelRegra de uso
br-table-bodyCorpo de dados. Agrupa as linhas de registros de conteúdo.Declarado no slot body (ou padrão) da tabela.
br-table-cellCélula de dados. Célula de conteúdo individual de uma coluna.Declarado dentro de br-table-row no corpo de dados.
br-table-header-cellCélula de título. Célula de cabeçalho com suporte a botão de ordenação.Declarado dentro de br-table-row no cabeçalho.
br-table-headerSeção de cabeçalho. Agrupa as linhas de títulos das colunas.Declarado no slot header da tabela.
br-table-rowLinha. Representa uma linha de cabeçalho ou de registro de dados.Declarado dentro de br-table-header ou br-table-body.
br-tableOrquestrador principal. Gerencia o grid de colunas, ordenação, seleção de linhas e densidade.Contêiner raiz da tabela.

Como os subcomponentes se relacionam​

A arquitetura de br-table reflete a semântica nativa de tabelas HTML de forma modular: br-table → br-table-header / br-table-body → br-table-row → br-table-header-cell / br-table-cell. O componente pai orquestra o alinhamento das colunas via tokens de Grid, distribuindo automaticamente os estados de seleção e foco para as linhas filhas.

Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o Design System do GovBR.

Exemplo(s)​

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
PadrãoCarregando
Compartilhar URL
Ativar movimento reduzido
Mudar fundo
Abrir no StackBlitz
Mais opções
Tela cheia
Carregando preview…
HTML
Controles do componente
Console: logs, eventos e erros
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Desfazer alteração
Refazer alteração
Comparar alterações
Formatar código
Resetar código para o estado inicial
Escolher formato para copiar

Dados remotos​

Defina loading enquanto a aplicação atualiza as linhas. O componente mantém o conteúdo anterior com opacidade reduzida, aplica aria-busy="true" e exibe o indicador customizado no slot loading, centralizado sobre os dados. Também é possível usar startLoading() e stopLoading(). A busca, o tratamento de erro e a substituição dos slots header/body permanecem sob responsabilidade da aplicação.

Para reduzir layout e pintura de seções longas ao redor da tabela, consulte o guia de content-visibility. Essa técnica não substitui paginação ou virtualização das linhas.

Propriedades​

columnDivider​

Atributocolumn-divider
DescriçãoAtiva divisores verticais. Quando informada, tem precedência sobre hasColumnDivider.
Tipoboolean
Valor padrão---

columnWidth​

Atributocolumn-width
DescriçãoLargura global aplicada a todas as colunas.
Exemplo de uso
<br-table column-width="160px"></br-table>
ObservaçõesValores aceitos:
- fill
- content
- ${number}px
- ${number}fr

Observação:
- columnWidth não define o comportamento de overflow, mas pode interferir na sua percepção ao alterar o espaço disponível da coluna.
- content (max-content) tende a expandir a coluna e reduzir casos visíveis de truncagem.
- fill (1fr) tende a evidenciar truncagem quando o espaço horizontal é insuficiente.
Tipo"content" | "fill" | `${number}fr` | `${number}px`
Valor padrão---

density​

Atributodensity
DescriçãoDefine a densidade visual do componente.

- small: Alta densidade (componente menor, mais compacto e com menos espaçamento).
- medium: Densidade intermediária, padrão recomendado para a maioria dos casos.
- large: Baixa densidade (componente maior, mais espaçamento e altura).

Valores inválidos usam medium. Quando omitida, a densidade média é aplicada ao token.
Tipo"large" | "medium" | "small"
Valor padrão---

dividerStyle​

Atributodivider-style
DescriçãoDefine o estilo visual dos divisores.
ObservaçõesValores aceitos:
- solid
- dashed
Tipo"dashed" | "solid"
Valor padrão---

hasColumnDivider Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.​

Atributohas-column-divider
DepreciaçãoUse columnDivider.
DescriçãoAtiva divisores verticais entre colunas.
Tipoboolean
Valor padrãofalse

hasRowDivider Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.​

Atributohas-row-divider
DepreciaçãoUse rowDivider.
DescriçãoAtiva divisores horizontais entre linhas.
Tipoboolean
Valor padrãofalse

horizontalAlignment​

Atributohorizontal-alignment
DescriçãoDefine o alinhamento horizontal do conteúdo das células.
ObservaçõesValores aceitos:
- start
- center
- end
Tipo"center" | "end" | "start"
Valor padrão---

loading​

Atributoloading
DescriçãoIndica que as linhas estão sendo atualizadas pelo consumidor.
O componente mantém o conteúdo anterior, aplica aria-busy="true" e
exibe o slot loading sobre os dados; transporte, erro e substituição das
linhas ficam sob responsabilidade da aplicação.
A prop pode ser alterada diretamente ou pelos métodos startLoading() e
stopLoading().
Tipoboolean
Valor padrãofalse

overflow​

Atributooverflow
DescriçãoDefine o comportamento de overflow para as células.
ObservaçõesValores aceitos:
- truncate
- wrap

Observação:
- O overflow é independente de columnWidth.
- Com columnWidth="content", a coluna tende a crescer com o conteúdo (max-content), o que pode reduzir casos visíveis de truncagem.
- Com columnWidth="fill", a coluna ocupa o espaço disponível (1fr), então a truncagem tende a ficar mais evidente quando não há espaço suficiente.
Tipo"truncate" | "wrap"
Valor padrão'wrap'

rowDivider​

Atributorow-divider
DescriçãoAtiva divisores horizontais. Quando informada, tem precedência sobre hasRowDivider.
Tipoboolean
Valor padrão---

tooltipMode​

Atributotooltip-mode
DescriçãoDefine o modo de resolução do tooltip nas células da tabela.
ObservaçõesValores aceitos:
- inherit
- enabled
- disabled
Tipo"disabled" | "enabled" | "inherit"
Valor padrão---

tooltipState​

Atributotooltip-state
DescriçãoDefine o estado semântico do tooltip nas células da tabela.
ObservaçõesValores aceitos:
- info
- warning
- danger
- success
Tipo"danger" | "info" | "success" | "warning"
Valor padrão'info'

verticalAlignment​

Atributovertical-alignment
DescriçãoDefine o alinhamento vertical do conteúdo das células.
ObservaçõesValores aceitos:
- start
- center
- end
Tipo"center" | "end" | "start"
Valor padrão---

Slots​

NomeDescrição
"body"
"header"
"loading"Indicador exibido enquanto as linhas são atualizadas.

Métodos​

startLoading​

DescriçãoInicia o estado de carregamento da tabela.
AssinaturastartLoading() => Promise<void>
Parâmetros---

stopLoading​

DescriçãoInterrompe o estado de carregamento da tabela.
AssinaturastopLoading() => Promise<void>
Parâmetros---

CSS Shadow Parts​

NomeDescrição
"container"Wrapper principal da tabela.
"content"Área de conteúdo que contém header e body.
"loading"Área do indicador de carregamento.

Acessibilidade​

O br-table preserva a semântica de tabela mesmo com layout em CSS Grid: o host tem role="table" e os subcomponentes fornecem role="row", role="columnheader" e role="cell". O componente calcula e aplica aria-colcount/aria-rowcount, aria-rowindex, aria-colindex e associa cada célula ao seu cabeçalho de coluna via aria-labelledby.

Estrutura​

  • Use br-table-header + br-table-header-cell para os cabeçalhos e br-table-body + br-table-row + br-table-cell para os dados.
  • Cabeçalhos de coluna devem ter texto real (não só ícone) para servirem de rótulo das células.
  • Conteúdo longo respeita overflow (wrap por padrão, ou scroll); a área rolável deve ser alcançável e ter rótulo quando rolar horizontalmente.

Carregamento​

Durante loading, o componente mantém o conteúdo anterior, aplica aria-busy="true" no host e expõe um role="status" com aria-live="polite" para anunciar a atualização.

Uso​

O br-table é apresentação de dados tabulares — não o use para layout. Ações por linha/célula devem ser controles nativos com nome acessível.

Documentações relacionadas​

Consulte o guia geral de dados remotos para atualizar linhas com loading, preservar o conteúdo anterior e tratar erros fora do componente.

Também são relacionados:

  • Pagination, para navegar pelas páginas da consulta;
  • Select, quando filtros da tabela usam opções remotas;
  • Acessibilidade, para comunicar estados ocupados e manter a leitura da tabela.

Virtualização​

Como as linhas são fornecidas via slot, a virtualização deve ser controlada pela aplicação. Renderize apenas a janela visível, preserve chaves estáveis e atualize os índices ARIA conforme a posição da linha na coleção completa. Para conjuntos extensos, prefira combinar a tabela com paginação ou com a virtualização nativa do framework utilizado pelo consumidor.

Dependências​

Subcomponentes​

Depende de​

Gráfico​

Comece aquiComponentesQuickstartsSobre o projetoRepositório GitLabVersõesDiscordGovBR-DSFAQWikiRedefinir cookies