Tabelas
Tabela simples
| Nome | Data | Última vista |
|---|---|---|
| Projeto Alpha | 2026-01-10 | |
| Projeto Beta | 2026-02-18 | |
| Projeto Gamma | 2026-03-25 |
Mais largo que a sala
| Coluna 1 | Coluna 2 | Coluna 3 | Coluna 4 | Coluna 5 | Coluna 6 | Coluna 7 | Coluna 8 | Coluna 9 | Coluna 10 | Coluna 11 | Coluna 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
Linhas listradas, iluminadas sob o ponteiro
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.
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.
| 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.
| Nome | Proprietário | Estado |
|---|---|---|
| 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.
| 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.
Células com link e ícone
| Fonte | Estado |
|---|---|
| Fonte Alpha | |
| Fonte Beta |
Estado de carregamento
| Fonte | Atualizado em | Ações |
|---|---|---|
|
|
||
Estado vazio
| Fonte | Atualizado em | Açõ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ódigo | Item | Fornecimento 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.
| Name | Status | Amount |
|---|---|---|
| Alpha | ready |
42.00 € |
| Beta | 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.
| Nome | Data |
|---|---|
| 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.
| Pipeline | Construir | Testes | Implantar |
|---|---|---|---|
| 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`.
| # | Nome | Estado |
|---|---|---|
| 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.
| # | Nome | Estado |
|---|---|---|
| 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.