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 =...