Introducing PrimeReact v11-alpha 🎉Discover Now

DataTable

An unstyled data table with sort, filter, pagination, selection, expansion, editing, column reorder/resize, row reorder, grouping, frozen sections, CSV export, and tree mode.

Compose a fully custom table with complete control over markup, layout, and styling. Every feature is opt-in and driven by data attributes.

CodeNameCategoryPrice
basic-demo

Pre-styled Versions

Choose a pre-styled library to use DataTable with ready-made designs.
For hook-based usage without components, see the Headless API.

Features#

  • Compound component API with sub-components: Root, Header, TableContainer, Table, THead, THeadRow, THeadCell, TBody, FrozenTBody, Row, Cell, TFoot, TFootRow, TFootCell, Footer, Sort, SortIndicator, SortOrder, Filter, Pagination, Selection, RowToggle, RowToggleIndicator, RowExpansion, RowGroupHeader, RowGroupFooter, CellEditor, CellEditorDisplay, CellEditorContent, RowEditor, RowEditorInit, RowEditorSave, RowEditorCancel, ColumnToggle, ColumnReorder, ColumnReorderTarget, ColumnResizer, ColumnResizeIndicator, RowReorder, Export, Loading, EmptyTBody
  • Sort (single, multi, removable), row and menu filters per column, plus a global filter across selected fields
  • Pagination with built-in slicing or lazy mode
  • Selection in single, multiple checkbox, multiple row, or radio modes; Shift for range, Ctrl/Meta to add or remove
  • Cell or row editing with Tab traversal, outside-click commit, and Escape cancel
  • Column reorder, column resize (fit or expand), and row reorder via drag handles
  • Frozen left and right columns via the frozen prop on Cell and THeadCell
  • Tree mode reuses the same components; flip treeMode on Root and feed it { key, data, children? } nodes
  • CSV export with custom fields and headers

Usage#

import { DataTable } from 'primereact/datatable';
<DataTable.Root data={products} dataKey="id">
    <DataTable.TableContainer>
        <DataTable.Table>
            <DataTable.THead>
                <DataTable.THeadRow>
                    <DataTable.THeadCell>Name</DataTable.THeadCell>
                    <DataTable.THeadCell>Category</DataTable.THeadCell>
                </DataTable.THeadRow>
            </DataTable.THead>
            <DataTable.TBody>
                {({ item }) => (
                    <DataTable.Row>
                        <DataTable.Cell>{item.name}</DataTable.Cell>
                        <DataTable.Cell>{item.category}</DataTable.Cell>
                    </DataTable.Row>
                )}
            </DataTable.TBody>
        </DataTable.Table>
    </DataTable.TableContainer>
</DataTable.Root>

Behavior#

Render Function Children#

DataTable.TBody accepts a render function that receives { item, index, groupMeta } for each row. Stateful sub-components (Selection, Pagination, Filter, Sort, RowToggle, CellEditor) also expose render-prop slot context so you can read live state and call exposed methods.

<DataTable.Sort field="price">{({ isSorted, sortOrder }) => <span>Price {isSorted ? (sortOrder === 1 ? '↑' : '↓') : ''}</span>}</DataTable.Sort>

Polymorphic Rendering#

Use as on any sub-component to swap the underlying element or render through another component (e.g. a styled Button for Sort triggers).

<DataTable.RowEditorInit as={Button} variant="text" />

Sort#

Wrap header content in DataTable.Sort and provide field. Hold Ctrl / Cmd while clicking to multi-sort. Enable removableSort on Root for tri-state click cycles.

<DataTable.THeadCell>
    <DataTable.Sort field="price">
        Price <DataTable.SortIndicator match="asc">↑</DataTable.SortIndicator>
    </DataTable.Sort>
</DataTable.THeadCell>

Filter#

Render DataTable.Filter for each filterable column and a separate keyword input bound to globalFilter. Use display="row" for inline filters that apply on every change, or display="menu" for an overlay with multiple constraints, AND/OR operators, and explicit Apply / Clear.

<DataTable.Filter field="name" display="row" dataType="text">
    {({ value, onChange }) => <input value={value ?? ''} onChange={(e) => onChange(e, e.target.value)} />}
</DataTable.Filter>

Selection#

Set selectionMode on Root to 'single' or 'multiple' and wrap each cell or header trigger in DataTable.Selection. The slot context exposes isSelected / toggle for rows and isAllSelected / isSomeSelected / toggleAll for headers.

<DataTable.Selection>{({ isSelected, toggle }) => <Checkbox checked={isSelected} onCheckedChange={toggle} />}</DataTable.Selection>

Expansion & Tree Mode#

DataTable.RowToggle reads expansion state automatically and renders a leaf-spacer in tree mode when a row has no children, so indentation stays aligned. Setting treeMode on Root flips the table to role="treegrid" and stamps tree ARIA on every row.

<DataTable.Root treeMode dataKey="key" data={nodes}>
    {/* same Table / THead / TBody markup; rows now indent automatically */}
