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-custom-cell {
  display: flex !important;
  align-items: center !important;
  font-size: 12px !important;
}

.fm-custom-cell .flag-icon {
  width: 21px !important;
  height: 16px !important;
  margin-left: 0 !important;
  margin-right: 2px !important;
}

#fm-pivot-view .fm-grid-layout .fm-custom-cell.fm-expanded .fm-expanded-icon::before, 
#fm-pivot-view .fm-grid-layout .fm-custom-cell.fm-collapsed .fm-collapsed-icon::before {
  top: -2px;
  height: 16px;
}

JavaScript

new Flexmonster({
  container: "#pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  height: 550,
  toolbar: true,
  report: {
    options: {
      grid: {
        showGrandTotals: "rows",
        showTotals: "columns",
        type: "classic"
      }
    },
    "dataSource": {
      "type": "json",
      "filename": "data/retail-data.json",
    },
    "slice": {
      "rows": [{
          "uniqueName": "Country",
          "filter": {
            "members": [
              "country.[australia]",
              "country.[usa]",
              "country.[japan]"
            ]
          }
        },
        {
          "uniqueName": "Status",
          "filter": {
            "members": [
              "status.[resolved]",
            ]
          }
        },
        {
          "uniqueName": "[Measures]"
        }
      ],
      "measures": [{
          "uniqueName": "Price",
          "aggregation": "sum",
        },
        {
          "uniqueName": "Quantity",
          "aggregation": "sum"
        },
        {
          "uniqueName": "Sales",
          "aggregation": "sum"
        }
      ],
      "expands": {
        "expandAll": true
      }
    }
  }
});