Tabelas

Tabelas

Tabela simples

NomeDataÚltima vista
Projeto Alpha 2026-01-10
Projeto Beta 2026-02-18
Projeto Gamma 2026-03-25

Mais largo que a sala

Uma tabela cujas colunas pedem mais do que a página possui é desenhada na largura que precisa e transborda para o que a rodeia — a zona, a página —, nunca com uma barra de rolagem própria. Quando solicitado (`scroll: true`), como aqui, rola lateralmente em sua própria moldura e a página ao redor permanece fixa: para uma tabela entre outras coisas em um contêiner que não rola. Uma tabela fixa abre mão disso: um cabeçalho grudado na página e uma moldura rolando sozinha não podem coexistir.
Coluna 1Coluna 2Coluna 3Coluna 4Coluna 5Coluna 6Coluna 7Coluna 8Coluna 9Coluna 10Coluna 11Coluna 12
Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente
Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente
Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente Um valor longo o suficiente

Tabela com ações

FonteAtualizado emAções
Fonte Alpha 2026-01-12
Fonte Beta 2026-02-20

Linhas listradas, iluminadas sob o ponteiro

FonteAtualizado emAções
Fonte Alpha 2026-01-12
Fonte Beta 2026-02-20
Projeto Alpha 2026-01-10
Projeto Beta 2026-02-18
Projeto Gamma 2026-03-25

Linhas que podem ser marcadas

Uma caixa no cabeçalho de cada linha, uma no cabeçalho para todas, e as ações acima: elas enviam as linhas marcadas para seu próprio endereço, e ficam fora de alcance enquanto nada estiver marcado.

0 selecionados
FonteAtualizado emAções
Fonte Alpha 2026-01-12
Fonte Beta 2026-02-20
Projeto Alpha 2026-01-10

Arquivos, um total, uma ação em cada linha

Caminhos lidos pelo seu nome, as pastas antes dele cortadas de seu início. A barra termina em quantas linhas há, e uma ação marcada como `all` funciona com nada marcado — ela pega todas as linhas, e lidera a barra quando é a esperada.

0 selecionados 3 no total
Arquivo
03-DOCUMENTS/QAL - Syst Document/Obsolète/QAL-D-12-identification-and-validation-of-quality-system-software-v1.md
05-INSTRUCTIONS/RES/RES-I-02-it-access-change-v2.md
README.md

Filtros

Uma barra de filtros no cabeçalho da tabela, um menu discreto cada um, dizendo o que está restringindo uma vez que faz. No servidor eles vivem na consulta da página — cada opção é um link — e o controlador restringe as linhas a partir disso; em vue, são um valor entregue à página para sua API, ou aplicado pela tabela às linhas que já possui. Cada opção é uma caixa — redonda para uma escolha única — colorida pelo seu tom quando tem um, um status ou uma categoria.

4 no total
NomeProprietárioEstado
Alpha design open
Beta platform closed
Gamma design closed
Delta support open

Ordenação

Um cabeçalho que ordena é um link no servidor e um botão no vue: ascendente, descendente, depois de volta à ordem que a página declarou, que a lista abre e que sua seta mostra desde o início. Datas vazias vão por último de ambas as maneiras, e nomes comparam da forma como a língua os ordena. Aqui a tabela ordena as linhas que recebeu; um controlador que pagina sua lista lê a mesma consulta.

5 no total
Nome Cidade Última medição Ações
Adam Petit Angers
Zoé Martin Zürich
Eric Bernard Lyon
Élodie Durand Évry
Basile Leroy Écully

Ordenação no navegador, a partir do twig

`vue: true` entrega as mesmas colunas e linhas ao par do vue: ele ordena e busca toda a lista no navegador, sem recarregar a página. Para uma lista que a página mantém inteira — uma curta, ou uma que nenhuma api atende.

Ações em um seletor

A mesma barra quando há ações suficientes para preenchê-la: uma é escolhida, então aplicada.

0 selecionados
FonteAtualizado emAções
Fonte Alpha 2026-01-12
Fonte Beta 2026-02-20
Projeto Alpha 2026-01-10

Células com link e ícone

FonteEstado
Fonte Alpha
Fonte Beta

Estado de carregamento

FonteAtualizado emAções