</DataTable.Root>

Cell and Row Editing#

Wrap each editable cell in DataTable.CellEditor with field / rowIndex / rowData, and supply two slots: Display (read mode) and Content (edit mode). When editMode="row", replace the per-cell switch with RowEditor.Init / Save / Cancel triggers in a dedicated cell.

<DataTable.CellEditor field="price" rowIndex={index} rowData={item}>
    <DataTable.CellEditorDisplay>{item.price}</DataTable.CellEditorDisplay>
    <DataTable.CellEditorContent>
        <input defaultValue={item.price} />
    </DataTable.CellEditorContent>
</DataTable.CellEditor>

Column Reorder & Resize#

Set reorderableColumns on Root and add a DataTable.ColumnReorder handle inside each THeadCell. For resizing, set resizableColumns and drop a DataTable.ColumnResizer inside the header — pair it with ColumnResizeIndicator for a live drag line.

Row Reorder#

Set reorderableRows on Root and add a DataTable.RowReorder handle in a row cell. The hook arms the surrounding <tr> as the drag source on pointer-down and emits onRowReorder with the new array.

Pagination#

Render DataTable.Pagination anywhere below the table; it acts as a render-prop wrapper that exposes page, pageCount, rows, totalRecords, first, canPrev, canNext, onPageChange, and onRowsChange.

<DataTable.Pagination>{({ page, pageCount, onPageChange }) => <div>{/* custom paginator UI */}</div>}</DataTable.Pagination>

Pass Through#

Some parts may not be visible in the preview depending on the component's current state.

Loading...
/* Select a part to see its CSS selector for custom styling */

API#

