Skip to Content

DataTable

Table plus behaviour: per-column sorting (sortable, with optional sortValue), row selection with checkboxes (selectable + onSelectionChange), and client-side pagination (pageSize).

Ada LovelaceEngineering36
Alan TuringResearch41
Grace HopperEngineering45
import { DataTable } from '@gg-software/ui'; <DataTable data={people} rowKey={(row) => row.id} selectable onSelectionChange={(keys, rows) => setSelected(rows)} pageSize={20} striped columns={[ { key: 'name', header: 'Name', sortable: true }, { key: 'role', header: 'Role', sortable: true }, { key: 'age', header: 'Age', align: 'right', sortable: true, sortValue: (row) => row.age }, ]} onRowClick={(row) => openDetail(row)} />;

Props

PropTypeDefaultDescription
columns*DataTableColumn<T>[]
data*T[]
rowKey*(row: T, index: number) => string | number
selectablebooleanfalse
onSelectionChange((keys: (string | number)[], rows: T[]) => void)
pageSizenumber
size"small" | "middle"middle
borderedbooleanfalse
stripedbooleanfalse
hoverablebooleantrue
emptyReactNodeNo data
onRowClick((row: T, index: number) => void)
classNamestring

* required · generated from packages/ui/src/data/DataTable/DataTable.tsx

Types

type DataTableColumn<T> = { key: string; header: ReactNode; render?: (row: T, index: number) => ReactNode; align?: 'left' | 'center' | 'right'; width?: number | string; sortable?: boolean; /** value used for sorting (defaults to row[key]) */ sortValue?: (row: T) => string | number; };