import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { ActionColumn, ActionColumnType } from '../../../models'; @Component({ selector: 'fss-table-action-column', templateUrl: './fss-table-action-column.component.html', styleUrls: ['./fss-table-action-column.component.scss'] }) export class FssTableActionColumnComponent implements OnInit, OnChanges { @Input() row: any; @Input() column!: ActionColumn; @Input() trackByProp: string = 'key'; @Output() actionClicked: EventEmitter<{ row: unknown, actionName: string}> = new EventEmitter<{ row: unknown, actionName: string}>(); _actionColumnType = ActionColumnType; actionHoverText: string = ''; constructor(private translateService: TranslateService) { } ngOnChanges(changes: SimpleChanges): void { for (const propName in changes) { if (changes.hasOwnProperty(propName)) { switch (propName) { case 'row': case 'column': this.setActionHoverText(); break; } } } } ngOnInit(): void { } setActionHoverText() { let hoverText = ''; if (this.column.disabledProp && this.row[this.column.disabledProp] && !this.column.columnDisabled && this.column.disabledPropHoverText) { hoverText = this.column.disabledPropHoverText; } else if (this.column.hoverText) { hoverText = this.column.hoverText; } else if (typeof this.row === 'object' && this.row !== null && 'hoverText' in this.row) { hoverText = this.row.hoverText as string; } this.actionHoverText = hoverText !== '' ? this.translateService.instant(hoverText) : ''; } action() { this.actionClicked.emit({ row: this.row, actionName: this.column.actionName }); } }