Tabela base
AlpopBaseTable é a primitiva de tabela: cabeçalho, corpo e rodapé, larguras de coluna, rolagem com cabeçalho fixo opcional (body-max-rows) e slots de célula, estado vazio e rodapé. É puramente visual e desacoplada de i18n: todos os textos vêm por prop ou slot. A Tabela de dados compõe esta primitiva com paginação e formatação.
| Nome | Cidade |
|---|---|
| Maria | Recife |
| João | Olinda |
Com cabeçalho
Ao receber title, icon ou description, a tabela é renderizada dentro de um Cartão — o cabeçalho é literalmente o do cartão, com o mesmo quadrado de ícone. Sem nenhuma dessas props ela permanece a primitiva sem cabeçalho.
Props
| Prop | Tipo | Padrão | Descrição |
|---|---|---|---|
title | String | null | Título do cabeçalho; renderiza a tabela dentro de um AlpopCard |
icon | String | null | Ícone do cabeçalho (quadrado de ícone do cartão) |
description | String | null | Linha secundária abaixo do título |
columns | Array | [] | Colunas: string ou { label, text, value } — label é o campo da linha, text o cabeçalho, value (chave ou função) sobrescreve a extração |
rows | Array | [] | Linhas de dados |
columnWidths | Array | [] | Larguras CSS por coluna (por índice) |
rowKey | Function | (_, index) => index | Chave :key de cada linha |
formatCell | Function | null | (row, column) => texto para formatar a célula |
minWidth | String | "100%" | Largura mínima da tabela |
fixedLayout | Boolean | false | Usa table-layout: fixed |
bodyMaxRows | Number | 0 | Limita a altura do corpo a N linhas com rolagem e header fixo |
bodyMinHeight | String | "" | Altura mínima do corpo (CSS) |
bodyMinHeightMobile | String | "" | Altura mínima do corpo em telas ≤ 800px |
footerText | String | "" | Texto do rodapé (exibe ícone + texto) |
footerIcon | String | "info" | Ícone do rodapé |
loading | Boolean | false | Enquanto true, o slot empty não é exibido |
Slots
| Slot | Props | Descrição |
|---|---|---|
header-actions | — | Ações à direita do cabeçalho (só com title/icon/description) |
header-cell | { column, index } | Conteúdo customizado do cabeçalho da coluna |
cell | { row, column, index } | Conteúdo customizado da célula |
empty | — | Exibido quando não há linhas e não está loading |
footer | — | Rodapé customizado (quando não há footer-text) |