DataTableRoot#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRootInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRootInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRootInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRootPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRootInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
dataRecord<string, unknown>[] | object[]—
An array of objects to display.
defaultValuestring—
Default sort value for uncontrolled mode.
valuestring—
Sort field value for controlled mode.
dataKeystring—
A property to uniquely identify each row in the data.
loadingbooleanfalse
Whether the data is currently being loaded.
lazybooleanfalse
Defines if data is loaded and interacted with in lazy manner.
totalRecordsnumber0
Number of total records, used in lazy mode.
scrollablebooleanfalse
When enabled, the table can be scrolled horizontally and/or vertically.
scrollHeightstring—
Height of the scroll viewport in fixed pixels or the "flex" keyword for a dynamic size.
sortFieldstringundefined
Property name to sort by in single-sort mode.
sortOrderSortOrderundefined
Sort order for single-sort mode.
defaultSortFieldstringundefined
Default sort field for uncontrolled single-sort mode.
defaultSortOrderSortOrderundefined
Default sort order for uncontrolled single-sort mode.
multiSortMetaSortMeta[]undefined
An array of SortMeta objects for multi-column sorting (controlled).
defaultMultiSortMetaSortMeta[]undefined
Initial multi-column sort metadata for uncontrolled mode.
onSortChange(event: DataTableSortEvent) => void—
Callback invoked when the sort state changes.
removableSortbooleanfalse
When true, clicking a sorted column header a third time removes the sort.
nullSortOrdernumber1
Determines where null values are placed during sort. 1 = nulls last (default), -1 = nulls first.
selectionMode"multiple" | "single"—
Defines the selection mode. 'single' allows one row, 'multiple' allows many.
metaKeySelectionbooleanfalse
When true, row click selection requires Ctrl/Cmd key. Without it, click selects only that row. Shift+Click extends range. Only applies when selectionMode is set.
selectedKeysSelectionKeysundefined
The selection keys for controlled mode.
defaultSelectedKeysSelectionKeysundefined
The default selection keys for uncontrolled mode.
onSelectionChange(event: DataTableSelectionEvent) => voidundefined
Callback invoked when the selection changes.
pagenumberundefined
Current page number for controlled pagination (0-indexed).
defaultPagenumber0
Default page number for uncontrolled pagination (0-indexed).
rowsnumberundefined
Number of rows to display per page for controlled mode.
defaultRowsnumber10
Default number of rows to display per page for uncontrolled mode.
rowsPerPageOptionsnumber[]undefined
Array of integer values to display inside the rows per page dropdown.
paginatorbooleanfalse
Whether pagination is enabled.
onPageChange(event: DataTablePageEvent) => void—
Callback invoked when the page or rows per page changes.
expandedKeysExpandedKeysundefined
The expanded keys map for controlled row expansion.
defaultExpandedKeysExpandedKeysundefined
The default expanded keys map for uncontrolled row expansion.
onExpandedChange(event: DataTableExpansionEvent) => void—
Callback invoked when the expanded keys change.
groupFieldstringundefined
The field name to group rows by.
reorderableColumnsbooleanfalse
When enabled, columns can be reordered using drag and drop.
onColumnReorder(event: DataTableColumnReorderEvent) => void—
Callback invoked when columns are reordered.
resizableColumnsbooleanfalse
When enabled, columns can be resized using drag and drop.
columnResizeModeColumnResizeMode'fit'
Defines whether the overall table width should change on column resize. 'fit' mode keeps total width the same. 'expand' mode increases total width.
onColumnResizeEnd(event: DataTableColumnResizeEvent) => void—
Callback invoked when a column resize ends.
editModeDataTableEditModeundefined
Defines the editing mode.
editingKeysEditingKeysundefined
The editing keys map for controlled row editing.
defaultEditingKeysEditingKeysundefined
The default editing keys for uncontrolled row editing.
onEditingKeysChange(event: DataTableEditingEvent) => void—
Callback invoked when the editing keys change.
onRowEditInit(event: DataTableRowEditEvent) => void—
Callback invoked when a row edit is initiated.
onRowEditSave(event: DataTableRowEditEvent) => void—
Callback invoked when a row edit is saved.
onRowEditCancel(event: DataTableRowEditEvent) => void—
Callback invoked when a row edit is cancelled.
onCellEditInit(event: { originalEvent: SyntheticEvent; field: string; rowIndex: number }) => void—
Callback invoked when a cell edit is initiated.
onCellEditComplete(event: DataTableCellEditEvent) => void—
Callback invoked when a cell edit completes.
onCellEditCancel(event: DataTableCellEditEvent) => void—
Callback invoked when a cell edit is cancelled.
filtersDataTableFilterMetaundefined
Filter metadata for controlled mode.
defaultFiltersDataTableFilterMetaundefined
Default filter metadata for uncontrolled mode.
globalFilterstring—
Global filter value applied across globalFilterFields.
globalFilterFieldsstring[]undefined
An array of field names to search with globalFilter.
filterDelaynumber0
Delay in ms before applying filter (for debounce).
onFilter(event: DataTableFilterEvent) => void—
Callback invoked when filters change.
reorderableRowsbooleanfalse
When enabled, rows can be reordered using drag and drop.
onRowReorder(event: DataTableRowReorderEvent) => void—
Callback invoked when rows are reordered.
rowClassName(data: Record<string, unknown>, options: { index: number; props: useDataTableProps }) => string—
A function that returns a className for a given row.
onLazyLoad(event: DataTableLazyLoadEvent) => void—
Callback invoked when lazy loading is triggered (page, sort, filter change in lazy mode).
onRowClick(event: DataTableRowMouseEvent) => void—
Callback fired when a row is clicked. Does NOT fire when the click originates on interactive content (buttons, inputs, checkboxes, radios) — those bubble their own semantics.
onRowDoubleClick(event: DataTableRowMouseEvent) => void—
Callback fired on row double-click.
onRowContextMenu(event: DataTableRowMouseEvent) => void—
Callback fired on row right-click (contextmenu). Does not prevent the default menu — call `event.originalEvent.preventDefault()` in the handler if you want to.
rowHoverbooleanfalse
When enabled, rows highlight on mouse hover via `data-row-hover` attribute on root.
highlightOnSelectbooleantrue
When enabled, selected rows are highlighted via `data-highlight-on-select` attribute on root.
treeModebooleanfalse
When enabled, data is treated as a tree structure with `key` , `data` , and `children` fields. Tree nodes are flattened internally and sort, filter, pagination operate on the tree structure. Pagination applies to root-level nodes only.
size"small" | "large"undefined
Table size variant. Adjusts cell padding and font size via CSS.
stripedRowsbooleanfalse
When enabled, rows are rendered with alternating background colors.
showGridlinesbooleanfalse
When enabled, borders are displayed between cells.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"root"
data-loadingPresent while loading
data-row-hoverPresent when rowHover is true
data-highlight-on-selectPresent when selected rows should highlight
data-selection-mode"single" | "multiple"
data-size"small" | "large"
data-striped-rowsPresent when stripedRows is true
data-show-gridlinesPresent when showGridlines is true

Defines passthrough(pt) options of DataTableRoot component.

