AdaptTable for Chakra

Aggregation in Chakra

A summary row is not a pinned data row and not a group footer. summaryRow writes a grand total in the table footer. pinnedSummaryRows sticks host-owned totals above or below the scroll box. groupAggregates plus groupFooters close each group.

Filter the table and every total recomputes from the rows that remain — client aggregate() and a source that already computed the same numbers share one mapper shape. Extra full-width rows stay attached to a person, not to a total.

The footer, the pinned summaries and the group totals render through Chakra's own table rows. Building and reordering group levels stays on the grouping page.

Group totals and the footer are Table.Row cells; pinned summaries are additional rows with the kit's sticky positioning, not a second table.

The code

import { aggregate } from "@adapttable/core";
import { DataTable } from "@adapttable/chakra";
import { groupingPanel } from "@adapttable/chakra/grouping-panel";
import { pinnedSummaryRows } from "@adapttable/chakra/pinned-summary-rows";

export function Sales({ rows, columns }) {
  const budgetSum = aggregate({ budget: "sum" }, { columns });
  return (
    <DataTable
      data={rows}
      columns={columns}
      rowKey={(row) => row.id}
      summaryRow={budgetSum}
      features={[
        groupingPanel(["team"], {
          groupAggregates: budgetSum,
          groupFooters: true,
        }),
        pinnedSummaryRows({
          top: [{ id: "team-total", name: "Team total" }],
          bottom: [{ id: "grand-total", name: "Grand total" }],
        }),
      ]}
    />
  );
}

Install

pnpm add @adapttable/chakra @adapttable/core @chakra-ui/react @emotion/react

The same feature in the other kits

More Chakra features

Reference: row-grouping, pinned-summary-rows, full-width-rows. More of this kit: AdaptTable for Chakra, or the live demo.