+import {Component} from "./component";
-class PermissionsTable {
+export class PermissionsTable extends Component {
- constructor(elem) {
- this.container = elem;
+ setup() {
+ this.container = this.$el;
+ this.cellSelector = this.$opts.cellSelector || 'td,th';
+ this.rowSelector = this.$opts.rowSelector || 'tr';
// Handle toggle all event
- const toggleAll = elem.querySelector('[permissions-table-toggle-all]');
- toggleAll.addEventListener('click', this.toggleAllClick.bind(this));
+ for (const toggleAllElem of (this.$manyRefs.toggleAll || [])) {
+ toggleAllElem.addEventListener('click', this.toggleAllClick.bind(this));
+ }
// Handle toggle row event
- const toggleRowElems = elem.querySelectorAll('[permissions-table-toggle-all-in-row]');
- for (let toggleRowElem of toggleRowElems) {
+ for (const toggleRowElem of (this.$manyRefs.toggleRow || [])) {
toggleRowElem.addEventListener('click', this.toggleRowClick.bind(this));
}
// Handle toggle column event
- const toggleColumnElems = elem.querySelectorAll('[permissions-table-toggle-all-in-column]');
- for (let toggleColElem of toggleColumnElems) {
+ for (const toggleColElem of (this.$manyRefs.toggleColumn || [])) {
toggleColElem.addEventListener('click', this.toggleColumnClick.bind(this));
}
}
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) {
}
}
-}
-
-export default PermissionsTable;
\ No newline at end of file
+}
\ No newline at end of file