awesome-pivot-table
v0.1.5
Published
Awesome Pivot Table Component!
Maintainers
Readme
Awesome Pivot Table
The Awesome Pivot Table is Excel-like pivot table component for React with slicers, charts, exports, and a right-side field pane. It also persist all the user settings/actions locally in IndexedDB of the browser. Along with export, you can also get Print option. You will experience as if you are working on Excel Pivot table!
Features
- Drag/drop fields into Filters, Rows, Columns, Values
- Hierarchical rows with totals
- Slicers for chart filtering
- Built-in chart types (Column, Bar, Line, Area, Pie)
- Export CSV / Export Image / Print
- Theme support (Light, Dark, Purple)
- Persistent preferences via IndexedDB
- Charts are lazy‑loaded to keep initial bundle size small
Install
npm install awesome-pivot-tableUsage
import React from "react";
import { AwesomePivotTable } from "awesome-pivot-table";
import "awesome-pivot-table/style.css";
export default function App() {
return (
<div style={{ padding: 24 }}>
<AwesomePivotTable
title="Awesome Pivot Table"
theme="light"
apiEndpoint="/pivot-data.json"
currency="USD"
currencyLocale="en-US"
storageKey="my-pivot"
/>
</div>
);
}Demo GIFs
- Slicers + Fields Pane:
{{GIF_FIELDS_PANE}} - Chart + Slicers:
{{GIF_CHART_SLICERS}} - Export (CSV/Image):
{{GIF_EXPORTS}}
Props
| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| title | string | "Pivot Table" | Title displayed above the table. |
| theme | "light" \| "dark" \| "purple" | "light" | Visual theme. |
| apiEndpoint | string | "/pivot-data.json" | URL for JSON data: { data: [] }. |
| data | array | [] | Provide data directly instead of apiEndpoint. |
| currency | string | "USD" | Currency code for values (e.g., "USD", "INR"). |
| currencyLocale | string | "en-US" | Locale for numeric formatting (e.g., "en-US", "en-IN"). |
| storageKey | string | "awesome-pivot" | IndexedDB key for persisting preferences. |
Persistence (IndexedDB)
The component persists the following using storageKey:
- Theme selection
- Field layout (Rows/Columns/Values/Filters)
- Slicer selections + chosen slicer fields
- Chart visibility and series selection
- Chart type
Chart Export Rules
- Export Image exports:
- Chart + Table when the chart is visible
- Table only when the chart is hidden
- Chart export uses
html-to-image.
CSS Import
The build emits dist/style.css inside the package. Import it like this:
import "awesome-pivot-table/style.css";Data format
The component expects:
{
"data": [
{ "Salesperson": "Diana", "Region": "LA", "Sales Amount": 1200 }
]
}Sample Data For Testing Purpose
{
"data": [
{
"Date": "2024-01-01T00:00:00",
"Salesperson": "Diana",
"Region": "Los Angeles",
"Product": "Peanut Butter Cookies",
"Sales Amount": 802.0,
"Quantity Sold": 7
},
{
"Date": "2024-02-01T00:00:00",
"Salesperson": "Alice",
"Region": "San Francisco",
"Product": "Sugar Cookies",
"Sales Amount": 501.0,
"Quantity Sold": 13
},
{
"Date": "2024-03-01T00:00:00",
"Salesperson": "Diana",
"Region": "San Francisco",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 829.0,
"Quantity Sold": 15
},
{
"Date": "2024-04-01T00:00:00",
"Salesperson": "Charlie",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 655.0,
"Quantity Sold": 11
},
{
"Date": "2024-05-01T00:00:00",
"Salesperson": "Alice",
"Region": "San Francisco",
"Product": "Peanut Butter Cookies",
"Sales Amount": 261.0,
"Quantity Sold": 4
},
{
"Date": "2024-06-01T00:00:00",
"Salesperson": "Diana",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 301.0,
"Quantity Sold": 13
},
{
"Date": "2024-07-01T00:00:00",
"Salesperson": "Diana",
"Region": "Portland",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 369.0,
"Quantity Sold": 7
},
{
"Date": "2024-08-01T00:00:00",
"Salesperson": "Charlie",
"Region": "San Francisco",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 962.0,
"Quantity Sold": 19
},
{
"Date": "2024-09-01T00:00:00",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 915.0,
"Quantity Sold": 2
},
{
"Date": "2024-10-01T00:00:00",
"Salesperson": "Charlie",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 370.0,
"Quantity Sold": 10
},
{
"Date": "2024-11-01T00:00:00",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 555.0,
"Quantity Sold": 13
},
{
"Date": "2024-12-01T00:00:00",
"Salesperson": "Eve",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 561.0,
"Quantity Sold": 6
},
{
"Date": "1/13/2024",
"Salesperson": "Bob",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 826.0,
"Quantity Sold": 12
},
{
"Date": "1/14/2024",
"Salesperson": "Bob",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 351.0,
"Quantity Sold": 12
},
{
"Date": "1/15/2024",
"Salesperson": "Bob",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 801.0,
"Quantity Sold": 11
},
{
"Date": "1/16/2024",
"Salesperson": "Charlie",
"Region": "Los Angeles",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 395.0,
"Quantity Sold": 7
},
{
"Date": "1/17/2024",
"Salesperson": "Eve",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 824.0,
"Quantity Sold": 1
},
{
"Date": "1/18/2024",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 819.0,
"Quantity Sold": 1
},
{
"Date": "1/19/2024",
"Salesperson": "Diana",
"Region": "San Francisco",
"Product": "Sugar Cookies",
"Sales Amount": 848.0,
"Quantity Sold": 13
},
{
"Date": "1/20/2024",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 437.0,
"Quantity Sold": 9
},
{
"Date": "1/21/2024",
"Salesperson": "Diana",
"Region": "San Francisco",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 978.0,
"Quantity Sold": 3
},
{
"Date": "1/22/2024",
"Salesperson": "Alice",
"Region": "Los Angeles",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 152.0,
"Quantity Sold": 7
},
{
"Date": "1/23/2024",
"Salesperson": "Eve",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 891.0,
"Quantity Sold": 6
},
{
"Date": "1/24/2024",
"Salesperson": "Diana",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 316.0,
"Quantity Sold": 8
},
{
"Date": "1/25/2024",
"Salesperson": "Charlie",
"Region": "Los Angeles",
"Product": "Sugar Cookies",
"Sales Amount": 863.0,
"Quantity Sold": 9
},
{
"Date": "1/26/2024",
"Salesperson": "Alice",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 287.0,
"Quantity Sold": 5
},
{
"Date": "1/27/2024",
"Salesperson": "Alice",
"Region": "Los Angeles",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 479.0,
"Quantity Sold": 1
},
{
"Date": "1/28/2024",
"Salesperson": "Diana",
"Region": "Los Angeles",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 592.0,
"Quantity Sold": 19
},
{
"Date": "1/29/2024",
"Salesperson": "Charlie",
"Region": "Los Angeles",
"Product": "Sugar Cookies",
"Sales Amount": 140.0,
"Quantity Sold": 10
},
{
"Date": "1/30/2024",
"Salesperson": "Charlie",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 256.0,
"Quantity Sold": 12
},
{
"Date": "1/31/2024",
"Salesperson": "Eve",
"Region": "San Francisco",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 114.0,
"Quantity Sold": 15
},
{
"Date": "2024-01-02T00:00:00",
"Salesperson": "Charlie",
"Region": "Los Angeles",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 912.0,
"Quantity Sold": 9
},
{
"Date": "2024-02-02T00:00:00",
"Salesperson": "Charlie",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 164.0,
"Quantity Sold": 17
},
{
"Date": "2024-03-02T00:00:00",
"Salesperson": "Charlie",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 956.0,
"Quantity Sold": 17
},
{
"Date": "2024-04-02T00:00:00",
"Salesperson": "Bob",
"Region": "Los Angeles",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 938.0,
"Quantity Sold": 12
},
{
"Date": "2024-05-02T00:00:00",
"Salesperson": "Eve",
"Region": "Los Angeles",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 620.0,
"Quantity Sold": 7
},
{
"Date": "2024-06-02T00:00:00",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 443.0,
"Quantity Sold": 2
},
{
"Date": "2024-07-02T00:00:00",
"Salesperson": "Diana",
"Region": "San Francisco",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 228.0,
"Quantity Sold": 3
},
{
"Date": "2024-08-02T00:00:00",
"Salesperson": "Alice",
"Region": "San Francisco",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 747.0,
"Quantity Sold": 17
},
{
"Date": "2024-09-02T00:00:00",
"Salesperson": "Eve",
"Region": "San Francisco",
"Product": "Peanut Butter Cookies",
"Sales Amount": 571.0,
"Quantity Sold": 5
},
{
"Date": "2024-10-02T00:00:00",
"Salesperson": "Diana",
"Region": "Los Angeles",
"Product": "Peanut Butter Cookies",
"Sales Amount": 162.0,
"Quantity Sold": 17
},
{
"Date": "2024-11-02T00:00:00",
"Salesperson": "Eve",
"Region": "Los Angeles",
"Product": "Peanut Butter Cookies",
"Sales Amount": 238.0,
"Quantity Sold": 17
},
{
"Date": "2024-12-02T00:00:00",
"Salesperson": "Charlie",
"Region": "Los Angeles",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 598.0,
"Quantity Sold": 17
},
{
"Date": "2/13/2024",
"Salesperson": "Diana",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 692.0,
"Quantity Sold": 2
},
{
"Date": "2/14/2024",
"Salesperson": "Charlie",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 491.0,
"Quantity Sold": 2
},
{
"Date": "2/15/2024",
"Salesperson": "Alice",
"Region": "Los Angeles",
"Product": "Sugar Cookies",
"Sales Amount": 774.0,
"Quantity Sold": 5
},
{
"Date": "2/16/2024",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 518.0,
"Quantity Sold": 1
},
{
"Date": "2/17/2024",
"Salesperson": "Diana",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 388.0,
"Quantity Sold": 1
},
{
"Date": "2/18/2024",
"Salesperson": "Diana",
"Region": "San Francisco",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 478.0,
"Quantity Sold": 19
},
{
"Date": "2/19/2024",
"Salesperson": "Eve",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 872.0,
"Quantity Sold": 2
},
{
"Date": "2/20/2024",
"Salesperson": "Eve",
"Region": "Los Angeles",
"Product": "Peanut Butter Cookies",
"Sales Amount": 589.0,
"Quantity Sold": 12
},
{
"Date": "2/21/2024",
"Salesperson": "Charlie",
"Region": "San Francisco",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 330.0,
"Quantity Sold": 6
},
{
"Date": "2/22/2024",
"Salesperson": "Diana",
"Region": "San Francisco",
"Product": "Peanut Butter Cookies",
"Sales Amount": 140.0,
"Quantity Sold": 4
},
{
"Date": "2/23/2024",
"Salesperson": "Alice",
"Region": "Los Angeles",
"Product": "Sugar Cookies",
"Sales Amount": 127.0,
"Quantity Sold": 11
},
{
"Date": "2/24/2024",
"Salesperson": "Eve",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 234.0,
"Quantity Sold": 17
},
{
"Date": "2/25/2024",
"Salesperson": "Eve",
"Region": "San Francisco",
"Product": "Sugar Cookies",
"Sales Amount": 300.0,
"Quantity Sold": 6
},
{
"Date": "2/26/2024",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 939.0,
"Quantity Sold": 5
},
{
"Date": "2/27/2024",
"Salesperson": "Eve",
"Region": "Seattle",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 879.0,
"Quantity Sold": 2
},
{
"Date": "2/28/2024",
"Salesperson": "Charlie",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 132.0,
"Quantity Sold": 6
},
{
"Date": "2/29/2024",
"Salesperson": "Diana",
"Region": "Seattle",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 147.0,
"Quantity Sold": 11
},
{
"Date": "2024-01-03T00:00:00",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Peanut Butter Cookies",
"Sales Amount": 602.0,
"Quantity Sold": 16
},
{
"Date": "2024-02-03T00:00:00",
"Salesperson": "Diana",
"Region": "San Francisco",
"Product": "Peanut Butter Cookies",
"Sales Amount": 506.0,
"Quantity Sold": 16
},
{
"Date": "2024-03-03T00:00:00",
"Salesperson": "Eve",
"Region": "San Francisco",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 673.0,
"Quantity Sold": 1
},
{
"Date": "2024-04-03T00:00:00",
"Salesperson": "Eve",
"Region": "Seattle",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 827.0,
"Quantity Sold": 9
},
{
"Date": "2024-05-03T00:00:00",
"Salesperson": "Alice",
"Region": "Los Angeles",
"Product": "Peanut Butter Cookies",
"Sales Amount": 904.0,
"Quantity Sold": 6
},
{
"Date": "2024-06-03T00:00:00",
"Salesperson": "Charlie",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 198.0,
"Quantity Sold": 16
},
{
"Date": "2024-07-03T00:00:00",
"Salesperson": "Bob",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 783.0,
"Quantity Sold": 3
},
{
"Date": "2024-08-03T00:00:00",
"Salesperson": "Alice",
"Region": "Portland",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 971.0,
"Quantity Sold": 4
},
{
"Date": "2024-09-03T00:00:00",
"Salesperson": "Bob",
"Region": "Portland",
"Product": "Sugar Cookies",
"Sales Amount": 825.0,
"Quantity Sold": 19
},
{
"Date": "2024-10-03T00:00:00",
"Salesperson": "Bob",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 646.0,
"Quantity Sold": 3
},
{
"Date": "2024-11-03T00:00:00",
"Salesperson": "Charlie",
"Region": "San Francisco",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 838.0,
"Quantity Sold": 19
},
{
"Date": "2024-12-03T00:00:00",
"Salesperson": "Bob",
"Region": "Portland",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 712.0,
"Quantity Sold": 7
},
{
"Date": "3/13/2024",
"Salesperson": "Bob",
"Region": "Los Angeles",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 561.0,
"Quantity Sold": 9
},
{
"Date": "3/14/2024",
"Salesperson": "Charlie",
"Region": "Portland",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 742.0,
"Quantity Sold": 1
},
{
"Date": "3/15/2024",
"Salesperson": "Bob",
"Region": "Portland",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 868.0,
"Quantity Sold": 8
},
{
"Date": "3/16/2024",
"Salesperson": "Bob",
"Region": "Los Angeles",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 104.0,
"Quantity Sold": 7
},
{
"Date": "3/17/2024",
"Salesperson": "Bob",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 317.0,
"Quantity Sold": 18
},
{
"Date": "3/18/2024",
"Salesperson": "Alice",
"Region": "Los Angeles",
"Product": "Sugar Cookies",
"Sales Amount": 602.0,
"Quantity Sold": 8
},
{
"Date": "3/19/2024",
"Salesperson": "Alice",
"Region": "Seattle",
"Product": "Peanut Butter Cookies",
"Sales Amount": 866.0,
"Quantity Sold": 1
},
{
"Date": "3/20/2024",
"Salesperson": "Alice",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 497.0,
"Quantity Sold": 11
},
{
"Date": "3/21/2024",
"Salesperson": "Charlie",
"Region": "Seattle",
"Product": "Peanut Butter Cookies",
"Sales Amount": 970.0,
"Quantity Sold": 18
},
{
"Date": "3/22/2024",
"Salesperson": "Eve",
"Region": "Los Angeles",
"Product": "Sugar Cookies",
"Sales Amount": 894.0,
"Quantity Sold": 10
},
{
"Date": "3/23/2024",
"Salesperson": "Bob",
"Region": "Seattle",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 492.0,
"Quantity Sold": 3
},
{
"Date": "3/24/2024",
"Salesperson": "Bob",
"Region": "San Francisco",
"Product": "Sugar Cookies",
"Sales Amount": 306.0,
"Quantity Sold": 7
},
{
"Date": "3/25/2024",
"Salesperson": "Charlie",
"Region": "Los Angeles",
"Product": "Peanut Butter Cookies",
"Sales Amount": 114.0,
"Quantity Sold": 16
},
{
"Date": "3/26/2024",
"Salesperson": "Bob",
"Region": "San Francisco",
"Product": "Peanut Butter Cookies",
"Sales Amount": 957.0,
"Quantity Sold": 16
},
{
"Date": "3/27/2024",
"Salesperson": "Alice",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 653.0,
"Quantity Sold": 17
},
{
"Date": "3/28/2024",
"Salesperson": "Eve",
"Region": "Portland",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 991.0,
"Quantity Sold": 2
},
{
"Date": "3/29/2024",
"Salesperson": "Diana",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 560.0,
"Quantity Sold": 1
},
{
"Date": "3/30/2024",
"Salesperson": "Bob",
"Region": "San Francisco",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 790.0,
"Quantity Sold": 16
},
{
"Date": "3/31/2024",
"Salesperson": "Alice",
"Region": "San Francisco",
"Product": "Sugar Cookies",
"Sales Amount": 674.0,
"Quantity Sold": 12
},
{
"Date": "2024-01-04T00:00:00",
"Salesperson": "Diana",
"Region": "Los Angeles",
"Product": "Sugar Cookies",
"Sales Amount": 963.0,
"Quantity Sold": 5
},
{
"Date": "2024-02-04T00:00:00",
"Salesperson": "Eve",
"Region": "Portland",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 842.0,
"Quantity Sold": 5
},
{
"Date": "2024-03-04T00:00:00",
"Salesperson": "Diana",
"Region": "Los Angeles",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 340.0,
"Quantity Sold": 9
},
{
"Date": "2024-04-04T00:00:00",
"Salesperson": "Alice",
"Region": "San Francisco",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 663.0,
"Quantity Sold": 9
},
{
"Date": "2024-05-04T00:00:00",
"Salesperson": "Diana",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 195.0,
"Quantity Sold": 3
},
{
"Date": "2024-06-04T00:00:00",
"Salesperson": "Charlie",
"Region": "Portland",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 999.0,
"Quantity Sold": 19
},
{
"Date": "2024-07-04T00:00:00",
"Salesperson": "Diana",
"Region": "Seattle",
"Product": "Sugar Cookies",
"Sales Amount": 833.0,
"Quantity Sold": 16
},
{
"Date": "2024-08-04T00:00:00",
"Salesperson": "Bob",
"Region": "Seattle",
"Product": "Oatmeal Raisin Cookies",
"Sales Amount": 584.0,
"Quantity Sold": 16
},
{
"Date": "2024-09-04T00:00:00",
"Salesperson": "Bob",
"Region": "Portland",
"Product": "Chocolate Chip Cookies",
"Sales Amount": 506.0,
"Quantity Sold": 3
}
]
}Keys are normalized to camelCase internally.
Notes
- Chart export requires
html-to-image. - Charting uses
chart.js+react-chartjs-2. - Charts are loaded on demand (lazy-loaded), improving initial load performance for users who only need the pivot table.
License
MIT
