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: {
    dataSource: {
      type: "json",
      filename: "data/retail-data.json",
      mapping: {
        "Order Date": {
          type: "year/quarter/month/day",
        },
      },
    },
    options: {
      grid: {
        type: "classic",
        showTotals:false,
        showGrandTotals: false
      }
    },
    slice: {
      rows: [{
        uniqueName: "Status",
      }, {
        uniqueName: "Retail Category",
      },{
        uniqueName: "Country",
      },
      ],
      columns: [{
        uniqueName: "[Measures]",
      }, ],
      measures: [{
        uniqueName: "Quantity",
        aggregation: "sum",
      },{
        uniqueName: "Price",
        aggregation: "sum",
      }],
      expands: {
        expandAll: true
      }
    },

  },
  customizeCell: customFunction
});

function customFunction(cell, data) {
if (data && data.type == "header" &&
    data.member &&
    data.member.caption != 'All' &&
    data.label == "") {
    cell.text = "&nbsp;&nbsp;&nbsp;&nbsp;" + data.member.caption;
  }
  if (data.columnIndex == '4') {
    cell.text = "";
  }
}