JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="table_div"></div>
JavaScript
google.charts.load('current', {'packages':['table']});
google.charts.setOnLoadCallback(drawTable);
function drawTable() {
var data = new google.visualization.DataTable();
data.addColumn('string', '');
data.addColumn('string', 'Name');
data.addColumn('number', 'Salary');
data.addColumn('boolean', 'Full Time Employee');
data.addRows([
['<input type="checkbox" id="cb1">','Mike', {v: 10000, f: '$10,000'}, true],
['<input type="checkbox" id="cb2">','Jim', {v:8000, f: '$8,000'}, false],
['<input type="checkbox" id="cb3">','Alice', {v: 12500, f: '$12,500'}, true],
['<input type="checkbox" id="cb4">','Bob', {v: 7000, f: '$7,000'}, true]
]);
var table = new google.visualization.Table(document.getElementById('table_div'));
table.draw(data, {allowHtml:true,showRowNumber:true,width:'100%',height:'100%', pageSize: 2});
var checkboxes = document.querySelectorAll("#table_div input[type=checkbox");
var checkboxesState = {};
for (var i = 0; i < checkboxes.length; i++) {
checkboxes[i].addEventListener("change", function(){
checkboxesState[this.getAttribute("id")] = this.checked;
});
}
google.visualization.events.addListener(table, 'sort', restoreCheckboxes);
google.visualization.events.addListener(table, 'page', function(){
//re-add the checkbox listeners, for the newly created DOM elements
var checkboxes = document.querySelectorAll("#table_div input[type=checkbox");
for (var i = 0; i < checkboxes.length; i++) {
checkboxes[i].addEventListener("change", function(){
checkboxesState[this.getAttribute("id")] = this.checked;
});
}
restoreCheckboxes();
});
function restoreCheckboxes()
{
//Needed, since the whole table DOM will change
checkboxes = document.querySelectorAll("#table_div input[type=checkbox");
for (var i = 0; i < checkboxes.length; i++) {
if...