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-grid-view div.fm-cell[hierarchy-r-0="Country"][member-r-0="Canada"] {
  background-color: #CCCCCC;
}

#fm-pivot-view .fm-grid-view div.fm-cell[measure="Price"],
#fm-pivot-view .fm-grid-view div.fm-cell.fm-header[measure="Price"] {
  background-color: #B2DBBF;
}

JavaScript

let pivot = new Flexmonster({
  container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  toolbar: true,
  customizeCell: customizeCellFunction,
  report: {
    dataSource: {
      "filename": "data/retail-data.json",
      mapping: {
        "Country": {
          hierarchy: "Hierarchy"
        },
        "City": {
          hierarchy: "Hierarchy",
          parent: "Country"
        },
        "Product Code": {
          hierarchy: "Hierarchy",
          parent: "City"
        }
      }
    },
    options: {
      showAggregationLabels: false,
    },
    slice: {
      rows: [{
        uniqueName: "Hierarchy"
      }],
      columns: [{
        uniqueName: "[Measures]"
      }],
      measures: [{
        uniqueName: "Price",
        aggregation: "sum"
      }, {
        uniqueName: "Quantity",
        aggregation: "sum"
      }, {
        uniqueName: "Contact Last Name",
        caption: "Unique customers"
      }]
    }
  }
});

function customizeCellFunction(cell, data) {
  if (data.type == 'value' && data.isTotal && data.hierarchy && data.hierarchy.uniqueName == 'Contact Last Name') {
    cell.text = '';
  }
  
  if (data.type == 'value' && data.rows && data.hierarchy && data.hierarchy.uniqueName == 'Contact Last Name') {
  console.log(data)
     if (data.rows.length !== 1 ||
      data.rows[0].hierarchyName != 'Hierarchy' ||
      (pivot.getReport().slice.rows[0].levelName && pivot.getReport().slice.rows[0].levelName!=='Country')) {
      cell.text = '';
    } 
  }
}