AdaptTable for shadcn

Row selection in shadcn

Tick rows one at a time or take the whole page from the header box. The selection is a set of ids rather than a slice of what is rendered, so a row chosen on page one is still chosen while page three is on screen.

Bulk actions run against that set, can ask for confirmation first, and report back through your own handler — the table never performs the write.

Selection is controllable: hand it selectedIds and onSelectionChange and it becomes state your app owns.

The boxes are native checkboxes tinted with accent-primary and set indeterminate through a ref, since HTML has no attribute for it; the bulk bar sits on bg-accent above the table.

The code

import { DataTable } from "@adapttable/shadcn";

export function People({ rows, columns, onArchive }) {
  return (
    <DataTable
      data={rows}
      columns={columns}
      rowKey={(row) => row.id}
      bulkActions={[
        {
          key: "archive",
          label: "Archive",
          confirm: true,
          onAction: (ids) => onArchive(ids),
        },
      ]}
    />
  );
}

Install

pnpm add @adapttable/shadcn @adapttable/core

The same feature in the other kits

More shadcn features

Reference: selection. More of this kit: AdaptTable for shadcn, or the live demo.