Data Table Component
Data tables are powerful ways to display tabular data, like what you find in a CSV or SQL database.
Override the data
property with the row-formatted data source (an array of objects with consistent keys). Often, this data is the result of a function (e.g. {{pgQuery1.data}}
).
Data tables come batteries-included with support for:
- Column controls (renaming, formatting, filtering, sorting)
- Infinite scroll and pagination
- Row selection / auto-advance
- Downloading the underlying data (coming soon)
- Custom cells (coming soon)
All data tables are virtualized and therefore remain performant when scrolling through large numbers of rows.
Properties
Visible
Prop | isVisible |
---|---|
Type | boolean |
Default | true |
Whether or not this node is visible.
Enabled
Prop | isEnabled |
---|---|
Type | boolean |
Default | true |
Whether or not this node is enabled.
Tooltip
Prop | tooltip |
---|---|
Type | string |
Default | undefined |
The tooltip text to display when hovered or focused over this node.
Top
Prop | top |
---|---|
Type | number |
Default | 1 |
The position of the node from the top side of the grid (grid-row-start
).
Left
Prop | left |
---|---|
Type | number |
Default | 1 |
The position of the node from the left side of the grid (grid-column-start
).
Width
Prop | width |
---|---|
Type | string |
Default | 640px |
The width of the node. When this node is in a grid layout, this should be done using unitless grid column units (specifying 4
will become grid-column-end: span 4
). When this node is in a stack layout, the width can be specified using CSS units (e.g. 100px
or 100%
), or be left unitless to be treated as flex-grow for the node.
Min Width
Prop | minWidth |
---|---|
Type | string |
Default | undefined |
The minimum width of the node. When this node is in a grid layout, this property is ignored.
Max Width
Prop | maxWidth |
---|---|
Type | string |
Default | undefined |
The maximum width of the node. When this node is in a grid layout, this property is ignored.
Height
Prop | height |
---|---|
Type | string |
Default | 480px |
The height of the node. When this node is in a grid layout, this should be done using unitless grid row units (specifying 4
will become grid-row-end: span 4
). When this node is in a stack layout, the height can be specified using CSS units (e.g. 100px
or 100%
), or be left unitless to be treated as flex-grow for the node.
Min Height
Prop | minHeight |
---|---|
Type | string |
Default | undefined |
The minimum height of the node. When this node is in a grid layout, this property is ignored.
Max Height
Prop | maxHeight |
---|---|
Type | string |
Default | undefined |
The minimum height of the node. When this node is in a grid layout, this property is ignored.
Overflow
Prop | overflow |
---|---|
Type | Overflow ('auto' | 'visible' | 'hidden' | 'scroll') |
Default | auto |
The strategy used to handle overflow in the horizontal and vertical axes for content that is larger than its container.
Overflow X
Prop | overflowX |
---|---|
Type | Overflow ('auto' | 'visible' | 'hidden' | 'scroll') |
Default | auto |
The strategy used to handle overflow in the horizontal axis for content that is larger than its container.
Overflow Y
Prop | overflowY |
---|---|
Type | Overflow ('auto' | 'visible' | 'hidden' | 'scroll') |
Default | auto |
The strategy used to handle overflow in the vertical axis for content that is larger than its container.
Custom Styles
Prop | styles |
---|---|
Type | string |
Default | ::component { } ::wrapper { } |
Custom CSS styles to be applied to the node. Use element.styles
to refer to the current node.
Object Fit
Prop | objectFit |
---|---|
Type | ObjectFit ('none' | 'contain' | 'cover' | 'fill' | 'scale-down') |
Default | cover |
The strategy used to set how the content of a replaced element should be resized to fit its container.
Data Source
Prop | data |
---|---|
Type | unknown |
Default | [ { email: 'alovelace@example.io', joined: '2021-01-03', verified: true, }, { email: 'aturing@example.io', joined: '2021-03-02', verified: false, }, ] |
The table data in row-wise format. An array of objects with consistent keys, this is often the result of a function (e.g. {{pgQuery1.data}}
).
Auto Columns
Prop | autoColumns |
---|---|
Type | boolean |
Default | true |
Auto generate columns when data changes
Columns
Prop | columns |
---|---|
Type | array |
Default | [] |
The column configuration for the data table.
Column Configuration
Prop | columns[] |
---|---|
Type | object |
Default | undefined |
Options for each column
Column Header
Prop | columns[].header |
---|---|
Type | string |
Default | undefined |
The text to show at the top of the column
Key
Prop | columns[].accessor |
---|---|
Type | string |
Default | undefined |
The property in the data to read for this column
ID
Prop | columns[].id |
---|---|
Type | string |
Default | undefined |
A unique ID for this column
Width
Prop | columns[].width |
---|---|
Type | number |
Default | undefined |
The desired width for the column
Min Width
Prop | columns[].minWidth |
---|---|
Type | number |
Default | undefined |
The minimum width in px
Render As
Prop | columns[].renderAs |
---|---|
Type | ColumnRenderingMethod ('default' | 'date' | 'time' | 'datetime' | 'boolean' | 'json' | 'raw' | 'button' | 'link') |
Default | undefined |
The format for data in the column
Datetime format
Prop | columns[].dateTimeFormat |
---|---|
Type | string |
Default | undefined |
A format string for datetimes in this column, (formatting reference)
Width Unit
Prop | columns[].widthUnit |
---|---|
Type | string |
Default | undefined |
The unit of the width value
Min Width Unit
Prop | columns[].minWidthUnit |
---|---|
Type | string |
Default | undefined |
The unit of the min-width value
Is Visible
Prop | columns[].isVisible |
---|---|
Type | boolean |
Default | undefined |
Should the column be shown in the table
Allow Sort
Prop | columns[].allowSortBy |
---|---|
Type | boolean |
Default | undefined |
Should the column be sortable
Link Text
Prop | columns[].linkText |
---|---|
Type | string |
Default | undefined |
The text to display on the link
Target
Prop | columns[].linkTarget |
---|---|
Type | LinkTargetMethod ('_self' | '_blank' | '_parent' | '_top') |
Default | undefined |
Specify the context in which the linked resource will open.
Button Text
Prop | columns[].buttonText |
---|---|
Type | string |
Default | undefined |
The text to display on the button
On Click
Prop | columns[].onButtonClick |
---|---|
Type | ({ function: { ref: string } } | null) |
Default | undefined |
What function will be called when the button is clicked
Flatten
Prop | flatten |
---|---|
Type | boolean |
Default | false |
Whether or not to flatten the data source's keys. For example, if the data table receives a deeply nested row object like [{ "foo": { "bar": "baz", "qux": "quux" }]
, it will flatten these keys to two columns named foo.bar
and foo.qux
.
Allow Export
Prop | allowExport |
---|---|
Type | boolean |
Default | false |
Whether or not to allow the user to download the underlying table data. This will not prevent sophisticated users or adversaries from accessing the data table directly, and therefore should not be used for purposes of securing the underlying data from prying eyes.
Export Format
Prop | exportFormat |
---|---|
Type | DataTableDownloadFormat ('CSV' | 'JSON') |
Default | JSON |
The format of the document you receive when exporting table data.
Selected Row
Prop | selectedRow |
---|---|
Type | unknown |
Default | undefined |
The currently selected row of the data table. This property contains the row object itself, and so can be used to access keys on the underlying object.
Selected Row Index
Prop | selectedRowIndex |
---|---|
Type | number |
Default | undefined |
The currently selected row's index within the data table. This property will reflect the numeric index within the data source that is selected. 0-indexed — the first row is 0
, second row is 1
, etc.
Default First
Prop | autoselectFirstRow |
---|---|
Type | boolean |
Default | false |
Whether or not to auto-select the first row of the data table upon initialization. Useful for auto-advancing through items in the data table, such as when building approval workflows.
Pagination
Prop | paginationEnabled |
---|---|
Type | boolean |
Default | false |
Exposes the pagination controls for the user to bind to function calls
Page Size
Prop | pageSize |
---|---|
Type | number |
Default | undefined |
Number of rows per page, used to set parameters on paginated query
Current Offset
Prop | paginationOffset |
---|---|
Type | number |
Default | 0 |
Offset to begin data query from, used to set parameters on paginated query
Current Page
Prop | currentPage |
---|---|
Type | number |
Default | 1 |
Current page being displayed
Total Rows
Prop | totalRowCount |
---|---|
Type | number |
Default | undefined |
Number of entries in the data set, used to set bounds on pagination
Event Handlers
On Wheel
Handler | dataTableNode.onWheel |
---|
Called when the user scrolls the node. Use this event to trigger downstream actions when this node is scrolled.
On Hover
Handler | dataTableNode.onHover |
---|
Called when the user hovers on the node. Use this event to trigger downstream actions when this node is hovered.
On Leave
Handler | dataTableNode.onLeave |
---|
Called when the user is not hovering over the node. Use this event to trigger downstream actions when this node is no longer hovered.
On Select Row
Handler | dataTableNode.onSelectRow |
---|
Called when the selected row changes. Use this event to trigger downstream changes
On Refresh
Handler | dataTableNode.onRefresh |
---|
Called when the refresh button is clicked. Use this event to trigger downstream changes