@fleetbase/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
48 lines (38 loc) • 1.32 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
import { inject as service } from '@ember/service';
export default class TableCellComponent extends Component {
tableContext;
tableCellNode;
get sortColumn() {
const column = this.args.column ?? {};
const sortParam = column.sortParam || column.valuePath;
const sortColumns = this.tableContext.table?.sortColumns ?? [];
return sortColumns.find((c) => c.param === sortParam);
}
get isAscending() {
return this.sortColumn?.direction === 'asc';
}
get isDescending() {
return this.sortColumn?.direction === 'desc';
}
setupComponent(tableCellNode) {
this.tableCellNode = tableCellNode;
}
getOwnerTable(tableCellNode) {
while (tableCellNode) {
tableCellNode = tableCellNode.parentNode;
if (tableCellNode.tagName.toLowerCase() === 'table') {
return tableCellNode;
}
}
return undefined;
}
triggerSort(event) {
const { column } = this.args;
if (column && column.sortable) {
this.tableContext.table.handleSort(column, event);
}
}
}