@enigmatry/entry-components 15.2.1-preview.1 → 16.0.0-preview
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/common/directives/auto-disable-button.directive.d.ts +1 -1
- package/dialog/dialogs/entry-dialog.component.d.ts +1 -1
- package/{esm2020 → esm2022}/button/entry-button.directive.mjs +4 -4
- package/{esm2020 → esm2022}/button/entry-button.module.mjs +7 -7
- package/{esm2020 → esm2022}/common/common.module.mjs +7 -7
- package/{esm2020 → esm2022}/common/date-time/entry-date-time-adapter.mjs +4 -4
- package/{esm2020 → esm2022}/common/directives/auto-disable-button.directive.mjs +4 -4
- package/{esm2020 → esm2022}/common/directives/scroll-to-invalid-control.directive.mjs +4 -4
- package/{esm2020 → esm2022}/common/event-plugins/debounce.plugin.mjs +4 -4
- package/{esm2020 → esm2022}/common/event-plugins/throttle.plugin.mjs +4 -4
- package/{esm2020 → esm2022}/common/interceptors/accept-language.interceptor.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/dialogs/alert/entry-alert-dialog.component.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/dialogs/confirm/entry-confirm-dialog.component.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/dialogs/entry-dialog.component.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/dialogs/error/entry-error-dialog.component.mjs +4 -4
- package/{esm2020 → esm2022}/dialog/entry-dialog.module.mjs +19 -19
- package/esm2022/dialog/entry-dialog.service.mjs +86 -0
- package/esm2022/file-input/entry-file-input.component.mjs +201 -0
- package/{esm2020 → esm2022}/file-input/entry-file-input.module.mjs +13 -13
- package/{esm2020 → esm2022}/modules/entry-components.module.mjs +21 -21
- package/{esm2020 → esm2022}/permissions/permission.directive.mjs +4 -4
- package/{esm2020 → esm2022}/permissions/permission.module.mjs +7 -7
- package/{esm2020 → esm2022}/permissions/permission.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/search-filter/autocomplete/autocomplete-search-filter.component.mjs +4 -4
- package/esm2022/search-filter/date/date-search-filter.component.mjs +19 -0
- package/{esm2020 → esm2022}/search-filter/date-time/date-time-search-filter.component.mjs +7 -7
- package/{esm2020 → esm2022}/search-filter/entry-search-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/search-filter/entry-search-filter.module.mjs +28 -28
- package/{esm2020 → esm2022}/search-filter/select/select-search-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/search-filter/text/text-search-filter.component.mjs +4 -4
- package/{esm2020 → esm2022}/spinner/entry-spinner/spinner.component.mjs +10 -10
- package/{esm2020 → esm2022}/spinner/spinner-overlay-container.mjs +4 -4
- package/{esm2020 → esm2022}/spinner/spinner.module.mjs +9 -9
- package/{esm2020 → esm2022}/table/components/entry-cell/entry-cell.component.mjs +4 -4
- package/esm2022/table/components/entry-cell-context-menu/entry-cell-context-menu.component.mjs +33 -0
- package/{esm2020 → esm2022}/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.mjs +4 -4
- package/esm2022/table/components/entry-table/entry-table.component.mjs +248 -0
- package/{esm2020 → esm2022}/table/entry-table.module.mjs +33 -33
- package/{esm2020 → esm2022}/table/interfaces/entry-table-config.mjs +1 -2
- package/{esm2020 → esm2022}/validation/entry-display-control-validation.directive.mjs +4 -4
- package/{esm2020 → esm2022}/validation/entry-form-errors.component.mjs +6 -6
- package/{esm2020 → esm2022}/validation/entry-validation.module.mjs +13 -13
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-button.mjs +9 -9
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-button.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-common.mjs +24 -24
- package/{fesm2015 → fesm2022}/enigmatry-entry-components-common.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-dialog.mjs +33 -33
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-dialog.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-file-input.mjs +21 -17
- package/fesm2022/enigmatry-entry-components-file-input.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-permissions.mjs +12 -12
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-permissions.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-search-filter.mjs +387 -0
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-search-filter.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-spinner.mjs +20 -20
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-spinner.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-table.mjs +45 -46
- package/fesm2022/enigmatry-entry-components-table.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-validation.mjs +20 -20
- package/{fesm2020 → fesm2022}/enigmatry-entry-components-validation.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/enigmatry-entry-components.mjs +20 -20
- package/{fesm2020 → fesm2022}/enigmatry-entry-components.mjs.map +1 -1
- package/file-input/entry-file-input.component.d.ts +1 -1
- package/package.json +39 -63
- package/permissions/permission.directive.d.ts +1 -1
- package/search-filter/autocomplete/autocomplete-search-filter.component.d.ts +1 -1
- package/search-filter/date/date-search-filter.component.d.ts +1 -1
- package/search-filter/date-time/date-time-search-filter.component.d.ts +1 -1
- package/search-filter/entry-search-filter.component.d.ts +1 -1
- package/search-filter/select/select-search-filter.component.d.ts +1 -1
- package/search-filter/text/text-search-filter.component.d.ts +1 -1
- package/spinner/entry-spinner/spinner.component.d.ts +1 -1
- package/table/components/entry-cell/entry-cell.component.d.ts +1 -1
- package/table/components/entry-cell-context-menu/entry-cell-context-menu.component.d.ts +1 -1
- package/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.d.ts +1 -1
- package/table/components/entry-table/entry-table.component.d.ts +1 -1
- package/validation/entry-display-control-validation.directive.d.ts +1 -1
- package/validation/entry-form-errors.component.d.ts +1 -1
- package/esm2020/dialog/entry-dialog.service.mjs +0 -86
- package/esm2020/file-input/entry-file-input.component.mjs +0 -197
- package/esm2020/search-filter/date/date-search-filter.component.mjs +0 -19
- package/esm2020/table/components/entry-cell-context-menu/entry-cell-context-menu.component.mjs +0 -33
- package/esm2020/table/components/entry-table/entry-table.component.mjs +0 -248
- package/fesm2015/enigmatry-entry-components-button.mjs +0 -114
- package/fesm2015/enigmatry-entry-components-button.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components-common.mjs +0 -405
- package/fesm2015/enigmatry-entry-components-dialog.mjs +0 -333
- package/fesm2015/enigmatry-entry-components-dialog.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components-file-input.mjs +0 -237
- package/fesm2015/enigmatry-entry-components-file-input.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components-permissions.mjs +0 -98
- package/fesm2015/enigmatry-entry-components-permissions.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components-search-filter.mjs +0 -394
- package/fesm2015/enigmatry-entry-components-search-filter.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components-spinner.mjs +0 -156
- package/fesm2015/enigmatry-entry-components-spinner.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components-table.mjs +0 -462
- package/fesm2015/enigmatry-entry-components-table.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components-validation.mjs +0 -219
- package/fesm2015/enigmatry-entry-components-validation.mjs.map +0 -1
- package/fesm2015/enigmatry-entry-components.mjs +0 -87
- package/fesm2015/enigmatry-entry-components.mjs.map +0 -1
- package/fesm2020/enigmatry-entry-components-common.mjs.map +0 -1
- package/fesm2020/enigmatry-entry-components-file-input.mjs.map +0 -1
- package/fesm2020/enigmatry-entry-components-search-filter.mjs +0 -387
- package/fesm2020/enigmatry-entry-components-table.mjs.map +0 -1
- /package/{esm2020 → esm2022}/button/enigmatry-entry-components-button.mjs +0 -0
- /package/{esm2020 → esm2022}/button/entry-button-config.mjs +0 -0
- /package/{esm2020 → esm2022}/button/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/common/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/common/date-time/entry-date-time.mjs +0 -0
- /package/{esm2020 → esm2022}/common/date-time/index.mjs +0 -0
- /package/{esm2020 → esm2022}/common/directives/index.mjs +0 -0
- /package/{esm2020 → esm2022}/common/enigmatry-entry-components-common.mjs +0 -0
- /package/{esm2020 → esm2022}/common/event-plugins/abstract.plugin.mjs +0 -0
- /package/{esm2020 → esm2022}/common/event-plugins/index.mjs +0 -0
- /package/{esm2020 → esm2022}/common/interceptors/index.mjs +0 -0
- /package/{esm2020 → esm2022}/common/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/common/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/common/utils/provide-config.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/dialogs/alert/entry-alert-dialog-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/dialogs/confirm/entry-confirm-dialog-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/dialogs/error/entry-error-dialog-data.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/enigmatry-entry-components-dialog.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/entry-dialog-buttons-alignment.type.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/entry-dialog-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/dialog/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/enigmatry-entry-components.mjs +0 -0
- /package/{esm2020 → esm2022}/file-input/enigmatry-entry-components-file-input.mjs +0 -0
- /package/{esm2020 → esm2022}/file-input/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/enigmatry-entry-components-permissions.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/permission-type.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/permission.guard.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/permission.service.mjs +0 -0
- /package/{esm2020 → esm2022}/permissions/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/autocomplete/autocomplete-search-filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/control-type.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/date/date-search-filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/date-time/date-time-search-filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/enigmatry-entry-components-search-filter.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/search-filter-base.model.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/search-filter-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/search-filter-params.type.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/select/select-search-filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/select-option.model.mjs +0 -0
- /package/{esm2020 → esm2022}/search-filter/text/text-search-filter.model.mjs +0 -0
- /package/{esm2020 → esm2022}/spinner/enigmatry-entry-components-spinner.mjs +0 -0
- /package/{esm2020 → esm2022}/spinner/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/table/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/table/enigmatry-entry-components-table.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/cell-template.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/column-def.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/column-sort-prop.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/column-type-parameter.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/column-type.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/context-menu-item.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/index.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/paged-query.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/pagination.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/row-class-formatter.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/row-context-menu-formatter.mjs +0 -0
- /package/{esm2020 → esm2022}/table/interfaces/row-selection-formatter.mjs +0 -0
- /package/{esm2020 → esm2022}/table/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/validation/enigmatry-entry-components-validation.mjs +0 -0
- /package/{esm2020 → esm2022}/validation/entry-validation-config.model.mjs +0 -0
- /package/{esm2020 → esm2022}/validation/entry-validation.mjs +0 -0
- /package/{esm2020 → esm2022}/validation/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/validation/validation-problem-details.interface.mjs +0 -0
|
@@ -1,462 +0,0 @@
|
|
|
1
|
-
import * as i4$1 from '@angular/material/paginator';
|
|
2
|
-
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
3
|
-
export { PageEvent } from '@angular/material/paginator';
|
|
4
|
-
import * as i0 from '@angular/core';
|
|
5
|
-
import { InjectionToken, Component, ChangeDetectionStrategy, Inject, Input, EventEmitter, Output, TemplateRef, HostBinding, NgModule } from '@angular/core';
|
|
6
|
-
import { SelectionModel } from '@angular/cdk/collections';
|
|
7
|
-
import * as i2$1 from '@angular/material/table';
|
|
8
|
-
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
9
|
-
import * as i1 from '@angular/common';
|
|
10
|
-
import { CommonModule } from '@angular/common';
|
|
11
|
-
import * as i3$1 from '@angular/material/sort';
|
|
12
|
-
import { MatSortModule } from '@angular/material/sort';
|
|
13
|
-
import * as i5 from '@angular/material/checkbox';
|
|
14
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
15
|
-
import * as i6 from '@angular/material/radio';
|
|
16
|
-
import { MatRadioModule } from '@angular/material/radio';
|
|
17
|
-
import * as i2 from '@angular/material/icon';
|
|
18
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
19
|
-
import * as i3 from '@angular/material/menu';
|
|
20
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
21
|
-
import * as i4 from '@angular/material/button';
|
|
22
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
23
|
-
import { FormsModule } from '@angular/forms';
|
|
24
|
-
|
|
25
|
-
class EntryTableConfig {
|
|
26
|
-
constructor() {
|
|
27
|
-
this.showPaginator = true;
|
|
28
|
-
this.showFirstLastButtons = false;
|
|
29
|
-
this.pageSize = 20;
|
|
30
|
-
this.pageSizeOptions = [20, 50, 100];
|
|
31
|
-
this.hidePageSize = false;
|
|
32
|
-
this.noResultsText = 'No results found';
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
;
|
|
36
|
-
const ENTRY_TABLE_CONFIG = new InjectionToken('ENTRY_TABLE_CONFIG', {
|
|
37
|
-
providedIn: 'root',
|
|
38
|
-
factory: () => new EntryTableConfig()
|
|
39
|
-
});
|
|
40
|
-
const DEFAULT_PERCENTAGE_MULTIPLIER = new InjectionToken('');
|
|
41
|
-
|
|
42
|
-
const defaultPageSize = 20;
|
|
43
|
-
const defaultPageNumber = 1;
|
|
44
|
-
class PagedQuery {
|
|
45
|
-
constructor() {
|
|
46
|
-
this.pageNumber = defaultPageNumber;
|
|
47
|
-
this.pageSize = defaultPageSize;
|
|
48
|
-
}
|
|
49
|
-
sortChange(sort) {
|
|
50
|
-
if (sort.active) {
|
|
51
|
-
this.sortBy = sort.active;
|
|
52
|
-
this.sortDirection = this.getValueIfNotEmpty(sort.direction);
|
|
53
|
-
this.pageNumber = defaultPageNumber;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
pageChange(page) {
|
|
57
|
-
this.pageNumber = page.pageIndex + 1;
|
|
58
|
-
this.pageSize = page.pageSize;
|
|
59
|
-
}
|
|
60
|
-
applyRouteChanges(queryParams) {
|
|
61
|
-
var _a, _b;
|
|
62
|
-
this.pageNumber = queryParams.pageNumber ? Number(queryParams.pageNumber) : defaultPageNumber;
|
|
63
|
-
this.pageSize = queryParams.pageSize ? Number(queryParams.pageSize) : this.pageSize;
|
|
64
|
-
this.sortBy = this.getValueIfNotEmpty((_a = queryParams.sortBy) !== null && _a !== void 0 ? _a : this.sortBy);
|
|
65
|
-
this.sortDirection = this.getValueIfNotEmpty((_b = queryParams.sortDirection) !== null && _b !== void 0 ? _b : this.sortDirection);
|
|
66
|
-
}
|
|
67
|
-
getRouteQueryParams() {
|
|
68
|
-
return {
|
|
69
|
-
pageNumber: this.pageNumber,
|
|
70
|
-
pageSize: this.pageSize,
|
|
71
|
-
sortBy: this.sortBy,
|
|
72
|
-
sortDirection: this.sortDirection
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
getValueIfNotEmpty(value) {
|
|
76
|
-
return value ? value : undefined;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
class EntryCellFormattedValueComponent {
|
|
81
|
-
constructor(defaultPercentageMultiplier) {
|
|
82
|
-
this.defaultPercentageMultiplier = defaultPercentageMultiplier;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
EntryCellFormattedValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryCellFormattedValueComponent, deps: [{ token: DEFAULT_PERCENTAGE_MULTIPLIER }], target: i0.ɵɵFactoryTarget.Component });
|
|
86
|
-
EntryCellFormattedValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EntryCellFormattedValueComponent, selector: "entry-cell-formatted-value", inputs: { value: "value", type: "type", typeParameter: "typeParameter" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Boolean -->\n <ng-container *ngSwitchCase=\"'boolean'\">\n {{value ? '\\u2713' : ''}}\n </ng-container>\n <!-- Number -->\n <ng-container *ngSwitchCase=\"'number'\">\n {{value | number: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Currency -->\n <ng-container *ngSwitchCase=\"'currency'\">\n {{value | currency: typeParameter?.currencyCode : typeParameter?.display : typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Percent -->\n <ng-container *ngSwitchCase=\"'percent'\">\n {{+value * (typeParameter?.multiplier ?? defaultPercentageMultiplier) | percent: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Date -->\n <ng-container *ngSwitchCase=\"'date'\">\n {{value | date: typeParameter?.format : typeParameter?.timezone : typeParameter?.locale}}\n </ng-container>\n <!-- Link -->\n <ng-container *ngSwitchCase=\"'link'\">\n <a [href]=\"value\" target=\"_blank\">{{value}}</a>\n </ng-container>\n <!-- Default -->\n <ng-container *ngSwitchDefault>\n {{value}}\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.PercentPipe, name: "percent" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryCellFormattedValueComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{ selector: 'entry-cell-formatted-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Boolean -->\n <ng-container *ngSwitchCase=\"'boolean'\">\n {{value ? '\\u2713' : ''}}\n </ng-container>\n <!-- Number -->\n <ng-container *ngSwitchCase=\"'number'\">\n {{value | number: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Currency -->\n <ng-container *ngSwitchCase=\"'currency'\">\n {{value | currency: typeParameter?.currencyCode : typeParameter?.display : typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Percent -->\n <ng-container *ngSwitchCase=\"'percent'\">\n {{+value * (typeParameter?.multiplier ?? defaultPercentageMultiplier) | percent: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Date -->\n <ng-container *ngSwitchCase=\"'date'\">\n {{value | date: typeParameter?.format : typeParameter?.timezone : typeParameter?.locale}}\n </ng-container>\n <!-- Link -->\n <ng-container *ngSwitchCase=\"'link'\">\n <a [href]=\"value\" target=\"_blank\">{{value}}</a>\n </ng-container>\n <!-- Default -->\n <ng-container *ngSwitchDefault>\n {{value}}\n </ng-container>\n</ng-container>\n" }]
|
|
90
|
-
}], ctorParameters: function () {
|
|
91
|
-
return [{ type: undefined, decorators: [{
|
|
92
|
-
type: Inject,
|
|
93
|
-
args: [DEFAULT_PERCENTAGE_MULTIPLIER]
|
|
94
|
-
}] }];
|
|
95
|
-
}, propDecorators: { value: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], type: [{
|
|
98
|
-
type: Input
|
|
99
|
-
}], typeParameter: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}] } });
|
|
102
|
-
|
|
103
|
-
class EntryCellComponent {
|
|
104
|
-
get value() {
|
|
105
|
-
return this.getCellValue(this.rowData, this.colDef);
|
|
106
|
-
}
|
|
107
|
-
getCellValue(rowData, colDef) {
|
|
108
|
-
const keys = colDef.field ? colDef.field.split('.') : [];
|
|
109
|
-
return keys.reduce((data, key) => data && data[key], rowData);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
EntryCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
-
EntryCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EntryCellComponent, selector: "entry-cell", inputs: { rowData: "rowData", colDef: "colDef" }, ngImport: i0, template: "<entry-cell-formatted-value [value]=\"value\" [type]=\"colDef.type\" [typeParameter]=\"colDef.typeParameter\"></entry-cell-formatted-value>", dependencies: [{ kind: "component", type: EntryCellFormattedValueComponent, selector: "entry-cell-formatted-value", inputs: ["value", "type", "typeParameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryCellComponent, decorators: [{
|
|
115
|
-
type: Component,
|
|
116
|
-
args: [{ selector: 'entry-cell', changeDetection: ChangeDetectionStrategy.OnPush, template: "<entry-cell-formatted-value [value]=\"value\" [type]=\"colDef.type\" [typeParameter]=\"colDef.typeParameter\"></entry-cell-formatted-value>" }]
|
|
117
|
-
}], propDecorators: { rowData: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], colDef: [{
|
|
120
|
-
type: Input
|
|
121
|
-
}] } });
|
|
122
|
-
|
|
123
|
-
class EntryCellContextMenuComponent {
|
|
124
|
-
constructor() {
|
|
125
|
-
this.items = [];
|
|
126
|
-
this.selected = new EventEmitter();
|
|
127
|
-
this.menuItems = [];
|
|
128
|
-
}
|
|
129
|
-
ngOnInit() {
|
|
130
|
-
var _a;
|
|
131
|
-
this.menuItems = ((_a = this.rowMenuFormatter) === null || _a === void 0 ? void 0 : _a.items)
|
|
132
|
-
? this.rowMenuFormatter.items(this.rowData)
|
|
133
|
-
: this.items;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
EntryCellContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryCellContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
137
|
-
EntryCellContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EntryCellContextMenuComponent, selector: "entry-cell-context-menu", inputs: { items: "items", rowMenuFormatter: "rowMenuFormatter", rowData: "rowData" }, outputs: { selected: "selected" }, ngImport: i0, template: "<button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\">\n <button *ngFor=\"let item of menuItems\" mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\"\n class=\"context-menu-item\">\n <mat-icon class=\"icon\" *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <span class=\"description\">{{item.name}}</span>\n </button>\n</mat-menu>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryCellContextMenuComponent, decorators: [{
|
|
139
|
-
type: Component,
|
|
140
|
-
args: [{ selector: 'entry-cell-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\">\n <button *ngFor=\"let item of menuItems\" mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\"\n class=\"context-menu-item\">\n <mat-icon class=\"icon\" *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <span class=\"description\">{{item.name}}</span>\n </button>\n</mat-menu>" }]
|
|
141
|
-
}], propDecorators: { items: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], rowMenuFormatter: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], rowData: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], selected: [{
|
|
148
|
-
type: Output
|
|
149
|
-
}] } });
|
|
150
|
-
|
|
151
|
-
/* eslint-disable @typescript-eslint/member-ordering */
|
|
152
|
-
class EntryTableComponent {
|
|
153
|
-
get hasNoResult() {
|
|
154
|
-
return (!this.data || this._data.length === 0) && !this.loading;
|
|
155
|
-
}
|
|
156
|
-
constructor(_config, _elementRef, _changeDetectorRef) {
|
|
157
|
-
this._config = _config;
|
|
158
|
-
this._elementRef = _elementRef;
|
|
159
|
-
this._changeDetectorRef = _changeDetectorRef;
|
|
160
|
-
this.className = 'entry-table';
|
|
161
|
-
this.dataSource = new MatTableDataSource([]);
|
|
162
|
-
this.columns = [];
|
|
163
|
-
// Data
|
|
164
|
-
this._data = [];
|
|
165
|
-
this.data = [];
|
|
166
|
-
this.total = 0;
|
|
167
|
-
this.loading = false;
|
|
168
|
-
this.pageDisabled = false;
|
|
169
|
-
this.pageIndex = 0;
|
|
170
|
-
this.pageChange = new EventEmitter();
|
|
171
|
-
this.sortDisableClear = false;
|
|
172
|
-
this.sortDisabled = false;
|
|
173
|
-
this.sortStart = 'asc';
|
|
174
|
-
this.sortChange = new EventEmitter();
|
|
175
|
-
// Row
|
|
176
|
-
this.rowHover = false;
|
|
177
|
-
this.rowStriped = false;
|
|
178
|
-
this.rowFocusVisible = false;
|
|
179
|
-
this.rowClick = new EventEmitter();
|
|
180
|
-
// Row selection
|
|
181
|
-
this.multiSelectable = true;
|
|
182
|
-
this.rowSelection = new SelectionModel(true, []);
|
|
183
|
-
this.rowSelected = [];
|
|
184
|
-
this.rowSelectable = false;
|
|
185
|
-
this.showSelectAllCheckbox = true;
|
|
186
|
-
this.rowSelectionFormatter = {};
|
|
187
|
-
this.rowSelectionChange = new EventEmitter();
|
|
188
|
-
// Context menu
|
|
189
|
-
this.showContextMenu = false;
|
|
190
|
-
this.contextMenuItems = [];
|
|
191
|
-
this.contextMenuItemSelected = new EventEmitter();
|
|
192
|
-
this.selectionColumn = 'selection-column';
|
|
193
|
-
this.contextMenuColumn = 'context-menu-column';
|
|
194
|
-
}
|
|
195
|
-
detectChanges() {
|
|
196
|
-
this._changeDetectorRef.detectChanges();
|
|
197
|
-
}
|
|
198
|
-
isTemplateRef(obj) {
|
|
199
|
-
return obj instanceof TemplateRef;
|
|
200
|
-
}
|
|
201
|
-
getRowClassList(rowData, index) {
|
|
202
|
-
const classList = {
|
|
203
|
-
selected: this.rowSelection.isSelected(rowData),
|
|
204
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
205
|
-
'mat-row-odd': index % 2,
|
|
206
|
-
};
|
|
207
|
-
if (this.rowClassFormatter) {
|
|
208
|
-
for (const key of Object.keys(this.rowClassFormatter)) {
|
|
209
|
-
classList[key] = this.rowClassFormatter[key](rowData);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
return classList;
|
|
213
|
-
}
|
|
214
|
-
getColumnClassList(colDef) {
|
|
215
|
-
var _a, _b;
|
|
216
|
-
const customClasses = (_a = colDef.class) !== null && _a !== void 0 ? _a : '';
|
|
217
|
-
const columnType = (_b = colDef.type) !== null && _b !== void 0 ? _b : '';
|
|
218
|
-
const columnField = `cell-${this.convertToKebabCase(colDef.field)}`;
|
|
219
|
-
return `${customClasses} ${columnType} ${columnField}`;
|
|
220
|
-
}
|
|
221
|
-
ngOnChanges(changes) {
|
|
222
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
223
|
-
this.showPaginator = (_a = this.showPaginator) !== null && _a !== void 0 ? _a : this._config.showPaginator;
|
|
224
|
-
this.showFirstLastButtons = (_b = this.showFirstLastButtons) !== null && _b !== void 0 ? _b : this._config.showFirstLastButtons;
|
|
225
|
-
this.pageSizeOptions = (_c = this.pageSizeOptions) !== null && _c !== void 0 ? _c : this._config.pageSizeOptions;
|
|
226
|
-
this.hidePageSize = (_d = this.hidePageSize) !== null && _d !== void 0 ? _d : this._config.hidePageSize;
|
|
227
|
-
this.noResultText = (_e = this.noResultText) !== null && _e !== void 0 ? _e : this._config.noResultsText;
|
|
228
|
-
this.displayedColumns = this.columns.filter(item => !item.hide).map(item => item.field);
|
|
229
|
-
if (this.rowSelectable && !this.displayedColumns.includes(this.selectionColumn)) {
|
|
230
|
-
this.displayedColumns.unshift(this.selectionColumn);
|
|
231
|
-
}
|
|
232
|
-
if (this.showContextMenu && !this.displayedColumns.includes(this.contextMenuColumn)) {
|
|
233
|
-
this.displayedColumns.push(this.contextMenuColumn);
|
|
234
|
-
}
|
|
235
|
-
if (this.rowSelectable) {
|
|
236
|
-
this.rowSelection = new SelectionModel(this.multiSelectable, this.rowSelected);
|
|
237
|
-
}
|
|
238
|
-
if (!this.data) {
|
|
239
|
-
this.data = [];
|
|
240
|
-
}
|
|
241
|
-
if (Array.isArray(this.data)) {
|
|
242
|
-
this._data = this.data;
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
this._page = this.data;
|
|
246
|
-
this._data = (_f = this._page.items) !== null && _f !== void 0 ? _f : [];
|
|
247
|
-
this.total = (_g = this._page.totalCount) !== null && _g !== void 0 ? _g : 0;
|
|
248
|
-
this.pageSize = (_j = (_h = this._page.pageSize) !== null && _h !== void 0 ? _h : this.pageSize) !== null && _j !== void 0 ? _j : this._config.pageSize;
|
|
249
|
-
this.pageIndex = this._page.pageNumber ? this._page.pageNumber - 1 : this.pageIndex;
|
|
250
|
-
}
|
|
251
|
-
if (this.dataSource) {
|
|
252
|
-
this.dataSource.disconnect();
|
|
253
|
-
}
|
|
254
|
-
this.dataSource = new MatTableDataSource(this._data);
|
|
255
|
-
if (changes.data) {
|
|
256
|
-
this.scrollToTop();
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
getIndex(index, dataIndex) {
|
|
260
|
-
return typeof index === 'undefined' ? dataIndex : index;
|
|
261
|
-
}
|
|
262
|
-
isAllSelected() {
|
|
263
|
-
const numSelected = this.rowSelection.selected.length;
|
|
264
|
-
const numRows = this.dataSource.data.filter(row => { var _a, _b; return !((_b = (_a = this.rowSelectionFormatter).disabled) === null || _b === void 0 ? void 0 : _b.call(_a, row)); }).length;
|
|
265
|
-
return numSelected === numRows;
|
|
266
|
-
}
|
|
267
|
-
toggleSelectAllCheckbox() {
|
|
268
|
-
if (this.isAllSelected()) {
|
|
269
|
-
this.rowSelection.clear();
|
|
270
|
-
this.rowSelectionChange.emit(this.rowSelection.selected);
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
this.dataSource.data.forEach(row => {
|
|
274
|
-
var _a, _b;
|
|
275
|
-
if (!((_b = (_a = this.rowSelectionFormatter).disabled) === null || _b === void 0 ? void 0 : _b.call(_a, row))) {
|
|
276
|
-
this.rowSelection.select(row);
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
this.rowSelectionChange.emit(this.rowSelection.selected);
|
|
280
|
-
}
|
|
281
|
-
toggleRowSelection(row) {
|
|
282
|
-
this.rowSelection.toggle(row);
|
|
283
|
-
this.rowSelectionChange.emit(this.rowSelection.selected);
|
|
284
|
-
}
|
|
285
|
-
handlePage(e) {
|
|
286
|
-
this.pageChange.emit(e);
|
|
287
|
-
}
|
|
288
|
-
scrollToTop() {
|
|
289
|
-
this._elementRef.nativeElement.scrollTop = 0;
|
|
290
|
-
}
|
|
291
|
-
convertToKebabCase(value) {
|
|
292
|
-
return value === null || value === void 0 ? void 0 : value.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
EntryTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryTableComponent, deps: [{ token: ENTRY_TABLE_CONFIG }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
296
|
-
EntryTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EntryTableComponent, selector: "entry-table", inputs: { displayedColumns: "displayedColumns", columns: "columns", data: "data", total: "total", loading: "loading", showPaginator: "showPaginator", pageDisabled: "pageDisabled", showFirstLastButtons: "showFirstLastButtons", pageIndex: "pageIndex", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", hidePageSize: "hidePageSize", paginationTemplate: "paginationTemplate", sortActive: "sortActive", sortDirection: "sortDirection", sortDisableClear: "sortDisableClear", sortDisabled: "sortDisabled", sortStart: "sortStart", rowHover: "rowHover", rowStriped: "rowStriped", rowFocusVisible: "rowFocusVisible", multiSelectable: "multiSelectable", rowSelected: "rowSelected", rowSelectable: "rowSelectable", showSelectAllCheckbox: "showSelectAllCheckbox", rowSelectionFormatter: "rowSelectionFormatter", rowClassFormatter: "rowClassFormatter", showContextMenu: "showContextMenu", contextMenuItems: "contextMenuItems", contextMenuTemplate: "contextMenuTemplate", rowContextMenuFormatter: "rowContextMenuFormatter", noResultText: "noResultText", noResultTemplate: "noResultTemplate", headerTemplate: "headerTemplate", cellTemplate: "cellTemplate" }, outputs: { pageChange: "pageChange", sortChange: "sortChange", rowClick: "rowClick", rowSelectionChange: "rowSelectionChange", contextMenuItemSelected: "contextMenuItemSelected" }, host: { properties: { "class": "this.className" } }, usesOnChanges: true, ngImport: i0, template: "<!-- Table content -->\n<table mat-table \n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-with-data': !hasNoResult }\"\n [dataSource]=\"dataSource\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"sortDisableClear\"\n [matSortDisabled]=\"sortDisabled\"\n [matSortStart]=\"sortStart\"\n (matSortChange)=\"sortChange.emit($event)\">\n\n <!-- Selection column -->\n <ng-container *ngIf=\"rowSelectable\" [matColumnDef]=\"selectionColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"selection-cell\">\n <mat-checkbox *ngIf=\"multiSelectable && showSelectAllCheckbox\"\n [checked]=\"rowSelection.hasValue() && isAllSelected()\"\n [indeterminate]=\"rowSelection.hasValue() && !isAllSelected()\"\n (change)=\"$event ? toggleSelectAllCheckbox() : null\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"selection-cell\"\n (click)=\"$event.stopPropagation()\">\n <mat-checkbox\n *ngIf=\"multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-checkbox>\n <mat-radio-button\n *ngIf=\"!multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-radio-button>\n </td>\n </ng-container>\n\n <!-- Context menu column -->\n <ng-container *ngIf=\"showContextMenu\" [matColumnDef]=\"contextMenuColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"action-cell\"></th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"action-cell\">\n <ng-template [ngIf]=\"isTemplateRef(contextMenuTemplate)\" [ngIfElse]=\"contextMenuTpl\">\n <ng-template [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row }\">\n </ng-template>\n </ng-template>\n <ng-template #contextMenuTpl>\n <entry-cell-context-menu\n [items]=\"contextMenuItems\"\n [rowData]=\"row\"\n [rowMenuFormatter]=\"rowContextMenuFormatter\"\n (selected)=\"contextMenuItemSelected.emit({itemId: $event, rowData: row})\"\n ></entry-cell-context-menu>\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of columns;\">\n <ng-container [matColumnDef]=\"col.field\"\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n <th mat-header-cell *matHeaderCellDef\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #headerTpl>\n <ng-template [ngIf]=\"headerTemplate && isTemplateRef(headerTemplate[col.field])\"\n [ngIfElse]=\"defaultHeaderTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #defaultHeaderTpl>\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n [disabled]=\"!col.sortable\"\n [disableClear]=\"col.sortProp?.disableClear\">\n <span>{{col.header}}</span>\n </div>\n </ng-template>\n </th>\n\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #cellTpl>\n <ng-template [ngIf]=\"cellTemplate && isTemplateRef(cellTemplate[col.field])\"\n [ngIfElse]=\"colDefCellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #colDefCellTpl>\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\n [ngTemplateOutlet]=\"col.cellTemplate ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #defaultCellTpl>\n <entry-cell [rowData]=\"row\" [colDef]=\"col\"></entry-cell>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n [ngClass]=\"getRowClassList(row, getIndex(index, dataIndex))\"\n [attr.tabindex]=\"rowFocusVisible ? 0 : -1\"\n (click)=\"rowClick.emit(row)\"\n (keyup.enter)=\"rowClick.emit(row)\">\n </tr>\n</table>\n\n<!-- No results -->\n<div class=\"no-results mat-body-2\" *ngIf=\"hasNoResult\">\n <ng-template [ngIf]=\"isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\n </ng-template>\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\n</div>\n\n<!-- Pagination -->\n<ng-template [ngIf]=\"isTemplateRef(paginationTemplate)\" [ngIfElse]=\"defaultPaginationTemplate\">\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n</ng-template>\n<ng-template #defaultPaginationTemplate>\n <mat-paginator class=\"pagination\" *ngIf=\"showPaginator\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n [length]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [hidePageSize]=\"hidePageSize\"\n (page)=\"handlePage($event)\"\n [disabled]=\"pageDisabled\">\n </mat-paginator>\n</ng-template>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i2$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4$1.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: EntryCellComponent, selector: "entry-cell", inputs: ["rowData", "colDef"] }, { kind: "component", type: EntryCellContextMenuComponent, selector: "entry-cell-context-menu", inputs: ["items", "rowMenuFormatter", "rowData"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryTableComponent, decorators: [{
|
|
298
|
-
type: Component,
|
|
299
|
-
args: [{ selector: 'entry-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Table content -->\n<table mat-table \n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-with-data': !hasNoResult }\"\n [dataSource]=\"dataSource\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"sortDisableClear\"\n [matSortDisabled]=\"sortDisabled\"\n [matSortStart]=\"sortStart\"\n (matSortChange)=\"sortChange.emit($event)\">\n\n <!-- Selection column -->\n <ng-container *ngIf=\"rowSelectable\" [matColumnDef]=\"selectionColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"selection-cell\">\n <mat-checkbox *ngIf=\"multiSelectable && showSelectAllCheckbox\"\n [checked]=\"rowSelection.hasValue() && isAllSelected()\"\n [indeterminate]=\"rowSelection.hasValue() && !isAllSelected()\"\n (change)=\"$event ? toggleSelectAllCheckbox() : null\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"selection-cell\"\n (click)=\"$event.stopPropagation()\">\n <mat-checkbox\n *ngIf=\"multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-checkbox>\n <mat-radio-button\n *ngIf=\"!multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-radio-button>\n </td>\n </ng-container>\n\n <!-- Context menu column -->\n <ng-container *ngIf=\"showContextMenu\" [matColumnDef]=\"contextMenuColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"action-cell\"></th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"action-cell\">\n <ng-template [ngIf]=\"isTemplateRef(contextMenuTemplate)\" [ngIfElse]=\"contextMenuTpl\">\n <ng-template [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row }\">\n </ng-template>\n </ng-template>\n <ng-template #contextMenuTpl>\n <entry-cell-context-menu\n [items]=\"contextMenuItems\"\n [rowData]=\"row\"\n [rowMenuFormatter]=\"rowContextMenuFormatter\"\n (selected)=\"contextMenuItemSelected.emit({itemId: $event, rowData: row})\"\n ></entry-cell-context-menu>\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of columns;\">\n <ng-container [matColumnDef]=\"col.field\"\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n <th mat-header-cell *matHeaderCellDef\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #headerTpl>\n <ng-template [ngIf]=\"headerTemplate && isTemplateRef(headerTemplate[col.field])\"\n [ngIfElse]=\"defaultHeaderTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #defaultHeaderTpl>\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n [disabled]=\"!col.sortable\"\n [disableClear]=\"col.sortProp?.disableClear\">\n <span>{{col.header}}</span>\n </div>\n </ng-template>\n </th>\n\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #cellTpl>\n <ng-template [ngIf]=\"cellTemplate && isTemplateRef(cellTemplate[col.field])\"\n [ngIfElse]=\"colDefCellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #colDefCellTpl>\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\n [ngTemplateOutlet]=\"col.cellTemplate ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #defaultCellTpl>\n <entry-cell [rowData]=\"row\" [colDef]=\"col\"></entry-cell>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n [ngClass]=\"getRowClassList(row, getIndex(index, dataIndex))\"\n [attr.tabindex]=\"rowFocusVisible ? 0 : -1\"\n (click)=\"rowClick.emit(row)\"\n (keyup.enter)=\"rowClick.emit(row)\">\n </tr>\n</table>\n\n<!-- No results -->\n<div class=\"no-results mat-body-2\" *ngIf=\"hasNoResult\">\n <ng-template [ngIf]=\"isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\n </ng-template>\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\n</div>\n\n<!-- Pagination -->\n<ng-template [ngIf]=\"isTemplateRef(paginationTemplate)\" [ngIfElse]=\"defaultPaginationTemplate\">\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n</ng-template>\n<ng-template #defaultPaginationTemplate>\n <mat-paginator class=\"pagination\" *ngIf=\"showPaginator\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n [length]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [hidePageSize]=\"hidePageSize\"\n (page)=\"handlePage($event)\"\n [disabled]=\"pageDisabled\">\n </mat-paginator>\n</ng-template>" }]
|
|
300
|
-
}], ctorParameters: function () {
|
|
301
|
-
return [{ type: EntryTableConfig, decorators: [{
|
|
302
|
-
type: Inject,
|
|
303
|
-
args: [ENTRY_TABLE_CONFIG]
|
|
304
|
-
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }];
|
|
305
|
-
}, propDecorators: { className: [{
|
|
306
|
-
type: HostBinding,
|
|
307
|
-
args: ['class']
|
|
308
|
-
}], displayedColumns: [{
|
|
309
|
-
type: Input
|
|
310
|
-
}], columns: [{
|
|
311
|
-
type: Input
|
|
312
|
-
}], data: [{
|
|
313
|
-
type: Input
|
|
314
|
-
}], total: [{
|
|
315
|
-
type: Input
|
|
316
|
-
}], loading: [{
|
|
317
|
-
type: Input
|
|
318
|
-
}], showPaginator: [{
|
|
319
|
-
type: Input
|
|
320
|
-
}], pageDisabled: [{
|
|
321
|
-
type: Input
|
|
322
|
-
}], showFirstLastButtons: [{
|
|
323
|
-
type: Input
|
|
324
|
-
}], pageIndex: [{
|
|
325
|
-
type: Input
|
|
326
|
-
}], pageSize: [{
|
|
327
|
-
type: Input
|
|
328
|
-
}], pageSizeOptions: [{
|
|
329
|
-
type: Input
|
|
330
|
-
}], hidePageSize: [{
|
|
331
|
-
type: Input
|
|
332
|
-
}], pageChange: [{
|
|
333
|
-
type: Output
|
|
334
|
-
}], paginationTemplate: [{
|
|
335
|
-
type: Input
|
|
336
|
-
}], sortActive: [{
|
|
337
|
-
type: Input
|
|
338
|
-
}], sortDirection: [{
|
|
339
|
-
type: Input
|
|
340
|
-
}], sortDisableClear: [{
|
|
341
|
-
type: Input
|
|
342
|
-
}], sortDisabled: [{
|
|
343
|
-
type: Input
|
|
344
|
-
}], sortStart: [{
|
|
345
|
-
type: Input
|
|
346
|
-
}], sortChange: [{
|
|
347
|
-
type: Output
|
|
348
|
-
}], rowHover: [{
|
|
349
|
-
type: Input
|
|
350
|
-
}], rowStriped: [{
|
|
351
|
-
type: Input
|
|
352
|
-
}], rowFocusVisible: [{
|
|
353
|
-
type: Input
|
|
354
|
-
}], rowClick: [{
|
|
355
|
-
type: Output
|
|
356
|
-
}], multiSelectable: [{
|
|
357
|
-
type: Input
|
|
358
|
-
}], rowSelected: [{
|
|
359
|
-
type: Input
|
|
360
|
-
}], rowSelectable: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], showSelectAllCheckbox: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], rowSelectionFormatter: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}], rowClassFormatter: [{
|
|
367
|
-
type: Input
|
|
368
|
-
}], rowSelectionChange: [{
|
|
369
|
-
type: Output
|
|
370
|
-
}], showContextMenu: [{
|
|
371
|
-
type: Input
|
|
372
|
-
}], contextMenuItems: [{
|
|
373
|
-
type: Input
|
|
374
|
-
}], contextMenuTemplate: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], rowContextMenuFormatter: [{
|
|
377
|
-
type: Input
|
|
378
|
-
}], contextMenuItemSelected: [{
|
|
379
|
-
type: Output
|
|
380
|
-
}], noResultText: [{
|
|
381
|
-
type: Input
|
|
382
|
-
}], noResultTemplate: [{
|
|
383
|
-
type: Input
|
|
384
|
-
}], headerTemplate: [{
|
|
385
|
-
type: Input
|
|
386
|
-
}], cellTemplate: [{
|
|
387
|
-
type: Input
|
|
388
|
-
}] } });
|
|
389
|
-
|
|
390
|
-
class EntryTableModule {
|
|
391
|
-
}
|
|
392
|
-
EntryTableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
393
|
-
EntryTableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: EntryTableModule, declarations: [EntryTableComponent,
|
|
394
|
-
EntryCellComponent,
|
|
395
|
-
EntryCellContextMenuComponent,
|
|
396
|
-
EntryCellFormattedValueComponent], imports: [CommonModule,
|
|
397
|
-
FormsModule,
|
|
398
|
-
MatTableModule,
|
|
399
|
-
MatSortModule,
|
|
400
|
-
MatPaginatorModule,
|
|
401
|
-
MatCheckboxModule,
|
|
402
|
-
MatIconModule,
|
|
403
|
-
MatMenuModule,
|
|
404
|
-
MatRadioModule,
|
|
405
|
-
CommonModule,
|
|
406
|
-
MatButtonModule], exports: [EntryTableComponent,
|
|
407
|
-
EntryCellComponent,
|
|
408
|
-
EntryCellContextMenuComponent,
|
|
409
|
-
EntryCellFormattedValueComponent] });
|
|
410
|
-
EntryTableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryTableModule, providers: [
|
|
411
|
-
{ provide: DEFAULT_PERCENTAGE_MULTIPLIER, useValue: 1 }
|
|
412
|
-
], imports: [CommonModule,
|
|
413
|
-
FormsModule,
|
|
414
|
-
MatTableModule,
|
|
415
|
-
MatSortModule,
|
|
416
|
-
MatPaginatorModule,
|
|
417
|
-
MatCheckboxModule,
|
|
418
|
-
MatIconModule,
|
|
419
|
-
MatMenuModule,
|
|
420
|
-
MatRadioModule,
|
|
421
|
-
CommonModule,
|
|
422
|
-
MatButtonModule] });
|
|
423
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EntryTableModule, decorators: [{
|
|
424
|
-
type: NgModule,
|
|
425
|
-
args: [{
|
|
426
|
-
imports: [
|
|
427
|
-
CommonModule,
|
|
428
|
-
FormsModule,
|
|
429
|
-
MatTableModule,
|
|
430
|
-
MatSortModule,
|
|
431
|
-
MatPaginatorModule,
|
|
432
|
-
MatCheckboxModule,
|
|
433
|
-
MatIconModule,
|
|
434
|
-
MatMenuModule,
|
|
435
|
-
MatRadioModule,
|
|
436
|
-
CommonModule,
|
|
437
|
-
MatButtonModule
|
|
438
|
-
],
|
|
439
|
-
declarations: [
|
|
440
|
-
EntryTableComponent,
|
|
441
|
-
EntryCellComponent,
|
|
442
|
-
EntryCellContextMenuComponent,
|
|
443
|
-
EntryCellFormattedValueComponent
|
|
444
|
-
],
|
|
445
|
-
exports: [
|
|
446
|
-
EntryTableComponent,
|
|
447
|
-
EntryCellComponent,
|
|
448
|
-
EntryCellContextMenuComponent,
|
|
449
|
-
EntryCellFormattedValueComponent
|
|
450
|
-
],
|
|
451
|
-
providers: [
|
|
452
|
-
{ provide: DEFAULT_PERCENTAGE_MULTIPLIER, useValue: 1 }
|
|
453
|
-
]
|
|
454
|
-
}]
|
|
455
|
-
}] });
|
|
456
|
-
|
|
457
|
-
/**
|
|
458
|
-
* Generated bundle index. Do not edit.
|
|
459
|
-
*/
|
|
460
|
-
|
|
461
|
-
export { DEFAULT_PERCENTAGE_MULTIPLIER, ENTRY_TABLE_CONFIG, EntryCellComponent, EntryCellContextMenuComponent, EntryCellFormattedValueComponent, EntryTableComponent, EntryTableConfig, EntryTableModule, PagedQuery, defaultPageNumber, defaultPageSize };
|
|
462
|
-
//# sourceMappingURL=enigmatry-entry-components-table.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enigmatry-entry-components-table.mjs","sources":["../../../../libs/entry-components/table/interfaces/entry-table-config.ts","../../../../libs/entry-components/table/interfaces/paged-query.ts","../../../../libs/entry-components/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.ts","../../../../libs/entry-components/table/components/entry-cell-formatted-value/entry-cell-formatted-value.component.html","../../../../libs/entry-components/table/components/entry-cell/entry-cell.component.ts","../../../../libs/entry-components/table/components/entry-cell/entry-cell.component.html","../../../../libs/entry-components/table/components/entry-cell-context-menu/entry-cell-context-menu.component.ts","../../../../libs/entry-components/table/components/entry-cell-context-menu/entry-cell-context-menu.component.html","../../../../libs/entry-components/table/components/entry-table/entry-table.component.ts","../../../../libs/entry-components/table/components/entry-table/entry-table.component.html","../../../../libs/entry-components/table/entry-table.module.ts","../../../../libs/entry-components/table/enigmatry-entry-components-table.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport class EntryTableConfig {\n public showPaginator = true;\n public showFirstLastButtons = false;\n public pageSize = 20;\n public pageSizeOptions = [20, 50, 100];\n public hidePageSize = false;\n public noResultsText = 'No results found';\n};\n\nexport const ENTRY_TABLE_CONFIG = new InjectionToken<EntryTableConfig>(\n 'ENTRY_TABLE_CONFIG',\n {\n providedIn: 'root',\n factory: () => new EntryTableConfig()\n });\n\n\nexport const DEFAULT_PERCENTAGE_MULTIPLIER: InjectionToken<number> = new InjectionToken<number>('');\n","import { Params } from '@angular/router';\nimport { OnPage, OnSort, PageEvent, SortDirection, SortEvent } from './pagination';\n\nexport const defaultPageSize = 20;\nexport const defaultPageNumber = 1;\n\nexport class PagedQuery implements OnPage, OnSort {\n pageNumber = defaultPageNumber;\n pageSize = defaultPageSize;\n sortBy?: string;\n sortDirection?: SortDirection;\n\n sortChange(sort: SortEvent): void {\n if (sort.active) {\n this.sortBy = sort.active;\n this.sortDirection = this.getValueIfNotEmpty(sort.direction);\n this.pageNumber = defaultPageNumber;\n }\n }\n\n pageChange(page: PageEvent): void {\n this.pageNumber = page.pageIndex + 1;\n this.pageSize = page.pageSize;\n }\n\n applyRouteChanges(queryParams: Params): void {\n this.pageNumber = queryParams.pageNumber ? Number(queryParams.pageNumber) : defaultPageNumber;\n this.pageSize = queryParams.pageSize ? Number(queryParams.pageSize) : this.pageSize;\n this.sortBy = this.getValueIfNotEmpty(queryParams.sortBy ?? this.sortBy);\n this.sortDirection = this.getValueIfNotEmpty(queryParams.sortDirection ?? this.sortDirection);\n }\n\n getRouteQueryParams(): Params {\n return {\n pageNumber: this.pageNumber,\n pageSize: this.pageSize,\n sortBy: this.sortBy,\n sortDirection: this.sortDirection\n };\n }\n\n private getValueIfNotEmpty<T>(value: T): T | undefined {\n return value ? value : undefined;\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';\nimport { DEFAULT_PERCENTAGE_MULTIPLIER } from '../../interfaces/entry-table-config';\n\n@Component({\n selector: 'entry-cell-formatted-value',\n templateUrl: './entry-cell-formatted-value.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryCellFormattedValueComponent {\n\n @Input() value: string | undefined;\n @Input() type: string;\n @Input() typeParameter: any | undefined;\n\n constructor(\n @Inject(DEFAULT_PERCENTAGE_MULTIPLIER) public defaultPercentageMultiplier: number) {\n }\n}\n","<ng-container [ngSwitch]=\"type\">\n <!-- Boolean -->\n <ng-container *ngSwitchCase=\"'boolean'\">\n {{value ? '\\u2713' : ''}}\n </ng-container>\n <!-- Number -->\n <ng-container *ngSwitchCase=\"'number'\">\n {{value | number: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Currency -->\n <ng-container *ngSwitchCase=\"'currency'\">\n {{value | currency: typeParameter?.currencyCode : typeParameter?.display : typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Percent -->\n <ng-container *ngSwitchCase=\"'percent'\">\n {{+value * (typeParameter?.multiplier ?? defaultPercentageMultiplier) | percent: typeParameter?.digitsInfo : typeParameter?.locale}}\n </ng-container>\n <!-- Date -->\n <ng-container *ngSwitchCase=\"'date'\">\n {{value | date: typeParameter?.format : typeParameter?.timezone : typeParameter?.locale}}\n </ng-container>\n <!-- Link -->\n <ng-container *ngSwitchCase=\"'link'\">\n <a [href]=\"value\" target=\"_blank\">{{value}}</a>\n </ng-container>\n <!-- Default -->\n <ng-container *ngSwitchDefault>\n {{value}}\n </ng-container>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ColumnDef } from '../../interfaces';\n\n@Component({\n selector: 'entry-cell',\n templateUrl: './entry-cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryCellComponent<T> {\n\n @Input() rowData: T;\n @Input() colDef: ColumnDef;\n\n get value(): any {\n return this.getCellValue(this.rowData, this.colDef);\n }\n\n private getCellValue(rowData: T, colDef: ColumnDef) {\n const keys = colDef.field ? colDef.field.split('.') : [];\n return keys.reduce((data, key) => data && (data as any)[key], rowData);\n }\n\n}\n","<entry-cell-formatted-value [value]=\"value\" [type]=\"colDef.type\" [typeParameter]=\"colDef.typeParameter\"></entry-cell-formatted-value>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { RowContextMenuFormatter } from '../../interfaces/row-context-menu-formatter';\nimport { ContextMenuItem } from '../../interfaces/context-menu-item';\n\n@Component({\n selector: 'entry-cell-context-menu',\n templateUrl: './entry-cell-context-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryCellContextMenuComponent implements OnInit {\n\n @Input() items: ContextMenuItem[] = [];\n @Input() rowMenuFormatter: RowContextMenuFormatter;\n @Input() rowData: any;\n @Output() selected = new EventEmitter<string>();\n\n menuItems: ContextMenuItem[] = [];\n\n ngOnInit(): void {\n this.menuItems = this.rowMenuFormatter?.items\n ? this.rowMenuFormatter.items(this.rowData)\n : this.items;\n }\n}\n","<button mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\">\n <button *ngFor=\"let item of menuItems\" mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\"\n class=\"context-menu-item\">\n <mat-icon class=\"icon\" *ngIf=\"item.icon\">{{item.icon}}</mat-icon>\n <span class=\"description\">{{item.name}}</span>\n </button>\n</mat-menu>","/* eslint-disable @typescript-eslint/member-ordering */\n\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n OnChanges,\n TemplateRef,\n ChangeDetectorRef,\n ElementRef,\n SimpleChanges,\n HostBinding,\n Inject,\n} from '@angular/core';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { PageEvent } from '@angular/material/paginator';\nimport { Sort, SortDirection } from '@angular/material/sort';\n\nimport {\n ColumnDef, PagedData, RowSelectionFormatter, RowClassFormatter,\n ContextMenuItem, RowContextMenuFormatter, CellTemplate, ENTRY_TABLE_CONFIG, EntryTableConfig\n} from '../../interfaces';\n\n@Component({\n selector: 'entry-table',\n templateUrl: './entry-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class EntryTableComponent<T> implements OnChanges {\n @HostBinding('class') className = 'entry-table';\n\n dataSource = new MatTableDataSource<T>([]);\n\n @Input() displayedColumns: string[];\n @Input() columns: ColumnDef[] = [];\n\n // Data\n\n private _data: T[] = [];\n private _page: PagedData<T>;\n @Input() data: T[] | PagedData<T> | null | undefined = [];\n @Input() total = 0;\n @Input() loading = false;\n\n // Pagination\n\n @Input() showPaginator: boolean;\n @Input() pageDisabled = false;\n @Input() showFirstLastButtons: boolean;\n @Input() pageIndex = 0;\n @Input() pageSize: number;\n @Input() pageSizeOptions: number[];\n @Input() hidePageSize: boolean;\n @Output() pageChange = new EventEmitter<PageEvent>();\n\n @Input() paginationTemplate: TemplateRef<any>;\n\n // Sort\n\n @Input() sortActive: string;\n @Input() sortDirection: SortDirection;\n @Input() sortDisableClear = false;\n @Input() sortDisabled = false;\n @Input() sortStart: 'asc' | 'desc' = 'asc';\n @Output() sortChange = new EventEmitter<Sort>();\n\n // Row\n\n @Input() rowHover = false;\n @Input() rowStriped = false;\n @Input() rowFocusVisible = false;\n @Output() rowClick = new EventEmitter<T>();\n\n // Row selection\n\n @Input() multiSelectable = true;\n rowSelection: SelectionModel<T> = new SelectionModel<T>(true, []);\n\n @Input() rowSelected: T[] = [];\n @Input() rowSelectable = false;\n @Input() showSelectAllCheckbox = true;\n @Input() rowSelectionFormatter: RowSelectionFormatter = {};\n @Input() rowClassFormatter: RowClassFormatter;\n @Output() rowSelectionChange = new EventEmitter<T[]>();\n\n // Context menu\n\n @Input() showContextMenu = false;\n @Input() contextMenuItems: ContextMenuItem[] = [];\n @Input() contextMenuTemplate: TemplateRef<any> | null;\n @Input() rowContextMenuFormatter: RowContextMenuFormatter;\n @Output() contextMenuItemSelected = new EventEmitter<{ itemId: string; rowData: T }>();\n\n // No Result\n\n @Input() noResultText: string;\n @Input() noResultTemplate: TemplateRef<any> | null;\n\n readonly selectionColumn = 'selection-column';\n readonly contextMenuColumn = 'context-menu-column';\n\n get hasNoResult() {\n return (!this.data || this._data.length === 0) && !this.loading;\n }\n\n @Input() headerTemplate: TemplateRef<any> | CellTemplate | any;\n\n @Input() cellTemplate: TemplateRef<any> | CellTemplate | any;\n\n constructor(\n @Inject(ENTRY_TABLE_CONFIG) private _config: EntryTableConfig,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef) { }\n\n detectChanges() {\n this._changeDetectorRef.detectChanges();\n }\n\n isTemplateRef(obj: any) {\n return obj instanceof TemplateRef;\n }\n\n getRowClassList(rowData: T, index: number) {\n const classList = {\n selected: this.rowSelection.isSelected(rowData),\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'mat-row-odd': index % 2,\n };\n if (this.rowClassFormatter) {\n for (const key of Object.keys(this.rowClassFormatter)) {\n classList[key] = this.rowClassFormatter[key](rowData);\n }\n }\n return classList;\n }\n\n getColumnClassList(colDef: ColumnDef): string {\n const customClasses = colDef.class ?? '';\n const columnType = colDef.type ?? '';\n const columnField = `cell-${this.convertToKebabCase(colDef.field)}`;\n\n return `${customClasses} ${columnType} ${columnField}`;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.showPaginator = this.showPaginator ?? this._config.showPaginator;\n this.showFirstLastButtons = this.showFirstLastButtons ?? this._config.showFirstLastButtons;\n this.pageSizeOptions = this.pageSizeOptions ?? this._config.pageSizeOptions;\n this.hidePageSize = this.hidePageSize ?? this._config.hidePageSize;\n this.noResultText = this.noResultText ?? this._config.noResultsText;\n\n this.displayedColumns = this.columns.filter(item => !item.hide).map(item => item.field);\n\n if (this.rowSelectable && !this.displayedColumns.includes(this.selectionColumn)) {\n this.displayedColumns.unshift(this.selectionColumn);\n }\n\n if (this.showContextMenu && !this.displayedColumns.includes(this.contextMenuColumn)) {\n this.displayedColumns.push(this.contextMenuColumn);\n }\n\n if (this.rowSelectable) {\n this.rowSelection = new SelectionModel<T>(this.multiSelectable, this.rowSelected);\n }\n\n if (!this.data) {\n this.data = [];\n }\n\n if (Array.isArray(this.data)) {\n this._data = this.data as T[];\n } else {\n this._page = this.data as PagedData<T>;\n this._data = this._page.items ?? [];\n this.total = this._page.totalCount ?? 0;\n this.pageSize = this._page.pageSize ?? this.pageSize ?? this._config.pageSize;\n this.pageIndex = this._page.pageNumber ? this._page.pageNumber - 1 : this.pageIndex;\n }\n\n if (this.dataSource) {\n this.dataSource.disconnect();\n }\n\n this.dataSource = new MatTableDataSource(this._data);\n\n if (changes.data) {\n this.scrollToTop();\n }\n }\n\n getIndex(index: number, dataIndex: number) {\n return typeof index === 'undefined' ? dataIndex : index;\n }\n\n isAllSelected() {\n const numSelected = this.rowSelection.selected.length;\n const numRows = this.dataSource.data.filter(row => !this.rowSelectionFormatter.disabled?.(row)).length;\n return numSelected === numRows;\n }\n\n toggleSelectAllCheckbox(): void {\n if (this.isAllSelected()) {\n this.rowSelection.clear();\n this.rowSelectionChange.emit(this.rowSelection.selected);\n return;\n }\n this.dataSource.data.forEach(row => {\n if (!this.rowSelectionFormatter.disabled?.(row)) {\n this.rowSelection.select(row);\n }\n });\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n toggleRowSelection(row: any) {\n this.rowSelection.toggle(row);\n this.rowSelectionChange.emit(this.rowSelection.selected);\n }\n\n handlePage(e: PageEvent) {\n this.pageChange.emit(e);\n }\n\n scrollToTop(): void {\n this._elementRef.nativeElement.scrollTop = 0;\n }\n\n private convertToKebabCase(value: string): string {\n return value?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n }\n}\n","<!-- Table content -->\n<table mat-table \n [ngClass]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-with-data': !hasNoResult }\"\n [dataSource]=\"dataSource\"\n matSort\n [matSortActive]=\"sortActive\"\n [matSortDirection]=\"sortDirection\"\n [matSortDisableClear]=\"sortDisableClear\"\n [matSortDisabled]=\"sortDisabled\"\n [matSortStart]=\"sortStart\"\n (matSortChange)=\"sortChange.emit($event)\">\n\n <!-- Selection column -->\n <ng-container *ngIf=\"rowSelectable\" [matColumnDef]=\"selectionColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"selection-cell\">\n <mat-checkbox *ngIf=\"multiSelectable && showSelectAllCheckbox\"\n [checked]=\"rowSelection.hasValue() && isAllSelected()\"\n [indeterminate]=\"rowSelection.hasValue() && !isAllSelected()\"\n (change)=\"$event ? toggleSelectAllCheckbox() : null\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"selection-cell\"\n (click)=\"$event.stopPropagation()\">\n <mat-checkbox\n *ngIf=\"multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-checkbox>\n <mat-radio-button\n *ngIf=\"!multiSelectable && !(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox!(row))\"\n [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled!(row)\"\n [checked]=\"rowSelection.isSelected(row)\"\n [value]=\"rowSelection.isSelected(row)\"\n (change)=\"$event ? toggleRowSelection(row) : null\">\n </mat-radio-button>\n </td>\n </ng-container>\n\n <!-- Context menu column -->\n <ng-container *ngIf=\"showContextMenu\" [matColumnDef]=\"contextMenuColumn\">\n <th mat-header-cell *matHeaderCellDef class=\"action-cell\"></th>\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n class=\"action-cell\">\n <ng-template [ngIf]=\"isTemplateRef(contextMenuTemplate)\" [ngIfElse]=\"contextMenuTpl\">\n <ng-template [ngTemplateOutlet]=\"contextMenuTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row }\">\n </ng-template>\n </ng-template>\n <ng-template #contextMenuTpl>\n <entry-cell-context-menu\n [items]=\"contextMenuItems\"\n [rowData]=\"row\"\n [rowMenuFormatter]=\"rowContextMenuFormatter\"\n (selected)=\"contextMenuItemSelected.emit({itemId: $event, rowData: row})\"\n ></entry-cell-context-menu>\n </ng-template>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let col of columns;\">\n <ng-container [matColumnDef]=\"col.field\"\n [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n <th mat-header-cell *matHeaderCellDef\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(headerTemplate)\" [ngIfElse]=\"headerTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #headerTpl>\n <ng-template [ngIf]=\"headerTemplate && isTemplateRef(headerTemplate[col.field])\"\n [ngIfElse]=\"defaultHeaderTpl\">\n <ng-template [ngTemplateOutlet]=\"headerTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #defaultHeaderTpl>\n <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n [disabled]=\"!col.sortable\"\n [disableClear]=\"col.sortProp?.disableClear\">\n <span>{{col.header}}</span>\n </div>\n </ng-template>\n </th>\n\n <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n [class]=\"getColumnClassList(col)\"\n [ngClass]=\"{'mat-table-sticky-left': col.pinned === 'left', 'mat-table-sticky-right': col.pinned === 'right'}\"\n [ngStyle]=\"{'width': col.width, 'min-width': col.width}\">\n <ng-template [ngIf]=\"isTemplateRef(cellTemplate)\" [ngIfElse]=\"cellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #cellTpl>\n <ng-template [ngIf]=\"cellTemplate && isTemplateRef(cellTemplate[col.field])\"\n [ngIfElse]=\"colDefCellTpl\">\n <ng-template [ngTemplateOutlet]=\"cellTemplate[col.field]\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n </ng-template>\n <ng-template #colDefCellTpl>\n <ng-template [ngIf]=\"col.cellTemplate\" [ngIfElse]=\"defaultCellTpl\"\n [ngTemplateOutlet]=\"col.cellTemplate ?? null\"\n [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: getIndex(index, dataIndex), colDef: col }\">\n </ng-template>\n </ng-template>\n <ng-template #defaultCellTpl>\n <entry-cell [rowData]=\"row\" [colDef]=\"col\"></entry-cell>\n </ng-template>\n </td>\n </ng-container>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row\n *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n [ngClass]=\"getRowClassList(row, getIndex(index, dataIndex))\"\n [attr.tabindex]=\"rowFocusVisible ? 0 : -1\"\n (click)=\"rowClick.emit(row)\"\n (keyup.enter)=\"rowClick.emit(row)\">\n </tr>\n</table>\n\n<!-- No results -->\n<div class=\"no-results mat-body-2\" *ngIf=\"hasNoResult\">\n <ng-template [ngIf]=\"isTemplateRef(noResultTemplate)\" [ngIfElse]=\"defaultNoResultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\n </ng-template>\n <ng-template #defaultNoResultTpl>{{noResultText}}</ng-template>\n</div>\n\n<!-- Pagination -->\n<ng-template [ngIf]=\"isTemplateRef(paginationTemplate)\" [ngIfElse]=\"defaultPaginationTemplate\">\n <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n</ng-template>\n<ng-template #defaultPaginationTemplate>\n <mat-paginator class=\"pagination\" *ngIf=\"showPaginator\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n [length]=\"total\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [hidePageSize]=\"hidePageSize\"\n (page)=\"handlePage($event)\"\n [disabled]=\"pageDisabled\">\n </mat-paginator>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport {MatButtonModule} from '@angular/material/button';\n\nimport { EntryTableComponent } from './components/entry-table/entry-table.component';\nimport { EntryCellComponent } from './components/entry-cell/entry-cell.component';\nimport { EntryCellContextMenuComponent } from './components/entry-cell-context-menu/entry-cell-context-menu.component';\nimport { EntryCellFormattedValueComponent } from './components/entry-cell-formatted-value/entry-cell-formatted-value.component';\nimport { DEFAULT_PERCENTAGE_MULTIPLIER } from './interfaces';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatIconModule,\n MatMenuModule,\n MatRadioModule,\n CommonModule,\n MatButtonModule\n ],\n declarations: [\n EntryTableComponent,\n EntryCellComponent,\n EntryCellContextMenuComponent,\n EntryCellFormattedValueComponent\n ],\n exports: [\n EntryTableComponent,\n EntryCellComponent,\n EntryCellContextMenuComponent,\n EntryCellFormattedValueComponent\n ],\n providers: [\n { provide: DEFAULT_PERCENTAGE_MULTIPLIER, useValue: 1 }\n ]\n})\nexport class EntryTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.EntryCellFormattedValueComponent","i2","i3","i4","i7.EntryCellComponent","i8.EntryCellContextMenuComponent"],"mappings":"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"}
|