Skip to content

Table

Data table with custom cell rendering, expandable rows, sorting, and toolbar/footer slots.

<reke-table striped hoverable></reke-table>
<script>
const table = document.querySelector('reke-table');
table.columns = [
{ key: 'name', header: 'Name' },
{ key: 'email', header: 'Email' },
{ key: 'role', header: 'Role' },
];
table.rows = [
{ name: 'Alice', email: 'alice@example.com', role: 'Admin' },
{ name: 'Bob', email: 'bob@example.com', role: 'User' },
];
</script>
PropertyTypeDefaultDescription
columnsTableColumn[][]Column definitions (JS only)
rowsTableRow[][]Row data (JS only)
stripedbooleanfalseAlternating row colors
densebooleanfalseCompact row height
hoverablebooleanfalseHighlight rows on hover
borderedbooleanfalseAdd cell borders
borderlessbooleanfalseRemove all borders
sortKeystring''Current sort column
sortDirection'asc' | 'desc''asc'Sort direction
expandedRowRenderFunction | nullnullRender function for expanded content
interface TableColumn {
key: string;
header: string;
width?: string;
align?: 'left' | 'center' | 'right';
sortable?: boolean;
render?: (value: unknown, row: TableRow, index: number) => TemplateResult | string;
}
table.columns = [
{ key: 'name', header: 'Name' },
{
key: 'status',
header: 'Status',
render: (val) => html`<reke-badge variant="success">${val}</reke-badge>`
},
];

The consumer controls the expand chevron placement via column.render:

table.columns = [
{ key: 'name', header: 'Name' },
{
key: 'expand',
header: '',
sortable: false,
render: (_, row, i) => html`
<button @click=${(e) => { e.stopPropagation(); table.toggleExpand(i); }}>
${table.isRowExpanded(i) ? '&#9650;' : '&#9660;'}
</button>
`
},
];
table.expandedRowRender = (row) => html`
<div style="padding: 16px;">Details for ${row.name}</div>
`;
SlotDescription
toolbarContent above the table
footerContent below the table
emptyShown when no rows
EventDetailDescription
reke-row-click{ row, index }Row clicked
reke-sort{ key, direction }Sort changed
reke-row-expand{ row, index, expanded }Row expand toggled
MethodDescription
toggleExpand(index)Toggle row expand state
isRowExpanded(index)Check if row is expanded

table, header, body, row, cell, header-cell, toolbar, footer, expand-row, expand-content