AdaptTable for MUI

Pivot tables in MUI

Grouping answers “what is the total per team”. A pivot answers “what is the total per team per status”, and that second dimension becomes columns your data never had.

Fields move between the three zones with buttons rather than drag, so the pivot can be built from the keyboard. Subtotals close every group and a grand total closes the table.

The configuration — axes, measures, aggregation and what you folded — lives in the URL, so a pivot you build is a pivot you can send someone.

Each zone is a Stack drawn as a fieldset with a Typography legend, the field moves are IconButtons rather than Buttons because a 64px minimum will not fit a sidebar, and the field and aggregation pickers are TextField selects.

The code

import { DataTable, PivotPanel } from "@adapttable/mui";
import { usePivotUrlState } from "@adapttable/core/pivot";

export function Spend({ rows, fields }) {
  const pivot = usePivotUrlState({
    urlKey: "p",
    defaultConfig: {
      rows: ["team"],
      columns: ["status"],
      measures: [{ key: "budget", agg: "sum" }],
    },
  });
  return (
    <>
      <PivotPanel fields={fields} {...pivot} />
      <DataTable
        data={rows}
        columns={pivot.columns}
        rowKey={(row) => row.id}
      />
    </>
  );
}

Install

pnpm add @adapttable/mui @adapttable/core @mui/material

The same feature in the other kits

More MUI features

Reference: pivot. More of this kit: AdaptTable for MUI, or the live demo.