Table
Tabela nativa com adaptador interativo opcional.
- Navegadores
- Chrome 123+Firefox 121+Safari 17.5+
- Nível
- 0
- Tamanho compactado
- 617 B
- Limite de layout forçado
- 0 ms
- Limite do axe
- 0
- Compatível com SSR
- Sim
- Contrato publicado
- Ambiente de teste
Experimentar
Table
Exemplo de tabela nativa
| Nome | Função | Situação |
|---|---|---|
| Alice Chen | Administrador | Ativo |
| Bob Smith | Editor | Ativo |
| Carol Lee | Leitor | Convidado |
| 3 integrantes · 2 ativos | ||
Ordenar, filtrar e expandir
| Função | Detalhes | ||
|---|---|---|---|
| Alice Chen | Administrador | ||
| alice@example.com · Ativo | |||
| Bob Smith | Editor | ||
| bob@example.com · Ativo | |||
| Carol Lee | Leitor | ||
| carol@example.com · Convidado | |||
| 3 integrantes · 0 selecionados | |||
Cabeçalhos, rodapé e colunas fixos
API
Table.Root (native)
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
layout | "auto" | "fixed" | "auto" | Layout de tabela nativa. Seleção, ordenação e expansão usam a entrada explícita TableClient. |
size | "sm" | "md" | "lg" | — | Espaçamento das células definido pela folha de estilos selecionada. |
variant | "solid" | "outline" | "ghost" | — | Variante de superfície definida pela folha de estilos selecionada. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.Footer
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
sticky | boolean | — | Fixa o rodapé no fim do eixo de bloco do contêiner de rolagem. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.RowHeader / Table.Cell / Table.ColumnHeader
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
align | "start" | "center" | "end" | "start" | Alinhamento lógico do texto nesta célula. |
sticky | "start" | "end" | — | Fixa uma célula na borda lógica do eixo inline. Para células fixas adjacentes, defina --uiify-table-sticky-offset em cada uma. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
TableClient.ExpandTrigger / TableClient.ExpandedRow
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
rowId* | string | — | Chave de linha compartilhada que conecta o botão de expansão ao <tr> nativo. Coloque um <td colSpan={columnCount}> dentro da linha expandida. |
TableClient.Root — @gunkin/uiify/components/table/client
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
aria-label | string | — | Nome acessível da tabela quando não houver legenda ou título visível que a nomeie. |
aria-labelledby | string | — | Id do elemento que rotula a tabela. |
selectionMode | "none" | "single" | "multiple" | "none" | Define se as linhas podem ser selecionadas e quantas por vez; "none" renderiza uma tabela estática simples sem o papel grid. |
selectionBehavior | "toggle" | "replace" | — | Define se clicar em uma linha a adiciona à seleção ou substitui a seleção atual. |
defaultSelectedKeys | Iterable<string> | — | Ids das linhas selecionadas inicialmente, mantendo a seleção não controlada dentro do componente. |
selectedKeys | Iterable<string> | — | Ids das linhas selecionadas agora, tornando a seleção controlada por quem chama. |
onSelectionChange | (selectedKeys: Set<string>) => void | — | Chamado com o novo conjunto de ids de linhas selecionadas sempre que a seleção muda. |
defaultSortDescriptor | SortDescriptor | null | — | Coluna e direção da ordenação inicial, mantendo o estado de ordenação não controlado dentro do componente. |
sortDescriptor | SortDescriptor | null | — | Coluna e direção da ordenação atual, tornando a ordenação controlada. |
onSortChange | (descriptor: SortDescriptor | null) => void | — | Chamado com o novo descritor de ordenação, ou null, quando um cabeçalho de coluna ordenável é ativado. |
expandedKeys / defaultExpandedKeys | Iterable<string> | — | Chaves das linhas expandidas, controladas ou iniciais. |
onExpandedChange | (keys: Set<string>) => void | — | Informa solicitações de expansão. Linhas controladas aguardam as chaves atualizadas. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.Header
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
sticky | boolean | false | Fixa esta seção no contêiner de rolagem; Header usa o início do eixo de bloco e Footer usa o fim. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.Body
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | As linhas do corpo da tabela. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.Row
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
id* | string | — | Id estável da linha, usado como chave de seleção e id do elemento. |
disabled | boolean | false | Impede que a linha seja selecionada ou receba foco por teclado. |
selected | boolean | — | Marca a linha como selecionada na marcação renderizada no servidor antes de o armazenamento de seleção assumir o controle. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.ColumnHeader
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
id* | string | — | Id de coluna ao qual os descritores de ordenação se referem. |
allowsSorting | boolean | false | Faz o cabeçalho alternar a ordenação da coluna e publicar aria-sort. |
sortDirection | "ascending" | "descending" | null | — | Direção de ordenação renderizada para esta coluna, usada na marcação inicial do servidor quando a ordenação é permitida. |
onClick | React.MouseEventHandler<HTMLTableCellElement> | — | Executa antes da ordenação; preventDefault() veta a alteração da ordenação. |
children | ReactNode | — | O rótulo do cabeçalho. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.Cell
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | O conteúdo da célula. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.Caption
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
children | ReactNode | — | O texto da legenda que descreve a tabela. |
render | ReactElement | ((props, state) => ReactElement) | — | Substitua o elemento renderizado preservando comportamento e conexões de acessibilidade. |
Table.RowSelect
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
rowId* | string | — | Id da linha que esta caixa de seleção seleciona e desseleciona. |
Teclado
| Tecla | Ação |
|---|---|
| Tab | Foque os controles de ordenação, seleção e expansão no TableClient |
| Enter / Space | Ative um botão de ordenação ou expansão em foco; alterne uma caixa de seleção |
| Arrow keys | Mova o foco entre linhas selecionáveis do corpo no TableClient |
Acessibilidade
O Table padrão renderiza <table>, <caption>, <thead>, <tbody> e <tfoot> nativos sem JavaScript no cliente; use ColumnHeader e RowHeader para a semântica dos cabeçalhos. A entrada /client acrescenta ordenação, seleção, navegação por teclado entre linhas e expansão controlada, expostas por aria-sort, aria-expanded e aria-controls. ExpandedRow é um <tr> nativo; coloque uma Cell com colSpan dentro dele. Filtragem e ordenação dos dados ficam a cargo do consumidor.
Pontos de integração de estilos
data-uiify-tabledata-partdata-layoutdata-sizedata-variantdata-stickydata-selecteddata-disabled--uiify-table-sticky-offset