Handsontable example
by garethrwilliams
HTML
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handsontable.full.min.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/handsontable.full.min.css" />
<script src="https://handsontable.com/docs/scripts/fixer.js"></script>
<div class="controls">
<input id="search_field4" type="search" placeholder="Search">
</div>
<output class="console" id="output">0 results</output>
<div id="example4"></div>
Babel + JSX
import Handsontable from 'handsontable';
import 'handsontable/dist/handsontable.full.min.css';
const container = document.querySelector('#example4');
const searchField = document.querySelector('#search_field4');
const output = document.querySelector('#output');
let searchResultCount = 0;
const data = [
['Tesla', 2017, 'black', 'black'],
['Nissan', 2018, 'blue', 'blue'],
['Chrysler', 2019, 'yellow', 'black'],
['Volvo', 2020, 'white', 'gray']
];
// define your custom callback function
function searchResultCounter(instance, row, col, value, result) {
const DEFAULT_CALLBACK = function(instance, row, col, data, testResult) {
console.log(value, result, testResult)
instance.getCellMeta(row, col).isSearchResult = testResult;
};
DEFAULT_CALLBACK.apply(this, arguments);
if (result) {
searchResultCount++;
}
}
const hot = new Handsontable(container, {
data,
colHeaders: true,
// enable the `Search` plugin
search: {
// add your custom callback function
callback: searchResultCounter
},
height: 'auto',
licenseKey: 'non-commercial-and-evaluation'
});
searchField.addEventListener('keyup', function(event) {
searchResultCount = 0;
const search = hot.getPlugin('search');
const queryResult = search.query(event.target.value);
console.log(queryResult);
output.innerText = `${searchResultCount} results`;
hot.render();
});