labeltypedescription
rootDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.
headerDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the header's DOM element (above the table).
tableContainerDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the table container's DOM element.
tableDataTableRootPassThroughType<HTMLAttributes<HTMLTableElement>>Used to pass attributes to the table's DOM element.
headDataTableRootPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the thead's DOM element.
theadRowDataTableRootPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the thead row's DOM element.
theadCellDataTableRootPassThroughType<HTMLAttributes<HTMLTableCellElement>>Used to pass attributes to the thead cell's DOM element.
bodyDataTableRootPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the tbody's DOM element.
frozenBodyDataTableRootPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the frozen tbody's DOM element.
rowDataTableRootPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the row's DOM element.
cellDataTableRootPassThroughType<HTMLAttributes<HTMLTableCellElement>>Used to pass attributes to the cell's DOM element.
footDataTableRootPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the tfoot's DOM element.
tfootRowDataTableRootPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the tfoot row's DOM element.
tfootCellDataTableRootPassThroughType<HTMLAttributes<HTMLTableCellElement>>Used to pass attributes to the tfoot cell's DOM element.
footerDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the footer's DOM element (below the table).
emptyTBodyDataTableRootPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the empty body's DOM element.
loadingDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the loading overlay's DOM element.
sortDataTableRootPassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the sort trigger's DOM element.
sortIndicatorDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the sort indicator's DOM element.
sortOrderDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the multi-sort order badge's DOM element.
filterDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the filter's DOM element.
rowToggleDataTableRootPassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the row toggle's DOM element.
rowToggleIndicatorDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the row toggle indicator's DOM element.
rowExpansionDataTableRootPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the row expansion's DOM element.
rowGroupHeaderDataTableRootPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the row group header's DOM element.
rowGroupFooterDataTableRootPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the row group footer's DOM element.
cellEditorDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the cell editor's DOM element.
cellEditorDisplayDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the cell editor display element.
cellEditorContentDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the cell editor content element.
rowEditorInitDataTableRootPassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the row editor init button.
rowEditorSaveDataTableRootPassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the row editor save button.
rowEditorCancelDataTableRootPassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the row editor cancel button.
rowReorderDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the row reorder handle.
columnReorderDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the column reorder handle.
columnResizerDataTableRootPassThroughType<HTMLAttributes<HTMLElement>>Used to pass attributes to the column resizer handle.
columnResizeIndicatorDataTableRootPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the column resize indicator's DOM element.
exportDataTableRootPassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the export trigger's DOM element.

DataTableHeader#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableHeaderInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableHeaderInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableHeaderInstance—
The instance to pass to the component.
ptSafeRecord<DataTableHeaderPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableHeaderInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableHeader component.

labeltypedescription
rootDataTableHeaderPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableTableContainer#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTableContainerInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTableContainerInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTableContainerInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTableContainerPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTableContainerInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"table-container"

Defines passthrough(pt) options of DataTableTableContainer component.

labeltypedescription
rootDataTableTableContainerPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableTable#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTableInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTableInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTableInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTablePassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTableInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"table"
role"table" or "treegrid"

Defines passthrough(pt) options of DataTableTable component.

labeltypedescription
rootDataTableTablePassThroughType<HTMLAttributes<HTMLTableElement>>Used to pass attributes to the root's DOM element.

DataTableTHead#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTHeadInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTHeadInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTHeadInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTHeadPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTHeadInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableTHead component.

labeltypedescription
rootDataTableTHeadPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the root's DOM element.

DataTableTHeadRow#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTHeadRowInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTHeadRowInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTHeadRowInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTHeadRowPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTHeadRowInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableTHeadRow component.

labeltypedescription
rootDataTableTHeadRowPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the root's DOM element.

DataTableTHeadCell#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTHeadCellInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTHeadCellInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTHeadCellInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTHeadCellPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTHeadCellInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
colSpannumberundefined
Number of columns a header cell should span.
rowSpannumberundefined
Number of rows a header cell should span.
frozenbooleanfalse
Whether the column is frozen.
alignFrozen"left" | "right"'left'
Position of the frozen column, valid values are "left" and "right".
scope"col" | "colgroup" | "row" | "rowgroup"'col'
Defines the scope of the header cell.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-frozenPresent when the cell is frozen
data-align-frozen"left" | "right"

Defines passthrough(pt) options of DataTableTHeadCell component.

labeltypedescription
rootDataTableTHeadCellPassThroughType<HTMLAttributes<HTMLTableCellElement>>Used to pass attributes to the root's DOM element.

DataTableTBody#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTBodyInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTBodyInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTBodyInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTBodyPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTBodyInstance) => ReactNode—
The render function to render the component with instance access.
childrenReactNode | ((instance: BaseInstance<SafeRecord<DataTableTBodyProps>, unknown, HTMLElement> & { props: SafeRecord<SafeRecord<DataTableTBodyProps>>; attrs: Omit<SafeRecord<SafeRecord<DataTableTBodyProps>>, string | number | symbol> & Record<PropertyKey, unknown> } & { state: SafeRecord; $computedSetup: SafeRecord } & DataTableTBodyExposes & Record<PropertyKey, unknown> & useComponentPTReturnType & useComponentStyleReturnType & DataTableTBodyItemOptions) => ReactNode)—
Render function called for each item in the data array. Receives the component instance enriched with item, index, and groupMeta.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableTBody component.

labeltypedescription
rootDataTableTBodyPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the root's DOM element.

DataTableFrozenTBody#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableFrozenTBodyInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableFrozenTBodyInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableFrozenTBodyInstance—
The instance to pass to the component.
ptSafeRecord<DataTableFrozenTBodyPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableFrozenTBodyInstance) => ReactNode—
The render function to render the component with instance access.
childrenReactNode—
Frozen rows that the consumer wants pinned at the top of the scroll viewport.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableFrozenTBody component.

