bixi
Version:
企业级中后台前端解决方案
83 lines (75 loc) • 2.65 kB
text/typescript
import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';
import { IOperationsColBtn, IRow } from '../table.type';
export class ColOperationsTemplateComponent implements OnChanges {
operations: IOperationsColBtn[];
row: IRow;
rowIndex: number;
_operations: IOperationsColBtnWithDivider[];
onClick(btn: IOperationsColBtn) {
if (btn.disabled || !btn.onClick) return;
btn.onClick(this.row, this.rowIndex);
}
ngOnChanges(changes: SimpleChanges) {
const { operations } = changes;
if (operations) {
this._operations = this.mergeDividerVisible(operations.currentValue);
}
}
mergeDividerVisible(originOperations: IOperationsColBtn[]): IOperationsColBtnWithDivider[] {
return originOperations.map((e, i) => ({
...e,
dividerVisible: this.isDividerVisible(originOperations, i)
}));
}
isDividerVisible(originOperations: IOperationsColBtn[], index: number): boolean {
let ret = false;
originOperations.forEach((e, i) => {
if (i > index) {
if (e.visible) {
ret = true;
}
}
});
return ret;
}
}
interface IOperationsColBtnWithDivider extends IOperationsColBtn {
dividerVisible: boolean;
}