JSFiddle - React, Tailwind, and code Playground

Data source

by Flexmonster Pivot Table

HTML

<script src="https://cdn.flexmonster.com/flexmonster.js"></script>

<div id="pivot-container"></div>

<style id="filterPosition"></style>

CSS

.fm-filter-view {
  position: fixed !important;
}

JavaScript

const pivot = new Flexmonster({
  container: "pivot-container",
  componentFolder: "https://cdn.flexmonster.com/",
  toolbar: true,
  report: {
    dataSource: {
      data: getData(),
    },
    slice: {
      reportFilters: [
        {
          uniqueName: "City",
        },
      ],
      rows: [
        {
          uniqueName: "Color",
        },
      ],
      columns: [
        {
          uniqueName: "Country",
        },
        {
          uniqueName: "[Measures]",
        },
      ],
      measures: [
        {
          uniqueName: "Price",
          aggregation: "sum",
        },
      ],
    },
  },
});


pivot.on("filteropen", (params) => {
  let fieldName = params.hierarchy.uniqueName;

  let filterElement = getFilterHeaderByText(fieldName);
  let filterCoords = filterElement.getBoundingClientRect();
  document.getElementById("filterPosition").textContent = `
  #pivot-container .fm-filter-view {
    top: ${filterCoords.top + filterCoords.height}px !important;  
    left: ${filterCoords.left}px !important;
  }
  `;
});

//document.querySelector(".fm-filter-view")
function getFilterHeaderByText(text) {
  return [...document.querySelectorAll(".fm-filter-header")].find((el) =>
    el.textContent.trim().startsWith(text),
  );
}

function getData() {
  return [
    {
      Color: "green",
      Country: "Canada",
      State: "Ontario",
      City: "Toronto",
      Price: 174,
      Quantity: 22,
    },
    {
      Color: "red",
      Country: "USA",
      State: "California",
      City: "Los Angeles",
      Price: 166,
      Quantity: 19,
    },
    {
      Color: "blue",
      Country: "USA",
      State: "Florida",
      City: "Tallahassee",
      Price: 215,
      Quantity: 25,
    },
    {
      Color: "black",
      Country: "Canada",
      State: "Quebec",
      City: "Montreal",
      Price: 194,
      Quantity: 15,
    },
  ];
}