labeltypedescription
rootDataTableFrozenTBodyPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the root's DOM element.

DataTableRow#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
indexnumberundefined
Zero-based index of the row. Used for `aria-rowindex` , striped-row class, and keyboard navigation tab order. When the row is rendered inside a data-driven `TBody` iteration the index is derived from the context; pass this prop explicitly when rendering rows outside of that flow (for example, when iterating data manually).
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"row"
data-indexZero-based row index in the rendered slice
data-selectedPresent when the row is selected
aria-selectedReflects selection state when selection mode is active
aria-levelTree depth (one-based) in tree mode
aria-expandedReflects expansion when the row has children
aria-posinsetOne-based position among siblings (tree mode)
aria-setsizeTotal siblings at the same depth (tree mode)
data-drag-sourcePresent while dragging this row
data-dragpoint-topPresent when drop indicator targets the top edge
data-dragpoint-bottomPresent when drop indicator targets the bottom edge

Defines passthrough(pt) options of DataTableRow component.

labeltypedescription
rootDataTableRowPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the root's DOM element.

DataTableCell#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableCellInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableCellInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableCellInstance—
The instance to pass to the component.
ptSafeRecord<DataTableCellPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableCellInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
colSpannumberundefined
Number of columns a cell should span.
rowSpannumberundefined
Number of rows a cell should span. Used for rowspan-style row grouping.
frozenbooleanfalse
Whether the column is frozen.
alignFrozen"left" | "right"'left'
Position of the frozen column, valid values are "left" and "right".
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"cell"
role"gridcell"
data-frozenPresent when the cell is frozen
data-align-frozen"left" | "right"
data-editable-cellPresent when wrapped by a CellEditor

Defines passthrough(pt) options of DataTableCell component.

labeltypedescription
rootDataTableCellPassThroughType<HTMLAttributes<HTMLTableCellElement>>Used to pass attributes to the root's DOM element.

DataTableTFoot#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTFootInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTFootInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTFootInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTFootPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTFootInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableTFoot component.

labeltypedescription
rootDataTableTFootPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the root's DOM element.

DataTableTFootRow#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTFootRowInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTFootRowInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTFootRowInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTFootRowPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTFootRowInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableTFootRow component.

labeltypedescription
rootDataTableTFootRowPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the root's DOM element.

DataTableTFootCell#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableTFootCellInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableTFootCellInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableTFootCellInstance—
The instance to pass to the component.
ptSafeRecord<DataTableTFootCellPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableTFootCellInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
colSpannumberundefined
Number of columns a footer cell should span.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableTFootCell component.

labeltypedescription
rootDataTableTFootCellPassThroughType<HTMLAttributes<HTMLTableCellElement>>Used to pass attributes to the root's DOM element.

DataTableFooter#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableFooterInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableFooterInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableFooterInstance—
The instance to pass to the component.
ptSafeRecord<DataTableFooterPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableFooterInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableFooter component.

labeltypedescription
rootDataTableFooterPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableSort#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableSortInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableSortInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableSortInstance—
The instance to pass to the component.
ptSafeRecord<DataTableSortPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableSortInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
fieldstringundefined
The field name to sort by when this sort trigger is clicked.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"sort"
role"button"
data-sortedPresent when this column is part of the active sort
data-unsortedPresent when this column is not part of the sort
data-sort-order"asc" | "desc" when sorted
aria-sort"ascending" | "descending" | "none"

Defines passthrough(pt) options of DataTableSort component.

labeltypedescription
rootDataTableSortPassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the root's DOM element.

DataTableSortIndicator#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableSortIndicatorInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableSortIndicatorInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableSortIndicatorInstance—
The instance to pass to the component.
ptSafeRecord<DataTableSortIndicatorPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableSortIndicatorInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
match"desc" | "always" | "asc" | "unsorted"—
Determines the visibility of the indicator based on the sort state. - "asc": Visible when sorted ascending. - "desc": Visible when sorted descending. - "unsorted": Visible when not sorted (useful with removableSort). - "always": Indicator is always visible.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableSortIndicator component.

labeltypedescription
rootDataTableSortIndicatorPassThroughType<HTMLAttributes<HTMLSpanElement>>Used to pass attributes to the root's DOM element.

DataTableSortOrder#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableSortOrderInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableSortOrderInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableSortOrderInstance—
The instance to pass to the component.
ptSafeRecord<DataTableSortOrderPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableSortOrderInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableSortOrderPassThroughType<HTMLAttributes<HTMLSpanElement>>

