@enigmatry/entry-components 19.0.1-preview.5 → 19.1.0
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/fesm2022/enigmatry-entry-components-button.mjs +8 -8
- package/fesm2022/enigmatry-entry-components-button.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-common.mjs +35 -35
- package/fesm2022/enigmatry-entry-components-common.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-date-time-picker.mjs +11 -11
- package/fesm2022/enigmatry-entry-components-date-time-picker.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-dialog.mjs +20 -20
- package/fesm2022/enigmatry-entry-components-dialog.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-file-input.mjs +8 -8
- package/fesm2022/enigmatry-entry-components-file-input.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-permissions.mjs +11 -11
- package/fesm2022/enigmatry-entry-components-permissions.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-search-filter.mjs +24 -24
- package/fesm2022/enigmatry-entry-components-search-filter.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-spinner.mjs +11 -11
- package/fesm2022/enigmatry-entry-components-spinner.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-table.mjs +17 -17
- package/fesm2022/enigmatry-entry-components-table.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components-validation.mjs +11 -11
- package/fesm2022/enigmatry-entry-components-validation.mjs.map +1 -1
- package/fesm2022/enigmatry-entry-components.mjs +4 -4
- package/fesm2022/enigmatry-entry-components.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/modules/_default-theme.scss +24 -3
- package/styles/modules/components/buttons/_generator.scss +3 -3
- package/styles/modules/components/buttons/_radio.scss +20 -2
- package/styles/modules/components/checkboxes/_generator.scss +19 -2
- package/styles/modules/components/inputs/_generator.scss +59 -5
- package/styles/modules/vendors/angular-material/_generator.scss +1 -1
- package/styles/partials/generator-test.scss +11 -9
|
@@ -2,7 +2,7 @@ import * as i1$1 from '@angular/cdk/overlay';
|
|
|
2
2
|
import { OverlayContainer, OverlayConfig, Overlay, OverlayModule } from '@angular/cdk/overlay';
|
|
3
3
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { Injectable,
|
|
5
|
+
import { Inject, Injectable, ViewChild, Input, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
6
6
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
7
7
|
import * as i1 from '@angular/cdk/platform';
|
|
8
8
|
import * as i2 from '@angular/material/progress-spinner';
|
|
@@ -35,10 +35,10 @@ class SpinnerOverlayContainer extends OverlayContainer {
|
|
|
35
35
|
this._appendTo.appendChild(container);
|
|
36
36
|
this._containerElement = container;
|
|
37
37
|
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
39
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
38
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SpinnerOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
39
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SpinnerOverlayContainer }); }
|
|
40
40
|
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: SpinnerOverlayContainer, decorators: [{
|
|
42
42
|
type: Injectable
|
|
43
43
|
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
44
44
|
type: Inject,
|
|
@@ -88,8 +88,8 @@ class EntrySpinnerComponent {
|
|
|
88
88
|
this.overlayRef.dispose();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntrySpinnerComponent, deps: [{ token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i1$1.OverlayContainer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EntrySpinnerComponent, isStandalone: false, selector: "entry-spinner", inputs: { color: "color", diameter: "diameter", fullscreen: "fullscreen", hasBackgroundOverlay: "hasBackgroundOverlay" }, providers: [
|
|
93
93
|
Overlay,
|
|
94
94
|
{
|
|
95
95
|
provide: OverlayContainer,
|
|
@@ -97,7 +97,7 @@ class EntrySpinnerComponent {
|
|
|
97
97
|
}
|
|
98
98
|
], viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["matSpinner"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #matSpinner>\r\n\t<mat-spinner [diameter]=\"diameter\" [color]=\"color\"></mat-spinner>\r\n</ng-template>", dependencies: [{ kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
99
99
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntrySpinnerComponent, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
102
|
args: [{ selector: 'entry-spinner', providers: [
|
|
103
103
|
Overlay,
|
|
@@ -120,15 +120,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
120
120
|
}] } });
|
|
121
121
|
|
|
122
122
|
class EntrySpinnerModule {
|
|
123
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
124
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.
|
|
123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntrySpinnerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
124
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: EntrySpinnerModule, declarations: [EntrySpinnerComponent], imports: [CommonModule,
|
|
125
125
|
OverlayModule,
|
|
126
126
|
MatProgressSpinnerModule], exports: [EntrySpinnerComponent] }); }
|
|
127
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.
|
|
127
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntrySpinnerModule, imports: [CommonModule,
|
|
128
128
|
OverlayModule,
|
|
129
129
|
MatProgressSpinnerModule] }); }
|
|
130
130
|
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntrySpinnerModule, decorators: [{
|
|
132
132
|
type: NgModule,
|
|
133
133
|
args: [{
|
|
134
134
|
declarations: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enigmatry-entry-components-spinner.mjs","sources":["../../../../libs/entry-components/spinner/spinner-overlay-container.ts","../../../../libs/entry-components/spinner/entry-spinner/spinner.component.ts","../../../../libs/entry-components/spinner/entry-spinner/spinner.component.html","../../../../libs/entry-components/spinner/spinner.module.ts","../../../../libs/entry-components/spinner/enigmatry-entry-components-spinner.ts"],"sourcesContent":["import { OverlayContainer } from '@angular/cdk/overlay';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class SpinnerOverlayContainer extends OverlayContainer implements OnDestroy {\r\n\r\n private _appendTo: HTMLElement = this._document.body;\r\n private _options: { fullscreen: boolean };\r\n\r\n constructor(@Inject(DOCUMENT) document: Document, platform: Platform) {\r\n super(document, platform);\r\n }\r\n\r\n configure(appendTo: HTMLElement, options: { fullscreen: boolean }): void {\r\n this._appendTo = appendTo;\r\n this._options = options;\r\n }\r\n\r\n getContainerElement(): HTMLElement {\r\n if (!this._containerElement) {\r\n this.createContainer();\r\n }\r\n return this._containerElement;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._containerElement?.remove();\r\n }\r\n\r\n private createContainer(): void {\r\n const containerClass = 'cdk-overlay-container';\r\n const { fullscreen } = this._options;\r\n\r\n const container = this._document.createElement('div');\r\n container.classList.add(containerClass);\r\n\r\n container.style.position = fullscreen ? 'fixed' : 'absolute';\r\n this._appendTo.appendChild(container);\r\n this._containerElement = container;\r\n }\r\n}\r\n","import { Overlay, OverlayConfig, OverlayContainer, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy,\n OnInit, TemplateRef, ViewChild, ViewContainerRef\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { SpinnerOverlayContainer } from '../spinner-overlay-container';\n\n@Component({\n selector: 'entry-spinner',\n templateUrl: './spinner.component.html',\n providers: [\n Overlay,\n {\n provide: OverlayContainer,\n useClass: SpinnerOverlayContainer\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntrySpinnerComponent implements OnInit, OnDestroy {\n\n @Input() color: ThemePalette = 'primary';\n @Input() diameter = 30;\n @Input() fullscreen = false;\n @Input() hasBackgroundOverlay = true;\n\n @ViewChild('matSpinner', { static: true })\n private templateRef: TemplateRef<any>;\n private overlayRef: OverlayRef;\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private overlayContainer: OverlayContainer,\n private elementRef: ElementRef<HTMLElement>) {\n }\n\n ngOnInit(): void {\n this.createOverlay();\n this.overlayRef.attach(new TemplatePortal(this.templateRef, this.viewContainerRef));\n }\n\n ngOnDestroy(): void {\n this.disposeOverlayRef();\n }\n\n private createOverlay() {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: this.hasBackgroundOverlay,\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n this.configureOverlayContainer();\n this.overlayRef = this.overlay.create(overlayConfig);\n }\n\n private configureOverlayContainer() {\n let appendTo = this.elementRef.nativeElement;\n if (this.fullscreen) {\n appendTo = document.body;\n }\n (this.overlayContainer as SpinnerOverlayContainer)\n .configure(appendTo, { fullscreen: this.fullscreen });\n }\n\n private disposeOverlayRef() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n }\n}\n","<ng-template #matSpinner>\r\n\t<mat-spinner [diameter]=\"diameter\" [color]=\"color\"></mat-spinner>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { EntrySpinnerComponent } from './entry-spinner/spinner.component';\n\n@NgModule({\n declarations: [\n EntrySpinnerComponent\n ],\n imports: [\n CommonModule,\n OverlayModule,\n MatProgressSpinnerModule\n ],\n exports: [\n EntrySpinnerComponent\n ]\n})\nexport class EntrySpinnerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;;;;AAMM,MAAO,uBAAwB,SAAQ,gBAAgB,CAAA;IAK3D,WAA8B,CAAA,QAAkB,EAAE,QAAkB,EAAA;AAClE,QAAA,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAJnB,QAAA,IAAA,CAAA,SAAS,GAAgB,IAAI,CAAC,SAAS,CAAC,IAAI;;IAOpD,SAAS,CAAC,QAAqB,EAAE,OAAgC,EAAA;AAC/D,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;;IAGzB,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,eAAe,EAAE;;QAExB,OAAO,IAAI,CAAC,iBAAiB;;IAG/B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE;;IAG1B,eAAe,GAAA;QACrB,MAAM,cAAc,GAAG,uBAAuB;AAC9C,QAAA,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ;QAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC;AACrD,QAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AAEvC,QAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU;AAC5D,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;;AAlCzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,
|
|
1
|
+
{"version":3,"file":"enigmatry-entry-components-spinner.mjs","sources":["../../../../libs/entry-components/spinner/spinner-overlay-container.ts","../../../../libs/entry-components/spinner/entry-spinner/spinner.component.ts","../../../../libs/entry-components/spinner/entry-spinner/spinner.component.html","../../../../libs/entry-components/spinner/spinner.module.ts","../../../../libs/entry-components/spinner/enigmatry-entry-components-spinner.ts"],"sourcesContent":["import { OverlayContainer } from '@angular/cdk/overlay';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class SpinnerOverlayContainer extends OverlayContainer implements OnDestroy {\r\n\r\n private _appendTo: HTMLElement = this._document.body;\r\n private _options: { fullscreen: boolean };\r\n\r\n constructor(@Inject(DOCUMENT) document: Document, platform: Platform) {\r\n super(document, platform);\r\n }\r\n\r\n configure(appendTo: HTMLElement, options: { fullscreen: boolean }): void {\r\n this._appendTo = appendTo;\r\n this._options = options;\r\n }\r\n\r\n getContainerElement(): HTMLElement {\r\n if (!this._containerElement) {\r\n this.createContainer();\r\n }\r\n return this._containerElement;\r\n }\r\n\r\n ngOnDestroy() {\r\n this._containerElement?.remove();\r\n }\r\n\r\n private createContainer(): void {\r\n const containerClass = 'cdk-overlay-container';\r\n const { fullscreen } = this._options;\r\n\r\n const container = this._document.createElement('div');\r\n container.classList.add(containerClass);\r\n\r\n container.style.position = fullscreen ? 'fixed' : 'absolute';\r\n this._appendTo.appendChild(container);\r\n this._containerElement = container;\r\n }\r\n}\r\n","import { Overlay, OverlayConfig, OverlayContainer, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy,\n OnInit, TemplateRef, ViewChild, ViewContainerRef\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { SpinnerOverlayContainer } from '../spinner-overlay-container';\n\n@Component({\n selector: 'entry-spinner',\n templateUrl: './spinner.component.html',\n providers: [\n Overlay,\n {\n provide: OverlayContainer,\n useClass: SpinnerOverlayContainer\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class EntrySpinnerComponent implements OnInit, OnDestroy {\n\n @Input() color: ThemePalette = 'primary';\n @Input() diameter = 30;\n @Input() fullscreen = false;\n @Input() hasBackgroundOverlay = true;\n\n @ViewChild('matSpinner', { static: true })\n private templateRef: TemplateRef<any>;\n private overlayRef: OverlayRef;\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private overlayContainer: OverlayContainer,\n private elementRef: ElementRef<HTMLElement>) {\n }\n\n ngOnInit(): void {\n this.createOverlay();\n this.overlayRef.attach(new TemplatePortal(this.templateRef, this.viewContainerRef));\n }\n\n ngOnDestroy(): void {\n this.disposeOverlayRef();\n }\n\n private createOverlay() {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: this.hasBackgroundOverlay,\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n this.configureOverlayContainer();\n this.overlayRef = this.overlay.create(overlayConfig);\n }\n\n private configureOverlayContainer() {\n let appendTo = this.elementRef.nativeElement;\n if (this.fullscreen) {\n appendTo = document.body;\n }\n (this.overlayContainer as SpinnerOverlayContainer)\n .configure(appendTo, { fullscreen: this.fullscreen });\n }\n\n private disposeOverlayRef() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n }\n}\n","<ng-template #matSpinner>\r\n\t<mat-spinner [diameter]=\"diameter\" [color]=\"color\"></mat-spinner>\r\n</ng-template>","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { EntrySpinnerComponent } from './entry-spinner/spinner.component';\n\n@NgModule({\n declarations: [\n EntrySpinnerComponent\n ],\n imports: [\n CommonModule,\n OverlayModule,\n MatProgressSpinnerModule\n ],\n exports: [\n EntrySpinnerComponent\n ]\n})\nexport class EntrySpinnerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as i4$1 from '@angular/material/paginator';
|
|
|
2
2
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
3
3
|
export { PageEvent } from '@angular/material/paginator';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { InjectionToken,
|
|
5
|
+
import { InjectionToken, Input, Inject, ChangeDetectionStrategy, Component, EventEmitter, ViewChild, Output, TemplateRef, HostBinding, NgModule } from '@angular/core';
|
|
6
6
|
import { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';
|
|
7
7
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
8
8
|
import * as i2$1 from '@angular/material/table';
|
|
@@ -107,10 +107,10 @@ class EntryCellFormattedValueComponent {
|
|
|
107
107
|
constructor(defaultPercentageMultiplier) {
|
|
108
108
|
this.defaultPercentageMultiplier = defaultPercentageMultiplier;
|
|
109
109
|
}
|
|
110
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
111
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
110
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryCellFormattedValueComponent, deps: [{ token: DEFAULT_PERCENTAGE_MULTIPLIER }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
111
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EntryCellFormattedValueComponent, isStandalone: false, 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 }); }
|
|
112
112
|
}
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryCellFormattedValueComponent, decorators: [{
|
|
114
114
|
type: Component,
|
|
115
115
|
args: [{ selector: 'entry-cell-formatted-value', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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" }]
|
|
116
116
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
@@ -132,10 +132,10 @@ class EntryCellComponent {
|
|
|
132
132
|
const keys = colDef.field ? colDef.field.split('.') : [];
|
|
133
133
|
return keys.reduce((data, key) => data && data[key], rowData);
|
|
134
134
|
}
|
|
135
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
135
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
136
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EntryCellComponent, isStandalone: false, 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 }); }
|
|
137
137
|
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryCellComponent, decorators: [{
|
|
139
139
|
type: Component,
|
|
140
140
|
args: [{ selector: 'entry-cell', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<entry-cell-formatted-value [value]=\"value\" [type]=\"colDef.type\" [typeParameter]=\"colDef.typeParameter\"></entry-cell-formatted-value>" }]
|
|
141
141
|
}], propDecorators: { rowData: [{
|
|
@@ -157,10 +157,10 @@ class EntryCellContextMenuComponent {
|
|
|
157
157
|
? this.rowMenuFormatter.items(this.rowData)
|
|
158
158
|
: this.items;
|
|
159
159
|
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
161
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryCellContextMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EntryCellContextMenuComponent, isStandalone: false, selector: "entry-cell-context-menu", inputs: { items: "items", rowMenuFormatter: "rowMenuFormatter", rowData: "rowData", triggerIcon: "triggerIcon", isSubMenu: "isSubMenu" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<button *ngIf=\"!isSubMenu\" mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>{{triggerIcon}}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\" role=\"menu\">\n <ng-container *ngFor=\"let item of menuItems\">\n <ng-container \n *ngIf=\"item.items?.length; then menuSubItems; else menuItem\">\n </ng-container>\n\n <ng-template #menuSubItems>\n <button mat-menu-item [disabled]=\"item.disabled\" [matMenuTriggerFor]=\"subMenu.menu\"\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 <entry-cell-context-menu #subMenu [items]=\"item.items\" [rowData]=\"rowData\" [isSubMenu]=\"true\"\n (selected)=\"selected.emit($event)\">\n </entry-cell-context-menu>\n </button>\n </ng-template>\n\n <ng-template #menuItem>\n <button mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\" 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 </ng-template>\n </ng-container>\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", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: EntryCellContextMenuComponent, selector: "entry-cell-context-menu", inputs: ["items", "rowMenuFormatter", "rowData", "triggerIcon", "isSubMenu"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
162
162
|
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryCellContextMenuComponent, decorators: [{
|
|
164
164
|
type: Component,
|
|
165
165
|
args: [{ selector: 'entry-cell-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<button *ngIf=\"!isSubMenu\" mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>{{triggerIcon}}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\" role=\"menu\">\n <ng-container *ngFor=\"let item of menuItems\">\n <ng-container \n *ngIf=\"item.items?.length; then menuSubItems; else menuItem\">\n </ng-container>\n\n <ng-template #menuSubItems>\n <button mat-menu-item [disabled]=\"item.disabled\" [matMenuTriggerFor]=\"subMenu.menu\"\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 <entry-cell-context-menu #subMenu [items]=\"item.items\" [rowData]=\"rowData\" [isSubMenu]=\"true\"\n (selected)=\"selected.emit($event)\">\n </entry-cell-context-menu>\n </button>\n </ng-template>\n\n <ng-template #menuItem>\n <button mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\" 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 </ng-template>\n </ng-container>\n</mat-menu>" }]
|
|
166
166
|
}], propDecorators: { items: [{
|
|
@@ -323,10 +323,10 @@ class EntryTableComponent {
|
|
|
323
323
|
convertToKebabCase(value) {
|
|
324
324
|
return value?.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
|
325
325
|
}
|
|
326
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
327
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.3", type: EntryTableComponent, isStandalone: false, 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\" aria-label=\"Select rows\">\n <mat-checkbox aria-label=\"Select all\" *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 aria-label=\"Select row\"\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 aria-label=\"Select row\"\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\" aria-label=\"Context Menu Actions\"></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 (keydown.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=\"shouldShowPaginator\"\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>\n", 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: ["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: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], 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", "triggerIcon", "isSubMenu"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
326
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryTableComponent, deps: [{ token: ENTRY_TABLE_CONFIG }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
327
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: EntryTableComponent, isStandalone: false, 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\" aria-label=\"Select rows\">\n <mat-checkbox aria-label=\"Select all\" *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 aria-label=\"Select row\"\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 aria-label=\"Select row\"\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\" aria-label=\"Context Menu Actions\"></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 (keydown.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=\"shouldShowPaginator\"\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>\n", 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: ["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: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i4$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], 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", "triggerIcon", "isSubMenu"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
328
328
|
}
|
|
329
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryTableComponent, decorators: [{
|
|
330
330
|
type: Component,
|
|
331
331
|
args: [{ selector: 'entry-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, 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\" aria-label=\"Select rows\">\n <mat-checkbox aria-label=\"Select all\" *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 aria-label=\"Select row\"\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 aria-label=\"Select row\"\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\" aria-label=\"Context Menu Actions\"></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 (keydown.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=\"shouldShowPaginator\"\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>\n" }]
|
|
332
332
|
}], ctorParameters: () => [{ type: EntryTableConfig, decorators: [{
|
|
@@ -418,8 +418,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.3", ngImpor
|
|
|
418
418
|
}] } });
|
|
419
419
|
|
|
420
420
|
class EntryTableModule {
|
|
421
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
422
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.
|
|
421
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
422
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.17", ngImport: i0, type: EntryTableModule, declarations: [EntryTableComponent,
|
|
423
423
|
EntryCellComponent,
|
|
424
424
|
EntryCellContextMenuComponent,
|
|
425
425
|
EntryCellFormattedValueComponent], imports: [CommonModule,
|
|
@@ -436,7 +436,7 @@ class EntryTableModule {
|
|
|
436
436
|
EntryCellComponent,
|
|
437
437
|
EntryCellContextMenuComponent,
|
|
438
438
|
EntryCellFormattedValueComponent] }); }
|
|
439
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.
|
|
439
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryTableModule, providers: [
|
|
440
440
|
{ provide: DEFAULT_PERCENTAGE_MULTIPLIER, useValue: 1 }
|
|
441
441
|
], imports: [CommonModule,
|
|
442
442
|
FormsModule,
|
|
@@ -450,7 +450,7 @@ class EntryTableModule {
|
|
|
450
450
|
CommonModule,
|
|
451
451
|
MatButtonModule] }); }
|
|
452
452
|
}
|
|
453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: EntryTableModule, decorators: [{
|
|
454
454
|
type: NgModule,
|
|
455
455
|
args: [{
|
|
456
456
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
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, Provider } from '@angular/core';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\nexport class EntryTableConfig {\n /** Show paginator, default is true */\n showPaginator = true;\n /** Show first and last pagination buttons, default is false */\n showFirstLastButtons = false;\n /** Page size, default 20 */\n pageSize = 20;\n /** Page size options, default [20, 50, 100] */\n pageSizeOptions = [20, 50, 100];\n /** Hide page size options, default is false */\n hidePageSize = false;\n /** Hide pagination, default is false */\n noResultsText = 'No results found';\n /** Row focus visible, default is false */\n rowFocusVisible = false;\n\n constructor(config: Partial<EntryTableConfig> = {}) {\n this.showPaginator = config.showPaginator ?? this.showPaginator;\n this.showFirstLastButtons = config.showFirstLastButtons ?? this.showFirstLastButtons;\n this.pageSize = config.pageSize ?? this.pageSize;\n this.pageSizeOptions = config.pageSizeOptions ?? this.pageSizeOptions;\n this.hidePageSize = config.hidePageSize ?? this.hidePageSize;\n this.noResultsText = config.noResultsText ?? this.noResultsText;\n this.rowFocusVisible = config.rowFocusVisible ?? this.rowFocusVisible;\n }\n}\n\n/** Entry table config injection token\n * Defaults:\n * - showPaginator: true\n * - showFirstLastButtons: false\n * - pageSize: 20\n * - pageSizeOptions: [20, 50, 100]\n * - hidePageSize: false\n * - noResultsText: 'No results found'\n * - rowFocusVisible: false\n */\nexport const ENTRY_TABLE_CONFIG = createInjectionToken(new EntryTableConfig());\n\n/** Provide entry table config */\nexport function provideEntryTableConfig(config: Partial<EntryTableConfig>): Provider {\n return provideConfig(ENTRY_TABLE_CONFIG, () => new EntryTableConfig(config));\n}\n\n/** Default percentage multiplier injection token */\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 standalone: false\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 standalone: false\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, ViewChild } from '@angular/core';\nimport { MatMenuPanel } from '@angular/material/menu';\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 standalone: false\n})\nexport class EntryCellContextMenuComponent implements OnInit {\n\n @Input() items: ContextMenuItem[] = [];\n @Input() rowMenuFormatter: RowContextMenuFormatter;\n @Input() rowData: any;\n @Input() triggerIcon: string = 'more_vert';\n @Input() isSubMenu: boolean = false;\n @Output() selected = new EventEmitter<string>();\n\n @ViewChild('menu', { static: true }) menu: MatMenuPanel;\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 *ngIf=\"!isSubMenu\" mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>{{triggerIcon}}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\" role=\"menu\">\n <ng-container *ngFor=\"let item of menuItems\">\n <ng-container \n *ngIf=\"item.items?.length; then menuSubItems; else menuItem\">\n </ng-container>\n\n <ng-template #menuSubItems>\n <button mat-menu-item [disabled]=\"item.disabled\" [matMenuTriggerFor]=\"subMenu.menu\"\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 <entry-cell-context-menu #subMenu [items]=\"item.items\" [rowData]=\"rowData\" [isSubMenu]=\"true\"\n (selected)=\"selected.emit($event)\">\n </entry-cell-context-menu>\n </button>\n </ng-template>\n\n <ng-template #menuItem>\n <button mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\" 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 </ng-template>\n </ng-container>\n</mat-menu>","/* eslint-disable @typescript-eslint/member-ordering */\n\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\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 standalone: false\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: boolean;\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 this.rowFocusVisible = this.rowFocusVisible ?? this._config.rowFocusVisible;\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 get shouldShowPaginator(){\n return this.showPaginator && this._data.length > 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\" aria-label=\"Select rows\">\n <mat-checkbox aria-label=\"Select all\" *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 aria-label=\"Select row\"\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 aria-label=\"Select row\"\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\" aria-label=\"Context Menu Actions\"></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 (keydown.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=\"shouldShowPaginator\"\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>\n","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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"}
|
|
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, Provider } from '@angular/core';\nimport { createInjectionToken, provideConfig } from '@enigmatry/entry-components/common';\n\nexport class EntryTableConfig {\n /** Show paginator, default is true */\n showPaginator = true;\n /** Show first and last pagination buttons, default is false */\n showFirstLastButtons = false;\n /** Page size, default 20 */\n pageSize = 20;\n /** Page size options, default [20, 50, 100] */\n pageSizeOptions = [20, 50, 100];\n /** Hide page size options, default is false */\n hidePageSize = false;\n /** Hide pagination, default is false */\n noResultsText = 'No results found';\n /** Row focus visible, default is false */\n rowFocusVisible = false;\n\n constructor(config: Partial<EntryTableConfig> = {}) {\n this.showPaginator = config.showPaginator ?? this.showPaginator;\n this.showFirstLastButtons = config.showFirstLastButtons ?? this.showFirstLastButtons;\n this.pageSize = config.pageSize ?? this.pageSize;\n this.pageSizeOptions = config.pageSizeOptions ?? this.pageSizeOptions;\n this.hidePageSize = config.hidePageSize ?? this.hidePageSize;\n this.noResultsText = config.noResultsText ?? this.noResultsText;\n this.rowFocusVisible = config.rowFocusVisible ?? this.rowFocusVisible;\n }\n}\n\n/** Entry table config injection token\n * Defaults:\n * - showPaginator: true\n * - showFirstLastButtons: false\n * - pageSize: 20\n * - pageSizeOptions: [20, 50, 100]\n * - hidePageSize: false\n * - noResultsText: 'No results found'\n * - rowFocusVisible: false\n */\nexport const ENTRY_TABLE_CONFIG = createInjectionToken(new EntryTableConfig());\n\n/** Provide entry table config */\nexport function provideEntryTableConfig(config: Partial<EntryTableConfig>): Provider {\n return provideConfig(ENTRY_TABLE_CONFIG, () => new EntryTableConfig(config));\n}\n\n/** Default percentage multiplier injection token */\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 standalone: false\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 standalone: false\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, ViewChild } from '@angular/core';\nimport { MatMenuPanel } from '@angular/material/menu';\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 standalone: false\n})\nexport class EntryCellContextMenuComponent implements OnInit {\n\n @Input() items: ContextMenuItem[] = [];\n @Input() rowMenuFormatter: RowContextMenuFormatter;\n @Input() rowData: any;\n @Input() triggerIcon: string = 'more_vert';\n @Input() isSubMenu: boolean = false;\n @Output() selected = new EventEmitter<string>();\n\n @ViewChild('menu', { static: true }) menu: MatMenuPanel;\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 *ngIf=\"!isSubMenu\" mat-icon-button [matMenuTriggerFor]=\"menu\" (click)=\"$event.stopPropagation()\">\n <mat-icon>{{triggerIcon}}</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"entry-table-menu\" role=\"menu\">\n <ng-container *ngFor=\"let item of menuItems\">\n <ng-container \n *ngIf=\"item.items?.length; then menuSubItems; else menuItem\">\n </ng-container>\n\n <ng-template #menuSubItems>\n <button mat-menu-item [disabled]=\"item.disabled\" [matMenuTriggerFor]=\"subMenu.menu\"\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 <entry-cell-context-menu #subMenu [items]=\"item.items\" [rowData]=\"rowData\" [isSubMenu]=\"true\"\n (selected)=\"selected.emit($event)\">\n </entry-cell-context-menu>\n </button>\n </ng-template>\n\n <ng-template #menuItem>\n <button mat-menu-item [disabled]=\"item.disabled\" (click)=\"selected.emit(item.id)\" 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 </ng-template>\n </ng-container>\n</mat-menu>","/* eslint-disable @typescript-eslint/member-ordering */\n\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\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 standalone: false\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: boolean;\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 this.rowFocusVisible = this.rowFocusVisible ?? this._config.rowFocusVisible;\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 get shouldShowPaginator(){\n return this.showPaginator && this._data.length > 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\" aria-label=\"Select rows\">\n <mat-checkbox aria-label=\"Select all\" *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 aria-label=\"Select row\"\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 aria-label=\"Select row\"\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\" aria-label=\"Context Menu Actions\"></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 (keydown.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=\"shouldShowPaginator\"\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>\n","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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"}
|