2 class PermissionsTable {
7 // Handle toggle all event
8 const toggleAll = elem.querySelector('[permissions-table-toggle-all]');
9 toggleAll.addEventListener('click', this.toggleAllClick.bind(this));
11 // Handle toggle row event
12 const toggleRowElems = elem.querySelectorAll('[permissions-table-toggle-all-in-row]');
13 for (let toggleRowElem of toggleRowElems) {
14 toggleRowElem.addEventListener('click', this.toggleRowClick.bind(this));
18 toggleAllClick(event) {
19 event.preventDefault();
20 this.toggleAllInElement(this.container);
23 toggleRowClick(event) {
24 event.preventDefault();
25 this.toggleAllInElement(event.target.closest('tr'));
28 toggleAllInElement(domElem) {
29 const inputsToSelect = domElem.querySelectorAll('input[type=checkbox]');
30 const currentState = inputsToSelect.length > 0 ? inputsToSelect[0].checked : false;
31 for (let checkbox of inputsToSelect) {
32 checkbox.checked = !currentState;
33 checkbox.dispatchEvent(new Event('change'));
39 export default PermissionsTable;