@alihbuzaid/ember-ui
Version:
Fleetbase UI provides all the interface components, helpers, services and utilities for building a Fleetbase extension into the Console.
60 lines (45 loc) • 1.56 kB
JavaScript
import Component from '@glimmer/component';
import { action, computed } from '@ember/object';
export default class TableCellDropdownComponent extends Component {
defaultButtonText = 'Actions';
('args.column.ddButtonText', 'defaultButtonText') get buttonText() {
const { ddButtonText } = this.args.column;
if (ddButtonText === undefined) {
return this.defaultButtonText;
}
if (ddButtonText === false) {
return null;
}
return ddButtonText;
}
setupComponent(dropdownWrapperNode) {
const tableCellNode = this.getOwnerTableCell(dropdownWrapperNode);
tableCellNode.style.overflow = 'visible';
}
getOwnerTableCell(dropdownWrapperNode) {
while (dropdownWrapperNode) {
dropdownWrapperNode = dropdownWrapperNode.parentNode;
if (dropdownWrapperNode.tagName.toLowerCase() === 'td') {
return dropdownWrapperNode;
}
}
return undefined;
}
onDropdownItemClick(columnAction, row, dd) {
if (typeof dd?.actions?.close === 'function') {
dd.actions.close();
}
if (typeof columnAction?.fn === 'function') {
columnAction.fn(row);
}
}
calculatePosition(trigger) {
let { width } = trigger.getBoundingClientRect();
let style = {
marginTop: '0px',
right: width + 3,
top: 0,
};
return { style };
}
}