Skip to content

Table

<ax-table> is the MIT, lightweight data table: declarative column definitions, optional client-side sort, search, and pagination. For server-side data, advanced filtering, column resize, and row selection, use the data grid.

import { AxTableComponent, type ColDef } from '@axisui-ng/data';
<ax-table
[data]="rows"
[columns]="columns"
[pageSize]="10"
searchable
caption="Customers"
(rowClick)="open($event)"
/>
columns: ColDef<Customer>[] = [
{ key: 'name', header: 'Name', sortable: true },
{ key: 'email', header: 'Email' },
{ key: 'total', header: 'Total', align: 'end', sortable: true },
];
InputTypeDefaultNotes
columnsColDef<T>[] (required)Column definitions (see below).
dataT[] (required)Row objects (T extends Record<string, unknown>).
pageSizenumber10Rows per page; 0 disables pagination.
searchablebooleanfalseShow a global search box.
captionstring''Visually hidden <caption> for screen readers.
trackByTrackByFunction<T>indexRow identity for efficient rendering.
FieldTypeDefaultNotes
keykeyof TProperty key on the row object.
headerstringColumn header text.
sortablebooleanfalseEnable click-to-sort.
align'start' | 'end''start'Text alignment.
searchablebooleantrueInclude this column in global search.
cellTemplateTemplateRef<{ $implicit: T; value: unknown }>Custom cell renderer.
OutputPayloadNotes
rowClickTEmitted when a body row is clicked.

Renders a semantic <table> with <th scope="col"> headers. Sortable headers expose aria-sort; the search box is labelled (aria-label="Search table"). Pagination controls are labelled. Prefer a non-empty caption so assistive tech can name the table.

Interactive examples live in Storybook under Data / Table. Run pnpm storybook to explore them.