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

.disabled {
  opacity: 0.5;
}

JavaScript

new Flexmonster({
  container: "#pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  width: "100%",
  height: 430,
  toolbar: true,
  report: {
    dataSource: {
      filename: "data/sales.csv"
    },
    "slice": {
        "rows": [
            {
                "uniqueName": "Category"
            }
        ],
        "columns": [
            {
                "uniqueName": "[Measures]"
            }
        ],
        "measures": [
            {
                "uniqueName": "Unit Price",
                "aggregation": "sum"
            }
        ]
    }
  },
  fieldslistopen: onFieldsListOpen,
  fieldslistclose: onFieldsListClose
});

function onFieldsListClose() {
  $("#pivot-container #fm-fields-view").off("mouseup", mouseupHanlder);
}

function onFieldsListOpen() {
  $("#pivot-container #fm-fields-view").on("mouseup", mouseupHanlder);
  checkFieldsCount();
}

function mouseupHanlder() {
  setTimeout(checkFieldsCount, 1);
}

function checkFieldsCount() {
var applyBtn = $("#pivot-container #fm-fields-view a.fm-ui-btn-dark");
  var fieldsCount = $("#pivot-container #fm-fields-view").find("#fm-lst-pages li, #fm-lst-rows li, #fm-lst-columns li, #fm-lst-measures li").length - 1;
  console.log("fieldsCount", fieldsCount);
  var isDisabled = fieldsCount > 8;
  if (isDisabled && !applyBtn.hasClass("disabled")) {
    alert("Please select max 8 fields.");
  }
  applyBtn.toggleClass("fm-ui-disabled", isDisabled);
  applyBtn.toggleClass("disabled", isDisabled);
}