Skip to content

Table

Tabela de dados com colunas configuráveis, suporte a listras e slots para células personalizadas.

Uso

vue
<script setup lang="ts">
import { Table } from '@halfbyte/maka'

const columns = [
  { key: 'nome', label: 'Nome' },
  { key: 'cargo', label: 'Cargo' },
  { key: 'status', label: 'Status', align: 'center' },
]

const rows = [
  { nome: 'Ana Lima', cargo: 'Designer', status: 'Ativo' },
  { nome: 'Bruno Costa', cargo: 'Engenheiro', status: 'Ativo' },
  { nome: 'Carla Souza', cargo: 'Produto', status: 'Inativo' },
]
</script>

<template>
  <Table :columns="columns" :rows="rows" />
</template>

Com listras

vue
<Table :columns="columns" :rows="rows" :striped="true" />

Células personalizadas

vue
<Table :columns="columns" :rows="rows">
  <template #cell-status="{ value }">
    <Badge :variant="value === 'Ativo' ? 'success' : 'default'">{{ value }}</Badge>
  </template>
</Table>

Props

PropTipoPadrão
columnsTableColumn[]obrigatório
rowsTableRow[][]
captionstring
borderedbooleantrue
stripedbooleanfalse

TableColumn

CampoTipoDescrição
keystringChave do campo no objeto
labelstringTexto do cabeçalho
widthstringLargura da coluna (opcional)
align"left" | "center" | "right"Alinhamento (opcional)

Slots

SlotPropsDescrição
head-{key}Cabeçalho personalizado da coluna
cell-{key}{ row, value }Célula personalizada
bodySubstitui todo o corpo da tabela
footRodapé da tabela