+import {Component} from './component';
-class PermissionsTable {
+export class PermissionsTable extends Component {
setup() {
this.container = this.$el;
+ this.cellSelector = this.$opts.cellSelector || 'td,th';
+ this.rowSelector = this.$opts.rowSelector || 'tr';
// Handle toggle all event
for (const toggleAllElem of (this.$manyRefs.toggleAll || [])) {
toggleRowClick(event) {
event.preventDefault();
- this.toggleAllInElement(event.target.closest('tr'));
+ this.toggleAllInElement(event.target.closest(this.rowSelector));
}
toggleColumnClick(event) {
event.preventDefault();
- const tableCell = event.target.closest('th,td');
+ const tableCell = event.target.closest(this.cellSelector);
const colIndex = Array.from(tableCell.parentElement.children).indexOf(tableCell);
- const tableRows = tableCell.closest('table').querySelectorAll('tr');
+ const tableRows = this.container.querySelectorAll(this.rowSelector);
const inputsToToggle = [];
- for (let row of tableRows) {
+ for (const row of tableRows) {
const targetCell = row.children[colIndex];
if (targetCell) {
inputsToToggle.push(...targetCell.querySelectorAll('input[type=checkbox]'));
toggleAllInputs(inputsToToggle) {
const currentState = inputsToToggle.length > 0 ? inputsToToggle[0].checked : false;
- for (let checkbox of inputsToToggle) {
+ for (const checkbox of inputsToToggle) {
checkbox.checked = !currentState;
checkbox.dispatchEvent(new Event('change'));
}
}
}
-
-export default PermissionsTable;
\ No newline at end of file