DataTableFilter#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableFilterInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableFilterInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableFilterInstance—
The instance to pass to the component.
ptSafeRecord<DataTableFilterPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableFilterInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
fieldstring—
The field name to filter.
displayDataTableFilterDisplay'row'
Display mode of the filter. 'row' renders inline and applies immediately. 'menu' provides overlay with constraints, operators, apply/clear.
showOperatorbooleantrue
Whether to show the AND/OR operator selector in menu mode.
showMatchModesbooleantrue
Whether to show the match mode dropdown.
showClearButtonbooleantrue
Whether to show the clear button.
showApplyButtonbooleantrue
Whether to show the apply button (menu mode only).
showAddButtonbooleantrue
Whether to show the "add constraint" button (menu mode only).
maxConstraintsnumber2
Maximum number of constraints per column (menu mode only).
matchModeOptionsDataTableMatchModeOption[]—
Custom match mode options. If not provided, defaults based on dataType.
dataTypestring'text'
Data type hint for default match modes. 'text' | 'numeric' | 'date' | 'boolean'
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"filter"
data-display"row" | "menu"
data-activePresent when the column has an active filter

labeltypedescription
rootDataTableFilterPassThroughType<HTMLAttributes<HTMLDivElement>>

DataTablePagination#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTablePaginationInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTablePaginationInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTablePaginationInstance—
The instance to pass to the component.
ptSafeRecord<DataTablePaginationPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTablePaginationInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTablePagination component.

labeltypedescription
rootDataTablePaginationPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableSelection#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableSelectionInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableSelectionInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableSelectionInstance—
The instance to pass to the component.
ptSafeRecord<DataTableSelectionPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableSelectionInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
mode"checkbox" | "radio" | "single"—
Override the toggle mode for row selection. - 'radio': select only one row, no deselect on re-click. - 'checkbox': toggle individual rows. - 'single': select one row, deselect on re-click. When not set, defaults to 'single' for selectionMode="single" and 'checkbox' for selectionMode="multiple".
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableSelection component.

labeltypedescription
rootDataTableSelectionPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableRowToggle#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowToggleInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowToggleInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowToggleInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowTogglePassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowToggleInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"row-toggle" (button) or "row-toggle-spacer"
data-tree-levelZero-based tree depth (tree mode only)
aria-expandedReflects current expansion state

Defines passthrough(pt) options of DataTableRowToggle component.

labeltypedescription
rootDataTableRowTogglePassThroughType<HTMLAttributes<HTMLButtonElement>>Used to pass attributes to the root's DOM element.

DataTableRowToggleIndicator#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowToggleIndicatorInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowToggleIndicatorInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowToggleIndicatorInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowToggleIndicatorPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowToggleIndicatorInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
match"always" | "expanded" | "collapsed"—
Determines the visibility of the indicator based on the toggle state. - "expanded": Visible when the row is expanded. - "collapsed": Visible when the row is collapsed. - "always": Indicator is always visible.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableRowToggleIndicator component.

labeltypedescription
rootDataTableRowToggleIndicatorPassThroughType<HTMLAttributes<HTMLSpanElement>>Used to pass attributes to the root's DOM element.

DataTableRowExpansion#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowExpansionInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowExpansionInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowExpansionInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowExpansionPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowExpansionInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableRowExpansion component.

labeltypedescription
rootDataTableRowExpansionPassThroughType<HTMLAttributes<HTMLTableRowElement>>Used to pass attributes to the root's DOM element.

DataTableRowGroupHeader / DataTableRowGroupFooter#

<DataTable.RowGroupHeader> and <DataTable.RowGroupFooter> render header / footer rows for grouped data when groupField is set on Root. They forward all props to a <tr> element and render the row only at the start (header) / end (footer) of each group as reported by the headless grouping metadata.

<DataTable.TBody>
    {({ item, index, groupMeta }) => (
        <>
            {groupMeta?.isGroupStart && (
                <DataTable.RowGroupHeader>
                    <DataTable.Cell colSpan={3}>{String(groupMeta.groupValue)}</DataTable.Cell>
                </DataTable.RowGroupHeader>
            )}
            <DataTable.Row>{/* … */}</DataTable.Row>
            {groupMeta?.isGroupEnd && (
                <DataTable.RowGroupFooter>
                    <DataTable.Cell colSpan={3}>Total: {groupMeta.groupCount}</DataTable.Cell>
                </DataTable.RowGroupFooter>
            )}
        </>
    )}
</DataTable.TBody>

DataTableCellEditor#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableCellEditorInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableCellEditorInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableCellEditorInstance—
The instance to pass to the component.
ptSafeRecord<DataTableCellEditorPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableCellEditorInstance) => ReactNode—
The render function to render the component with instance access.
fieldstring—
Field name associated with this cell.
rowIndexnumber—
Row index of this cell.
rowDataRecord<string, unknown>—
Row data associated with this cell.
childrenReactNode—
CellEditorDisplay and CellEditorContent sub-components.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.
AttributeValue
data-scope"datatable"
data-part"cell-editor"
data-row-indexThe row index (used by Tab traversal)
data-fieldThe field name (used by Tab traversal)
data-row-keyThe row key (used to track edits across sort)
data-editingPresent while the cell is in edit mode