Estado vazio

FonteAtualizado emAções
Nenhum dado disponível.

Alinhamento das colunas

Nome (esquerda)Status (centro)Quantidade (direita)
Alpha Centered 42.00 €
Beta Centered 128.50 €
Gamma Centered 7.99 €

Códigos, figuras e totais

`cell: 'code'` define um identificador na fonte monoespaçada; `cell: 'number'`, ou uma `unit`, escreve uma figura na localidade da página. `negative: true` desenha uma figura abaixo de zero no tom de erro, seu sinal de menos dizendo isso também. `totals` é uma linha que a página entrega, desenhada abaixo das outras — a tabela não soma nada, mantendo uma página ou uma lista filtrada. Desenhada pelo servidor, depois pelo vue.

CódigoItemFornecimento líquidoÁrea
VS-2041 Atlas 12 18,5 m²
LO-0007 Boréal -4 9 m²
VS-1180 Cyprès 0 6,5 m²
LO-0315 Dune -11 22,5 m²
Total -3 56,5 m²

A partir do markdown

Uma tabela escrita em markdown e passada por `markdown_ds`: as colunas, seu alinhamento e a marcação de cada célula são lidas do documento, e a tabela é desenhada aqui como qualquer outra. `markdown` mantém o simples `<table>`, para o que não for uma página — um e-mail, um feed.

NameStatusAmount
Alpha ready 42.00 €
Beta draft 128.50 €
Gamma pending 7.99 €

Agrupar linhas

Uma linha que contém apenas um grupo não é uma linha: é a linha entre duas sequências delas, dada uma palavra. Ela se estende pela tabela e nomeia o que segue — a mesma leitura que um separador de menu.

NomeData
Primeiro grupo
Projeto Alpha 2026-01-10
Projeto Beta 2026-02-18
Segundo grupo
Projeto Gamma 2026-03-25

Células de estado

Um estado é um círculo, nunca uma cor escolhida por alguém: a célula assume um nome de tipo, ou um tipo com uma contagem e um título, e desenha o ícone de status que o resto do sistema desenha. Nada para estilizar na página.

PipelineConstruirTestesImplantar
Projeto Alpha 42
Projeto Beta 3
Projeto Gamma

Cabeçalho fixo

Uma tabela longa é lida coluna por coluna tanto quanto linha por linha. Com `sticky`, o cabeçalho permanece visível enquanto as linhas rolam para baixo; uma página com algo fixo na parte superior indica o quão abaixo em `--table-sticky-top`.

#NomeEstado
1 Row 1
2 Row 2
3 Row 3
4 Row 4
5 Row 5
6 Row 6
7 Row 7
8 Row 8
9 Row 9
10 Row 10
11 Row 11
12 Row 12

Uma tabela em uma zona própria

Uma zona `zone--table` é dada à tabela inteira: o que a impulsiona na parte superior, suas páginas na parte inferior, fora do que rola, e entre elas o solo da tabela até o fundo da zona, mesmo para três linhas. Qualquer tabela pode ser inserida nela, escrita pelo servidor ou por um vue. Com `natural`, como a da esquerda, a tabela mantém a largura de suas colunas, nem esticada nem comprimida.

#NomeEstado
1 Row 1
2 Row 2
3 Row 3

Tabela de entidade Vue

Tabela Vue com seleção

O mesmo contrato no cliente: as chaves marcadas voltam através de v-model:selected, cada ação é emitida como bulk-action, e uma com um endereço é enviada como a tabela do servidor a envia. Esses não têm, então a linha abaixo diz o que teria sido feito. Três linhas por página, o total no final da barra, e Arquivar tudo precisando de nada marcado.

Paginação sem um total

Quando a API não retorna um total, o paginador recorre ao anterior/próximo.

Paginação, gerada pelo servidor

`pagination(page, pages_count)` gera as páginas de uma lista como links: cada uma mantém a rota e a consulta da página em que está — uma busca, uma ordenação — e muda apenas `page`, contada a partir de 1. Os números exibidos são os do pager do vue: o primeiro, o último, o atual e seus vizinhos. `compact` mantém anterior e próximo em torno do número da página; `route` e `params` navegam por outro endereço.

Formatadores de data Vue