JSFiddle - React, Tailwind, and code Playground

by Flexmonster Pivot Table

HTML

<link rel="stylesheet" href="https://s3.amazonaws.com/flexmonster/2.3/demo.css">
<script src="https://cdn.flexmonster.com/flexmonster.js"></script>

<div id="pivotContainer"></div>

CSS

#fm-pivot-view .fm-helper {
  font-family: Arial, serif !important;
}

JavaScript

var pivot = new Flexmonster({
  container: "pivotContainer",
  componentFolder: "https://cdn.flexmonster.com/",
  report: {
    dataSource: {
      filename: "data/data.csv"
    },
    "slice": {
      "rows": [{
          "uniqueName": "Category"
        },
        {
          "uniqueName": "Size"
        },
        {
          "uniqueName": "Color"
        }
      ],
      "columns": [{
        "uniqueName": "[Measures]"
      }],
      "measures": [{
        "uniqueName": "Price",
        "aggregation": "sum"
      }]
    },
    "options": {
      "grid": {
        "type": "flat"
      }
    }
  }
});

let container = document.querySelector("#pivotContainer");

function adjustWidth() {
  let columnCount = flexmonster.gridColumnCount();
  let containerWidth = 50;
  for (let i = 0; i < columnCount; i++)
    containerWidth += flexmonster.getCell(0, i).width;
  container.style.width = containerWidth + "px";
  flexmonster.refresh();
}

flexmonster.on("reportcomplete", adjustWidth);
flexmonster.on("reportchange", adjustWidth);