Defines passthrough(pt) options of DataTableCellEditor component.

labeltypedescription
rootDataTableCellEditorPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableCellEditorDisplay#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableCellEditorDisplayInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableCellEditorDisplayInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableCellEditorDisplayInstance—
The instance to pass to the component.
ptSafeRecord<DataTableCellEditorDisplayPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableCellEditorDisplayInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableCellEditorDisplayPassThroughType<HTMLAttributes<HTMLDivElement>>

DataTableCellEditorContent#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableCellEditorContentInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableCellEditorContentInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableCellEditorContentInstance—
The instance to pass to the component.
ptSafeRecord<DataTableCellEditorContentPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableCellEditorContentInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableCellEditorContentPassThroughType<HTMLAttributes<HTMLDivElement>>

DataTableRowEditor#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowEditorInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowEditorInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowEditorInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowEditorPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowEditorInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
rowKeystring | number—
Row key used for editing state tracking.
rowDataRecord<string, unknown>—
The row data — forwarded to `onRowEditInit` / `onRowEditSave` / `onRowEditCancel` events so the handler can identify the affected row without a separate lookup.
rowIndexnumber—
Flat row index — forwarded to row edit events when available.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableRowEditor component.

labeltypedescription
rootDataTableRowEditorPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableRowEditorInit#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowEditorInitInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowEditorInitInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowEditorInitInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowEditorInitPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowEditorInitInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableRowEditorInitPassThroughType<ButtonHTMLAttributes<HTMLButtonElement>>

DataTableRowEditorSave#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowEditorSaveInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowEditorSaveInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowEditorSaveInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowEditorSavePassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowEditorSaveInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableRowEditorSavePassThroughType<ButtonHTMLAttributes<HTMLButtonElement>>

DataTableRowEditorCancel#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowEditorCancelInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowEditorCancelInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowEditorCancelInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowEditorCancelPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowEditorCancelInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableRowEditorCancelPassThroughType<ButtonHTMLAttributes<HTMLButtonElement>>

DataTableColumnToggle#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableColumnToggleInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableColumnToggleInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableColumnToggleInstance—
The instance to pass to the component.
ptSafeRecord<DataTableColumnTogglePassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableColumnToggleInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
columnsDataTableColumnToggleColumn[]—
Available columns that can be toggled.
visibleFieldsstring[]—
Currently visible column fields.
defaultVisibleFieldsstring[]—
Default visible column fields for uncontrolled mode.
onVisibleFieldsChange(event: { originalEvent: SyntheticEvent; visibleFields: string[] }) => void—
Callback when column visibility changes.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableColumnTogglePassThroughType<HTMLAttributes<HTMLDivElement>>

DataTableColumnReorder#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableColumnReorderInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableColumnReorderInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableColumnReorderInstance—
The instance to pass to the component.
ptSafeRecord<DataTableColumnReorderPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableColumnReorderInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
columnIndexnumber—
Index of the column for reordering. Not required — the surrounding `<th>` is the actual drag source and drop target; this handle only hints draggability visually. Kept for backward compatibility and potential fine-grained control.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableColumnReorder component.

labeltypedescription
rootDataTableColumnReorderPassThroughType<HTMLAttributes<HTMLSpanElement>>Used to pass attributes to the root's DOM element.

DataTableColumnReorderTarget#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableColumnReorderTargetInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableColumnReorderTargetInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableColumnReorderTargetInstance—
The instance to pass to the component.
ptSafeRecord<DataTableColumnReorderTargetPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableColumnReorderTargetInstance) => ReactNode—
The render function to render the component with instance access.
indexnumber—
Column index for this target. When omitted, the index is resolved from the nearest ancestor `<th>` 's sibling position. Provide explicitly only when the DOM structure makes sibling-based resolution unreliable (e.g., portaled headers).
childrenReactNode | ((state: DataTableColumnReorderTargetRenderState) => ReactNode)—
Content rendered inside the target. Accepts a render-prop form `(state) => ReactNode` for state-aware rendering.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableColumnReorderTargetPassThroughType<HTMLAttributes<HTMLDivElement>>

DataTableColumnResizer#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableColumnResizerInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableColumnResizerInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableColumnResizerInstance—
The instance to pass to the component.
ptSafeRecord<DataTableColumnResizerPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableColumnResizerInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
columnIndexnumber—
Index of the column to resize. When omitted, it is derived from the parent `<th>` `cellIndex` .
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableColumnResizer component.

labeltypedescription
rootDataTableColumnResizerPassThroughType<HTMLAttributes<HTMLSpanElement>>Used to pass attributes to the root's DOM element.

