AdaptTable for Ant Design

Row reordering in Ant Design

Compose rowReorder from @adapttable/antd/row-reorder and a grip appears. Space lifts a row, arrows move it, Space drops it. The table never mutates your array: onRowReorder asks the host, and the host writes.

movePolicy: "confirm" opens the kit's own move menu before a drop lands. Grouped moves stay inside a group unless onGroupMove says otherwise; tree moves stay under the same parent unless onTreeMove accepts a new one. A second move cannot start while a host confirmation is still pending.

Row identity is the row key, not the visual index — a virtual window or a later page does not lie about where the row sat. The grip, the move buttons and the confirmation menu are Ant Design.

The grip is antd's own handle column and the confirmation is an antd Dropdown, so a drop that needs approval uses the same overlay antd already uses for row actions.

The code

import { DataTable } from "@adapttable/antd";
import { applyRowReorder } from "@adapttable/react";
import { rowReorder } from "@adapttable/antd/row-reorder";

export function Tasks({ rows, setRows, columns }) {
  return (
    <DataTable
      data={rows}
      columns={columns}
      rowKey={(row) => row.id}
      features={[
        rowReorder((from, to) => {
          setRows((current) => applyRowReorder(current, from, to));
        }, { movePolicy: "confirm" }),
      ]}
    />
  );
}

Install

pnpm add @adapttable/antd @adapttable/core antd

The same feature in the other kits

More Ant Design features

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