AdaptTable for Ant Design

Row grouping in Ant Design

Compose groupingPanel(groupBy, extras) and rows start nested by Team then Status. On desktop, drag any column header into the strip or drag its chips to reorder the levels.

Every chip handle is keyboard movable with the arrow keys. On phones the same Ant Design panel swaps drag targets for kit-native selects, without changing the grouping model.

A column's aggregatable declaration seeds the grouping strip — every active column is its own item, with its own operation and remove. Group footers close each group. Independent pinned summary rows and the table footer total live on the aggregation page; moving rows inside a group lives on the row-reordering page.

Collapse state travels in the URL, and export writes the grouped sheet — outline levels and all — rather than the flat rows underneath it.

Group headers and footers are records spliced into antd's own dataSource and spanned through its onCell hook, so grouping happens inside antd's Table rather than around it; the summary row is antd's Table.Summary.

The code

import { DataTable } from "@adapttable/antd";
import { groupingPanel } from "@adapttable/antd/grouping-panel";

export function People({ rows, columns }) {
  return (
    <DataTable
      data={rows}
      columns={columns}
      rowKey={(row) => row.id}
      features={[
        groupingPanel(["team", "status"], {
          groupFooters: true,
        }),
      ]}
    />
  );
}

Install

pnpm add @adapttable/antd @adapttable/core antd

The same feature in the other kits

More Ant Design features

Reference: row-grouping, pinned-summary-rows, row-reordering. More of this kit: AdaptTable for Ant Design, or the live demo.