@alihbuzaid/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
88 lines (71 loc) • 2.31 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action, set } from '@ember/object';
import { isArray } from '@ember/array';
import { later } from '@ember/runloop';
import { filter, alias } from '@ember/object/computed';
import { isEqual } from '@fleetbase/ember-core/decorators/is-equal';
export default class TableComponent extends Component {
tableNode;
allRowsToggled = false;
rows;
columns;
visibleColumns;
selectedRows;
allRowsSelected;
setupComponent(tableNode) {
const { onSetup } = this.args;
this.tableNode = tableNode;
later(
this,
() => {
if (typeof onSetup === 'function') {
onSetup(this, tableNode);
}
},
100
);
}
addRow(row) {
if (isArray(row)) {
return this.addRows(row);
}
this.rows.pushObject(row);
return this;
}
addRows(rows = []) {
this.rows.pushObjects(rows);
return this;
}
removeRow(row) {
if (isArray(row)) {
return this.removeRows(row);
}
this.rows.removeObject(row);
return this.resetRowCheckboxes();
}
removeRows(rows = []) {
this.rows.removeObjects(rows);
return this.resetRowCheckboxes();
}
resetRowCheckboxes() {
for (let i = 0; i < this.rows.length; i++) {
const row = this.rows.objectAt(i);
set(row, 'checked', row.checked === true);
}
return this;
}
selectAllRows() {
this.allRowsToggled = !this.allRowsToggled;
for (let i = 0; i < this.rows.length; i++) {
const row = this.rows.objectAt(i);
set(row, 'checked', this.allRowsToggled);
}
}
untoggleSelectAll() {
this.allRowsToggled = false;
}
toggleSelectAll() {
this.allRowsToggled = true;
}
}