AdaptTable for Tailwind

Column management in Tailwind

Everything a user expects to do to a column, without writing a column-settings panel: show and hide, reorder by drag, pin to either edge, resize by drag or keyboard, and switch row density.

Pinning is logical rather than physical, so a column pinned to the start stays on the correct side in a right-to-left layout.

The arrangement is state like any other: persist it to the URL, to localStorage, or to your own server through columnLayout and onColumnLayoutChange.

The button, panel, grip, pin and resize handle all carry the map's classes, with an indigo active state; the search box, bulk buttons and overflow submenu are not in the map, so those read as browser defaults.

The code

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

export function People({ rows, columns, layout, onLayout }) {
  return (
    <DataTable
      data={rows}
      columns={columns}
      rowKey={(row) => row.id}
      enableColumnMenu
      resizableColumns
      columnLayout={layout}
      onColumnLayoutChange={onLayout}
    />
  );
}

Install

pnpm add @adapttable/unstyled @adapttable/core

The same feature in the other kits

More Tailwind features

Reference: column-management, columns. More of this kit: AdaptTable for Tailwind, or the live demo.