ngx-material-dynamic-table
Version:
Componente angular dinâmico que ajuda a criar uma tabela utilizando o Angular material, de maneira fácil e rápida.
128 lines • 14.8 kB
JavaScript
import { __decorate, __read, __spread } from "tslib";
import { Component, ViewChild, EventEmitter, Output, Input, } from '@angular/core';
import { MatTableDataSource, MatTable } from '@angular/material/table';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
export var buttonsConfig = {
read: {
icon: 'search',
name: 'read',
tooltip: 'Visualizar',
},
update: {
icon: 'edit',
name: 'edit',
tooltip: 'Editar',
},
delete: {
icon: 'delete',
name: 'delete',
tooltip: 'Excluir',
},
download: {
icon: 'arrow_downward',
name: 'download',
tooltip: 'Download',
},
};
var NgxMaterialDynamicTableComponent = /** @class */ (function () {
function NgxMaterialDynamicTableComponent() {
this.displayedColumns = [];
this.filter = true;
this.buttonAddNewItem = false;
this.buttonExport = false;
this.buttonsConfig = buttonsConfig;
this.sendClick = new EventEmitter();
this.loading = true;
this.action = false;
this.displayedColumnsObject = [];
}
NgxMaterialDynamicTableComponent.prototype.ngOnChanges = function () {
if (this.displayedColumns) {
this.addActionColumn();
}
if (this.dataSource) {
this.createDatasource();
}
};
NgxMaterialDynamicTableComponent.prototype.createDatasource = function () {
this.dados = new MatTableDataSource(this.dataSource);
this.dados.paginator = this.paginator;
this.dados.sort = this.sort;
this.showTable();
};
NgxMaterialDynamicTableComponent.prototype.createColumns = function () {
this.displayedColumnsObject = this.displayedColumns.map(function (col) {
return typeof col.column === 'number' ? col.column.toString() : col.column;
});
this.showTable();
};
NgxMaterialDynamicTableComponent.prototype.showTable = function () {
if (this.dados && this.displayedColumns && this.displayedColumnsObject) {
this.loading = false;
}
};
NgxMaterialDynamicTableComponent.prototype.sendAction = function (action, row, index) {
var content = { action: action, row: row, index: index };
this.sendClick.emit(content);
};
NgxMaterialDynamicTableComponent.prototype.addActionColumn = function () {
if (this.actions) {
var columnAction = { column: 'actions', title: 'Ações' };
this.displayedColumns = __spread(this.displayedColumns, [columnAction]);
}
this.createColumns();
};
NgxMaterialDynamicTableComponent.prototype.applyFilter = function (filterValue) {
this.dados.filter = filterValue.trim().toLowerCase();
};
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "dataSource", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "displayedColumns", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "actions", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "configEditRow", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "filter", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "buttonAddNewItem", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "buttonExport", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "componentName", void 0);
__decorate([
Input()
], NgxMaterialDynamicTableComponent.prototype, "buttonsConfig", void 0);
__decorate([
Output()
], NgxMaterialDynamicTableComponent.prototype, "sendClick", void 0);
__decorate([
ViewChild(MatTable, { static: true })
], NgxMaterialDynamicTableComponent.prototype, "table", void 0);
__decorate([
ViewChild(MatPaginator, { static: true })
], NgxMaterialDynamicTableComponent.prototype, "paginator", void 0);
__decorate([
ViewChild(MatSort, { static: true })
], NgxMaterialDynamicTableComponent.prototype, "sort", void 0);
NgxMaterialDynamicTableComponent = __decorate([
Component({
selector: 'ngx-material-dynamic-table',
template: "\r\n\r\n <mat-form-field class=\"pesquisa\" *ngIf=\"filter\">\r\n <span matPrefix>\r\n <i class=\"material-icons\">search</i>\r\n <input type=\"text\" matInput (keyup)=\"applyFilter($event.target.value)\" placelholder=\"Filtrar\">\r\n </span>\r\n </mat-form-field>\r\n <mat-table #table [dataSource]=\"dados\" [hidden]=\"loading || !dados || !displayedColumns || !displayedColumnsObject\">\r\n\r\n <ng-container *ngFor=\"let disCol of displayedColumns; let colIndex = index\" matColumnDef=\"{{disCol.column}}\">\r\n <th mat-header-cell *matHeaderCellDef> {{disCol.title}} </th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <span *ngIf=\"disCol.column !== 'actions'; else blockActions\">\r\n {{element[disCol.column]}}\r\n </span>\r\n <ng-template #blockActions>\r\n <div class=\"actionsList\">\r\n <span *ngFor=\"let action of actions\">\r\n <a (click)=\"sendAction(action)\" matTooltip=\"{{buttonsConfig[action.column].tooltip}}\">\r\n <i class=\"material-icons\">{{buttonsConfig[action.column].icon}}</i>\r\n </a>\r\n </span>\r\n </div>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsObject\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumnsObject;\"></tr>\r\n </mat-table>\r\n <div *ngIf=\"dados && dados.filteredData && dados.filteredData.length === 0\">\r\n <p>Nenhum registro encontrado</p>\r\n </div>\r\n <mat-paginator [hidden]=\"dados === undefined\" [pageSizeOptions]=\"[5,10,20]\" showFirstLastButtons></mat-paginator>\r\n",
styles: ["[hidden]{display:none}.actionsList{display:flex;align-items:center}.actionsList span+span{margin-left:10px}.mat-table{width:100%;display:table}.mat-table tr.mat-header-row{height:auto}.mat-form-field,.pesquisa{width:100%}"]
})
], NgxMaterialDynamicTableComponent);
return NgxMaterialDynamicTableComponent;
}());
export { NgxMaterialDynamicTableComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdGVyaWFsLWR5bmFtaWMtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hdGVyaWFsLWR5bmFtaWMtdGFibGUvIiwic291cmNlcyI6WyJsaWIvbmd4LW1hdGVyaWFsLWR5bmFtaWMtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxNQUFNLENBQUMsSUFBTSxhQUFhLEdBQUc7SUFDM0IsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxZQUFZO0tBQ3RCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLE1BQU07UUFDWixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxRQUFRO0tBQ2xCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxTQUFTO0tBQ25CO0lBQ0QsUUFBUSxFQUFFO1FBQ1IsSUFBSSxFQUFFLGdCQUFnQjtRQUN0QixJQUFJLEVBQUUsVUFBVTtRQUNoQixPQUFPLEVBQUUsVUFBVTtLQUNwQjtDQUNGLENBQUM7QUFNRjtJQXVCRTtRQXJCUyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFHdEIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6QixpQkFBWSxHQUFHLEtBQUssQ0FB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QU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzttRUFBc0I7SUFDakI7UUFBMUMsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzt1RUFBeUI7SUFDN0I7UUFBckMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztrRUFBcUI7SUFoQi9DLGdDQUFnQztRQUw1QyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsNEJBQTRCO1lBQ3RDLG1yREFBMEQ7O1NBRTNELENBQUM7T0FDVyxnQ0FBZ0MsQ0FtRTVDO0lBQUQsdUNBQUM7Q0FBQSxBQW5FRCxJQW1FQztTQW5FWSxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dCxcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSwgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuZXhwb3J0IGNvbnN0IGJ1dHRvbnNDb25maWcgPSB7XHJcbiAgcmVhZDoge1xyXG4gICAgaWNvbjogJ3NlYXJjaCcsXHJcbiAgICBuYW1lOiAncmVhZCcsXHJcbiAgICB0b29sdGlwOiAnVmlzdWFsaXphcicsXHJcbiAgfSxcclxuICB1cGRhdGU6IHtcclxuICAgIGljb246ICdlZGl0JyxcclxuICAgIG5hbWU6ICdlZGl0JyxcclxuICAgIHRvb2x0aXA6ICdFZGl0YXInLFxyXG4gIH0sXHJcbiAgZGVsZXRlOiB7XHJcbiAgICBpY29uOiAnZGVsZXRlJyxcclxuICAgIG5hbWU6ICdkZWxldGUnLFxyXG4gICAgdG9vbHRpcDogJ0V4Y2x1aXInLFxyXG4gIH0sXHJcbiAgZG93bmxvYWQ6IHtcclxuICAgIGljb246ICdhcnJvd19kb3dud2FyZCcsXHJcbiAgICBuYW1lOiAnZG93bmxvYWQnLFxyXG4gICAgdG9vbHRpcDogJ0Rvd25sb2FkJyxcclxuICB9LFxyXG59O1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC1tYXRlcmlhbC1keW5hbWljLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmd4LW1hdGVyaWFsLWR5bmFtaWMtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC1tYXRlcmlhbC1keW5hbWljLXRhYmxlLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hNYXRlcmlhbER5bmFtaWNUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZTtcclxuICBASW5wdXQoKSBkaXNwbGF5ZWRDb2x1bW5zID0gW107XHJcbiAgQElucHV0KCkgYWN0aW9ucztcclxuICBASW5wdXQoKSBjb25maWdFZGl0Um93O1xyXG4gIEBJbnB1dCgpIGZpbHRlciA9IHRydWU7XHJcbiAgQElucHV0KCkgYnV0dG9uQWRkTmV3SXRlbSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGJ1dHRvbkV4cG9ydCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWU7XHJcblxyXG4gIEBJbnB1dCgpIGJ1dHRvbnNDb25maWcgPSBidXR0b25zQ29uZmlnO1xyXG5cclxuICBAT3V0cHV0KCkgc2VuZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAVmlld0NoaWxkKE1hdFRhYmxlLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogTWF0VGFibGU8YW55PjtcclxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XHJcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7IHN0YXRpYzogdHJ1ZSB9KSBzb3J0OiBNYXRUYWJsZTxhbnk+O1xyXG5cclxuICBwdWJsaWMgbG9hZGluZyA9IHRydWU7XHJcbiAgcHVibGljIGFjdGlvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkaXNwbGF5ZWRDb2x1bW5zT2JqZWN0OiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBkYWRvcztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc3BsYXllZENvbHVtbnMpIHtcclxuICAgICAgdGhpcy5hZGRBY3Rpb25Db2x1bW4oKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgdGhpcy5jcmVhdGVEYXRhc291cmNlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmVhdGVEYXRhc291cmNlKCkge1xyXG4gICAgdGhpcy5kYWRvcyA9IG5ldyBNYXRUYWJsZURhdGFTb3VyY2U8YW55Pih0aGlzLmRhdGFTb3VyY2UpO1xyXG4gICAgdGhpcy5kYWRvcy5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcclxuICAgIHRoaXMuZGFkb3Muc29ydCA9IHRoaXMuc29ydDtcclxuICAgIHRoaXMuc2hvd1RhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zT2JqZWN0ID0gdGhpcy5kaXNwbGF5ZWRDb2x1bW5zLm1hcCgoY29sKSA9PlxyXG4gICAgICB0eXBlb2YgY29sLmNvbHVtbiA9PT0gJ251bWJlcicgPyBjb2wuY29sdW1uLnRvU3RyaW5nKCkgOiBjb2wuY29sdW1uXHJcbiAgICApO1xyXG4gICAgdGhpcy5zaG93VGFibGUoKTtcclxuICB9XHJcblxyXG4gIHNob3dUYWJsZSgpIHtcclxuICAgIGlmICh0aGlzLmRhZG9zICYmIHRoaXMuZGlzcGxheWVkQ29sdW1ucyAmJiB0aGlzLmRpc3BsYXllZENvbHVtbnNPYmplY3QpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNlbmRBY3Rpb24oYWN0aW9uLCByb3c/LCBpbmRleD8pIHtcclxuICAgIGNvbnN0IGNvbnRlbnQ6IGFueSA9IHsgYWN0aW9uLCByb3csIGluZGV4IH07XHJcbiAgICB0aGlzLnNlbmRDbGljay5lbWl0KGNvbnRlbnQpO1xyXG4gIH1cclxuICBhZGRBY3Rpb25Db2x1bW4oKSB7XHJcbiAgICBpZiAodGhpcy5hY3Rpb25zKSB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbkFjdGlvbiA9IHsgY29sdW1uOiAnYWN0aW9ucycsIHRpdGxlOiAnQcOnw7VlcycgfTtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWy4uLnRoaXMuZGlzcGxheWVkQ29sdW1ucywgY29sdW1uQWN0aW9uXTtcclxuICAgIH1cclxuICAgIHRoaXMuY3JlYXRlQ29sdW1ucygpO1xyXG4gIH1cclxuICBhcHBseUZpbHRlcihmaWx0ZXJWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRhZG9zLmZpbHRlciA9IGZpbHRlclZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xyXG4gIH1cclxufVxyXG4iXX0=