JSFiddle - React, Tailwind, and code Playground

HTML

<link rel="stylesheet" href="https://rawgit.com/free-jqgrid/jqGrid/master/css/ui.jqgrid.min.css">
<script src="https://rawgit.com/free-jqgrid/jqGrid/master/js/i18n/grid.locale-en.min.js"></script>
<script src="https://rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/smoothness/jquery-ui.css">
<table id="list"></table>

JavaScript

$(document).ready(function() {
class Filters {
	constructor(grid, firstActiveColModelIndex) {
		this.grid = grid;
		this.firstActiveColModelIndex = firstActiveColModelIndex;

		this.lastDistinctValues = {};
		this.firstLoad = true;
		this.activeFilters = {};

		this.gridData = grid.jqGrid('getGridParam', 'data');
		this.colModel = grid.getGridParam("colModel");

		this.lastFilters = '';

		this.colModelIndexesByNames = {};
		for (let index in this.colModel) {
			this.colModelIndexesByNames[this.colModel[index].name] = index;
		}

		this.customSelectCounter = 1;
	}

	getActiveFilters() {
		return this.activeFilters;
	}

	setActiveFilters(activeFilters) {
		this.activeFilters = activeFilters;
	}


	applySearch() {
    const self = this;
      setTimeout(function () {
        setTimeout(function () {
          self.loadFilters(true);
        }, 100);
      }, 0);

		return true;
	}

	loadFilters(reset) {
		if (this.firstLoad || reset) {
			this.postData = this.grid.jqGrid('getGridParam', 'postData');
      console.log(this.postData);
			if(this.postData.filters !== undefined && this.postData.filters !== '') {
				this.postDataFiltersRules = JSON.parse(this.postData.filters).rules;
				this.postDataFiltersGroups = JSON.parse(this.postData.filters).groups;
			}

			this.buildSelects();
			this.firstLoad = false;
		}

	}

	buildSelects() {
		let records = this.grid.jqGrid('getGridParam', 'records');
		for (let i = this.firstActiveColModelIndex; i < this.colModel.length; i++) {
			let field = this.colModel[i].name;

			if (records !== 0) {
				this.getAllFilters(field);
				continue;
			}

			this.constructSelectForFilters(field);

		}
	}

	getPostData() {
		return this.postData;
	}

	updatePostData() {
		this.postData = this.grid.jqGrid('getGridParam', 'postData');
		if(this.postData.filters !== undefined) {
			this.postDataFiltersRules = JSON.parse(this.postData.filters).rules;
			this.postDataFiltersGroups =...