DataTableColumnResizeIndicator#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableColumnResizeIndicatorInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableColumnResizeIndicatorInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableColumnResizeIndicatorInstance—
The instance to pass to the component.
ptSafeRecord<DataTableColumnResizeIndicatorPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableColumnResizeIndicatorInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableColumnResizeIndicator component.

labeltypedescription
rootDataTableColumnResizeIndicatorPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableRowReorder#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableRowReorderInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableRowReorderInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableRowReorderInstance—
The instance to pass to the component.
ptSafeRecord<DataTableRowReorderPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableRowReorderInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
rowIndexnumber—
Index of the row for reordering.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableRowReorderPassThroughType<HTMLAttributes<HTMLSpanElement>>

DataTableExport#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableExportInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableExportInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableExportInstance—
The instance to pass to the component.
ptSafeRecord<DataTableExportPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableExportInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
selectionOnlyboolean—
Only export selected rows.
fieldsstring[]—
Fields to export. If not provided, all fields from first row are used.
headersRecord<string, string>—
Column headers for export (maps field to header label).
separatorstring','
CSV separator character.
fileNamestring'download'
File name for download (without extension).
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

labeltypedescription
rootDataTableExportPassThroughType<HTMLAttributes<HTMLButtonElement>>

DataTableLoading#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableLoadingInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableLoadingInstance) => string)—
The class name to apply to the component.
asstring | number | bigint | boolean | ComponentClass<any, any> | FunctionComponent<any> | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode, any, any> | ReactPortal | Promise<AwaitedReactNode>—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableLoadingInstance—
The instance to pass to the component.
ptSafeRecord<DataTableLoadingPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableLoadingInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
[key: string]any—
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableLoading component.

labeltypedescription
rootDataTableLoadingPassThroughType<HTMLAttributes<HTMLDivElement>>Used to pass attributes to the root's DOM element.

DataTableEmptyTBody#

NameTypeDefault
refRef<unknown>—
The reference to the component instance.
pIfbooleantrue
Whether the component should be rendered.
styleCSSProperties | ((instance?: DataTableEmptyTBodyInstance) => CSSProperties)—
The style to apply to the component.
classNamestring | ((instance?: DataTableEmptyTBodyInstance) => string)—
The class name to apply to the component.
asReactNode—
The component type to render.
asChildbooleanfalse
Whether the component should be rendered as a child component.
instanceDataTableEmptyTBodyInstance—
The instance to pass to the component.
ptSafeRecord<DataTableEmptyTBodyPassThrough>—
The pass-through props to pass to the component.
ptOptionsPassThroughOptions—
The pass-through options to pass to the component.
unstyledboolean—
Whether the component should be rendered without classes.
dtunknown—
The design token to use for the component.
stylesStylesOptions<ComponentInstance>—
The styles to use for the component.
render(instance: DataTableEmptyTBodyInstance) => ReactNode—
The render function to render the component with instance access.
childrenany—
The children to render. Accepts `React.ReactNode` for static content or a render function `(instance: I) => React.ReactNode` for instance access. Typed as `any` to avoid JSX type errors when used directly in templates.
pt-{optionName}-*-—
Pass through attributes for customizing component. For more info, see Pass Through tab.

Defines passthrough(pt) options of DataTableEmptyTBody component.

labeltypedescription
rootDataTableEmptyTBodyPassThroughType<HTMLAttributes<HTMLTableSectionElement>>Used to pass attributes to the root's DOM element.

Accessibility#

Screen Reader#

DataTable.Table applies role="table" for flat data and role="treegrid" when treeMode is enabled. Each row exposes role="row" plus aria-rowindex (1-based) and, in tree mode, aria-level, aria-expanded, aria-posinset, and aria-setsize. Cells use role="gridcell". Sort triggers expose role="button", aria-sort, and a descriptive aria-label. Selection wrappers forward checkbox/radio semantics from the underlying input. Provide an accessible name on Root via aria-label or aria-labelledby when the table has no visible heading.

Keyboard Support#

KeyFunction
tabMoves focus through interactive elements (sort triggers, filter inputs, rows).
arrow up / arrow downMoves focus between rows when a row is focused.
shift + arrow up / arrow downExtends row selection while moving focus.
arrow leftIn tree mode, collapses the focused row, or moves focus to its parent if already collapsed.
arrow rightIn tree mode, expands the focused row, or moves focus to its first child if already expanded.
home / endMoves focus to the first / last row.
spaceToggles selection on the focused row.
enterToggles selection on the focused row, or opens the first editable cell in cell edit mode.
escapeCancels the active cell edit and returns focus to the row.
tab (in cell edit)Commits the edit and moves to the next editable cell, wrapping across rows.
shift + tab (in cell edit)Commits the edit and moves to the previous editable cell.
enter (in cell edit)Commits the edit and stays in place.