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="pivot-container"></div>

CSS

#fm-pivot-view .fm-fields-view {
  min-height: 620px !important;
  width: 90% !important;
}

@media (max-width: 760px) {
  #fm-pivot-view .fm-fields-view {
    min-height: 620px !important;
    width: 100% !important;
  }
}

#fm-pivot-view .fm-fields-view .fm-popup-content .fm-list-wrap .fm-list-content li {
  height: 28px !important;
  padding-top: 5px !important;
}

#fm-pivot-view .fm-fields-view li.fm-values:before {
  top: 2px !important;
}

#fm-pivot-view .fm-fields-view .fm-aggr-display {
  padding-top: 2px !important;
}

#fm-pivot-view .fm-fields-view .fm-aggr-display:after {
  top: 5px !important;
}

JavaScript

new Flexmonster({
  container: "#pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  toolbar: true,
  report: {
    dataSource: {
      type: "json",
      data: getData()
    },
    slice: {
      rows: [{
        uniqueName: "MaterialClassType"
      }, {
        uniqueName: "MaterialClass"
      }, {
        uniqueName: "VendorPart"
      }],
      columns: [{
        uniqueName: "[Measures]"
      }],
      measures: [{
        uniqueName: "ConsumedQuantity"
      }]
    },
    options: {
      configuratorActive: true,
      showAggregationLabels: false
    }
  }
});


function getData() {
  return [{
    ConsumedDate: "2022-12-15",
    BornNumber: 10,
    ConsumedQuantity: 20,
    ConsumedQuantityUnit: 50,
    CustCode: "XXXX",
    CustomerName: "John Doe",
    ExpectedReceipts: 25,
    ExpectedReceiptsUnit: 25,
    MaterialClass: "class",
    MaterialClassType: "type",
    VendorPart: "vendor"
  }]
}