- Prop
columns- Type
DataColumn<T>[]- Default
- —
- Requirement
- required
- Description
- —
Docs Components Data Display
DataTable
React example follows below.
Vue example follows below.
Angular example follows below.
Svelte example follows below.
Solid example follows below.
- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
const dataTableFixture = { id: "data-table", columns: [ { key: "service", header: "Service", head: true }, { key: "p95", header: "p95", num: true }, { key: "status", header: "Status", sortable: false }, ], rows: [ { service: "ledger-api", p95: 142, status: "healthy" }, { service: "billing-worker", p95: 88, status: "healthy" }, { service: "analytics-ingest", p95: 310, status: "degraded" }, ], defaultSort: "p95", zebra: true,} satisfies { id: string; columns: Array<{ key: "service" | "p95" | "status"; header: string; head?: boolean; num?: boolean; sortable?: boolean; }>; rows: Array<{ service: string; p95: number; status: string }>; defaultSort: "service" | "p95" | "status"; zebra: boolean;}; import { DataTable, type DataColumn } from "@grassroot/ui-react"; type ServiceRow = (typeof dataTableFixture.rows)[number]; export default function DataTableDemo() { return ( <div> <DataTable<ServiceRow> columns={dataTableFixture.columns as DataColumn<ServiceRow>[]} data={dataTableFixture.rows} defaultSort={dataTableFixture.defaultSort} zebra={dataTableFixture.zebra} /> </div> );}- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script setup lang="ts">const dataTableFixture = { id: "data-table", columns: [ { key: "service", header: "Service", head: true }, { key: "p95", header: "p95", num: true }, { key: "status", header: "Status", sortable: false }, ], rows: [ { service: "ledger-api", p95: 142, status: "healthy" }, { service: "billing-worker", p95: 88, status: "healthy" }, { service: "analytics-ingest", p95: 310, status: "degraded" }, ], defaultSort: "p95", zebra: true,} satisfies { id: string; columns: Array<{ key: "service" | "p95" | "status"; header: string; head?: boolean; num?: boolean; sortable?: boolean; }>; rows: Array<{ service: string; p95: number; status: string }>; defaultSort: "service" | "p95" | "status"; zebra: boolean;}; import { DataTable, type DataColumn } from "@grassroot/ui-vue"; type ServiceRow = (typeof dataTableFixture.rows)[number];const columns = dataTableFixture.columns as DataColumn<ServiceRow>[];</script> <template> <div> <DataTable :columns="columns" :data="dataTableFixture.rows" :default-sort="dataTableFixture.defaultSort" :zebra="dataTableFixture.zebra" /> </div></template>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
import { Component } from "@angular/core";const dataTableFixture = { id: "data-table", columns: [ { key: "service", header: "Service", head: true }, { key: "p95", header: "p95", num: true }, { key: "status", header: "Status", sortable: false }, ], rows: [ { service: "ledger-api", p95: 142, status: "healthy" }, { service: "billing-worker", p95: 88, status: "healthy" }, { service: "analytics-ingest", p95: 310, status: "degraded" }, ], defaultSort: "p95", zebra: true,} satisfies { id: string; columns: Array<{ key: "service" | "p95" | "status"; header: string; head?: boolean; num?: boolean; sortable?: boolean; }>; rows: Array<{ service: string; p95: number; status: string }>; defaultSort: "service" | "p95" | "status"; zebra: boolean;}; import { GrassrootDataTable, type DataColumn } from "@grassroot/ui-angular"; type ServiceRow = (typeof dataTableFixture.rows)[number]; @Component({ selector: "app-data-table-demo", standalone: true, imports: [GrassrootDataTable], template: ` <div> <grassroot-data-table [columns]="columns" [data]="fixture.rows" [defaultSort]="fixture.defaultSort" [zebra]="fixture.zebra" /> </div> `,})export class DataTableDemoComponent { protected readonly fixture = dataTableFixture; protected readonly columns = dataTableFixture.columns as DataColumn<ServiceRow>[];} export default DataTableDemoComponent;- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script lang="ts"> const dataTableFixture = { id: "data-table", columns: [ { key: "service", header: "Service", head: true }, { key: "p95", header: "p95", num: true }, { key: "status", header: "Status", sortable: false }, ], rows: [ { service: "ledger-api", p95: 142, status: "healthy" }, { service: "billing-worker", p95: 88, status: "healthy" }, { service: "analytics-ingest", p95: 310, status: "degraded" }, ], defaultSort: "p95", zebra: true, } satisfies { id: string; columns: Array<{ key: "service" | "p95" | "status"; header: string; head?: boolean; num?: boolean; sortable?: boolean; }>; rows: Array<{ service: string; p95: number; status: string }>; defaultSort: "service" | "p95" | "status"; zebra: boolean; }; import { DataTable } from "@grassroot/ui-svelte";</script> <div> <DataTable columns={dataTableFixture.columns} data={dataTableFixture.rows} defaultSort={dataTableFixture.defaultSort} zebra={dataTableFixture.zebra} /></div>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
/** @jsxImportSource solid-js */const dataTableFixture = { id: "data-table", columns: [ { key: "service", header: "Service", head: true }, { key: "p95", header: "p95", num: true }, { key: "status", header: "Status", sortable: false }, ], rows: [ { service: "ledger-api", p95: 142, status: "healthy" }, { service: "billing-worker", p95: 88, status: "healthy" }, { service: "analytics-ingest", p95: 310, status: "degraded" }, ], defaultSort: "p95", zebra: true,} satisfies { id: string; columns: Array<{ key: "service" | "p95" | "status"; header: string; head?: boolean; num?: boolean; sortable?: boolean; }>; rows: Array<{ service: string; p95: number; status: string }>; defaultSort: "service" | "p95" | "status"; zebra: boolean;}; import { DataTable, type DataColumn } from "@grassroot/ui-solid";import type { JSX } from "solid-js"; type ServiceRow = (typeof dataTableFixture.rows)[number]; export default function DataTableDemo(): JSX.Element { return ( <div> <DataTable<ServiceRow> columns={dataTableFixture.columns as DataColumn<ServiceRow>[]} data={dataTableFixture.rows} defaultSort={dataTableFixture.defaultSort} zebra={dataTableFixture.zebra} /> </div> );}Installation
API Reference
Import
import { DataTable, type DataColumn } from "@grassroot/ui-react";
Props
Prop
Type
Default
Requirement
Description
columnsDataColumn<T>[]—
required
—
dataT[]—
required
—
defaultSort(keyof T & string) | undefined—
optional
Initial sort column key.
zebraboolean | undefinedfalseoptional
Alternate row tint.
classNamestring | undefined—
optional
—
getRowId((row: T, index: number) => string) | undefined—
optional
—
isRowDisabled((row: T, index: number) => boolean) | undefined—
optional
—
selectionModeSelectionMode | undefined—
optional
—
selectedIdsreadonly string[] | undefined—
optional
—
defaultSelectedIdsreadonly string[] | undefined—
optional
—
onSelectedIdsChange((detail: SelectionChangeDetail) => void) | undefined—
optional
—
- Prop
data- Type
T[]- Default
- —
- Requirement
- required
- Description
- —
- Prop
defaultSort- Type
(keyof T & string) | undefined- Default
- —
- Requirement
- optional
- Description
- Initial sort column key.
- Prop
zebra- Type
boolean | undefined- Default
false- Requirement
- optional
- Description
- Alternate row tint.
- Prop
className- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
getRowId- Type
((row: T, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
isRowDisabled- Type
((row: T, index: number) => boolean) | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
selectionMode- Type
SelectionMode | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
selectedIds- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
defaultSelectedIds- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
onSelectedIdsChange- Type
((detail: SelectionChangeDetail) => void) | undefined- Default
- —
- Requirement
- optional
- Description
- —
Events
| Event | Payload |
|---|---|
onSelectedIdsChange | ((detail: SelectionChangeDetail) => void) | undefined |
Import
import { DataTable, type DataColumn } from "@grassroot/ui-vue";
Props
Prop
Type
Default
Requirement
columnsDataColumn<T>[]—
required
dataT[]—
required
defaultSortstring | undefined—
optional
zebraboolean | undefinedfalseoptional
classNamestring | undefined—
optional
getRowId((row: T, index: number) => string) | undefined—
optional
isRowDisabled((row: T, index: number) => boolean) | undefined—
optional
selectionModeSelectionMode | undefined"none"optional
selectedIdsreadonly string[] | undefined—
optional
defaultSelectedIdsreadonly string[] | undefined—
optional
- Prop
columns- Type
DataColumn<T>[]- Default
- —
- Requirement
- required
- Prop
data- Type
T[]- Default
- —
- Requirement
- required
- Prop
defaultSort- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
zebra- Type
boolean | undefined- Default
false- Requirement
- optional
- Prop
className- Type
string | undefined- Default
- —
- Requirement
- optional
- Prop
getRowId- Type
((row: T, index: number) => string) | undefined- Default
- —
- Requirement
- optional
- Prop
isRowDisabled- Type
((row: T, index: number) => boolean) | undefined- Default
- —
- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode | undefined- Default
"none"- Requirement
- optional
- Prop
selectedIds- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
- Prop
defaultSelectedIds- Type
readonly string[] | undefined- Default
- —
- Requirement
- optional
Events
| Event | Payload |
|---|---|
selectedIdsChange | [detail: SelectionChangeDetail] |
Import
import { Component } from "@angular/core";
import { GrassrootDataTable, type DataColumn } from "@grassroot/ui-angular";
Props
Prop
Type
Default
Requirement
columnsDataColumn<T>[]—
required
dataT[]—
required
defaultSort(keyof T & string) | undefinedundefinedoptional
zebrabooleanfalseoptional
classNamestring—
optional
getRowId(row: T, index: number) => string—
optional
isRowDisabled(row: T, index: number) => boolean—
optional
selectionModeSelectionMode"none"optional
selectedIdsreadonly string[] | undefinedundefinedoptional
defaultSelectedIdsreadonly string[] | undefinedundefinedoptional
- Prop
columns- Type
DataColumn<T>[]- Default
- —
- Requirement
- required
- Prop
data- Type
T[]- Default
- —
- Requirement
- required
- Prop
defaultSort- Type
(keyof T & string) | undefined- Default
undefined- Requirement
- optional
- Prop
zebra- Type
boolean- Default
false- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
getRowId- Type
(row: T, index: number) => string- Default
- —
- Requirement
- optional
- Prop
isRowDisabled- Type
(row: T, index: number) => boolean- Default
- —
- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode- Default
"none"- Requirement
- optional
- Prop
selectedIds- Type
readonly string[] | undefined- Default
undefined- Requirement
- optional
- Prop
defaultSelectedIds- Type
readonly string[] | undefined- Default
undefined- Requirement
- optional
Events
| Event | Payload |
|---|---|
selectedIdsChange | SelectionChangeDetail |
Import
import { DataTable } from "@grassroot/ui-svelte";
Props
Prop
Type
Default
Requirement
columnsDataColumn<Row>[]—
required
dataRow[]—
required
defaultSortstring—
optional
zebrabooleanfalseoptional
classNamestring—
optional
getRowId(row: Row, index: number) => string—
optional
isRowDisabled(row: Row, index: number) => boolean—
optional
selectionModeSelectionMode"none"optional
selectedIdsreadonly string[]—
optional
defaultSelectedIdsreadonly string[]—
optional
onSelectedIdsChange(detail: SelectionChangeDetail) => void—
optional
- Prop
columns- Type
DataColumn<Row>[]- Default
- —
- Requirement
- required
- Prop
data- Type
Row[]- Default
- —
- Requirement
- required
- Prop
defaultSort- Type
string- Default
- —
- Requirement
- optional
- Prop
zebra- Type
boolean- Default
false- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
getRowId- Type
(row: Row, index: number) => string- Default
- —
- Requirement
- optional
- Prop
isRowDisabled- Type
(row: Row, index: number) => boolean- Default
- —
- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode- Default
"none"- Requirement
- optional
- Prop
selectedIds- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
defaultSelectedIds- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
onSelectedIdsChange- Type
(detail: SelectionChangeDetail) => void- Default
- —
- Requirement
- optional
Events
| Event | Payload |
|---|---|
onSelectedIdsChange | (detail: SelectionChangeDetail) => void |
Import
import { DataTable, type DataColumn } from "@grassroot/ui-solid";
import type { JSX } from "solid-js";
Props
Prop
Type
Default
Requirement
columnsDataColumn<T>[]—
required
dataT[]—
required
defaultSortkeyof T & string—
optional
zebrabooleanfalseoptional
classNamestring—
optional
getRowId(row: T, index: number) => string—
optional
isRowDisabled(row: T, index: number) => boolean—
optional
selectionModeSelectionMode"none"optional
selectedIdsreadonly string[]—
optional
defaultSelectedIdsreadonly string[]—
optional
onSelectedIdsChange(detail: SelectionChangeDetail) => void—
optional
- Prop
columns- Type
DataColumn<T>[]- Default
- —
- Requirement
- required
- Prop
data- Type
T[]- Default
- —
- Requirement
- required
- Prop
defaultSort- Type
keyof T & string- Default
- —
- Requirement
- optional
- Prop
zebra- Type
boolean- Default
false- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
getRowId- Type
(row: T, index: number) => string- Default
- —
- Requirement
- optional
- Prop
isRowDisabled- Type
(row: T, index: number) => boolean- Default
- —
- Requirement
- optional
- Prop
selectionMode- Type
SelectionMode- Default
"none"- Requirement
- optional
- Prop
selectedIds- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
defaultSelectedIds- Type
readonly string[]- Default
- —
- Requirement
- optional
- Prop
onSelectedIdsChange- Type
(detail: SelectionChangeDetail) => void- Default
- —
- Requirement
- optional
Events
| Event | Payload |
|---|---|
onSelectedIdsChange | (detail: SelectionChangeDetail) => void |