Handsontable example
HTML
<script src="https://cdn.jsdelivr.net/npm/handsontable@13.1.0/dist/handsontable.full.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/handsontable@13.1.0/dist/handsontable.full.css" />
<div>
<div id="example1" class="hot handsontable htRowHeaders htColumnHeaders"></div>
</div>
JavaScript
document.addEventListener("DOMContentLoaded", function() {
var dataObj = [
['Lorem', 'ipsum', 'dolor', 'sit', '12/1/2015', 23],
['adipiscing', 'elit', 'Ut', 'imperdiet', '5/12/2015', 6],
['Pellentesque', 'vulputate', 'leo', 'semper', '10/23/2015', 26],
['diam', 'et', 'malesuada', 'libero', '12/1/2014', 98],
['orci', 'et', 'dignissim', 'hendrerit', '12/1/2016', 8.5]
];
let filteringArr = [];
var example1 = document.getElementById('example1');
var btn = document.getElementById('btn');
var hot = new Handsontable(example1, {
data: dataObj,
columns: [
{type: 'text'},
{type: 'text'},
{type: 'text'},
{type: 'text'},
{type: 'date', dateFormat: 'M/D/YYYY'},
{type: 'numeric'}
],
colHeaders: true,
rowHeaders: true,
dropdownMenu: true,
filters: true,
afterFilter: function(filterStack){
console.log(filterStack)
if(filterStack.length > 0){
filteringArr.push(filterStack[0].column)
}
},
afterDropdownMenuShow(instance) {
let filters = instance.hot.getPlugin('filters');
let col = instance.hot.getSelectedLast()[1];
console.log(col)
if (!filteringArr.includes(col)) {
filters.components.get('filter_by_value').elements[0].onClearAllClick({preventDefault: function() {}});
}
}
});
var filters = hot.getPlugin('filters');
window.hot = hot;
window.filters = filters;
hot.render();
});