ngx-aur-mat-table 0.0.2 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ngx-aur-mat-table.umd.js +227 -22
- package/bundles/ngx-aur-mat-table.umd.js.map +1 -1
- package/esm2015/lib/RowActionProvider.js +13 -0
- package/esm2015/lib/SelectionProvider.js +41 -0
- package/esm2015/lib/TableColumn.js +2 -0
- package/esm2015/lib/data-property-getter-pipe/data-property-getter.pipe.js +16 -0
- package/esm2015/lib/ngx-aur-mat-table.component.js +115 -15
- package/esm2015/lib/ngx-aur-mat-table.module.js +53 -5
- package/esm2015/public-api.js +2 -2
- package/fesm2015/ngx-aur-mat-table.js +224 -27
- package/fesm2015/ngx-aur-mat-table.js.map +1 -1
- package/lib/RowActionProvider.d.ts +19 -0
- package/lib/SelectionProvider.d.ts +18 -0
- package/lib/TableColumn.d.ts +12 -0
- package/lib/data-property-getter-pipe/data-property-getter.pipe.d.ts +7 -0
- package/lib/ngx-aur-mat-table.component.d.ts +38 -4
- package/lib/ngx-aur-mat-table.module.d.ts +13 -1
- package/package.json +8 -2
- package/public-api.d.ts +1 -1
- package/esm2015/lib/ngx-aur-mat-table.service.js +0 -14
- package/lib/ngx-aur-mat-table.service.d.ts +0 -6
|
@@ -1,26 +1,126 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { MatSort } from '@angular/material/sort';
|
|
3
|
+
import { MatTableDataSource } from '@angular/material/table';
|
|
4
|
+
import { MatPaginator } from '@angular/material/paginator';
|
|
5
|
+
import { SelectionProvider } from './SelectionProvider';
|
|
6
|
+
import { RowActionProvider } from './RowActionProvider';
|
|
2
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/material/form-field";
|
|
9
|
+
import * as i2 from "@angular/material/table";
|
|
10
|
+
import * as i3 from "@angular/material/checkbox";
|
|
11
|
+
import * as i4 from "@angular/material/button";
|
|
12
|
+
import * as i5 from "@angular/material/icon";
|
|
13
|
+
import * as i6 from "@angular/material/sort";
|
|
14
|
+
import * as i7 from "@angular/material/paginator";
|
|
15
|
+
import * as i8 from "@angular/common";
|
|
16
|
+
import * as i9 from "@angular/material/input";
|
|
17
|
+
import * as i10 from "@angular/material/tooltip";
|
|
18
|
+
import * as i11 from "./data-property-getter-pipe/data-property-getter.pipe";
|
|
3
19
|
export class NgxAurMatTableComponent {
|
|
4
|
-
constructor() {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.tableDataSource = new MatTableDataSource([]);
|
|
22
|
+
this.displayedColumns = [];
|
|
23
|
+
this.isPageable = false;
|
|
24
|
+
this.isSortable = false;
|
|
25
|
+
this.isFilterable = false;
|
|
26
|
+
this.tableColumns = [];
|
|
27
|
+
this.paginationSizes = [5, 10, 15];
|
|
28
|
+
this.defaultPageSize = this.paginationSizes[1];
|
|
29
|
+
this.sort = new EventEmitter();
|
|
30
|
+
this.onRowAction = new EventEmitter();
|
|
31
|
+
this.selected = new EventEmitter();
|
|
32
|
+
this.onSelect = new EventEmitter();
|
|
33
|
+
this.onDeselect = new EventEmitter();
|
|
34
|
+
this.onRowClick = new EventEmitter();
|
|
35
|
+
}
|
|
36
|
+
// this property needs to have a setter, to dynamically get changes from parent component
|
|
37
|
+
set tableData(data) {
|
|
38
|
+
this.setTableDataSource(data);
|
|
39
|
+
}
|
|
5
40
|
ngOnInit() {
|
|
41
|
+
this.displayedColumns = this.tableColumns.map((tableColumn) => tableColumn.name);
|
|
42
|
+
if (this.rowActionable) {
|
|
43
|
+
this.rowActionsProvider = new RowActionProvider(this.rowActionable, this.displayedColumns);
|
|
44
|
+
}
|
|
45
|
+
else if (this.selectable) {
|
|
46
|
+
this.selectionProvider = new SelectionProvider(this.selectable, this.displayedColumns, this.tableDataSource);
|
|
47
|
+
this.selectionProvider.bind(this.selected, this.onSelect, this.onDeselect);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// we need this, in order to make pagination work with *ngIf
|
|
51
|
+
ngAfterViewInit() {
|
|
52
|
+
this.tableDataSource.paginator = this.matPaginator;
|
|
53
|
+
}
|
|
54
|
+
setTableDataSource(data) {
|
|
55
|
+
this.tableDataSource = new MatTableDataSource(data);
|
|
56
|
+
this.tableDataSource.paginator = this.matPaginator;
|
|
57
|
+
this.tableDataSource.sort = this.matSort;
|
|
58
|
+
}
|
|
59
|
+
applyFilter(event) {
|
|
60
|
+
const filterValue = event.target.value;
|
|
61
|
+
this.tableDataSource.filter = filterValue.trim().toLowerCase();
|
|
62
|
+
}
|
|
63
|
+
sortTable(sortParameters) {
|
|
64
|
+
// defining name of data property, to sort by, instead of column name
|
|
65
|
+
// @ts-ignore
|
|
66
|
+
sortParameters.active = this.tableColumns.find(column => column.name === sortParameters.active).dataKey;
|
|
67
|
+
this.sort.emit(sortParameters);
|
|
68
|
+
}
|
|
69
|
+
emitRowAction(action, row, $event) {
|
|
70
|
+
$event.stopPropagation();
|
|
71
|
+
this.onRowAction.emit({ action, value: row });
|
|
72
|
+
}
|
|
73
|
+
masterToggle() {
|
|
74
|
+
this.selectionProvider.masterToggle();
|
|
75
|
+
}
|
|
76
|
+
isAllSelected() {
|
|
77
|
+
return this.selectionProvider.isAllSelected();
|
|
6
78
|
}
|
|
7
79
|
}
|
|
8
80
|
NgxAurMatTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9
|
-
NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", ngImport: i0, template:
|
|
10
|
-
<p>
|
|
11
|
-
ngx-aur-mat-table works!
|
|
12
|
-
</p>
|
|
13
|
-
`, isInline: true });
|
|
81
|
+
NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { isPageable: "isPageable", isSortable: "isSortable", isFilterable: "isFilterable", tableColumns: "tableColumns", paginationSizes: "paginationSizes", defaultPageSize: "defaultPageSize", rowActionable: "rowActionable", selectable: "selectable", tableData: "tableData" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onRowClick: "onRowClick" }, viewQueries: [{ propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"isFilterable\">\r\n <mat-form-field>\r\n <mat-label>Filter</mat-label>\r\n <input matInput (keyup)=\"applyFilter($event)\" placeholder=\"filter\">\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table mat-table [dataSource]=\"tableDataSource\" matSort (matSortChange)=\"sortTable($event)\">\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(row) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(row)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element, $event)\"\r\n [matTooltip]=\"action.tooltip? action.tooltip: ''\"\r\n *ngFor=\"let action of rowActionable.actions\">\r\n <mat-icon [style.color]=\"action.color\">\r\n {{action.icon}}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let tableColumn of tableColumns\" [matColumnDef]=\"tableColumn.name\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"tableColumn.isSortable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"tableColumn.name\"\r\n [arrowPosition]=\"tableColumn.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef\r\n [class.text-right]=\"tableColumn.position == 'right'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <mat-icon *ngIf=\"tableColumn.headerIcon\"\r\n [matTooltip]=\"tableColumn.headerTooltip? tableColumn.headerTooltip: ''\"\r\n [style.color]=\"tableColumn.headerIconColor\">{{tableColumn.headerIcon}}</mat-icon>\r\n <span *ngIf=\"!tableColumn.headerIcon || tableColumn.headerIconWithText\"\r\n [matTooltip]=\"tableColumn.headerTooltip? tableColumn.headerTooltip: ''\"\r\n >{{tableColumn.name}}</span>\r\n </ng-template>\r\n\r\n <!-- column data -->\r\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"tableColumn.position == 'right'\">\r\n <span *ngIf=\"!tableColumn.valueIcon\">{{element | dataPropertyGetter: tableColumn.dataKey}}</span>\r\n <mat-icon *ngIf=\"tableColumn.valueIcon\"\r\n [style.color]=\"tableColumn.valueIconColor? tableColumn.valueIconColor(element): null\"\r\n >{{tableColumn.valueIcon}}</mat-icon>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row (click)=\"onRowAction.emit(row)\" *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n\r\n <!-- Pagination -->\r\n <mat-paginator *ngIf=\"isPageable\"\r\n [pageSizeOptions]=\"paginationSizes\"\r\n [pageSize]=\"defaultPageSize\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n</ng-container>\r\n", styles: ["table{width:100%}th,td{padding:10px!important}mat-form-field{width:40%}.text-right{text-align:right!important}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i7.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i6.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i2.MatCellDef, selector: "[matCellDef]" }, { type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "dataPropertyGetter": i11.DataPropertyGetterPipe } });
|
|
14
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, decorators: [{
|
|
15
83
|
type: Component,
|
|
16
84
|
args: [{
|
|
17
85
|
selector: 'aur-mat-table',
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
ngx-aur-mat-table works!
|
|
21
|
-
</p>
|
|
22
|
-
`,
|
|
23
|
-
styles: []
|
|
86
|
+
templateUrl: './ngx-aur-mat-table.component.html',
|
|
87
|
+
styleUrls: ['./ngx-aur-mat-table.component.scss']
|
|
24
88
|
}]
|
|
25
|
-
}], ctorParameters: function () { return []; }
|
|
26
|
-
|
|
89
|
+
}], ctorParameters: function () { return []; }, propDecorators: { matPaginator: [{
|
|
90
|
+
type: ViewChild,
|
|
91
|
+
args: [MatPaginator, { static: false }]
|
|
92
|
+
}], matSort: [{
|
|
93
|
+
type: ViewChild,
|
|
94
|
+
args: [MatSort, { static: true }]
|
|
95
|
+
}], isPageable: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], isSortable: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], isFilterable: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], tableColumns: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], paginationSizes: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], defaultPageSize: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], sort: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], rowActionable: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], onRowAction: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}], selectable: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], selected: [{
|
|
116
|
+
type: Output
|
|
117
|
+
}], onSelect: [{
|
|
118
|
+
type: Output
|
|
119
|
+
}], onDeselect: [{
|
|
120
|
+
type: Output
|
|
121
|
+
}], onRowClick: [{
|
|
122
|
+
type: Output
|
|
123
|
+
}], tableData: [{
|
|
124
|
+
type: Input
|
|
125
|
+
}] } });
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYXVyLW1hdC10YWJsZS9zcmMvbGliL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV2RyxPQUFPLEVBQUMsT0FBTyxFQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBb0IsaUJBQWlCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQWdDLGlCQUFpQixFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFPckYsTUFBTSxPQUFPLHVCQUF1QjtJQXdDbEM7UUF0Q08sb0JBQWUsR0FBRyxJQUFJLGtCQUFrQixDQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQU05QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsaUJBQVksR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLG9CQUFlLEdBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLG9CQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMs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QUUsQ0FBQztJQUNoRCxDQUFDOztxSEF4RlUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsZ2hCQUt2QixZQUFZLDBFQUVaLE9BQU8sOERDcEJwQixzc0lBNEZBOzRGRC9FYSx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFdBQVcsRUFBRSxvQ0FBb0M7b0JBQ2pELFNBQVMsRUFBRSxDQUFDLG9DQUFvQyxDQUFDO2lCQUNsRDswRUFNMkMsWUFBWTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUVKLE9BQU87c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFekIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksSUFBSTtzQkFBYixNQUFNO2dCQUdFLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFHRSxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVHLFVBQVU7c0JBQW5CLE1BQU07Z0JBR00sU0FBUztzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VGFibGVDb2x1bW59IGZyb20gJy4vVGFibGVDb2x1bW4nO1xuaW1wb3J0IHtNYXRTb3J0LCBTb3J0fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7TWF0VGFibGVEYXRhU291cmNlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQge01hdFBhZ2luYXRvcn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7U2VsZWN0YWJsZUNvbnRleHQsIFNlbGVjdGlvblByb3ZpZGVyfSBmcm9tICcuL1NlbGVjdGlvblByb3ZpZGVyJztcbmltcG9ydCB7QWN0aW9uRXZlbnQsIFJvd0FjdGlvbkNvbnRleHQsIFJvd0FjdGlvblByb3ZpZGVyfSBmcm9tICcuL1Jvd0FjdGlvblByb3ZpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXVyLW1hdC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtYXVyLW1hdC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25neC1hdXItbWF0LXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmd4QXVyTWF0VGFibGVDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIHB1YmxpYyB0YWJsZURhdGFTb3VyY2UgPSBuZXcgTWF0VGFibGVEYXRhU291cmNlPFQ+KFtdKTtcbiAgcHVibGljIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIC8vIEB0cy1pZ25vcmVcbiAgQFZpZXdDaGlsZChNYXRQYWdpbmF0b3IsIHtzdGF0aWM6IGZhbHNlfSkgbWF0UGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIC8vIEB0cy1pZ25vcmVcbiAgQFZpZXdDaGlsZChNYXRTb3J0LCB7c3RhdGljOiB0cnVlfSkgbWF0U29ydDogTWF0U29ydDtcblxuICBASW5wdXQoKSBpc1BhZ2VhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzU29ydGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgaXNGaWx0ZXJhYmxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRhYmxlQ29sdW1uczogVGFibGVDb2x1bW48VD5bXSA9IFtdO1xuICBASW5wdXQoKSBwYWdpbmF0aW9uU2l6ZXM6IG51bWJlcltdID0gWzUsIDEwLCAxNV07XG4gIEBJbnB1dCgpIGRlZmF1bHRQYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblNpemVzWzFdO1xuXG4gIEBPdXRwdXQoKSBzb3J0OiBFdmVudEVtaXR0ZXI8U29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBASW5wdXQoKSByb3dBY3Rpb25hYmxlOiBSb3dBY3Rpb25Db250ZXh0O1xuICBAT3V0cHV0KCkgb25Sb3dBY3Rpb246IEV2ZW50RW1pdHRlcjxBY3Rpb25FdmVudDxUPj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFjdGlvbkV2ZW50PFQ+PigpO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQElucHV0KCkgc2VsZWN0YWJsZTogU2VsZWN0YWJsZUNvbnRleHQ7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuICBAT3V0cHV0KCkgb25TZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcbiAgQE91dHB1dCgpIG9uRGVzZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPFRbXT4oKTtcblxuICBAT3V0cHV0KCkgb25Sb3dDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAvLyB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGhhdmUgYSBzZXR0ZXIsIHRvIGR5bmFtaWNhbGx5IGdldCBjaGFuZ2VzIGZyb20gcGFyZW50IGNvbXBvbmVudFxuICBASW5wdXQoKSBzZXQgdGFibGVEYXRhKGRhdGE6IFRbXSkge1xuICAgIHRoaXMuc2V0VGFibGVEYXRhU291cmNlKGRhdGEpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBzZWxlY3Rpb25Qcm92aWRlcjogU2VsZWN0aW9uUHJvdmlkZXI8VD47XG4gIC8vIEB0cy1pZ25vcmVcbiAgcm93QWN0aW9uc1Byb3ZpZGVyOiBSb3dBY3Rpb25Qcm92aWRlcjxUPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IHRoaXMudGFibGVDb2x1bW5zLm1hcCgodGFibGVDb2x1bW46IFRhYmxlQ29sdW1uPGFueT4pID0+IHRhYmxlQ29sdW1uLm5hbWUpO1xuICAgIGlmICh0aGlzLnJvd0FjdGlvbmFibGUpIHtcbiAgICAgIHRoaXMucm93QWN0aW9uc1Byb3ZpZGVyID0gbmV3IFJvd0FjdGlvblByb3ZpZGVyPFQ+KHRoaXMucm93QWN0aW9uYWJsZSwgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlciA9IG5ldyBTZWxlY3Rpb25Qcm92aWRlcjxUPih0aGlzLnNlbGVjdGFibGUsIHRoaXMuZGlzcGxheWVkQ29sdW1ucywgdGhpcy50YWJsZURhdGFTb3VyY2UpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25Qcm92aWRlci5iaW5kKHRoaXMuc2VsZWN0ZWQsIHRoaXMub25TZWxlY3QsIHRoaXMub25EZXNlbGVjdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gd2UgbmVlZCB0aGlzLCBpbiBvcmRlciB0byBtYWtlIHBhZ2luYXRpb24gd29yayB3aXRoICpuZ0lmXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYmxlRGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLm1hdFBhZ2luYXRvcjtcbiAgfVxuXG5cbiAgc2V0VGFibGVEYXRhU291cmNlKGRhdGE6IGFueSkge1xuICAgIHRoaXMudGFibGVEYXRhU291cmNlID0gbmV3IE1hdFRhYmxlRGF0YVNvdXJjZTxhbnk+KGRhdGEpO1xuICAgIHRoaXMudGFibGVEYXRhU291cmNlLnBhZ2luYXRvciA9IHRoaXMubWF0UGFnaW5hdG9yO1xuICAgIHRoaXMudGFibGVEYXRhU291cmNlLnNvcnQgPSB0aGlzLm1hdFNvcnQ7XG4gIH1cblxuICBhcHBseUZpbHRlcihldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy50YWJsZURhdGFTb3VyY2UuZmlsdGVyID0gZmlsdGVyVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBzb3J0VGFibGUoc29ydFBhcmFtZXRlcnM6IFNvcnQpIHtcbiAgICAvLyBkZWZpbmluZyBuYW1lIG9mIGRhdGEgcHJvcGVydHksIHRvIHNvcnQgYnksIGluc3RlYWQgb2YgY29sdW1uIG5hbWVcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc29ydFBhcmFtZXRlcnMuYWN0aXZlID0gdGhpcy50YWJsZUNvbHVtbnMuZmluZChjb2x1bW4gPT4gY29sdW1uLm5hbWUgPT09IHNvcnRQYXJhbWV0ZXJzLmFjdGl2ZSkuZGF0YUtleTtcbiAgICB0aGlzLnNvcnQuZW1pdChzb3J0UGFyYW1ldGVycyk7XG4gIH1cblxuICBlbWl0Um93QWN0aW9uKGFjdGlvbjogc3RyaW5nLCByb3c6IFQsICRldmVudDogTW91c2VFdmVudCkge1xuICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLm9uUm93QWN0aW9uLmVtaXQoe2FjdGlvbiwgdmFsdWU6IHJvd30pO1xuICB9XG5cbiAgbWFzdGVyVG9nZ2xlKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uUHJvdmlkZXIubWFzdGVyVG9nZ2xlKCk7XG4gIH1cblxuICBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblByb3ZpZGVyLmlzQWxsU2VsZWN0ZWQoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBGaWx0ZXIgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlsdGVyYWJsZVwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPkZpbHRlcjwvbWF0LWxhYmVsPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5RmlsdGVyKCRldmVudClcIiBwbGFjZWhvbGRlcj1cImZpbHRlclwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPCEtLSBUYWJsZSAtLT5cclxuICA8dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInRhYmxlRGF0YVNvdXJjZVwiIG1hdFNvcnQgKG1hdFNvcnRDaGFuZ2UpPVwic29ydFRhYmxlKCRldmVudClcIj5cclxuXHJcbiAgICA8IS0tICAgICAgICBzZWxlY3Rpb24tY29sdW1uLS0+XHJcbiAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwic2VsZWN0aW9uUHJvdmlkZXIuQ09MVU1OX05BTUVcIiAqbmdJZj1cInNlbGVjdGlvblByb3ZpZGVyXCI+XHJcbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLmhhc1ZhbHVlKCkgJiYgIWlzQWxsU2VsZWN0ZWQoKVwiPlxyXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICA8L3RoPlxyXG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uUHJvdmlkZXIuc2VsZWN0aW9uLnRvZ2dsZShyb3cpIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb25Qcm92aWRlci5zZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCI+XHJcbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgIDwvdGQ+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIGFjdGlvbiBjb2x1bW4gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93QWN0aW9uc1Byb3ZpZGVyXCIgW21hdENvbHVtbkRlZl09XCJyb3dBY3Rpb25zUHJvdmlkZXIuQ09MVU1OX05BTUVcIj5cclxuICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxyXG4gICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZW1pdFJvd0FjdGlvbihhY3Rpb24uYWN0aW9uLCBlbGVtZW50LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImFjdGlvbi50b29sdGlwPyBhY3Rpb24udG9vbHRpcDogJydcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiByb3dBY3Rpb25hYmxlLmFjdGlvbnNcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBbc3R5bGUuY29sb3JdPVwiYWN0aW9uLmNvbG9yXCI+XHJcbiAgICAgICAgICAgIHt7YWN0aW9uLmljb259fVxyXG4gICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC90ZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYmxlQ29sdW1uIG9mIHRhYmxlQ29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwidGFibGVDb2x1bW4ubmFtZVwiPlxyXG5cclxuICAgICAgPCEtLSBpZiBzb3J0YWJsZSBjb2x1bW4gaGVhZGVyIC0tPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFibGVDb2x1bW4uaXNTb3J0YWJsZTsgZWxzZSBub3RTb3J0YWJsZVwiPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW21hdC1zb3J0LWhlYWRlcl09XCJ0YWJsZUNvbHVtbi5uYW1lXCJcclxuICAgICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwidGFibGVDb2x1bW4ucG9zaXRpb24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJWYWx1ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8IS0tIGVsc2Ugbm90IHNvcnRhYmxlIC0tPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI25vdFNvcnRhYmxlPlxyXG4gICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWZcclxuICAgICAgICAgICAgW2NsYXNzLnRleHQtcmlnaHRdPVwidGFibGVDb2x1bW4ucG9zaXRpb24gPT0gJ3JpZ2h0J1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclZhbHVlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDwhLS0gICAgICBoZWFkZXIgdmFsdWUtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJWYWx1ZT5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJ0YWJsZUNvbHVtbi5oZWFkZXJJY29uXCJcclxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidGFibGVDb2x1bW4uaGVhZGVyVG9vbHRpcD8gdGFibGVDb2x1bW4uaGVhZGVyVG9vbHRpcDogJydcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwidGFibGVDb2x1bW4uaGVhZGVySWNvbkNvbG9yXCI+e3t0YWJsZUNvbHVtbi5oZWFkZXJJY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIXRhYmxlQ29sdW1uLmhlYWRlckljb24gfHwgdGFibGVDb2x1bW4uaGVhZGVySWNvbldpdGhUZXh0XCJcclxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0YWJsZUNvbHVtbi5oZWFkZXJUb29sdGlwPyB0YWJsZUNvbHVtbi5oZWFkZXJUb29sdGlwOiAnJ1wiXHJcbiAgICAgICAgPnt7dGFibGVDb2x1bW4ubmFtZX19PC9zcGFuPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPCEtLSBjb2x1bW4gZGF0YSAtLT5cclxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIiBbY2xhc3MudGV4dC1yaWdodF09XCJ0YWJsZUNvbHVtbi5wb3NpdGlvbiA9PSAncmlnaHQnXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhdGFibGVDb2x1bW4udmFsdWVJY29uXCI+e3tlbGVtZW50IHwgZGF0YVByb3BlcnR5R2V0dGVyOiB0YWJsZUNvbHVtbi5kYXRhS2V5fX08L3NwYW4+XHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwidGFibGVDb2x1bW4udmFsdWVJY29uXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInRhYmxlQ29sdW1uLnZhbHVlSWNvbkNvbG9yPyB0YWJsZUNvbHVtbi52YWx1ZUljb25Db2xvcihlbGVtZW50KTogbnVsbFwiXHJcbiAgICAgICAgPnt7dGFibGVDb2x1bW4udmFsdWVJY29ufX08L21hdC1pY29uPlxyXG4gICAgICA8L3RkPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cclxuICAgIDx0ciBtYXQtcm93IChjbGljayk9XCJvblJvd0FjdGlvbi5lbWl0KHJvdylcIiAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxyXG4gIDwvdGFibGU+XHJcblxyXG4gIDwhLS0gUGFnaW5hdGlvbiAtLT5cclxuICA8bWF0LXBhZ2luYXRvciAqbmdJZj1cImlzUGFnZWFibGVcIlxyXG4gICAgICAgICAgICAgICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnaW5hdGlvblNpemVzXCJcclxuICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiZGVmYXVsdFBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICBzaG93Rmlyc3RMYXN0QnV0dG9ucz5cclxuICA8L21hdC1wYWdpbmF0b3I+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
|
@@ -1,21 +1,69 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { NgxAurMatTableComponent } from './ngx-aur-mat-table.component';
|
|
3
|
+
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
|
4
|
+
import { BrowserModule } from "@angular/platform-browser";
|
|
5
|
+
import { MatIconModule } from "@angular/material/icon";
|
|
6
|
+
import { MatTableModule } from "@angular/material/table";
|
|
7
|
+
import { MatPaginatorModule } from "@angular/material/paginator";
|
|
8
|
+
import { MatButtonModule } from "@angular/material/button";
|
|
9
|
+
import { MatInputModule } from "@angular/material/input";
|
|
10
|
+
import { MatSortModule } from "@angular/material/sort";
|
|
11
|
+
import { MatTooltipModule } from "@angular/material/tooltip";
|
|
12
|
+
import { MatCheckboxModule } from "@angular/material/checkbox";
|
|
13
|
+
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
14
|
+
import { DataPropertyGetterPipe } from "./data-property-getter-pipe/data-property-getter.pipe";
|
|
3
15
|
import * as i0 from "@angular/core";
|
|
4
16
|
export class NgxAurMatTableModule {
|
|
5
17
|
}
|
|
6
18
|
NgxAurMatTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
-
NgxAurMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, declarations: [NgxAurMatTableComponent
|
|
8
|
-
|
|
19
|
+
NgxAurMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, declarations: [NgxAurMatTableComponent,
|
|
20
|
+
DataPropertyGetterPipe], imports: [BrowserModule,
|
|
21
|
+
BrowserAnimationsModule,
|
|
22
|
+
MatIconModule,
|
|
23
|
+
MatTableModule,
|
|
24
|
+
MatPaginatorModule,
|
|
25
|
+
MatButtonModule,
|
|
26
|
+
MatInputModule,
|
|
27
|
+
MatSortModule,
|
|
28
|
+
MatTooltipModule,
|
|
29
|
+
MatCheckboxModule,
|
|
30
|
+
MatFormFieldModule], exports: [NgxAurMatTableComponent] });
|
|
31
|
+
NgxAurMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, imports: [[
|
|
32
|
+
BrowserModule,
|
|
33
|
+
BrowserAnimationsModule,
|
|
34
|
+
MatIconModule,
|
|
35
|
+
MatTableModule,
|
|
36
|
+
MatPaginatorModule,
|
|
37
|
+
MatButtonModule,
|
|
38
|
+
MatInputModule,
|
|
39
|
+
MatSortModule,
|
|
40
|
+
MatTooltipModule,
|
|
41
|
+
MatCheckboxModule,
|
|
42
|
+
MatFormFieldModule
|
|
43
|
+
]] });
|
|
9
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, decorators: [{
|
|
10
45
|
type: NgModule,
|
|
11
46
|
args: [{
|
|
12
47
|
declarations: [
|
|
13
|
-
NgxAurMatTableComponent
|
|
48
|
+
NgxAurMatTableComponent,
|
|
49
|
+
DataPropertyGetterPipe
|
|
50
|
+
],
|
|
51
|
+
imports: [
|
|
52
|
+
BrowserModule,
|
|
53
|
+
BrowserAnimationsModule,
|
|
54
|
+
MatIconModule,
|
|
55
|
+
MatTableModule,
|
|
56
|
+
MatPaginatorModule,
|
|
57
|
+
MatButtonModule,
|
|
58
|
+
MatInputModule,
|
|
59
|
+
MatSortModule,
|
|
60
|
+
MatTooltipModule,
|
|
61
|
+
MatCheckboxModule,
|
|
62
|
+
MatFormFieldModule
|
|
14
63
|
],
|
|
15
|
-
imports: [],
|
|
16
64
|
exports: [
|
|
17
65
|
NgxAurMatTableComponent
|
|
18
66
|
]
|
|
19
67
|
}]
|
|
20
68
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWF1ci1tYXQtdGFibGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1ci1tYXQtdGFibGUvc3JjL2xpYi9uZ3gtYXVyLW1hdC10YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBVSxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQzs7QUF5QjdGLE1BQU0sT0FBTyxvQkFBb0I7O2tIQUFwQixvQkFBb0I7bUhBQXBCLG9CQUFvQixpQkFwQjdCLHVCQUF1QjtRQUN2QixzQkFBc0IsYUFHdEIsYUFBYTtRQUNiLHVCQUF1QjtRQUN2QixhQUFhO1FBQ2IsY0FBYztRQUNkLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsY0FBYztRQUNkLGFBQWE7UUFDYixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGtCQUFrQixhQUdsQix1QkFBdUI7bUhBR2Qsb0JBQW9CLFlBakJ0QjtZQUNQLGFBQWE7WUFDYix1QkFBdUI7WUFDdkIsYUFBYTtZQUNiLGNBQWM7WUFDZCxrQkFBa0I7WUFDbEIsZUFBZTtZQUNmLGNBQWM7WUFDZCxhQUFhO1lBQ2IsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixrQkFBa0I7U0FDbkI7NEZBS1Usb0JBQW9CO2tCQXRCaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osdUJBQXVCO3dCQUN2QixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxhQUFhO3dCQUNiLHVCQUF1Qjt3QkFDdkIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLHVCQUF1QjtxQkFDeEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Tmd4QXVyTWF0VGFibGVDb21wb25lbnR9IGZyb20gJy4vbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7QnJvd3NlckFuaW1hdGlvbnNNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7QnJvd3Nlck1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7TWF0SWNvbk1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7TWF0VGFibGVNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90YWJsZVwiO1xuaW1wb3J0IHtNYXRQYWdpbmF0b3JNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3JcIjtcbmltcG9ydCB7TWF0QnV0dG9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7TWF0U29ydCwgTWF0U29ydE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NvcnRcIjtcbmltcG9ydCB7TWF0VG9vbHRpcE1vZHVsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBcIjtcbmltcG9ydCB7TWF0Q2hlY2tib3hNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XG5pbXBvcnQge0RhdGFQcm9wZXJ0eUdldHRlclBpcGV9IGZyb20gXCIuL2RhdGEtcHJvcGVydHktZ2V0dGVyLXBpcGUvZGF0YS1wcm9wZXJ0eS1nZXR0ZXIucGlwZVwiO1xuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIE5neEF1ck1hdFRhYmxlQ29tcG9uZW50LFxuICAgIERhdGFQcm9wZXJ0eUdldHRlclBpcGVcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIEJyb3dzZXJNb2R1bGUsXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUYWJsZU1vZHVsZSxcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE5neEF1ck1hdFRhYmxlQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTmd4QXVyTWF0VGFibGVNb2R1bGUge1xufVxuIl19
|
package/esm2015/public-api.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Public API Surface of ngx-aur-mat-table
|
|
3
3
|
*/
|
|
4
|
-
export * from './lib/ngx-aur-mat-table.service';
|
|
5
4
|
export * from './lib/ngx-aur-mat-table.component';
|
|
6
5
|
export * from './lib/ngx-aur-mat-table.module';
|
|
7
|
-
|
|
6
|
+
export * from './lib/data-property-getter-pipe/data-property-getter.pipe';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1hdXItbWF0LXRhYmxlL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsMkRBQTJELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5neC1hdXItbWF0LXRhYmxlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmd4LWF1ci1tYXQtdGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL25neC1hdXItbWF0LXRhYmxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRhLXByb3BlcnR5LWdldHRlci1waXBlL2RhdGEtcHJvcGVydHktZ2V0dGVyLnBpcGUnO1xuIl19
|
|
@@ -1,54 +1,251 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { Pipe, EventEmitter, Component, ViewChild, Input, Output, NgModule } from '@angular/core';
|
|
3
|
+
import * as i6 from '@angular/material/sort';
|
|
4
|
+
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
5
|
+
import * as i2 from '@angular/material/table';
|
|
6
|
+
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
7
|
+
import * as i7 from '@angular/material/paginator';
|
|
8
|
+
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
9
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
10
|
+
import * as i1 from '@angular/material/form-field';
|
|
11
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
12
|
+
import * as i3 from '@angular/material/checkbox';
|
|
13
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
14
|
+
import * as i4 from '@angular/material/button';
|
|
15
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
16
|
+
import * as i5 from '@angular/material/icon';
|
|
17
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
18
|
+
import * as i8 from '@angular/common';
|
|
19
|
+
import * as i9 from '@angular/material/input';
|
|
20
|
+
import { MatInputModule } from '@angular/material/input';
|
|
21
|
+
import * as i10 from '@angular/material/tooltip';
|
|
22
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
23
|
+
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
24
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
3
25
|
|
|
4
|
-
class
|
|
5
|
-
constructor() {
|
|
26
|
+
class SelectionProvider {
|
|
27
|
+
constructor(ctx, columns, tableDataSource) {
|
|
28
|
+
this.COLUMN_NAME = 'tbl_selects';
|
|
29
|
+
this.context = ctx;
|
|
30
|
+
this.selection = new SelectionModel(ctx.multiple, []);
|
|
31
|
+
this.tableDataSource = tableDataSource;
|
|
32
|
+
this.initCheckboxColumn(columns);
|
|
33
|
+
}
|
|
34
|
+
initCheckboxColumn(columns) {
|
|
35
|
+
if (this.context.position === 'start') {
|
|
36
|
+
columns.unshift(this.COLUMN_NAME);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
columns.push(this.COLUMN_NAME);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
bind(selected, onSelect, onDeselect) {
|
|
43
|
+
this.selection.changed
|
|
44
|
+
.subscribe(event => {
|
|
45
|
+
if (event.added) {
|
|
46
|
+
onSelect.emit(event.added);
|
|
47
|
+
}
|
|
48
|
+
if (event.removed) {
|
|
49
|
+
onDeselect.emit(event.removed);
|
|
50
|
+
}
|
|
51
|
+
selected.emit(this.selection.selected);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
masterToggle() {
|
|
55
|
+
this.isAllSelected() ?
|
|
56
|
+
this.selection.clear() :
|
|
57
|
+
this.tableDataSource.data.forEach(row => this.selection.select(row));
|
|
58
|
+
}
|
|
59
|
+
isAllSelected() {
|
|
60
|
+
const numSelected = this.selection.selected.length;
|
|
61
|
+
const numRows = this.tableDataSource.data.length;
|
|
62
|
+
return numSelected === numRows;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
class RowActionProvider {
|
|
67
|
+
constructor(ctx, columns) {
|
|
68
|
+
this.COLUMN_NAME = 'tbl_actions';
|
|
69
|
+
this.context = ctx;
|
|
70
|
+
if (ctx.position === 'start') {
|
|
71
|
+
columns.unshift(this.COLUMN_NAME);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
columns.push(this.COLUMN_NAME);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
class DataPropertyGetterPipe {
|
|
80
|
+
transform(object, keyName, ...args) {
|
|
81
|
+
return object[keyName];
|
|
82
|
+
}
|
|
6
83
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type:
|
|
10
|
-
type:
|
|
84
|
+
DataPropertyGetterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataPropertyGetterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
85
|
+
DataPropertyGetterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataPropertyGetterPipe, name: "dataPropertyGetter" });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DataPropertyGetterPipe, decorators: [{
|
|
87
|
+
type: Pipe,
|
|
11
88
|
args: [{
|
|
12
|
-
|
|
89
|
+
name: 'dataPropertyGetter'
|
|
13
90
|
}]
|
|
14
|
-
}]
|
|
91
|
+
}] });
|
|
15
92
|
|
|
16
93
|
class NgxAurMatTableComponent {
|
|
17
|
-
constructor() {
|
|
94
|
+
constructor() {
|
|
95
|
+
this.tableDataSource = new MatTableDataSource([]);
|
|
96
|
+
this.displayedColumns = [];
|
|
97
|
+
this.isPageable = false;
|
|
98
|
+
this.isSortable = false;
|
|
99
|
+
this.isFilterable = false;
|
|
100
|
+
this.tableColumns = [];
|
|
101
|
+
this.paginationSizes = [5, 10, 15];
|
|
102
|
+
this.defaultPageSize = this.paginationSizes[1];
|
|
103
|
+
this.sort = new EventEmitter();
|
|
104
|
+
this.onRowAction = new EventEmitter();
|
|
105
|
+
this.selected = new EventEmitter();
|
|
106
|
+
this.onSelect = new EventEmitter();
|
|
107
|
+
this.onDeselect = new EventEmitter();
|
|
108
|
+
this.onRowClick = new EventEmitter();
|
|
109
|
+
}
|
|
110
|
+
// this property needs to have a setter, to dynamically get changes from parent component
|
|
111
|
+
set tableData(data) {
|
|
112
|
+
this.setTableDataSource(data);
|
|
113
|
+
}
|
|
18
114
|
ngOnInit() {
|
|
115
|
+
this.displayedColumns = this.tableColumns.map((tableColumn) => tableColumn.name);
|
|
116
|
+
if (this.rowActionable) {
|
|
117
|
+
this.rowActionsProvider = new RowActionProvider(this.rowActionable, this.displayedColumns);
|
|
118
|
+
}
|
|
119
|
+
else if (this.selectable) {
|
|
120
|
+
this.selectionProvider = new SelectionProvider(this.selectable, this.displayedColumns, this.tableDataSource);
|
|
121
|
+
this.selectionProvider.bind(this.selected, this.onSelect, this.onDeselect);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// we need this, in order to make pagination work with *ngIf
|
|
125
|
+
ngAfterViewInit() {
|
|
126
|
+
this.tableDataSource.paginator = this.matPaginator;
|
|
127
|
+
}
|
|
128
|
+
setTableDataSource(data) {
|
|
129
|
+
this.tableDataSource = new MatTableDataSource(data);
|
|
130
|
+
this.tableDataSource.paginator = this.matPaginator;
|
|
131
|
+
this.tableDataSource.sort = this.matSort;
|
|
132
|
+
}
|
|
133
|
+
applyFilter(event) {
|
|
134
|
+
const filterValue = event.target.value;
|
|
135
|
+
this.tableDataSource.filter = filterValue.trim().toLowerCase();
|
|
136
|
+
}
|
|
137
|
+
sortTable(sortParameters) {
|
|
138
|
+
// defining name of data property, to sort by, instead of column name
|
|
139
|
+
// @ts-ignore
|
|
140
|
+
sortParameters.active = this.tableColumns.find(column => column.name === sortParameters.active).dataKey;
|
|
141
|
+
this.sort.emit(sortParameters);
|
|
142
|
+
}
|
|
143
|
+
emitRowAction(action, row, $event) {
|
|
144
|
+
$event.stopPropagation();
|
|
145
|
+
this.onRowAction.emit({ action, value: row });
|
|
146
|
+
}
|
|
147
|
+
masterToggle() {
|
|
148
|
+
this.selectionProvider.masterToggle();
|
|
149
|
+
}
|
|
150
|
+
isAllSelected() {
|
|
151
|
+
return this.selectionProvider.isAllSelected();
|
|
19
152
|
}
|
|
20
153
|
}
|
|
21
154
|
NgxAurMatTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
22
|
-
NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", ngImport: i0, template:
|
|
23
|
-
<p>
|
|
24
|
-
ngx-aur-mat-table works!
|
|
25
|
-
</p>
|
|
26
|
-
`, isInline: true });
|
|
155
|
+
NgxAurMatTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NgxAurMatTableComponent, selector: "aur-mat-table", inputs: { isPageable: "isPageable", isSortable: "isSortable", isFilterable: "isFilterable", tableColumns: "tableColumns", paginationSizes: "paginationSizes", defaultPageSize: "defaultPageSize", rowActionable: "rowActionable", selectable: "selectable", tableData: "tableData" }, outputs: { sort: "sort", onRowAction: "onRowAction", selected: "selected", onSelect: "onSelect", onDeselect: "onDeselect", onRowClick: "onRowClick" }, viewQueries: [{ propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "matSort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<ng-container>\r\n\r\n <!-- Filter -->\r\n <ng-container *ngIf=\"isFilterable\">\r\n <mat-form-field>\r\n <mat-label>Filter</mat-label>\r\n <input matInput (keyup)=\"applyFilter($event)\" placeholder=\"filter\">\r\n </mat-form-field>\r\n </ng-container>\r\n\r\n <!-- Table -->\r\n <table mat-table [dataSource]=\"tableDataSource\" matSort (matSortChange)=\"sortTable($event)\">\r\n\r\n <!-- selection-column-->\r\n <ng-container [matColumnDef]=\"selectionProvider.COLUMN_NAME\" *ngIf=\"selectionProvider\">\r\n <th mat-header-cell *matHeaderCellDef>\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"selectionProvider.selection.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"selectionProvider.selection.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </th>\r\n <td mat-cell *matCellDef=\"let row\">\r\n <mat-checkbox (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? selectionProvider.selection.toggle(row) : null\"\r\n [checked]=\"selectionProvider.selection.isSelected(row)\">\r\n </mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- action column -->\r\n <ng-container *ngIf=\"rowActionsProvider\" [matColumnDef]=\"rowActionsProvider.COLUMN_NAME\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button mat-icon-button\r\n (click)=\"emitRowAction(action.action, element, $event)\"\r\n [matTooltip]=\"action.tooltip? action.tooltip: ''\"\r\n *ngFor=\"let action of rowActionable.actions\">\r\n <mat-icon [style.color]=\"action.color\">\r\n {{action.icon}}\r\n </mat-icon>\r\n </button>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container *ngFor=\"let tableColumn of tableColumns\" [matColumnDef]=\"tableColumn.name\">\r\n\r\n <!-- if sortable column header -->\r\n <ng-container *ngIf=\"tableColumn.isSortable; else notSortable\">\r\n <th mat-header-cell *matHeaderCellDef [mat-sort-header]=\"tableColumn.name\"\r\n [arrowPosition]=\"tableColumn.position === 'right' ? 'before' : 'after'\">\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-container>\r\n <!-- else not sortable -->\r\n <ng-template #notSortable>\r\n <th mat-header-cell *matHeaderCellDef\r\n [class.text-right]=\"tableColumn.position == 'right'\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"headerValue\"></ng-container>\r\n </th>\r\n </ng-template>\r\n\r\n <!-- header value-->\r\n <ng-template #headerValue>\r\n <mat-icon *ngIf=\"tableColumn.headerIcon\"\r\n [matTooltip]=\"tableColumn.headerTooltip? tableColumn.headerTooltip: ''\"\r\n [style.color]=\"tableColumn.headerIconColor\">{{tableColumn.headerIcon}}</mat-icon>\r\n <span *ngIf=\"!tableColumn.headerIcon || tableColumn.headerIconWithText\"\r\n [matTooltip]=\"tableColumn.headerTooltip? tableColumn.headerTooltip: ''\"\r\n >{{tableColumn.name}}</span>\r\n </ng-template>\r\n\r\n <!-- column data -->\r\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"tableColumn.position == 'right'\">\r\n <span *ngIf=\"!tableColumn.valueIcon\">{{element | dataPropertyGetter: tableColumn.dataKey}}</span>\r\n <mat-icon *ngIf=\"tableColumn.valueIcon\"\r\n [style.color]=\"tableColumn.valueIconColor? tableColumn.valueIconColor(element): null\"\r\n >{{tableColumn.valueIcon}}</mat-icon>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row (click)=\"onRowAction.emit(row)\" *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n\r\n <!-- Pagination -->\r\n <mat-paginator *ngIf=\"isPageable\"\r\n [pageSizeOptions]=\"paginationSizes\"\r\n [pageSize]=\"defaultPageSize\"\r\n showFirstLastButtons>\r\n </mat-paginator>\r\n</ng-container>\r\n", styles: ["table{width:100%}th,td{padding:10px!important}mat-form-field{width:40%}.text-right{text-align:right!important}\n"], components: [{ type: i1.MatFormField, selector: "mat-form-field", inputs: ["color", "floatLabel", "appearance", "hideRequiredMarker", "hintLabel"], exportAs: ["matFormField"] }, { type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex", "aria-label", "aria-labelledby", "id", "labelPosition", "name", "required", "checked", "disabled", "indeterminate", "aria-describedby", "value"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "arrowPosition", "sortActionDescription", "disableClear", "mat-sort-header", "start"], exportAs: ["matSortHeader"] }, { type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { type: i7.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatLabel, selector: "mat-label" }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["id", "disabled", "required", "type", "value", "readonly", "placeholder", "errorStateMatcher", "aria-describedby"], exportAs: ["matInput"] }, { type: i6.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortActive"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { type: i2.MatCellDef, selector: "[matCellDef]" }, { type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }], pipes: { "dataPropertyGetter": DataPropertyGetterPipe } });
|
|
27
156
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableComponent, decorators: [{
|
|
28
157
|
type: Component,
|
|
29
158
|
args: [{
|
|
30
159
|
selector: 'aur-mat-table',
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
ngx-aur-mat-table works!
|
|
34
|
-
</p>
|
|
35
|
-
`,
|
|
36
|
-
styles: []
|
|
160
|
+
templateUrl: './ngx-aur-mat-table.component.html',
|
|
161
|
+
styleUrls: ['./ngx-aur-mat-table.component.scss']
|
|
37
162
|
}]
|
|
38
|
-
}], ctorParameters: function () { return []; }
|
|
163
|
+
}], ctorParameters: function () { return []; }, propDecorators: { matPaginator: [{
|
|
164
|
+
type: ViewChild,
|
|
165
|
+
args: [MatPaginator, { static: false }]
|
|
166
|
+
}], matSort: [{
|
|
167
|
+
type: ViewChild,
|
|
168
|
+
args: [MatSort, { static: true }]
|
|
169
|
+
}], isPageable: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], isSortable: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], isFilterable: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], tableColumns: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], paginationSizes: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], defaultPageSize: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], sort: [{
|
|
182
|
+
type: Output
|
|
183
|
+
}], rowActionable: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], onRowAction: [{
|
|
186
|
+
type: Output
|
|
187
|
+
}], selectable: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], selected: [{
|
|
190
|
+
type: Output
|
|
191
|
+
}], onSelect: [{
|
|
192
|
+
type: Output
|
|
193
|
+
}], onDeselect: [{
|
|
194
|
+
type: Output
|
|
195
|
+
}], onRowClick: [{
|
|
196
|
+
type: Output
|
|
197
|
+
}], tableData: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}] } });
|
|
39
200
|
|
|
40
201
|
class NgxAurMatTableModule {
|
|
41
202
|
}
|
|
42
203
|
NgxAurMatTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
43
|
-
NgxAurMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, declarations: [NgxAurMatTableComponent
|
|
44
|
-
|
|
204
|
+
NgxAurMatTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, declarations: [NgxAurMatTableComponent,
|
|
205
|
+
DataPropertyGetterPipe], imports: [BrowserModule,
|
|
206
|
+
BrowserAnimationsModule,
|
|
207
|
+
MatIconModule,
|
|
208
|
+
MatTableModule,
|
|
209
|
+
MatPaginatorModule,
|
|
210
|
+
MatButtonModule,
|
|
211
|
+
MatInputModule,
|
|
212
|
+
MatSortModule,
|
|
213
|
+
MatTooltipModule,
|
|
214
|
+
MatCheckboxModule,
|
|
215
|
+
MatFormFieldModule], exports: [NgxAurMatTableComponent] });
|
|
216
|
+
NgxAurMatTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, imports: [[
|
|
217
|
+
BrowserModule,
|
|
218
|
+
BrowserAnimationsModule,
|
|
219
|
+
MatIconModule,
|
|
220
|
+
MatTableModule,
|
|
221
|
+
MatPaginatorModule,
|
|
222
|
+
MatButtonModule,
|
|
223
|
+
MatInputModule,
|
|
224
|
+
MatSortModule,
|
|
225
|
+
MatTooltipModule,
|
|
226
|
+
MatCheckboxModule,
|
|
227
|
+
MatFormFieldModule
|
|
228
|
+
]] });
|
|
45
229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NgxAurMatTableModule, decorators: [{
|
|
46
230
|
type: NgModule,
|
|
47
231
|
args: [{
|
|
48
232
|
declarations: [
|
|
49
|
-
NgxAurMatTableComponent
|
|
233
|
+
NgxAurMatTableComponent,
|
|
234
|
+
DataPropertyGetterPipe
|
|
235
|
+
],
|
|
236
|
+
imports: [
|
|
237
|
+
BrowserModule,
|
|
238
|
+
BrowserAnimationsModule,
|
|
239
|
+
MatIconModule,
|
|
240
|
+
MatTableModule,
|
|
241
|
+
MatPaginatorModule,
|
|
242
|
+
MatButtonModule,
|
|
243
|
+
MatInputModule,
|
|
244
|
+
MatSortModule,
|
|
245
|
+
MatTooltipModule,
|
|
246
|
+
MatCheckboxModule,
|
|
247
|
+
MatFormFieldModule
|
|
50
248
|
],
|
|
51
|
-
imports: [],
|
|
52
249
|
exports: [
|
|
53
250
|
NgxAurMatTableComponent
|
|
54
251
|
]
|
|
@@ -63,5 +260,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
63
260
|
* Generated bundle index. Do not edit.
|
|
64
261
|
*/
|
|
65
262
|
|
|
66
|
-
export { NgxAurMatTableComponent, NgxAurMatTableModule
|
|
263
|
+
export { DataPropertyGetterPipe, NgxAurMatTableComponent, NgxAurMatTableModule };
|
|
67
264
|
//# sourceMappingURL=ngx-aur-mat-table.js.map
|