Documentation

Data Table

Custom Rows

Render each Data Table row as your own layout, like a list of cards, instead of column cells.

Preview

BlogArticles, categories and an RSS feed for your news.
ForumThreads and replies where members help each other out.
WikiPages anyone on the team can edit and link together.
ShopSell merch. The rubber ducks will not sell themselves.

Showing 1–4 of 4

Usage

Columns suit data you compare across rows. When each row is more of a card (an icon, a title, a line of description and a switch), pass renderRow instead of columns. The Data Table draws your layout across the full width of the row and still handles search, filters, pagination and the empty state.

<ContentDataTable
  id="plugins-table"
  renderRow={({ row }) => (
    <PluginRow plugin={row} />
  )}
  edges={data.edges}
  pageInfo={data.pageInfo}
  order={{ defaultOrder: { column: 'name', order: 'asc' } }}
/>
  • No column headers. A custom row has no columns to label, so the header band is hidden. It comes back when you turn on bulkActions, expandable or reorderable, because their controls live there.
  • Row features still work. The checkbox, the expand chevron and the drag handle sit in front of your layout, and rowOpens makes the whole row clickable.
  • Controls answer for themselves. A click on a button, link or switch inside your layout does not trigger rowOpens.
  • Your layout owns its spacing. The cell already has the row's padding, so don't add outer padding of your own.
Sorting needs a column header

order.defaultOrder still sets the starting order, but there are no headers to click. To let people change the order, add a filter or sort the rows yourself.

API

Prop

Type

Want those rows sorted into categories? Combine renderRow with grouped rows.

On this page