@mosa-ng/material 20.1.2 → 21.0.1

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.
@@ -51,10 +51,10 @@ class AlertWidget {
51
51
  }
52
52
  }
53
53
  }
54
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: AlertWidget, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: AlertWidget, isStandalone: true, selector: "mosa-alert-widget", inputs: { icon: "icon", title: "title", message: "message", type: "type" }, usesOnChanges: true, ngImport: i0, template: "<div [class]=\"'alert-' + type\" class=\"alert\">\n <div class=\"icon\">\n <mat-icon>icon</mat-icon>\n {{ title }}\n </div>\n <div>{{ message }}</div>\n</div>\n", styles: [":host{display:block}.alert{position:relative;padding:15px;border-radius:4px;width:100%;display:table;color:#222;border:1px solid #222222;border-left-width:5px}.alert .icon{display:flex;align-items:center;margin-bottom:10px}.alert .icon mat-icon{margin-right:10px}.alert-danger{background:#f443361a;border-color:#f44336}.alert-warning{background:#ffaa001a;border-color:#fa0}.alert-info{background:#008eff1a;border-color:#008eff}.alert-primary{background:#66cc331a;border-color:#6c3}.alert-success{background:#3ad15d1a;border-color:#3ad15d}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AlertWidget, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
55
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: AlertWidget, isStandalone: true, selector: "mosa-alert-widget", inputs: { icon: "icon", title: "title", message: "message", type: "type" }, usesOnChanges: true, ngImport: i0, template: "<div [class]=\"'alert-' + type\" class=\"alert\">\n <div class=\"icon\">\n <mat-icon>icon</mat-icon>\n {{ title }}\n </div>\n <div>{{ message }}</div>\n</div>\n", styles: [":host{display:block}.alert{position:relative;padding:15px;border-radius:4px;width:100%;display:table;color:#222;border:1px solid #222222;border-left-width:5px}.alert .icon{display:flex;align-items:center;margin-bottom:10px}.alert .icon mat-icon{margin-right:10px}.alert-danger{background:#f443361a;border-color:#f44336}.alert-warning{background:#ffaa001a;border-color:#fa0}.alert-info{background:#008eff1a;border-color:#008eff}.alert-primary{background:#66cc331a;border-color:#6c3}.alert-success{background:#3ad15d1a;border-color:#3ad15d}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: AlertWidget, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AlertWidget, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'mosa-alert-widget', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatIcon], template: "<div [class]=\"'alert-' + type\" class=\"alert\">\n <div class=\"icon\">\n <mat-icon>icon</mat-icon>\n {{ title }}\n </div>\n <div>{{ message }}</div>\n</div>\n", styles: [":host{display:block}.alert{position:relative;padding:15px;border-radius:4px;width:100%;display:table;color:#222;border:1px solid #222222;border-left-width:5px}.alert .icon{display:flex;align-items:center;margin-bottom:10px}.alert .icon mat-icon{margin-right:10px}.alert-danger{background:#f443361a;border-color:#f44336}.alert-warning{background:#ffaa001a;border-color:#fa0}.alert-info{background:#008eff1a;border-color:#008eff}.alert-primary{background:#66cc331a;border-color:#6c3}.alert-success{background:#3ad15d1a;border-color:#3ad15d}\n"] }]
60
60
  }], ctorParameters: () => [], propDecorators: { icon: [{
@@ -123,10 +123,10 @@ class ConfirmDialog {
123
123
  confirm(result) {
124
124
  this.myMatDialogRef.close(result);
125
125
  }
126
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConfirmDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: ConfirmDialog, isStandalone: true, selector: "mosa-confirm-dialog", ngImport: i0, template: "<h1 class=\"active\" mat-dialog-title>{{ dialogData.title | translate }}</h1>\n<div mat-dialog-content>\n {{ dialogData.message | translate }}\n</div>\n<div mat-dialog-actions>\n @if (dialogData.cancel) {\n <button (click)=\"confirm(result.cancelled)\" color=\"primary\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n }\n @if (dialogData.deny?.visible) {\n <button (click)=\"confirm(result.denied)\" color=\"primary\" mat-stroked-button>\n {{ dialogData.deny?.label | translate | uppercase }}\n </button>\n }\n @if (dialogData.confirm?.visible) {\n <button (click)=\"confirm(result.confirmed)\" color=\"primary\" mat-flat-button>\n {{ dialogData.confirm?.label | translate | uppercase }}\n </button>\n }\n</div>\n", styles: [".mat-dialog-actions{margin-top:20px}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ConfirmDialog, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
127
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ConfirmDialog, isStandalone: true, selector: "mosa-confirm-dialog", ngImport: i0, template: "<h1 class=\"active\" mat-dialog-title>{{ dialogData.title | translate }}</h1>\n<div mat-dialog-content>\n {{ dialogData.message | translate }}\n</div>\n<div mat-dialog-actions>\n @if (dialogData.cancel) {\n <button (click)=\"confirm(result.cancelled)\" color=\"primary\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n }\n @if (dialogData.deny?.visible) {\n <button (click)=\"confirm(result.denied)\" color=\"primary\" mat-stroked-button>\n {{ dialogData.deny?.label | translate | uppercase }}\n </button>\n }\n @if (dialogData.confirm?.visible) {\n <button (click)=\"confirm(result.confirmed)\" color=\"primary\" mat-flat-button>\n {{ dialogData.confirm?.label | translate | uppercase }}\n </button>\n }\n</div>\n", styles: [".mat-dialog-actions{margin-top:20px}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
128
  }
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConfirmDialog, decorators: [{
129
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ConfirmDialog, decorators: [{
130
130
  type: Component,
131
131
  args: [{ selector: 'mosa-confirm-dialog', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
132
132
  MatDialogTitle,
@@ -183,10 +183,10 @@ class CellEditorBaseComponent {
183
183
  .afterClosed());
184
184
  return result === ConfirmDialogResult.confirmed;
185
185
  }
186
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorBaseComponent, deps: [{ token: i1.MatDialog, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: CellEditorBaseComponent, isStandalone: true, selector: "mosa-cell-editor-base", ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorBaseComponent, deps: [{ token: i1.MatDialog, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: CellEditorBaseComponent, isStandalone: true, selector: "mosa-cell-editor-base", ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
188
188
  }
189
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorBaseComponent, decorators: [{
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorBaseComponent, decorators: [{
190
190
  type: Component,
191
191
  args: [{
192
192
  selector: 'mosa-cell-editor-base',
@@ -261,10 +261,10 @@ class CellEditorComponent {
261
261
  }
262
262
  });
263
263
  }
264
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
265
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: CellEditorComponent, isStandalone: true, selector: "mosa-cell-editor", inputs: { key: "key", rowItem: "rowItem", value: "value" }, outputs: { valueChange: "valueChange", cellClick: "cellClick", cellChange: "cellChange", cellCancel: "cellCancel" }, queries: [{ propertyName: "select", first: true, predicate: MatSelect, descendants: true }], ngImport: i0, template: "@if (mode === 'input') {\n <div class=\"input-wrapper\">\n <ng-content select=\".cell-input\"></ng-content>\n </div>\n}\n@if (mode === 'output') {\n <div class=\"output-wrapper\">\n <ng-content select=\".cell-output\"></ng-content>\n </div>\n}\n", styles: [":host{display:flex;align-items:center;position:absolute;width:100%;height:100%;top:0;left:0;z-index:1}:host.focused .input-wrapper{height:calc(100% - 6px);width:100%;box-shadow:0 0 0 3px #1387dfcc;outline:0;display:flex;flex-direction:column}:host.edited{color:#1387df;font-weight:500}::ng-deep .editable-cell{position:relative}::ng-deep .editable-cell:first-child mosa-cell-editor:not(.focused){padding-left:24px}::ng-deep .cell-input{padding:10px}::ng-deep .cell-output{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}::ng-deep input.cell-input{font-size:14px;font-family:Roboto,sans-serif;background:none;flex-grow:1;outline:0;border:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
264
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
265
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: CellEditorComponent, isStandalone: true, selector: "mosa-cell-editor", inputs: { key: "key", rowItem: "rowItem", value: "value" }, outputs: { valueChange: "valueChange", cellClick: "cellClick", cellChange: "cellChange", cellCancel: "cellCancel" }, queries: [{ propertyName: "select", first: true, predicate: MatSelect, descendants: true }], ngImport: i0, template: "@if (mode === 'input') {\n <div class=\"input-wrapper\">\n <ng-content select=\".cell-input\"></ng-content>\n </div>\n}\n@if (mode === 'output') {\n <div class=\"output-wrapper\">\n <ng-content select=\".cell-output\"></ng-content>\n </div>\n}\n", styles: [":host{display:flex;align-items:center;position:absolute;width:100%;height:100%;top:0;left:0;z-index:1}:host.focused .input-wrapper{height:calc(100% - 6px);width:100%;box-shadow:0 0 0 3px #1387dfcc;outline:0;display:flex;flex-direction:column}:host.edited{color:#1387df;font-weight:500}::ng-deep .editable-cell{position:relative}::ng-deep .editable-cell:first-child mosa-cell-editor:not(.focused){padding-left:24px}::ng-deep .cell-input{padding:10px}::ng-deep .cell-output{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}::ng-deep input.cell-input{font-size:14px;font-family:Roboto,sans-serif;background:none;flex-grow:1;outline:0;border:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
266
266
  }
267
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorComponent, decorators: [{
267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorComponent, decorators: [{
268
268
  type: Component,
269
269
  args: [{ selector: 'mosa-cell-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (mode === 'input') {\n <div class=\"input-wrapper\">\n <ng-content select=\".cell-input\"></ng-content>\n </div>\n}\n@if (mode === 'output') {\n <div class=\"output-wrapper\">\n <ng-content select=\".cell-output\"></ng-content>\n </div>\n}\n", styles: [":host{display:flex;align-items:center;position:absolute;width:100%;height:100%;top:0;left:0;z-index:1}:host.focused .input-wrapper{height:calc(100% - 6px);width:100%;box-shadow:0 0 0 3px #1387dfcc;outline:0;display:flex;flex-direction:column}:host.edited{color:#1387df;font-weight:500}::ng-deep .editable-cell{position:relative}::ng-deep .editable-cell:first-child mosa-cell-editor:not(.focused){padding-left:24px}::ng-deep .cell-input{padding:10px}::ng-deep .cell-output{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}::ng-deep input.cell-input{font-size:14px;font-family:Roboto,sans-serif;background:none;flex-grow:1;outline:0;border:none}\n"] }]
270
270
  }], ctorParameters: () => [], propDecorators: { key: [{
@@ -299,10 +299,10 @@ class LoadingButtonComponent {
299
299
  e.stopPropagation();
300
300
  this.click.emit(e);
301
301
  }
302
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoadingButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
303
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: LoadingButtonComponent, isStandalone: true, selector: "mosa-loading-button", inputs: { mode: "mode", loading: "loading", disabled: "disabled", color: "color", buttonType: "buttonType", icon: "icon" }, outputs: { click: "click" }, ngImport: i0, template: "@switch (buttonType) {\n @default {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('raised') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-raised-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('stroked') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-stroked-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('flat') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-flat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('icon') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-icon-button>\n @if (loading) {\n <mat-spinner class=\"icon-spinner\" [color]=\"color\" [diameter]=\"40\" [strokeWidth]=\"2\"></mat-spinner>\n } @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n }\n <ng-content select=\".icon\"></ng-content>\n </button>\n }\n}\n\n<ng-template #buttonContent>\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n } @switch (mode) {\n @case ('spinner') {\n <div class=\"spinner-inner\">\n @if (loading) {\n <mat-spinner [color]=\"color\" [diameter]=\"20\"></mat-spinner>\n }\n <span [class.loading]=\"loading\" class=\"label\">\n <ng-content select=\".spinner-label\"></ng-content>\n </span>\n </div>\n } @case ('progress-bar') {\n <ng-content select=\".progress-bar-label\"></ng-content>\n @if (loading) {\n <mat-progress-bar [color]=\"color\" mode=\"indeterminate\"></mat-progress-bar>\n }\n }\n}\n</ng-template>\n", styles: [":host{pointer-events:none}button:not(:disabled){pointer-events:all}.icon-spinner{position:absolute;top:0;left:0}.spinner .spinner-inner{display:flex;align-items:center}.spinner .spinner-inner mat-spinner{position:absolute}.spinner .spinner-inner .label.loading{margin-left:30px}.progress-bar{overflow:hidden;position:relative}.progress-bar mat-progress-bar{position:absolute;bottom:0;left:0;width:100%}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
302
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoadingButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
303
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: LoadingButtonComponent, isStandalone: true, selector: "mosa-loading-button", inputs: { mode: "mode", loading: "loading", disabled: "disabled", color: "color", buttonType: "buttonType", icon: "icon" }, outputs: { click: "click" }, ngImport: i0, template: "@switch (buttonType) {\n @default {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('raised') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-raised-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('stroked') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-stroked-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('flat') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-flat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('icon') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-icon-button>\n @if (loading) {\n <mat-spinner class=\"icon-spinner\" [color]=\"color\" [diameter]=\"40\" [strokeWidth]=\"2\"></mat-spinner>\n } @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n }\n <ng-content select=\".icon\"></ng-content>\n </button>\n }\n}\n\n<ng-template #buttonContent>\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n } @switch (mode) {\n @case ('spinner') {\n <div class=\"spinner-inner\">\n @if (loading) {\n <mat-spinner [color]=\"color\" [diameter]=\"20\"></mat-spinner>\n }\n <span [class.loading]=\"loading\" class=\"label\">\n <ng-content select=\".spinner-label\"></ng-content>\n </span>\n </div>\n } @case ('progress-bar') {\n <ng-content select=\".progress-bar-label\"></ng-content>\n @if (loading) {\n <mat-progress-bar [color]=\"color\" mode=\"indeterminate\"></mat-progress-bar>\n }\n }\n}\n</ng-template>\n", styles: [":host{pointer-events:none}button:not(:disabled){pointer-events:all}.icon-spinner{position:absolute;top:0;left:0}.spinner .spinner-inner{display:flex;align-items:center}.spinner .spinner-inner mat-spinner{position:absolute}.spinner .spinner-inner .label.loading{margin-left:30px}.progress-bar{overflow:hidden;position:relative}.progress-bar mat-progress-bar{position:absolute;bottom:0;left:0;width:100%}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
304
304
  }
305
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoadingButtonComponent, decorators: [{
305
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoadingButtonComponent, decorators: [{
306
306
  type: Component,
307
307
  args: [{ selector: 'mosa-loading-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
308
308
  MatButton,
@@ -347,17 +347,16 @@ class LoggerFacade {
347
347
  updateState(state) {
348
348
  this.store$.next(_state = state);
349
349
  }
350
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
351
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerFacade, providedIn: 'root' }); }
350
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
351
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerFacade, providedIn: 'root' }); }
352
352
  }
353
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerFacade, decorators: [{
353
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerFacade, decorators: [{
354
354
  type: Injectable,
355
355
  args: [{
356
356
  providedIn: 'root',
357
357
  }]
358
358
  }], ctorParameters: () => [] });
359
359
 
360
- /* eslint-disable */
361
360
  class LoggerComponent {
362
361
  constructor() {
363
362
  this.myLoggerFacade = inject(LoggerFacade);
@@ -427,8 +426,8 @@ class LoggerComponent {
427
426
  log.config.action?.callback?.call(this);
428
427
  this.slideOut(log.id);
429
428
  }
430
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
431
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: LoggerComponent, isStandalone: true, selector: "mosa-logger", viewQueries: [{ propertyName: "elements", predicate: ["loggerElement"], descendants: true }], ngImport: i0, template: "@if (loggerState$ | async; as state) {\n @for (log of state.logs; track log) {\n <div #loggerElement\n [@slide]=\"log.state\"\n [class.none]=\"!log.state\"\n [class]=\"log.config.className\"\n (click)=\"onClickLog(log)\"\n [class.touch]=\"log.config.closeOnClick\"\n class=\"logger-element\">\n <div class=\"content\">\n <mat-icon class=\"icon\">{{ log.icon }}</mat-icon>\n <div>\n @if (log.title) {\n <div class=\"title\">{{ log.title | translate }}</div>\n } @if (log.message) {\n <div [innerHTML]=\"log.message | translate\" class=\"message\"></div>\n }\n </div>\n </div>\n @if (log.config.action || log.config.showDismiss) {\n <div class=\"actions\">\n @if (log.config.showDismiss) {\n <button (click)=\"slideOut(log.id)\" class=\"dismiss\" mat-button>\n {{ 'mosa.commons.buttons.dismiss' | translate | uppercase }}\n </button>\n } @if (log.config.action && log.config.action.label && log.config.action.callback) {\n <button (click)=\"$event.stopPropagation(); callAction(log)\"\n class=\"action-btn\" mat-button>\n {{ log.config.action.label | translate | uppercase }}\n </button>\n }\n </div>\n }\n </div>\n }\n}\n\n", styles: [":host{width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;position:fixed;z-index:10000;align-items:flex-end;pointer-events:none}.logger-element{padding:10px 15px;margin:10px 10px 0;width:350px;background:#fff;border-radius:4px;box-shadow:3px 3px 10px #0000004d;border-left:5px solid;pointer-events:all;max-height:400px}.logger-element.touch{cursor:pointer}.logger-element .content{display:flex;width:100%}.logger-element .content .icon{flex-shrink:0;margin-right:10px}.logger-element .content .title{font-weight:500;color:#222}.logger-element .content .message{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;max-lines:3;text-overflow:ellipsis;flex:1 auto;font-size:15px;margin-top:3px;color:#222}.logger-element .actions{display:flex;justify-content:flex-end;margin-top:10px}.logger-element .dismiss{color:#222}.logger-element button:not(:first-child){margin-left:10px}.logger-element.snackbar-error{border-color:#f44336;color:#f44336}.logger-element.snackbar-error button.action-btn{background-color:#d2190b;color:#fff}.logger-element.snackbar-success{border-color:#3ad15d;color:#3ad15d}.logger-element.snackbar-success button.action-btn{background-color:#249a40;color:#fff}.logger-element.snackbar-warning{border-color:#fa0;color:#fa0}.logger-element.snackbar-warning button.action-btn{background-color:#c80;color:#fff}.logger-element.snackbar-info{border-color:#008eff;color:#008eff}.logger-element.snackbar-info button.action-btn{background-color:#0063b3;color:#fff}.logger-element.snackbar-default{border-color:#222;color:#222}.logger-element.snackbar-default button.action-btn{background-color:#222;color:#fff}@media screen and (max-width: 480px){.logger-element{width:100%}}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], animations: [
429
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
430
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: LoggerComponent, isStandalone: true, selector: "mosa-logger", viewQueries: [{ propertyName: "elements", predicate: ["loggerElement"], descendants: true }], ngImport: i0, template: "@if (loggerState$ | async; as state) {\n @for (log of state.logs; track log) {\n <div #loggerElement\n [@slide]=\"log.state\"\n [class.none]=\"!log.state\"\n [class]=\"log.config.className\"\n (click)=\"onClickLog(log)\"\n [class.touch]=\"log.config.closeOnClick\"\n class=\"logger-element\">\n <div class=\"content\">\n <mat-icon class=\"icon\">{{ log.icon }}</mat-icon>\n <div>\n @if (log.title) {\n <div class=\"title\">{{ log.title | translate }}</div>\n } @if (log.message) {\n <div [innerHTML]=\"log.message | translate\" class=\"message\"></div>\n }\n </div>\n </div>\n @if (log.config.action || log.config.showDismiss) {\n <div class=\"actions\">\n @if (log.config.showDismiss) {\n <button (click)=\"slideOut(log.id)\" class=\"dismiss\" mat-button>\n {{ 'mosa.commons.buttons.dismiss' | translate | uppercase }}\n </button>\n } @if (log.config.action && log.config.action.label && log.config.action.callback) {\n <button (click)=\"$event.stopPropagation(); callAction(log)\"\n class=\"action-btn\" mat-button>\n {{ log.config.action.label | translate | uppercase }}\n </button>\n }\n </div>\n }\n </div>\n }\n}\n\n", styles: [":host{width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;position:fixed;z-index:10000;align-items:flex-end;pointer-events:none}.logger-element{padding:10px 15px;margin:10px 10px 0;width:350px;background:#fff;border-radius:4px;box-shadow:3px 3px 10px #0000004d;border-left:5px solid;pointer-events:all;max-height:400px}.logger-element.touch{cursor:pointer}.logger-element .content{display:flex;width:100%}.logger-element .content .icon{flex-shrink:0;margin-right:10px}.logger-element .content .title{font-weight:500;color:#222}.logger-element .content .message{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;max-lines:3;text-overflow:ellipsis;flex:1 auto;font-size:15px;margin-top:3px;color:#222}.logger-element .actions{display:flex;justify-content:flex-end;margin-top:10px}.logger-element .dismiss{color:#222}.logger-element button:not(:first-child){margin-left:10px}.logger-element.snackbar-error{border-color:#f44336;color:#f44336}.logger-element.snackbar-error button.action-btn{background-color:#d2190b;color:#fff}.logger-element.snackbar-success{border-color:#3ad15d;color:#3ad15d}.logger-element.snackbar-success button.action-btn{background-color:#249a40;color:#fff}.logger-element.snackbar-warning{border-color:#fa0;color:#fa0}.logger-element.snackbar-warning button.action-btn{background-color:#c80;color:#fff}.logger-element.snackbar-info{border-color:#008eff;color:#008eff}.logger-element.snackbar-info button.action-btn{background-color:#0063b3;color:#fff}.logger-element.snackbar-default{border-color:#222;color:#222}.logger-element.snackbar-default button.action-btn{background-color:#222;color:#fff}@media screen and (max-width:480px){.logger-element{width:100%}}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], animations: [
432
431
  trigger('slide', [
433
432
  state('enter', style({ transform: 'translateX(0)' })),
434
433
  transition(':leave', [
@@ -441,7 +440,7 @@ class LoggerComponent {
441
440
  ]),
442
441
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
443
442
  }
444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerComponent, decorators: [{
443
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerComponent, decorators: [{
445
444
  type: Component,
446
445
  args: [{ selector: 'mosa-logger', animations: [
447
446
  trigger('slide', [
@@ -460,7 +459,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
460
459
  AsyncPipe,
461
460
  UpperCasePipe,
462
461
  TranslateModule,
463
- ], template: "@if (loggerState$ | async; as state) {\n @for (log of state.logs; track log) {\n <div #loggerElement\n [@slide]=\"log.state\"\n [class.none]=\"!log.state\"\n [class]=\"log.config.className\"\n (click)=\"onClickLog(log)\"\n [class.touch]=\"log.config.closeOnClick\"\n class=\"logger-element\">\n <div class=\"content\">\n <mat-icon class=\"icon\">{{ log.icon }}</mat-icon>\n <div>\n @if (log.title) {\n <div class=\"title\">{{ log.title | translate }}</div>\n } @if (log.message) {\n <div [innerHTML]=\"log.message | translate\" class=\"message\"></div>\n }\n </div>\n </div>\n @if (log.config.action || log.config.showDismiss) {\n <div class=\"actions\">\n @if (log.config.showDismiss) {\n <button (click)=\"slideOut(log.id)\" class=\"dismiss\" mat-button>\n {{ 'mosa.commons.buttons.dismiss' | translate | uppercase }}\n </button>\n } @if (log.config.action && log.config.action.label && log.config.action.callback) {\n <button (click)=\"$event.stopPropagation(); callAction(log)\"\n class=\"action-btn\" mat-button>\n {{ log.config.action.label | translate | uppercase }}\n </button>\n }\n </div>\n }\n </div>\n }\n}\n\n", styles: [":host{width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;position:fixed;z-index:10000;align-items:flex-end;pointer-events:none}.logger-element{padding:10px 15px;margin:10px 10px 0;width:350px;background:#fff;border-radius:4px;box-shadow:3px 3px 10px #0000004d;border-left:5px solid;pointer-events:all;max-height:400px}.logger-element.touch{cursor:pointer}.logger-element .content{display:flex;width:100%}.logger-element .content .icon{flex-shrink:0;margin-right:10px}.logger-element .content .title{font-weight:500;color:#222}.logger-element .content .message{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;max-lines:3;text-overflow:ellipsis;flex:1 auto;font-size:15px;margin-top:3px;color:#222}.logger-element .actions{display:flex;justify-content:flex-end;margin-top:10px}.logger-element .dismiss{color:#222}.logger-element button:not(:first-child){margin-left:10px}.logger-element.snackbar-error{border-color:#f44336;color:#f44336}.logger-element.snackbar-error button.action-btn{background-color:#d2190b;color:#fff}.logger-element.snackbar-success{border-color:#3ad15d;color:#3ad15d}.logger-element.snackbar-success button.action-btn{background-color:#249a40;color:#fff}.logger-element.snackbar-warning{border-color:#fa0;color:#fa0}.logger-element.snackbar-warning button.action-btn{background-color:#c80;color:#fff}.logger-element.snackbar-info{border-color:#008eff;color:#008eff}.logger-element.snackbar-info button.action-btn{background-color:#0063b3;color:#fff}.logger-element.snackbar-default{border-color:#222;color:#222}.logger-element.snackbar-default button.action-btn{background-color:#222;color:#fff}@media screen and (max-width: 480px){.logger-element{width:100%}}\n"] }]
462
+ ], template: "@if (loggerState$ | async; as state) {\n @for (log of state.logs; track log) {\n <div #loggerElement\n [@slide]=\"log.state\"\n [class.none]=\"!log.state\"\n [class]=\"log.config.className\"\n (click)=\"onClickLog(log)\"\n [class.touch]=\"log.config.closeOnClick\"\n class=\"logger-element\">\n <div class=\"content\">\n <mat-icon class=\"icon\">{{ log.icon }}</mat-icon>\n <div>\n @if (log.title) {\n <div class=\"title\">{{ log.title | translate }}</div>\n } @if (log.message) {\n <div [innerHTML]=\"log.message | translate\" class=\"message\"></div>\n }\n </div>\n </div>\n @if (log.config.action || log.config.showDismiss) {\n <div class=\"actions\">\n @if (log.config.showDismiss) {\n <button (click)=\"slideOut(log.id)\" class=\"dismiss\" mat-button>\n {{ 'mosa.commons.buttons.dismiss' | translate | uppercase }}\n </button>\n } @if (log.config.action && log.config.action.label && log.config.action.callback) {\n <button (click)=\"$event.stopPropagation(); callAction(log)\"\n class=\"action-btn\" mat-button>\n {{ log.config.action.label | translate | uppercase }}\n </button>\n }\n </div>\n }\n </div>\n }\n}\n\n", styles: [":host{width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;position:fixed;z-index:10000;align-items:flex-end;pointer-events:none}.logger-element{padding:10px 15px;margin:10px 10px 0;width:350px;background:#fff;border-radius:4px;box-shadow:3px 3px 10px #0000004d;border-left:5px solid;pointer-events:all;max-height:400px}.logger-element.touch{cursor:pointer}.logger-element .content{display:flex;width:100%}.logger-element .content .icon{flex-shrink:0;margin-right:10px}.logger-element .content .title{font-weight:500;color:#222}.logger-element .content .message{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;max-lines:3;text-overflow:ellipsis;flex:1 auto;font-size:15px;margin-top:3px;color:#222}.logger-element .actions{display:flex;justify-content:flex-end;margin-top:10px}.logger-element .dismiss{color:#222}.logger-element button:not(:first-child){margin-left:10px}.logger-element.snackbar-error{border-color:#f44336;color:#f44336}.logger-element.snackbar-error button.action-btn{background-color:#d2190b;color:#fff}.logger-element.snackbar-success{border-color:#3ad15d;color:#3ad15d}.logger-element.snackbar-success button.action-btn{background-color:#249a40;color:#fff}.logger-element.snackbar-warning{border-color:#fa0;color:#fa0}.logger-element.snackbar-warning button.action-btn{background-color:#c80;color:#fff}.logger-element.snackbar-info{border-color:#008eff;color:#008eff}.logger-element.snackbar-info button.action-btn{background-color:#0063b3;color:#fff}.logger-element.snackbar-default{border-color:#222;color:#222}.logger-element.snackbar-default button.action-btn{background-color:#222;color:#fff}@media screen and (max-width:480px){.logger-element{width:100%}}\n"] }]
464
463
  }], ctorParameters: () => [], propDecorators: { elements: [{
465
464
  type: ViewChildren,
466
465
  args: ['loggerElement']
@@ -512,10 +511,10 @@ class SkeletonComponent {
512
511
  }
513
512
  return val || '';
514
513
  }
515
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: SkeletonComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
516
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: SkeletonComponent, isStandalone: true, selector: "mosa-skeleton", inputs: { skeleton: "skeleton", width: "width", height: "height", randomizeOffset: "randomizeOffset", borderRadius: "borderRadius" }, ngImport: i0, template: "", styles: [":host{display:flex;background:#d4d4d4;flex-shrink:0;animation:loading .25s infinite linear alternate-reverse}@keyframes loading{0%{opacity:1}to{opacity:.5}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
514
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SkeletonComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
515
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: SkeletonComponent, isStandalone: true, selector: "mosa-skeleton", inputs: { skeleton: "skeleton", width: "width", height: "height", randomizeOffset: "randomizeOffset", borderRadius: "borderRadius" }, ngImport: i0, template: "", styles: [":host{display:flex;background:#d4d4d4;flex-shrink:0;animation:loading .25s infinite linear alternate-reverse}@keyframes loading{0%{opacity:1}to{opacity:.5}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
517
516
  }
518
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: SkeletonComponent, decorators: [{
517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SkeletonComponent, decorators: [{
519
518
  type: Component,
520
519
  args: [{ selector: 'mosa-skeleton', changeDetection: ChangeDetectionStrategy.OnPush, template: "", styles: [":host{display:flex;background:#d4d4d4;flex-shrink:0;animation:loading .25s infinite linear alternate-reverse}@keyframes loading{0%{opacity:1}to{opacity:.5}}\n"] }]
521
520
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { skeleton: [{
@@ -532,10 +531,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
532
531
 
533
532
  // eslint-disable-next-line @angular-eslint/component-class-suffix
534
533
  class BaseSkeletonLoader {
535
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: BaseSkeletonLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
536
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: BaseSkeletonLoader, isStandalone: true, selector: "mosa-skeleton-loader", inputs: { itemCount: "itemCount" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
534
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BaseSkeletonLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
535
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: BaseSkeletonLoader, isStandalone: true, selector: "mosa-skeleton-loader", inputs: { itemCount: "itemCount" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
537
536
  }
538
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: BaseSkeletonLoader, decorators: [{
537
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: BaseSkeletonLoader, decorators: [{
539
538
  type: Component,
540
539
  args: [{
541
540
  selector: 'mosa-skeleton-loader',
@@ -555,10 +554,10 @@ class ListSkeletonLoader extends BaseSkeletonLoader {
555
554
  ngOnInit() {
556
555
  this.items = Array(this.itemCount).fill(this.itemCount).map((x, i) => i);
557
556
  }
558
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ListSkeletonLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
559
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: ListSkeletonLoader, isStandalone: true, selector: "mosa-list-skeleton-loader", inputs: { content: "content" }, usesInheritance: true, ngImport: i0, template: "<mat-list>\n @for (item of items; track item) {\n <mat-list-item>\n <ng-container *ngTemplateOutlet=\"content, context: { $implicit: item }\"></ng-container>\n </mat-list-item>\n }\n</mat-list>\n", styles: [""], dependencies: [{ kind: "component", type: MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
557
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ListSkeletonLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
558
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ListSkeletonLoader, isStandalone: true, selector: "mosa-list-skeleton-loader", inputs: { content: "content" }, usesInheritance: true, ngImport: i0, template: "<mat-list>\n @for (item of items; track item) {\n <mat-list-item>\n <ng-container *ngTemplateOutlet=\"content, context: { $implicit: item }\"></ng-container>\n </mat-list-item>\n }\n</mat-list>\n", styles: [""], dependencies: [{ kind: "component", type: MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
560
559
  }
561
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ListSkeletonLoader, decorators: [{
560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ListSkeletonLoader, decorators: [{
562
561
  type: Component,
563
562
  args: [{ selector: 'mosa-list-skeleton-loader', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
564
563
  MatList,
@@ -595,10 +594,10 @@ class TableSkeletonLoader extends BaseSkeletonLoader {
595
594
  this.items.push(skeletons);
596
595
  }
597
596
  }
598
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: TableSkeletonLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
599
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: TableSkeletonLoader, isStandalone: true, selector: "mosa-table-skeleton-loader", inputs: { columns: "columns" }, usesInheritance: true, ngImport: i0, template: "<table [dataSource]=\"items\" mat-table>\n @for (column of columns; track column; let i = $index) {\n <ng-container [matColumnDef]=\"'column-' + i\">\n <th *matHeaderCellDef mat-header-cell>\n <mosa-skeleton [skeleton]=\"column[0]\"></mosa-skeleton>\n </th>\n <td *matCellDef=\"let row\" mat-cell>\n <mosa-skeleton [skeleton]=\"column[1]\"></mosa-skeleton>\n </td>\n </ng-container>\n }\n <tr *matHeaderRowDef=\"displayedColumns;sticky:true\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"row-hover\" mat-row></tr>\n</table>\n", styles: ["table{width:100%}\n"], dependencies: [{ kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: SkeletonComponent, selector: "mosa-skeleton", inputs: ["skeleton", "width", "height", "randomizeOffset", "borderRadius"] }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
597
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TableSkeletonLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
598
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: TableSkeletonLoader, isStandalone: true, selector: "mosa-table-skeleton-loader", inputs: { columns: "columns" }, usesInheritance: true, ngImport: i0, template: "<table [dataSource]=\"items\" mat-table>\n @for (column of columns; track column; let i = $index) {\n <ng-container [matColumnDef]=\"'column-' + i\">\n <th *matHeaderCellDef mat-header-cell>\n <mosa-skeleton [skeleton]=\"column[0]\"></mosa-skeleton>\n </th>\n <td *matCellDef=\"let row\" mat-cell>\n <mosa-skeleton [skeleton]=\"column[1]\"></mosa-skeleton>\n </td>\n </ng-container>\n }\n <tr *matHeaderRowDef=\"displayedColumns;sticky:true\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"row-hover\" mat-row></tr>\n</table>\n", styles: ["table{width:100%}\n"], dependencies: [{ kind: "component", type: MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: SkeletonComponent, selector: "mosa-skeleton", inputs: ["skeleton", "width", "height", "randomizeOffset", "borderRadius"] }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "component", type: MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "directive", type: MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "component", type: MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
600
599
  }
601
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: TableSkeletonLoader, decorators: [{
600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: TableSkeletonLoader, decorators: [{
602
601
  type: Component,
603
602
  args: [{ selector: 'mosa-table-skeleton-loader', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
604
603
  MatTable,
@@ -628,10 +627,10 @@ class MatUpdateDialog {
628
627
  close(result) {
629
628
  this.myMatDialogRef.close(result);
630
629
  }
631
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: MatUpdateDialog, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
632
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.11", type: MatUpdateDialog, isStandalone: true, selector: "mosa-mat-update-dialog", ngImport: i0, template: "<h1 class=\"active\" mat-dialog-title>{{ config.title | translate }}</h1>\n<div mat-dialog-content>\n {{ config.message | translate }}\n</div>\n<div mat-dialog-actions>\n <button (click)=\"close(0)\" [class.cancel-btn]=\"config.showIgnore\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n @if (config.showIgnore) {\n <button (click)=\"close(1)\" color=\"primary\" mat-stroked-button>\n {{\n 'mosa.commons.buttons.ignoreFor' | translate: {\n duration: config.ignoreTimeout | mosaDuration: 'auto' | async | uppercase\n } | uppercase\n }}\n </button>\n }\n <button mat-flat-button color=\"primary\" (click)=\"close(2)\">\n {{ 'mosa.commons.buttons.reloadNow' | translate | uppercase }}\n </button>\n</div>\n", styles: [".cancel-btn{margin-right:auto}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: MosaDurationPipe, name: "mosaDuration" }] }); }
630
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MatUpdateDialog, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
631
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: MatUpdateDialog, isStandalone: true, selector: "mosa-mat-update-dialog", ngImport: i0, template: "<h1 class=\"active\" mat-dialog-title>{{ config.title | translate }}</h1>\n<div mat-dialog-content>\n {{ config.message | translate }}\n</div>\n<div mat-dialog-actions>\n <button (click)=\"close(0)\" [class.cancel-btn]=\"config.showIgnore\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n @if (config.showIgnore) {\n <button (click)=\"close(1)\" color=\"primary\" mat-stroked-button>\n {{\n 'mosa.commons.buttons.ignoreFor' | translate: {\n duration: config.ignoreTimeout | mosaDuration: 'auto' | async | uppercase\n } | uppercase\n }}\n </button>\n }\n <button mat-flat-button color=\"primary\" (click)=\"close(2)\">\n {{ 'mosa.commons.buttons.reloadNow' | translate | uppercase }}\n </button>\n</div>\n", styles: [".cancel-btn{margin-right:auto}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "pipe", type: MosaDurationPipe, name: "mosaDuration" }] }); }
633
632
  }
634
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: MatUpdateDialog, decorators: [{
633
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: MatUpdateDialog, decorators: [{
635
634
  type: Component,
636
635
  args: [{ selector: 'mosa-mat-update-dialog', imports: [
637
636
  MatDialogTitle,
@@ -745,10 +744,10 @@ class UpdateDialog {
745
744
  clearInterval(this.interval);
746
745
  this.interval = undefined;
747
746
  }
748
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: UpdateDialog, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
749
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.11", type: UpdateDialog, isStandalone: true, selector: "mosa-update-dialog[config]", inputs: { updateConfig: ["config", "updateConfig"] }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
747
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UpdateDialog, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
748
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: UpdateDialog, isStandalone: true, selector: "mosa-update-dialog[config]", inputs: { updateConfig: ["config", "updateConfig"] }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
750
749
  }
751
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: UpdateDialog, decorators: [{
750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: UpdateDialog, decorators: [{
752
751
  type: Component,
753
752
  args: [{
754
753
  selector: 'mosa-update-dialog[config]',
@@ -790,10 +789,10 @@ class CellEditorService {
790
789
  isEditingCellValid() {
791
790
  return this.cellEditor?.element != null && Array.from(this.cellEditor.element.querySelectorAll('.ng-invalid')).length === 0;
792
791
  }
793
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
794
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorService, providedIn: 'root' }); }
792
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
793
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorService, providedIn: 'root' }); }
795
794
  }
796
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorService, decorators: [{
795
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorService, decorators: [{
797
796
  type: Injectable,
798
797
  args: [{
799
798
  providedIn: 'root',
@@ -924,10 +923,10 @@ class CellEditorDirective {
924
923
  CellEditorDirective.invokeElementMethod(targetCell, 'click');
925
924
  }
926
925
  }
927
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
928
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.11", type: CellEditorDirective, isStandalone: true, selector: "td[mosaCellEditor]", host: { listeners: { "keydown.escape": "onEscapeKeyDown($event)", "keydown.tab": "onShiftKeyDown($event)", "keydown.shift.tab": "onShiftKeyDown($event)", "keydown.meta.tab": "onShiftKeyDown($event)", "keydown.enter": "onEnterKeyDown($event)", "click": "onClick($event)" } }, queries: [{ propertyName: "cellEditor", first: true, predicate: CellEditorComponent, descendants: true }], ngImport: i0 }); }
926
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
927
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: CellEditorDirective, isStandalone: true, selector: "td[mosaCellEditor]", host: { listeners: { "keydown.escape": "onEscapeKeyDown($event)", "keydown.tab": "onShiftKeyDown($event)", "keydown.shift.tab": "onShiftKeyDown($event)", "keydown.meta.tab": "onShiftKeyDown($event)", "keydown.enter": "onEnterKeyDown($event)", "click": "onClick($event)" } }, queries: [{ propertyName: "cellEditor", first: true, predicate: CellEditorComponent, descendants: true }], ngImport: i0 }); }
929
928
  }
930
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CellEditorDirective, decorators: [{
929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: CellEditorDirective, decorators: [{
931
930
  type: Directive,
932
931
  args: [{ selector: 'td[mosaCellEditor]' }]
933
932
  }], ctorParameters: () => [], propDecorators: { cellEditor: [{
@@ -962,19 +961,21 @@ class ClickOutsideDirective {
962
961
  onClick(targetElement) {
963
962
  const clickedInside = this.elementRef.nativeElement.contains(targetElement);
964
963
  const whiteListedClass = 'whitelisted';
965
- if (!clickedInside) {
966
- if (this.enableWhiteListing) {
967
- const isWhiteListed = targetElement.classList.contains(whiteListedClass)
968
- || ClickOutsideDirective.getClosest(targetElement, whiteListedClass)
969
- || ClickOutsideDirective.getClosest(targetElement, 'cdk-overlay-container');
970
- if (!isWhiteListed) {
971
- this.clickOutside.emit([this.elementRef.nativeElement, targetElement]);
972
- }
973
- }
974
- else {
975
- this.clickOutside.emit([this.elementRef.nativeElement, targetElement]);
964
+ if (clickedInside || !targetElement) {
965
+ return;
966
+ }
967
+ const htmlElement = targetElement;
968
+ if (this.enableWhiteListing) {
969
+ const isWhiteListed = htmlElement.classList.contains(whiteListedClass)
970
+ || ClickOutsideDirective.getClosest(htmlElement, whiteListedClass)
971
+ || ClickOutsideDirective.getClosest(htmlElement, 'cdk-overlay-container');
972
+ if (!isWhiteListed) {
973
+ this.clickOutside.emit([this.elementRef.nativeElement, htmlElement]);
976
974
  }
977
975
  }
976
+ else {
977
+ this.clickOutside.emit([this.elementRef.nativeElement, htmlElement]);
978
+ }
978
979
  }
979
980
  static getClosest(el, selector) {
980
981
  while (el) {
@@ -985,10 +986,10 @@ class ClickOutsideDirective {
985
986
  }
986
987
  return null;
987
988
  }
988
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
989
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.11", type: ClickOutsideDirective, isStandalone: true, selector: "[clickOutside]", inputs: { enableWhiteListing: "enableWhiteListing" }, outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 }); }
989
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
990
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.6", type: ClickOutsideDirective, isStandalone: true, selector: "[clickOutside]", inputs: { enableWhiteListing: "enableWhiteListing" }, outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0 }); }
990
991
  }
991
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ClickOutsideDirective, decorators: [{
992
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ClickOutsideDirective, decorators: [{
992
993
  type: Directive,
993
994
  args: [{
994
995
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -1033,10 +1034,10 @@ class LoggerService extends CoreLoggerService {
1033
1034
  }
1034
1035
  }
1035
1036
  }
1036
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1037
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerService, providedIn: 'root' }); }
1037
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1038
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerService, providedIn: 'root' }); }
1038
1039
  }
1039
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: LoggerService, decorators: [{
1040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LoggerService, decorators: [{
1040
1041
  type: Injectable,
1041
1042
  args: [{
1042
1043
  providedIn: 'root',
@@ -1 +1 @@
1
- {"version":3,"file":"mosa-ng-material.mjs","sources":["../../../../projects/material/src/lib/components/alert-widget/alert.widget.ts","../../../../projects/material/src/lib/components/alert-widget/alert.widget.html","../../../../projects/material/src/lib/models/confirm-dialog.model.ts","../../../../projects/material/src/lib/components/confirm-dialog/confirm.dialog.ts","../../../../projects/material/src/lib/components/confirm-dialog/confirm.dialog.html","../../../../projects/material/src/lib/components/base/cell-editor.base.component.ts","../../../../projects/material/src/lib/components/cell-editor/cell-editor.component.ts","../../../../projects/material/src/lib/components/cell-editor/cell-editor.component.html","../../../../projects/material/src/lib/components/loading-button/loading-button.component.ts","../../../../projects/material/src/lib/components/loading-button/loading-button.component.html","../../../../projects/material/src/lib/services/facades/logger.facade.ts","../../../../projects/material/src/lib/components/logger/logger.component.ts","../../../../projects/material/src/lib/components/logger/logger.component.html","../../../../projects/material/src/lib/models/skeleton.model.ts","../../../../projects/material/src/lib/components/skeleton-loader/skeleton/skeleton.component.ts","../../../../projects/material/src/lib/components/skeleton-loader/skeleton/skeleton.component.html","../../../../projects/material/src/lib/components/skeleton-loader/base.skeleton-loader.ts","../../../../projects/material/src/lib/components/skeleton-loader/list-skeleton-loader/list.skeleton-loader.ts","../../../../projects/material/src/lib/components/skeleton-loader/list-skeleton-loader/list.skeleton-loader.html","../../../../projects/material/src/lib/components/skeleton-loader/table-skeleton-loader/table.skeleton-loader.ts","../../../../projects/material/src/lib/components/skeleton-loader/table-skeleton-loader/table.skeleton-loader.html","../../../../projects/material/src/lib/components/update-dialog/mat-update-dialog/mat-update.dialog.ts","../../../../projects/material/src/lib/components/update-dialog/mat-update-dialog/mat-update.dialog.html","../../../../projects/material/src/lib/models/update-config.model.ts","../../../../projects/material/src/lib/components/update-dialog/update.dialog.ts","../../../../projects/material/src/lib/services/cell-editor.service.ts","../../../../projects/material/src/lib/directives/cell-editor.directive.ts","../../../../projects/material/src/lib/directives/click-outside.directive.ts","../../../../projects/material/src/lib/services/logger.service.ts","../../../../projects/material/src/lib/provider.ts","../../../../projects/material/src/mosa-ng-material.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'mosa-alert-widget',\n templateUrl: './alert.widget.html',\n styleUrls: [ './alert.widget.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ MatIcon ],\n})\nexport class AlertWidget implements OnInit, OnChanges {\n\n @Input()\n public icon: string | undefined;\n\n @Input()\n public title: string | undefined;\n\n @Input()\n public message: string | undefined;\n\n @Input()\n public type: 'warning' | 'error' | 'info' | 'success' | undefined;\n\n constructor() {\n }\n\n public ngOnInit(): void {\n this.updateData();\n }\n\n public ngOnChanges(_changes: SimpleChanges): void {\n this.updateData();\n }\n\n private updateData(): void {\n if (!this.title || !this.icon) {\n switch (this.type) {\n case 'error':\n this.icon ||= 'alert-circle-outline';\n this.title ||= 'Error';\n break;\n case 'info':\n this.icon ||= 'information-outline';\n this.title ||= 'Information';\n break;\n case 'success':\n this.icon ||= 'check';\n this.title ||= 'Success';\n break;\n case 'warning':\n this.icon ||= 'alert-outline';\n this.title ||= 'Warning';\n break;\n default:\n this.icon ||= 'information-outline';\n this.title ||= 'Alert';\n break;\n }\n }\n }\n\n}\n","<div [class]=\"'alert-' + type\" class=\"alert\">\n <div class=\"icon\">\n <mat-icon>icon</mat-icon>\n {{ title }}\n </div>\n <div>{{ message }}</div>\n</div>\n","// eslint-disable-next-line max-classes-per-file\nexport enum ConfirmDialogResult {\n confirmed,\n denied,\n cancelled,\n}\n\nexport class ConfirmDialogAction {\n\n public icon: string | undefined;\n public visible: boolean | undefined;\n public label: string;\n\n constructor(label: string, visible?: boolean) {\n this.label = label;\n this.visible = visible;\n }\n}\n\nexport class ConfirmDialogData {\n\n public title: string | undefined;\n public message: string | undefined;\n public cancel: ConfirmDialogAction | undefined;\n public confirm: ConfirmDialogAction | undefined;\n public deny: ConfirmDialogAction | undefined;\n\n constructor(title?: string, message?: string, cancel?: ConfirmDialogAction, confirm?: ConfirmDialogAction, deny?: ConfirmDialogAction) {\n this.title = title;\n this.message = message;\n this.cancel = cancel;\n this.confirm = confirm;\n this.deny = deny;\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { ConfirmDialogAction, ConfirmDialogData, ConfirmDialogResult } from '../../models/confirm-dialog.model';\nimport { MatButton } from '@angular/material/button';\nimport { UpperCasePipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mosa-confirm-dialog',\n templateUrl: './confirm.dialog.html',\n styleUrls: [ './confirm.dialog.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n UpperCasePipe,\n TranslateModule,\n ],\n})\nexport class ConfirmDialog implements OnInit {\n\n public dialogData: ConfirmDialogData;\n public result: typeof ConfirmDialogResult = ConfirmDialogResult;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n private readonly myConfirmDialogData: ConfirmDialogData,\n private readonly myMatDialogRef: MatDialogRef<ConfirmDialog>,\n ) {\n const cancel: ConfirmDialogAction = new ConfirmDialogAction('mosa.commons.buttons.cancel', true);\n const deny: ConfirmDialogAction = new ConfirmDialogAction('mosa.commons.buttons.deny');\n const confirm: ConfirmDialogAction = new ConfirmDialogAction('mosa.commons.buttons.confirm', true);\n const title: string = 'mosa.components.confirmDialog.title';\n const message: string = 'mosa.components.confirmDialog.message';\n\n this.dialogData = myConfirmDialogData || new ConfirmDialogData(title, message, cancel, confirm, deny);\n\n if (!this.dialogData.title) {\n this.dialogData.title = title;\n }\n\n if (!this.dialogData.message) {\n this.dialogData.message = message;\n }\n\n if (!this.dialogData.cancel) {\n this.dialogData.cancel = cancel;\n }\n\n if (!this.dialogData.confirm) {\n this.dialogData.confirm = confirm;\n }\n\n if (!this.dialogData.deny) {\n this.dialogData.deny = deny;\n }\n }\n\n public ngOnInit(): void {\n //\n }\n\n public confirm(result: ConfirmDialogResult): void {\n this.myMatDialogRef.close(result);\n }\n\n}\n","<h1 class=\"active\" mat-dialog-title>{{ dialogData.title | translate }}</h1>\n<div mat-dialog-content>\n {{ dialogData.message | translate }}\n</div>\n<div mat-dialog-actions>\n @if (dialogData.cancel) {\n <button (click)=\"confirm(result.cancelled)\" color=\"primary\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n }\n @if (dialogData.deny?.visible) {\n <button (click)=\"confirm(result.denied)\" color=\"primary\" mat-stroked-button>\n {{ dialogData.deny?.label | translate | uppercase }}\n </button>\n }\n @if (dialogData.confirm?.visible) {\n <button (click)=\"confirm(result.confirmed)\" color=\"primary\" mat-flat-button>\n {{ dialogData.confirm?.label | translate | uppercase }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit, Optional } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot } from '@angular/router';\nimport { ConfirmDialogData, ConfirmDialogResult } from '../../models/confirm-dialog.model';\nimport { TableItem } from '../../models/table-item.model';\nimport { ConfirmDialog } from '../confirm-dialog/confirm.dialog';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'mosa-cell-editor-base',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CellEditorBaseComponent<Model> implements OnInit, CanDeactivate<CellEditorBaseComponent<Model>> {\n\n public dataSource: MatTableDataSource<TableItem<Model>> = new MatTableDataSource<TableItem<Model>>();\n public displayedColumns: (keyof Model | string)[] = [];\n\n constructor(\n @Optional()\n protected readonly myMatDialog: MatDialog,\n ) {\n }\n\n public ngOnInit(): void {\n //\n }\n\n public get changedRows(): TableItem<Model>[] {\n return this.dataSource?.data?.filter((c: TableItem<Model>): boolean => !!c.changedRowKeys && c.changedRowKeys?.length > 0);\n }\n\n /**\n * Remove table item data\n * @param data\n */\n public serializeData(data: TableItem<Model>[]): Model[] {\n return data.map((val: TableItem<Model>): Model => {\n delete val.changedRowKeys;\n delete val.rowOriginalData;\n return val;\n });\n }\n\n public toTableItems(data: Model[]): TableItem<Model>[] {\n return data.map((val: Model): TableItem<Model> => ({\n ...val,\n rowOriginalData: val,\n changedRowKeys: [],\n }));\n }\n\n public async canDeactivate(_component: CellEditorBaseComponent<Model>,\n _currentRoute: ActivatedRouteSnapshot,\n _currentState: RouterStateSnapshot,\n _nextState?: RouterStateSnapshot): Promise<boolean> {\n if (!this.changedRows.length) {\n return true;\n }\n\n const result: ConfirmDialogResult = await firstValueFrom(\n this.myMatDialog\n .open(ConfirmDialog, {\n width: '600px',\n data: new ConfirmDialogData('mosa.components.cellEditorBase.discardChanges.label',\n 'mosa.components.cellEditorBase.discardChanges.message'),\n })\n .afterClosed(),\n );\n\n return result === ConfirmDialogResult.confirmed;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { MatSelect } from '@angular/material/select';\nimport { TableItem } from '../../models/table-item.model';\n\n@Component({\n selector: 'mosa-cell-editor',\n templateUrl: './cell-editor.component.html',\n styleUrls: [ './cell-editor.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class CellEditorComponent<T = any> implements OnInit {\n\n @Input()\n public key: string = '';\n\n @Input()\n public rowItem!: TableItem<T>;\n\n @Input()\n public value: T | undefined;\n\n @Output()\n public valueChange: EventEmitter<T | undefined> = new EventEmitter<T | undefined>();\n\n @Output()\n public cellClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n @Output()\n private readonly cellChange: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n private readonly cellCancel: EventEmitter<void> = new EventEmitter<void>();\n\n @ContentChild(MatSelect)\n private readonly select: MatSelect | undefined;\n\n public mode: 'input' | 'output' = 'output';\n\n private oldValue: T | undefined;\n\n private readonly myChangeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n private readonly myElementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n\n constructor() {\n }\n\n public get element(): HTMLElement {\n return this.myElementRef.nativeElement;\n }\n\n public ngOnInit(): void {\n this.oldValue = this.value;\n this.rowItem.rowOriginalData = this.rowItem;\n }\n\n public toOutput(save?: boolean): void {\n if (this.mode !== 'output') {\n this.mode = 'output';\n this.myChangeDetectorRef.markForCheck();\n this.element.classList.remove('focused');\n\n if (save) {\n if (!this.rowItem.changedRowKeys) {\n this.rowItem.changedRowKeys = [];\n }\n const index: number = this.rowItem.changedRowKeys.indexOf(this.key);\n if (this.value !== this.oldValue) {\n if (index === -1) {\n this.rowItem.changedRowKeys.push(this.key);\n this.element.classList.add('edited');\n }\n this.cellChange.emit();\n } else {\n if (index !== -1) {\n this.rowItem.changedRowKeys.splice(index, 1);\n this.element.classList.remove('edited');\n }\n }\n } else {\n this.value = this.oldValue;\n this.cellCancel.emit();\n }\n this.valueChange.next(this.value);\n }\n }\n\n public toInput(): void {\n this.mode = 'input';\n this.myChangeDetectorRef.markForCheck();\n this.element.classList.add('focused');\n setTimeout((): void => {\n const comp: HTMLElement | null = this.element.querySelector('.cell-input');\n\n if (comp instanceof HTMLInputElement) {\n comp.focus();\n } else if (this.select) {\n this.select.open();\n }\n });\n }\n\n}\n","@if (mode === 'input') {\n <div class=\"input-wrapper\">\n <ng-content select=\".cell-input\"></ng-content>\n </div>\n}\n@if (mode === 'output') {\n <div class=\"output-wrapper\">\n <ng-content select=\".cell-output\"></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'mosa-loading-button',\n templateUrl: './loading-button.component.html',\n styleUrls: [ './loading-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButton,\n NgTemplateOutlet,\n MatIconButton,\n MatProgressSpinner,\n MatIcon,\n MatProgressBar,\n ],\n})\nexport class LoadingButtonComponent {\n\n @Input()\n public mode: 'spinner' | 'progress-bar' = 'spinner';\n\n @Input()\n public loading: boolean = false;\n\n @Input()\n public disabled: boolean = false;\n\n @Input()\n public color: ThemePalette = 'primary';\n\n @Input()\n public buttonType: 'default' | 'raised' | 'stroked' | 'flat' | 'icon' = 'default';\n\n @Input()\n public icon: string | undefined;\n\n @Output()\n public click: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n constructor() {\n }\n\n public onClick(e: MouseEvent): void {\n e.stopPropagation();\n this.click.emit(e);\n }\n\n}\n","@switch (buttonType) {\n @default {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('raised') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-raised-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('stroked') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-stroked-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('flat') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-flat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('icon') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-icon-button>\n @if (loading) {\n <mat-spinner class=\"icon-spinner\" [color]=\"color\" [diameter]=\"40\" [strokeWidth]=\"2\"></mat-spinner>\n } @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n }\n <ng-content select=\".icon\"></ng-content>\n </button>\n }\n}\n\n<ng-template #buttonContent>\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n } @switch (mode) {\n @case ('spinner') {\n <div class=\"spinner-inner\">\n @if (loading) {\n <mat-spinner [color]=\"color\" [diameter]=\"20\"></mat-spinner>\n }\n <span [class.loading]=\"loading\" class=\"label\">\n <ng-content select=\".spinner-label\"></ng-content>\n </span>\n </div>\n } @case ('progress-bar') {\n <ng-content select=\".progress-bar-label\"></ng-content>\n @if (loading) {\n <mat-progress-bar [color]=\"color\" mode=\"indeterminate\"></mat-progress-bar>\n }\n }\n}\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { ILog } from '@mosa-ng/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ILoggerState } from '../../models/states/logger-state.model';\n\nlet _state: ILoggerState = {\n logs: [],\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggerFacade {\n\n protected store$: BehaviorSubject<ILoggerState>;\n\n constructor() {\n this.store$ = new BehaviorSubject<ILoggerState>(_state);\n }\n\n public get snapshot(): ILoggerState {\n return this.store$.value;\n }\n\n public subState(): Observable<ILoggerState> {\n return this.store$.asObservable();\n }\n\n public updateLogs(logs: ILog[]): void {\n this.updateState({ ..._state, logs });\n }\n\n private updateState(state: ILoggerState): void {\n this.store$.next(_state = state);\n }\n\n}\n","/* eslint-disable */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, inject, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { ILog, ILoggerConfig } from '@mosa-ng/core';\nimport { Observable } from 'rxjs';\nimport { ILoggerState } from '../../models/states/logger-state.model';\nimport { LoggerFacade } from '../../services/facades/logger.facade';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButton } from '@angular/material/button';\nimport { AsyncPipe, UpperCasePipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mosa-logger',\n templateUrl: './logger.component.html',\n styleUrls: [ './logger.component.scss' ],\n animations: [\n trigger('slide', [\n state('enter', style({ transform: 'translateX(0)' })),\n transition(':leave', [\n animate(200, style({ transform: 'translateX(120%)' })),\n ]),\n transition(':enter', [\n style({ transform: 'translateX(120%)' }),\n animate(200, style({ transform: 'translateX(0)' })),\n ]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatIcon,\n MatButton,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule,\n ],\n})\nexport class LoggerComponent implements OnInit {\n\n @ViewChildren('loggerElement')\n public elements: QueryList<HTMLElement> | undefined;\n\n public loggerState$!: Observable<ILoggerState>;\n\n private readonly myLoggerFacade: LoggerFacade = inject(LoggerFacade);\n\n constructor() {\n }\n\n public ngOnInit(): void {\n this.loggerState$ = this.myLoggerFacade.subState();\n }\n\n public onClickLog(log: ILog): void {\n if (log.config.closeOnClick) {\n this.slideOut(log.id);\n }\n }\n\n /**\n * Shows the snackbar\n * @param title\n * @param message\n * @param type\n * @param config\n */\n public slideIn(title: string | undefined, message: string | undefined, type: string, config: ILoggerConfig): number {\n const logs: ILog[] = [ ...this.myLoggerFacade.snapshot.logs ];\n const i = logs.length;\n let icon: string;\n\n switch (type) {\n case 'error':\n icon = 'error';\n break;\n case 'warning':\n icon = 'warning';\n break;\n case 'info':\n icon = 'info';\n break;\n case 'success':\n icon = 'done';\n break;\n default:\n icon = 'notifications';\n break;\n }\n\n logs.push({ id: i, title, message, config, state: 'enter', icon });\n this.myLoggerFacade.updateLogs(logs);\n return i;\n }\n\n /**\n * Hides the log\n * @param id\n */\n public slideOut(id: number): void {\n let logs: ILog[] = [ ...this.myLoggerFacade.snapshot.logs ];\n if (logs.length > 0) {\n const item: ILog | undefined = logs.find((e: ILog): boolean => e.id === id);\n if (!item) {\n return;\n }\n\n item.state = 'leave';\n this.myLoggerFacade.updateLogs(logs);\n setTimeout((): void => {\n logs = [ ...this.myLoggerFacade.snapshot.logs ];\n const index = logs.findIndex((log: ILog): boolean => log.id === item.id);\n logs.splice(index, 1);\n this.myLoggerFacade.updateLogs(logs);\n }, 200);\n }\n }\n\n public callAction(log: ILog): void {\n log.config.action?.callback?.call(this);\n this.slideOut(log.id);\n }\n\n}\n","@if (loggerState$ | async; as state) {\n @for (log of state.logs; track log) {\n <div #loggerElement\n [@slide]=\"log.state\"\n [class.none]=\"!log.state\"\n [class]=\"log.config.className\"\n (click)=\"onClickLog(log)\"\n [class.touch]=\"log.config.closeOnClick\"\n class=\"logger-element\">\n <div class=\"content\">\n <mat-icon class=\"icon\">{{ log.icon }}</mat-icon>\n <div>\n @if (log.title) {\n <div class=\"title\">{{ log.title | translate }}</div>\n } @if (log.message) {\n <div [innerHTML]=\"log.message | translate\" class=\"message\"></div>\n }\n </div>\n </div>\n @if (log.config.action || log.config.showDismiss) {\n <div class=\"actions\">\n @if (log.config.showDismiss) {\n <button (click)=\"slideOut(log.id)\" class=\"dismiss\" mat-button>\n {{ 'mosa.commons.buttons.dismiss' | translate | uppercase }}\n </button>\n } @if (log.config.action && log.config.action.label && log.config.action.callback) {\n <button (click)=\"$event.stopPropagation(); callAction(log)\"\n class=\"action-btn\" mat-button>\n {{ log.config.action.label | translate | uppercase }}\n </button>\n }\n </div>\n }\n </div>\n }\n}\n\n","import { isNullOrEmpty, isNumber, isZeroOrHigher } from '@mosa-ng/core';\n\nexport class Skeleton {\n public width?: number | string;\n public height?: number | string;\n public borderRadius?: number | string;\n public randomizeOffset?: number;\n\n constructor(skeleton?: Skeleton) {\n this.width = isZeroOrHigher(skeleton?.width) ? skeleton?.width : 100;\n this.height = isZeroOrHigher(skeleton?.height) ? skeleton?.height : 15;\n if ((isNumber(skeleton?.borderRadius) && isZeroOrHigher(skeleton?.borderRadius)) ||\n (typeof skeleton?.borderRadius === 'string' && !isNullOrEmpty(skeleton?.borderRadius))) {\n this.borderRadius = skeleton!.borderRadius;\n }\n this.borderRadius = this.borderRadius || 4;\n this.randomizeOffset = skeleton?.randomizeOffset || 0;\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { Skeleton } from '../../../models/skeleton.model';\n\n@Component({\n selector: 'mosa-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrls: [ './skeleton.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent implements OnInit {\n\n @Input()\n public skeleton!: Skeleton;\n\n @Input()\n public width: number | string = 0;\n\n @Input()\n public height: number | string = 0;\n\n @Input()\n public randomizeOffset: number = 0;\n\n @Input()\n public borderRadius: number | string| undefined;\n\n private readonly element: HTMLElement;\n\n constructor(\n private readonly myElementRef: ElementRef,\n ) {\n this.element = this.myElementRef.nativeElement;\n }\n\n public ngOnInit(): void {\n if (!this.skeleton) {\n this.skeleton = new Skeleton({\n width: this.width,\n height: this.height,\n borderRadius: this.borderRadius,\n randomizeOffset: this.randomizeOffset,\n });\n }\n\n this.element.style.width = this.actualWidth;\n this.element.style.height = SkeletonComponent.value(this.skeleton.height);\n this.element.style.borderRadius = SkeletonComponent.value(this.skeleton.borderRadius);\n }\n\n private get actualWidth(): string {\n if (this.skeleton.randomizeOffset && this.skeleton.randomizeOffset > 0 && typeof this.skeleton.width === 'number') {\n return `${this.skeleton.width - Math.floor(Math.random() * this.skeleton.randomizeOffset)}px`;\n }\n\n return SkeletonComponent.value(this.skeleton.width);\n }\n\n private static value(val: number | string | undefined): string {\n if (typeof val === 'number') {\n return `${val}px`;\n }\n return val || '';\n }\n\n}\n","","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mosa-skeleton-loader',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class BaseSkeletonLoader {\n\n @Input()\n public itemCount: number | undefined;\n\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { BaseSkeletonLoader } from '../base.skeleton-loader';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mosa-list-skeleton-loader',\n templateUrl: './list.skeleton-loader.html',\n styleUrls: [ './list.skeleton-loader.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatList,\n MatListItem,\n NgTemplateOutlet,\n ],\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class ListSkeletonLoader extends BaseSkeletonLoader implements OnInit {\n\n @Input()\n public content: TemplateRef<unknown> | undefined;\n\n public items: number[] = [];\n\n constructor() {\n super();\n }\n\n public ngOnInit(): void {\n this.items = Array(this.itemCount).fill(this.itemCount).map((x: number, i: number): number => i);\n }\n\n}\n","<mat-list>\n @for (item of items; track item) {\n <mat-list-item>\n <ng-container *ngTemplateOutlet=\"content, context: { $implicit: item }\"></ng-container>\n </mat-list-item>\n }\n</mat-list>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Skeleton } from '../../../models/skeleton.model';\nimport { BaseSkeletonLoader } from '../base.skeleton-loader';\nimport { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable } from '@angular/material/table';\nimport { SkeletonComponent } from '../skeleton/skeleton.component';\n\n@Component({\n selector: 'mosa-table-skeleton-loader',\n templateUrl: './table.skeleton-loader.html',\n styleUrls: [ './table.skeleton-loader.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTable,\n MatColumnDef,\n MatHeaderCellDef,\n MatHeaderCell,\n SkeletonComponent,\n MatCellDef,\n MatCell,\n MatHeaderRowDef,\n MatHeaderRow,\n MatRowDef,\n MatRow,\n ],\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class TableSkeletonLoader extends BaseSkeletonLoader implements OnInit {\n\n @Input()\n public columns: Skeleton[][] = [];\n\n public items: Skeleton[][] = [];\n public displayedColumns: string[] = [];\n\n constructor() {\n super();\n }\n\n public ngOnInit(): void {\n for (let i = 0; i < this.columns.length; i++) {\n this.displayedColumns.push(`column-${i}`);\n }\n\n for (let i = 0; i < (this.itemCount || 0); i++) {\n const skeletons: Skeleton[] = [];\n for (let j = 0; j < this.displayedColumns.length; j++) {\n const skeleton = this.columns[ j ][ 1 ];\n skeletons.push(new Skeleton({\n width: skeleton.width,\n height: skeleton.height,\n borderRadius: skeleton.borderRadius,\n randomizeOffset: skeleton.randomizeOffset,\n }));\n }\n this.items.push(skeletons);\n }\n }\n\n}\n","<table [dataSource]=\"items\" mat-table>\n @for (column of columns; track column; let i = $index) {\n <ng-container [matColumnDef]=\"'column-' + i\">\n <th *matHeaderCellDef mat-header-cell>\n <mosa-skeleton [skeleton]=\"column[0]\"></mosa-skeleton>\n </th>\n <td *matCellDef=\"let row\" mat-cell>\n <mosa-skeleton [skeleton]=\"column[1]\"></mosa-skeleton>\n </td>\n </ng-container>\n }\n <tr *matHeaderRowDef=\"displayedColumns;sticky:true\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"row-hover\" mat-row></tr>\n</table>\n","import { Component, inject, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { IUpdateConfig, UpdateDialogResult } from '../../../models/update-config.model';\nimport { MatButton } from '@angular/material/button';\nimport { AsyncPipe, UpperCasePipe } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MosaDurationPipe } from '@mosa-ng/core';\n\n@Component({\n selector: 'mosa-mat-update-dialog',\n templateUrl: './mat-update.dialog.html',\n styleUrls: [ './mat-update.dialog.scss' ],\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n AsyncPipe,\n UpperCasePipe,\n TranslatePipe,\n MosaDurationPipe,\n ],\n})\nexport class MatUpdateDialog implements OnInit {\n\n private readonly myMatDialogRef: MatDialogRef<MatUpdateDialog> = inject(MatDialogRef<MatUpdateDialog>);\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public readonly config: IUpdateConfig,\n ) {\n }\n\n public ngOnInit(): void {\n //\n }\n\n public close(result: UpdateDialogResult): void {\n this.myMatDialogRef.close(result);\n }\n\n}\n","<h1 class=\"active\" mat-dialog-title>{{ config.title | translate }}</h1>\n<div mat-dialog-content>\n {{ config.message | translate }}\n</div>\n<div mat-dialog-actions>\n <button (click)=\"close(0)\" [class.cancel-btn]=\"config.showIgnore\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n @if (config.showIgnore) {\n <button (click)=\"close(1)\" color=\"primary\" mat-stroked-button>\n {{\n 'mosa.commons.buttons.ignoreFor' | translate: {\n duration: config.ignoreTimeout | mosaDuration: 'auto' | async | uppercase\n } | uppercase\n }}\n </button>\n }\n <button mat-flat-button color=\"primary\" (click)=\"close(2)\">\n {{ 'mosa.commons.buttons.reloadNow' | translate | uppercase }}\n </button>\n</div>\n","export interface IUpdateConfig {\n refreshInterval?: number;\n ignoreTimeout?: number;\n localStorageKey?: string;\n versionPath: string;\n showIgnore?: boolean;\n title?: string;\n message?: string;\n}\n\nexport interface IVersion {\n version: string;\n timestamp: number;\n}\n\nexport enum UpdateDialogResult {\n cancel,\n ignore,\n reload,\n}\n","import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ApiService, isNullOrEmpty } from '@mosa-ng/core';\nimport { firstValueFrom, timer } from 'rxjs';\nimport { IUpdateConfig, IVersion, UpdateDialogResult } from '../../models/update-config.model';\nimport { MatUpdateDialog } from './mat-update-dialog/mat-update.dialog';\n\n@Component({\n selector: 'mosa-update-dialog[config]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UpdateDialog {\n\n @Input('config')\n public set updateConfig(config: IUpdateConfig) {\n if (config) {\n if (!config.versionPath) {\n console.warn('LoggerService: No version path was provided. This field is required!');\n return;\n }\n\n if (!config.localStorageKey) {\n config.localStorageKey = 'mosaApplicationVersion';\n }\n\n if (!config.ignoreTimeout) {\n config.ignoreTimeout = 30000;\n }\n\n if (!config.refreshInterval) {\n config.refreshInterval = 15000;\n }\n\n if (!config.title) {\n config.title = 'mosa.components.updateDialog.title';\n }\n\n if (!config.message) {\n config.message = 'mosa.components.updateDialog.message';\n }\n\n this.config = config;\n this.end();\n this.start();\n } else {\n console.warn('LoggerService: Cannot check for version. No config was provided.');\n }\n }\n\n private firstLoad: boolean = true;\n\n private blocked: boolean = false;\n private interval: NodeJS.Timeout | undefined;\n private config!: IUpdateConfig;\n\n private readonly myApiService: ApiService = inject(ApiService);\n private readonly myMatDialog: MatDialog = inject(MatDialog);\n\n constructor() {\n }\n\n private start(): void {\n if (this.interval) {\n this.end();\n }\n void this.checkForUpdate();\n this.interval = setInterval((): Promise<void> => this.checkForUpdate(), this.config.refreshInterval);\n }\n\n private openDialog(version: IVersion): void {\n this.myMatDialog.open(MatUpdateDialog, {\n width: '600px',\n data: this.config,\n })\n .afterClosed()\n .subscribe((result: UpdateDialogResult): void => {\n switch (result) {\n case UpdateDialogResult.cancel:\n this.end();\n this.blocked = true;\n break;\n case UpdateDialogResult.ignore:\n timer(this.config.ignoreTimeout!).subscribe((): void => this.openDialog(version));\n break;\n case UpdateDialogResult.reload:\n window.location.reload();\n window.localStorage.setItem(this.config.localStorageKey!, JSON.stringify(version));\n break;\n }\n });\n }\n\n private async checkForUpdate(): Promise<void> {\n if (this.blocked) {\n return;\n }\n\n const localStorageVersion: string | null = window.localStorage.getItem(this.config.localStorageKey!);\n let localVersion: IVersion = { version: '0.0.0', timestamp: 0 };\n if (!isNullOrEmpty(localStorageVersion)) {\n localVersion = JSON.parse(localStorageVersion!);\n }\n const data: IVersion = await firstValueFrom(this.myApiService.get(this.config.versionPath));\n if (this.firstLoad) {\n window.localStorage.setItem(this.config.localStorageKey!, JSON.stringify(data));\n this.firstLoad = false;\n return;\n }\n if (data.version !== localVersion.version) {\n this.blocked = true;\n this.end();\n this.openDialog(data);\n }\n }\n\n private end(): void {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CellEditorComponent } from '../components/cell-editor/cell-editor.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CellEditorService {\n\n public cellEditor: CellEditorComponent | undefined;\n\n private documentEditListener: ((e: MouseEvent) => void | undefined) | undefined;\n\n constructor() {\n }\n\n public updateEditingCell(cellEditor: CellEditorComponent): void {\n if (cellEditor !== this.cellEditor) {\n this.cellEditor?.toOutput(true);\n }\n this.cellEditor = cellEditor;\n this.cellEditor.toInput();\n this.bindDocumentEditListener();\n }\n\n public bindDocumentEditListener(): void {\n if (!this.documentEditListener) {\n this.documentEditListener = (e: MouseEvent): void => {\n e.preventDefault();\n const target: HTMLElement = e.target as HTMLElement;\n const mosaCellEditor: HTMLElement | null = target.closest('mosa-cell-editor');\n if (this.cellEditor && mosaCellEditor !== this.cellEditor.element && !target.classList.contains('cell-output')) {\n document.removeEventListener('click', this.documentEditListener!);\n this.documentEditListener = undefined;\n this.cellEditor.toOutput(true);\n this.cellEditor = undefined;\n }\n };\n\n document.addEventListener('click', this.documentEditListener);\n }\n }\n\n public isEditingCellValid(): boolean {\n return this.cellEditor?.element != null && Array.from(this.cellEditor.element.querySelectorAll('.ng-invalid')).length === 0;\n }\n}\n","import { ContentChild, Directive, ElementRef, HostListener, inject, OnInit } from '@angular/core';\nimport { CellEditorComponent } from '../components/cell-editor/cell-editor.component';\nimport { CellEditorService } from '../services/cell-editor.service';\n\n@Directive({ selector: 'td[mosaCellEditor]' })\nexport class CellEditorDirective implements OnInit {\n\n @ContentChild(CellEditorComponent)\n private readonly cellEditor!: CellEditorComponent;\n\n private readonly myElementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n private readonly myCellEditorService: CellEditorService = inject(CellEditorService);\n\n constructor() {\n }\n\n @HostListener('keydown.escape', [ '$event' ])\n public onEscapeKeyDown(e: KeyboardEvent): void {\n e.preventDefault();\n this.cellEditor.toOutput();\n }\n\n @HostListener('keydown.tab', [ '$event' ])\n @HostListener('keydown.shift.tab', [ '$event' ])\n @HostListener('keydown.meta.tab', [ '$event' ])\n public onShiftKeyDown(e: KeyboardEvent): void {\n e.preventDefault();\n if (e.shiftKey) {\n this.moveToCell(e, false);\n } else {\n this.moveToCell(e, true);\n }\n }\n\n @HostListener('keydown.enter', [ '$event' ])\n public onEnterKeyDown(e: KeyboardEvent): void {\n e.preventDefault();\n if (this.myCellEditorService.isEditingCellValid()) {\n this.moveToNextRowCell(e);\n }\n }\n\n @HostListener('click', [ '$event' ])\n public onClick(e: MouseEvent): void {\n e.preventDefault();\n this.myCellEditorService.updateEditingCell(this.cellEditor);\n this.cellEditor.cellClick.emit();\n }\n\n public ngOnInit(): void {\n this.myElementRef.nativeElement.classList.add('editable-cell');\n }\n\n private moveToNextRowCell(e: KeyboardEvent): void {\n const currentCell: Element | null | undefined = this.cellEditor?.element?.parentElement;\n if (!currentCell) {\n return;\n }\n\n let columnDefClass: string = '';\n currentCell.classList.forEach((className: string): void => {\n const found: boolean = className.includes('mat-column-');\n if (found) {\n columnDefClass = className;\n }\n });\n\n const targetCell: ChildNode | null = this.findNextRowEditableColumn(currentCell, columnDefClass);\n this.cellEditor.toOutput(true);\n CellEditorDirective.executeMove(e, targetCell);\n }\n\n private findNextRowEditableColumn(row: Element, matColumnClassName: string): ChildNode | null {\n const nextRow: Element | null | undefined = row.parentElement?.nextElementSibling;\n if (!nextRow) {\n return null;\n }\n\n const column: Element = nextRow.getElementsByClassName(matColumnClassName)[ 0 ];\n return column?.classList.contains('editable-cell') ?\n column.firstChild :\n this.findNextRowEditableColumn(nextRow, matColumnClassName);\n }\n\n private findNextEditableColumn(cell: Element): ChildNode | null {\n let nextCell: Element | null | undefined = cell.parentElement?.nextElementSibling;\n\n if (!nextCell) {\n const nextRow: Element | null | undefined = cell.parentElement?.parentElement?.nextElementSibling;\n if (nextRow) {\n nextCell = nextRow.firstElementChild;\n }\n }\n\n if (nextCell) {\n return nextCell.classList.contains('editable-cell')\n ? nextCell.firstChild\n : this.findNextEditableColumn(nextCell);\n }\n\n return null;\n }\n\n private findPreviousEditableColumn(cell: Element): ChildNode | null {\n let prevCell: Element | null = cell.previousElementSibling;\n\n if (!prevCell) {\n const previousRow: Element | null | undefined = cell.parentElement?.previousElementSibling;\n if (previousRow) {\n prevCell = previousRow.lastElementChild;\n }\n }\n\n if (prevCell) {\n return prevCell.classList.contains('editable-cell') ?\n prevCell.firstChild :\n this.findPreviousEditableColumn(prevCell);\n } else {\n return null;\n }\n }\n\n private moveToCell(event: KeyboardEvent, nextCell: boolean): void {\n const currentCell: HTMLElement = this.cellEditor.element;\n if (this.cellEditor.element != null) {\n const targetCell: ChildNode | null = nextCell\n ? this.findNextEditableColumn(currentCell)\n : this.findPreviousEditableColumn(currentCell);\n if (this.myCellEditorService.isEditingCellValid()) {\n this.cellEditor.toOutput(true);\n (targetCell as HTMLElement)?.click();\n }\n CellEditorDirective.executeMove(event, targetCell);\n }\n }\n\n private static invokeElementMethod(element: EventTarget | ChildNode | Element | null, methodName: string, args?: unknown[]): void {\n // eslint-disable-next-line @typescript-eslint/no-restricted-types,@typescript-eslint/no-unsafe-function-type,@typescript-eslint/no-explicit-any\n ((element as any)[ methodName ] as Function).apply(element, args);\n }\n\n private static executeMove(e: KeyboardEvent, targetCell: ChildNode | null): void {\n e.preventDefault();\n // If datepicker is opened, remove cdk-overlay from dom\n const element: Element = e.composedPath()[ 0 ] as Element;\n if (element.className.includes('td-input-date')) {\n const cdkOverlayContainer: Element = document.getElementsByClassName('cdk-overlay-container')[ 0 ];\n const cdkBackdrop: Element = cdkOverlayContainer.getElementsByClassName('cdk-overlay-backdrop')[ 0 ];\n if (cdkBackdrop != null) {\n CellEditorDirective.invokeElementMethod(cdkBackdrop, 'click');\n }\n cdkOverlayContainer.innerHTML = '';\n }\n\n CellEditorDirective.invokeElementMethod(e.target, 'blur');\n if (targetCell != null) {\n CellEditorDirective.invokeElementMethod(targetCell, 'click');\n }\n }\n\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[clickOutside]',\n})\nexport class ClickOutsideDirective {\n\n @Output()\n public clickOutside: EventEmitter<[ HTMLElement, HTMLElement ]> = new EventEmitter<[ HTMLElement, HTMLElement ]>();\n\n @Input()\n public enableWhiteListing: boolean = false;\n\n constructor(\n private readonly elementRef: ElementRef,\n ) {\n }\n\n @HostListener('document:click', [ '$event.target' ])\n private onClick(targetElement: HTMLElement): void {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n const whiteListedClass = 'whitelisted';\n if (!clickedInside) {\n if (this.enableWhiteListing) {\n const isWhiteListed = targetElement.classList.contains(whiteListedClass)\n || ClickOutsideDirective.getClosest(targetElement, whiteListedClass)\n || ClickOutsideDirective.getClosest(targetElement, 'cdk-overlay-container');\n if (!isWhiteListed) {\n this.clickOutside.emit([ this.elementRef.nativeElement, targetElement ]);\n }\n } else {\n this.clickOutside.emit([ this.elementRef.nativeElement, targetElement ]);\n }\n }\n }\n\n private static getClosest(el: HTMLElement | null, selector: string): HTMLElement | null {\n while (el) {\n if (el.classList.contains(selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CoreLoggerService, ILoggerConfig, ILoggerDefaultConfig, LogType } from '@mosa-ng/core';\nimport { LoggerComponent } from '../components/logger/logger.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggerService extends CoreLoggerService {\n\n private loggerComp: LoggerComponent | undefined;\n\n /**\n * Default constructor\n */\n constructor() {\n super();\n }\n\n /**\n * Setter for logger\n * @param component\n * @param defaultConfig\n */\n public logger(component: LoggerComponent, defaultConfig: ILoggerDefaultConfig): void {\n this.loggerComp = component;\n this.defaultConfig = defaultConfig;\n }\n\n /**\n * Shows the log\n * @param type\n * @param config\n */\n public override show(config: ILoggerConfig, type: LogType): void {\n super.show(config, type);\n if (this.loggerComp) {\n const i: number = this.loggerComp.slideIn(config.title, config.msg, type, config);\n\n if (config.duration !== -1) {\n setTimeout((): void => this.loggerComp?.slideOut(i), (config.duration || 1) * 1000);\n }\n }\n }\n\n}\n","import { AssetsI18nLoaderService } from '@mosa-ng/core';\nimport { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\n// Components\nexport * from './components/alert-widget/alert.widget';\nexport * from './components/base/cell-editor.base.component';\nexport * from './components/cell-editor/cell-editor.component';\nexport * from './components/confirm-dialog/confirm.dialog';\nexport * from './components/loading-button/loading-button.component';\nexport * from './components/logger/logger.component';\nexport * from './components/skeleton-loader/skeleton/skeleton.component';\nexport * from './components/skeleton-loader/list-skeleton-loader/list.skeleton-loader';\nexport * from './components/skeleton-loader/table-skeleton-loader/table.skeleton-loader';\nexport * from './components/update-dialog/mat-update-dialog/mat-update.dialog';\nexport * from './components/update-dialog/update.dialog';\n\n// Directives\nexport * from './directives/cell-editor.directive';\nexport * from './directives/click-outside.directive';\n\n// States\nexport * from './models/states/logger-state.model';\nexport * from './models/states/cell-editor-base-state.model';\n\n// Models\nexport * from './models/skeleton.model';\nexport * from './models/confirm-dialog.model';\nexport * from './models/table-item.model';\nexport * from './models/update-config.model';\n\n// Services\nexport * from './services/cell-editor.service';\nexport * from './services/logger.service';\n\nexport * from './services/facades/logger.facade';\n\nfunction initI18n(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, 'mosa');\n}\n\nexport const provideMosaMaterial: () => EnvironmentProviders = () => makeEnvironmentProviders([\n provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),\n]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"mosa-ng-material.mjs","sources":["../../../../projects/material/src/lib/components/alert-widget/alert.widget.ts","../../../../projects/material/src/lib/components/alert-widget/alert.widget.html","../../../../projects/material/src/lib/models/confirm-dialog.model.ts","../../../../projects/material/src/lib/components/confirm-dialog/confirm.dialog.ts","../../../../projects/material/src/lib/components/confirm-dialog/confirm.dialog.html","../../../../projects/material/src/lib/components/base/cell-editor.base.component.ts","../../../../projects/material/src/lib/components/cell-editor/cell-editor.component.ts","../../../../projects/material/src/lib/components/cell-editor/cell-editor.component.html","../../../../projects/material/src/lib/components/loading-button/loading-button.component.ts","../../../../projects/material/src/lib/components/loading-button/loading-button.component.html","../../../../projects/material/src/lib/services/facades/logger.facade.ts","../../../../projects/material/src/lib/components/logger/logger.component.ts","../../../../projects/material/src/lib/components/logger/logger.component.html","../../../../projects/material/src/lib/models/skeleton.model.ts","../../../../projects/material/src/lib/components/skeleton-loader/skeleton/skeleton.component.ts","../../../../projects/material/src/lib/components/skeleton-loader/skeleton/skeleton.component.html","../../../../projects/material/src/lib/components/skeleton-loader/base.skeleton-loader.ts","../../../../projects/material/src/lib/components/skeleton-loader/list-skeleton-loader/list.skeleton-loader.ts","../../../../projects/material/src/lib/components/skeleton-loader/list-skeleton-loader/list.skeleton-loader.html","../../../../projects/material/src/lib/components/skeleton-loader/table-skeleton-loader/table.skeleton-loader.ts","../../../../projects/material/src/lib/components/skeleton-loader/table-skeleton-loader/table.skeleton-loader.html","../../../../projects/material/src/lib/components/update-dialog/mat-update-dialog/mat-update.dialog.ts","../../../../projects/material/src/lib/components/update-dialog/mat-update-dialog/mat-update.dialog.html","../../../../projects/material/src/lib/models/update-config.model.ts","../../../../projects/material/src/lib/components/update-dialog/update.dialog.ts","../../../../projects/material/src/lib/services/cell-editor.service.ts","../../../../projects/material/src/lib/directives/cell-editor.directive.ts","../../../../projects/material/src/lib/directives/click-outside.directive.ts","../../../../projects/material/src/lib/services/logger.service.ts","../../../../projects/material/src/lib/provider.ts","../../../../projects/material/src/mosa-ng-material.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\n@Component({\n selector: 'mosa-alert-widget',\n templateUrl: './alert.widget.html',\n styleUrls: [ './alert.widget.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ MatIcon ],\n})\nexport class AlertWidget implements OnInit, OnChanges {\n\n @Input()\n public icon: string | undefined;\n\n @Input()\n public title: string | undefined;\n\n @Input()\n public message: string | undefined;\n\n @Input()\n public type: 'warning' | 'error' | 'info' | 'success' | undefined;\n\n constructor() {\n }\n\n public ngOnInit(): void {\n this.updateData();\n }\n\n public ngOnChanges(_changes: SimpleChanges): void {\n this.updateData();\n }\n\n private updateData(): void {\n if (!this.title || !this.icon) {\n switch (this.type) {\n case 'error':\n this.icon ||= 'alert-circle-outline';\n this.title ||= 'Error';\n break;\n case 'info':\n this.icon ||= 'information-outline';\n this.title ||= 'Information';\n break;\n case 'success':\n this.icon ||= 'check';\n this.title ||= 'Success';\n break;\n case 'warning':\n this.icon ||= 'alert-outline';\n this.title ||= 'Warning';\n break;\n default:\n this.icon ||= 'information-outline';\n this.title ||= 'Alert';\n break;\n }\n }\n }\n\n}\n","<div [class]=\"'alert-' + type\" class=\"alert\">\n <div class=\"icon\">\n <mat-icon>icon</mat-icon>\n {{ title }}\n </div>\n <div>{{ message }}</div>\n</div>\n","// eslint-disable-next-line max-classes-per-file\nexport enum ConfirmDialogResult {\n confirmed,\n denied,\n cancelled,\n}\n\nexport class ConfirmDialogAction {\n\n public icon: string | undefined;\n public visible: boolean | undefined;\n public label: string;\n\n constructor(label: string, visible?: boolean) {\n this.label = label;\n this.visible = visible;\n }\n}\n\nexport class ConfirmDialogData {\n\n public title: string | undefined;\n public message: string | undefined;\n public cancel: ConfirmDialogAction | undefined;\n public confirm: ConfirmDialogAction | undefined;\n public deny: ConfirmDialogAction | undefined;\n\n constructor(title?: string, message?: string, cancel?: ConfirmDialogAction, confirm?: ConfirmDialogAction, deny?: ConfirmDialogAction) {\n this.title = title;\n this.message = message;\n this.cancel = cancel;\n this.confirm = confirm;\n this.deny = deny;\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { ConfirmDialogAction, ConfirmDialogData, ConfirmDialogResult } from '../../models/confirm-dialog.model';\nimport { MatButton } from '@angular/material/button';\nimport { UpperCasePipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mosa-confirm-dialog',\n templateUrl: './confirm.dialog.html',\n styleUrls: [ './confirm.dialog.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n UpperCasePipe,\n TranslateModule,\n ],\n})\nexport class ConfirmDialog implements OnInit {\n\n public dialogData: ConfirmDialogData;\n public result: typeof ConfirmDialogResult = ConfirmDialogResult;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n private readonly myConfirmDialogData: ConfirmDialogData,\n private readonly myMatDialogRef: MatDialogRef<ConfirmDialog>,\n ) {\n const cancel: ConfirmDialogAction = new ConfirmDialogAction('mosa.commons.buttons.cancel', true);\n const deny: ConfirmDialogAction = new ConfirmDialogAction('mosa.commons.buttons.deny');\n const confirm: ConfirmDialogAction = new ConfirmDialogAction('mosa.commons.buttons.confirm', true);\n const title: string = 'mosa.components.confirmDialog.title';\n const message: string = 'mosa.components.confirmDialog.message';\n\n this.dialogData = myConfirmDialogData || new ConfirmDialogData(title, message, cancel, confirm, deny);\n\n if (!this.dialogData.title) {\n this.dialogData.title = title;\n }\n\n if (!this.dialogData.message) {\n this.dialogData.message = message;\n }\n\n if (!this.dialogData.cancel) {\n this.dialogData.cancel = cancel;\n }\n\n if (!this.dialogData.confirm) {\n this.dialogData.confirm = confirm;\n }\n\n if (!this.dialogData.deny) {\n this.dialogData.deny = deny;\n }\n }\n\n public ngOnInit(): void {\n //\n }\n\n public confirm(result: ConfirmDialogResult): void {\n this.myMatDialogRef.close(result);\n }\n\n}\n","<h1 class=\"active\" mat-dialog-title>{{ dialogData.title | translate }}</h1>\n<div mat-dialog-content>\n {{ dialogData.message | translate }}\n</div>\n<div mat-dialog-actions>\n @if (dialogData.cancel) {\n <button (click)=\"confirm(result.cancelled)\" color=\"primary\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n }\n @if (dialogData.deny?.visible) {\n <button (click)=\"confirm(result.denied)\" color=\"primary\" mat-stroked-button>\n {{ dialogData.deny?.label | translate | uppercase }}\n </button>\n }\n @if (dialogData.confirm?.visible) {\n <button (click)=\"confirm(result.confirmed)\" color=\"primary\" mat-flat-button>\n {{ dialogData.confirm?.label | translate | uppercase }}\n </button>\n }\n</div>\n","import { ChangeDetectionStrategy, Component, OnInit, Optional } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { ActivatedRouteSnapshot, CanDeactivate, RouterStateSnapshot } from '@angular/router';\nimport { ConfirmDialogData, ConfirmDialogResult } from '../../models/confirm-dialog.model';\nimport { TableItem } from '../../models/table-item.model';\nimport { ConfirmDialog } from '../confirm-dialog/confirm.dialog';\nimport { firstValueFrom } from 'rxjs';\n\n@Component({\n selector: 'mosa-cell-editor-base',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CellEditorBaseComponent<Model> implements OnInit, CanDeactivate<CellEditorBaseComponent<Model>> {\n\n public dataSource: MatTableDataSource<TableItem<Model>> = new MatTableDataSource<TableItem<Model>>();\n public displayedColumns: (keyof Model | string)[] = [];\n\n constructor(\n @Optional()\n protected readonly myMatDialog: MatDialog,\n ) {\n }\n\n public ngOnInit(): void {\n //\n }\n\n public get changedRows(): TableItem<Model>[] {\n return this.dataSource?.data?.filter((c: TableItem<Model>): boolean => !!c.changedRowKeys && c.changedRowKeys?.length > 0);\n }\n\n /**\n * Remove table item data\n * @param data\n */\n public serializeData(data: TableItem<Model>[]): Model[] {\n return data.map((val: TableItem<Model>): Model => {\n delete val.changedRowKeys;\n delete val.rowOriginalData;\n return val;\n });\n }\n\n public toTableItems(data: Model[]): TableItem<Model>[] {\n return data.map((val: Model): TableItem<Model> => ({\n ...val,\n rowOriginalData: val,\n changedRowKeys: [],\n }));\n }\n\n public async canDeactivate(_component: CellEditorBaseComponent<Model>,\n _currentRoute: ActivatedRouteSnapshot,\n _currentState: RouterStateSnapshot,\n _nextState?: RouterStateSnapshot): Promise<boolean> {\n if (!this.changedRows.length) {\n return true;\n }\n\n const result: ConfirmDialogResult = await firstValueFrom(\n this.myMatDialog\n .open(ConfirmDialog, {\n width: '600px',\n data: new ConfirmDialogData('mosa.components.cellEditorBase.discardChanges.label',\n 'mosa.components.cellEditorBase.discardChanges.message'),\n })\n .afterClosed(),\n );\n\n return result === ConfirmDialogResult.confirmed;\n }\n\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { MatSelect } from '@angular/material/select';\nimport { TableItem } from '../../models/table-item.model';\n\n@Component({\n selector: 'mosa-cell-editor',\n templateUrl: './cell-editor.component.html',\n styleUrls: [ './cell-editor.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class CellEditorComponent<T = any> implements OnInit {\n\n @Input()\n public key: string = '';\n\n @Input()\n public rowItem!: TableItem<T>;\n\n @Input()\n public value: T | undefined;\n\n @Output()\n public valueChange: EventEmitter<T | undefined> = new EventEmitter<T | undefined>();\n\n @Output()\n public cellClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n @Output()\n private readonly cellChange: EventEmitter<void> = new EventEmitter<void>();\n\n @Output()\n private readonly cellCancel: EventEmitter<void> = new EventEmitter<void>();\n\n @ContentChild(MatSelect)\n private readonly select: MatSelect | undefined;\n\n public mode: 'input' | 'output' = 'output';\n\n private oldValue: T | undefined;\n\n private readonly myChangeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n private readonly myElementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n\n constructor() {\n }\n\n public get element(): HTMLElement {\n return this.myElementRef.nativeElement;\n }\n\n public ngOnInit(): void {\n this.oldValue = this.value;\n this.rowItem.rowOriginalData = this.rowItem;\n }\n\n public toOutput(save?: boolean): void {\n if (this.mode !== 'output') {\n this.mode = 'output';\n this.myChangeDetectorRef.markForCheck();\n this.element.classList.remove('focused');\n\n if (save) {\n if (!this.rowItem.changedRowKeys) {\n this.rowItem.changedRowKeys = [];\n }\n const index: number = this.rowItem.changedRowKeys.indexOf(this.key);\n if (this.value !== this.oldValue) {\n if (index === -1) {\n this.rowItem.changedRowKeys.push(this.key);\n this.element.classList.add('edited');\n }\n this.cellChange.emit();\n } else {\n if (index !== -1) {\n this.rowItem.changedRowKeys.splice(index, 1);\n this.element.classList.remove('edited');\n }\n }\n } else {\n this.value = this.oldValue;\n this.cellCancel.emit();\n }\n this.valueChange.next(this.value);\n }\n }\n\n public toInput(): void {\n this.mode = 'input';\n this.myChangeDetectorRef.markForCheck();\n this.element.classList.add('focused');\n setTimeout((): void => {\n const comp: HTMLElement | null = this.element.querySelector('.cell-input');\n\n if (comp instanceof HTMLInputElement) {\n comp.focus();\n } else if (this.select) {\n this.select.open();\n }\n });\n }\n\n}\n","@if (mode === 'input') {\n <div class=\"input-wrapper\">\n <ng-content select=\".cell-input\"></ng-content>\n </div>\n}\n@if (mode === 'output') {\n <div class=\"output-wrapper\">\n <ng-content select=\".cell-output\"></ng-content>\n </div>\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressBar } from '@angular/material/progress-bar';\n\n@Component({\n selector: 'mosa-loading-button',\n templateUrl: './loading-button.component.html',\n styleUrls: [ './loading-button.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatButton,\n NgTemplateOutlet,\n MatIconButton,\n MatProgressSpinner,\n MatIcon,\n MatProgressBar,\n ],\n})\nexport class LoadingButtonComponent {\n\n @Input()\n public mode: 'spinner' | 'progress-bar' = 'spinner';\n\n @Input()\n public loading: boolean = false;\n\n @Input()\n public disabled: boolean = false;\n\n @Input()\n public color: ThemePalette = 'primary';\n\n @Input()\n public buttonType: 'default' | 'raised' | 'stroked' | 'flat' | 'icon' = 'default';\n\n @Input()\n public icon: string | undefined;\n\n @Output()\n public click: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n constructor() {\n }\n\n public onClick(e: MouseEvent): void {\n e.stopPropagation();\n this.click.emit(e);\n }\n\n}\n","@switch (buttonType) {\n @default {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('raised') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-raised-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('stroked') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-stroked-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('flat') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-flat-button>\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n } @case ('icon') {\n <button (click)=\"onClick($event)\" [class]=\"mode\" [color]=\"color\"\n [disabled]=\"loading || disabled\" mat-icon-button>\n @if (loading) {\n <mat-spinner class=\"icon-spinner\" [color]=\"color\" [diameter]=\"40\" [strokeWidth]=\"2\"></mat-spinner>\n } @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n }\n <ng-content select=\".icon\"></ng-content>\n </button>\n }\n}\n\n<ng-template #buttonContent>\n @if (icon) {\n <mat-icon>{{ icon }}</mat-icon>\n } @switch (mode) {\n @case ('spinner') {\n <div class=\"spinner-inner\">\n @if (loading) {\n <mat-spinner [color]=\"color\" [diameter]=\"20\"></mat-spinner>\n }\n <span [class.loading]=\"loading\" class=\"label\">\n <ng-content select=\".spinner-label\"></ng-content>\n </span>\n </div>\n } @case ('progress-bar') {\n <ng-content select=\".progress-bar-label\"></ng-content>\n @if (loading) {\n <mat-progress-bar [color]=\"color\" mode=\"indeterminate\"></mat-progress-bar>\n }\n }\n}\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { ILog } from '@mosa-ng/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ILoggerState } from '../../models/states/logger-state.model';\n\nlet _state: ILoggerState = {\n logs: [],\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggerFacade {\n\n protected store$: BehaviorSubject<ILoggerState>;\n\n constructor() {\n this.store$ = new BehaviorSubject<ILoggerState>(_state);\n }\n\n public get snapshot(): ILoggerState {\n return this.store$.value;\n }\n\n public subState(): Observable<ILoggerState> {\n return this.store$.asObservable();\n }\n\n public updateLogs(logs: ILog[]): void {\n this.updateState({ ..._state, logs });\n }\n\n private updateState(state: ILoggerState): void {\n this.store$.next(_state = state);\n }\n\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, inject, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { ILog, ILoggerConfig } from '@mosa-ng/core';\nimport { Observable } from 'rxjs';\nimport { ILoggerState } from '../../models/states/logger-state.model';\nimport { LoggerFacade } from '../../services/facades/logger.facade';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButton } from '@angular/material/button';\nimport { AsyncPipe, UpperCasePipe } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mosa-logger',\n templateUrl: './logger.component.html',\n styleUrls: [ './logger.component.scss' ],\n animations: [\n trigger('slide', [\n state('enter', style({ transform: 'translateX(0)' })),\n transition(':leave', [\n animate(200, style({ transform: 'translateX(120%)' })),\n ]),\n transition(':enter', [\n style({ transform: 'translateX(120%)' }),\n animate(200, style({ transform: 'translateX(0)' })),\n ]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatIcon,\n MatButton,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule,\n ],\n})\nexport class LoggerComponent implements OnInit {\n\n @ViewChildren('loggerElement')\n public elements: QueryList<HTMLElement> | undefined;\n\n public loggerState$!: Observable<ILoggerState>;\n\n private readonly myLoggerFacade: LoggerFacade = inject(LoggerFacade);\n\n constructor() {\n }\n\n public ngOnInit(): void {\n this.loggerState$ = this.myLoggerFacade.subState();\n }\n\n public onClickLog(log: ILog): void {\n if (log.config.closeOnClick) {\n this.slideOut(log.id);\n }\n }\n\n /**\n * Shows the snackbar\n * @param title\n * @param message\n * @param type\n * @param config\n */\n public slideIn(title: string | undefined, message: string | undefined, type: string, config: ILoggerConfig): number {\n const logs: ILog[] = [ ...this.myLoggerFacade.snapshot.logs ];\n const i = logs.length;\n let icon: string;\n\n switch (type) {\n case 'error':\n icon = 'error';\n break;\n case 'warning':\n icon = 'warning';\n break;\n case 'info':\n icon = 'info';\n break;\n case 'success':\n icon = 'done';\n break;\n default:\n icon = 'notifications';\n break;\n }\n\n logs.push({ id: i, title, message, config, state: 'enter', icon });\n this.myLoggerFacade.updateLogs(logs);\n return i;\n }\n\n /**\n * Hides the log\n * @param id\n */\n public slideOut(id: number): void {\n let logs: ILog[] = [ ...this.myLoggerFacade.snapshot.logs ];\n if (logs.length > 0) {\n const item: ILog | undefined = logs.find((e: ILog): boolean => e.id === id);\n if (!item) {\n return;\n }\n\n item.state = 'leave';\n this.myLoggerFacade.updateLogs(logs);\n setTimeout((): void => {\n logs = [ ...this.myLoggerFacade.snapshot.logs ];\n const index = logs.findIndex((log: ILog): boolean => log.id === item.id);\n logs.splice(index, 1);\n this.myLoggerFacade.updateLogs(logs);\n }, 200);\n }\n }\n\n public callAction(log: ILog): void {\n log.config.action?.callback?.call(this);\n this.slideOut(log.id);\n }\n\n}\n","@if (loggerState$ | async; as state) {\n @for (log of state.logs; track log) {\n <div #loggerElement\n [@slide]=\"log.state\"\n [class.none]=\"!log.state\"\n [class]=\"log.config.className\"\n (click)=\"onClickLog(log)\"\n [class.touch]=\"log.config.closeOnClick\"\n class=\"logger-element\">\n <div class=\"content\">\n <mat-icon class=\"icon\">{{ log.icon }}</mat-icon>\n <div>\n @if (log.title) {\n <div class=\"title\">{{ log.title | translate }}</div>\n } @if (log.message) {\n <div [innerHTML]=\"log.message | translate\" class=\"message\"></div>\n }\n </div>\n </div>\n @if (log.config.action || log.config.showDismiss) {\n <div class=\"actions\">\n @if (log.config.showDismiss) {\n <button (click)=\"slideOut(log.id)\" class=\"dismiss\" mat-button>\n {{ 'mosa.commons.buttons.dismiss' | translate | uppercase }}\n </button>\n } @if (log.config.action && log.config.action.label && log.config.action.callback) {\n <button (click)=\"$event.stopPropagation(); callAction(log)\"\n class=\"action-btn\" mat-button>\n {{ log.config.action.label | translate | uppercase }}\n </button>\n }\n </div>\n }\n </div>\n }\n}\n\n","import { isNullOrEmpty, isNumber, isZeroOrHigher } from '@mosa-ng/core';\n\nexport class Skeleton {\n public width?: number | string;\n public height?: number | string;\n public borderRadius?: number | string;\n public randomizeOffset?: number;\n\n constructor(skeleton?: Skeleton) {\n this.width = isZeroOrHigher(skeleton?.width) ? skeleton?.width : 100;\n this.height = isZeroOrHigher(skeleton?.height) ? skeleton?.height : 15;\n if ((isNumber(skeleton?.borderRadius) && isZeroOrHigher(skeleton?.borderRadius)) ||\n (typeof skeleton?.borderRadius === 'string' && !isNullOrEmpty(skeleton?.borderRadius))) {\n this.borderRadius = skeleton!.borderRadius;\n }\n this.borderRadius = this.borderRadius || 4;\n this.randomizeOffset = skeleton?.randomizeOffset || 0;\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { Skeleton } from '../../../models/skeleton.model';\n\n@Component({\n selector: 'mosa-skeleton',\n templateUrl: './skeleton.component.html',\n styleUrls: [ './skeleton.component.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkeletonComponent implements OnInit {\n\n @Input()\n public skeleton!: Skeleton;\n\n @Input()\n public width: number | string = 0;\n\n @Input()\n public height: number | string = 0;\n\n @Input()\n public randomizeOffset: number = 0;\n\n @Input()\n public borderRadius: number | string| undefined;\n\n private readonly element: HTMLElement;\n\n constructor(\n private readonly myElementRef: ElementRef,\n ) {\n this.element = this.myElementRef.nativeElement;\n }\n\n public ngOnInit(): void {\n if (!this.skeleton) {\n this.skeleton = new Skeleton({\n width: this.width,\n height: this.height,\n borderRadius: this.borderRadius,\n randomizeOffset: this.randomizeOffset,\n });\n }\n\n this.element.style.width = this.actualWidth;\n this.element.style.height = SkeletonComponent.value(this.skeleton.height);\n this.element.style.borderRadius = SkeletonComponent.value(this.skeleton.borderRadius);\n }\n\n private get actualWidth(): string {\n if (this.skeleton.randomizeOffset && this.skeleton.randomizeOffset > 0 && typeof this.skeleton.width === 'number') {\n return `${this.skeleton.width - Math.floor(Math.random() * this.skeleton.randomizeOffset)}px`;\n }\n\n return SkeletonComponent.value(this.skeleton.width);\n }\n\n private static value(val: number | string | undefined): string {\n if (typeof val === 'number') {\n return `${val}px`;\n }\n return val || '';\n }\n\n}\n","","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'mosa-skeleton-loader',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class BaseSkeletonLoader {\n\n @Input()\n public itemCount: number | undefined;\n\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, TemplateRef } from '@angular/core';\nimport { BaseSkeletonLoader } from '../base.skeleton-loader';\nimport { MatList, MatListItem } from '@angular/material/list';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mosa-list-skeleton-loader',\n templateUrl: './list.skeleton-loader.html',\n styleUrls: [ './list.skeleton-loader.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatList,\n MatListItem,\n NgTemplateOutlet,\n ],\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class ListSkeletonLoader extends BaseSkeletonLoader implements OnInit {\n\n @Input()\n public content: TemplateRef<unknown> | undefined;\n\n public items: number[] = [];\n\n constructor() {\n super();\n }\n\n public ngOnInit(): void {\n this.items = Array(this.itemCount).fill(this.itemCount).map((x: number, i: number): number => i);\n }\n\n}\n","<mat-list>\n @for (item of items; track item) {\n <mat-list-item>\n <ng-container *ngTemplateOutlet=\"content, context: { $implicit: item }\"></ng-container>\n </mat-list-item>\n }\n</mat-list>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Skeleton } from '../../../models/skeleton.model';\nimport { BaseSkeletonLoader } from '../base.skeleton-loader';\nimport { MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, MatTable } from '@angular/material/table';\nimport { SkeletonComponent } from '../skeleton/skeleton.component';\n\n@Component({\n selector: 'mosa-table-skeleton-loader',\n templateUrl: './table.skeleton-loader.html',\n styleUrls: [ './table.skeleton-loader.scss' ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatTable,\n MatColumnDef,\n MatHeaderCellDef,\n MatHeaderCell,\n SkeletonComponent,\n MatCellDef,\n MatCell,\n MatHeaderRowDef,\n MatHeaderRow,\n MatRowDef,\n MatRow,\n ],\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport class TableSkeletonLoader extends BaseSkeletonLoader implements OnInit {\n\n @Input()\n public columns: Skeleton[][] = [];\n\n public items: Skeleton[][] = [];\n public displayedColumns: string[] = [];\n\n constructor() {\n super();\n }\n\n public ngOnInit(): void {\n for (let i = 0; i < this.columns.length; i++) {\n this.displayedColumns.push(`column-${i}`);\n }\n\n for (let i = 0; i < (this.itemCount || 0); i++) {\n const skeletons: Skeleton[] = [];\n for (let j = 0; j < this.displayedColumns.length; j++) {\n const skeleton = this.columns[ j ][ 1 ];\n skeletons.push(new Skeleton({\n width: skeleton.width,\n height: skeleton.height,\n borderRadius: skeleton.borderRadius,\n randomizeOffset: skeleton.randomizeOffset,\n }));\n }\n this.items.push(skeletons);\n }\n }\n\n}\n","<table [dataSource]=\"items\" mat-table>\n @for (column of columns; track column; let i = $index) {\n <ng-container [matColumnDef]=\"'column-' + i\">\n <th *matHeaderCellDef mat-header-cell>\n <mosa-skeleton [skeleton]=\"column[0]\"></mosa-skeleton>\n </th>\n <td *matCellDef=\"let row\" mat-cell>\n <mosa-skeleton [skeleton]=\"column[1]\"></mosa-skeleton>\n </td>\n </ng-container>\n }\n <tr *matHeaderRowDef=\"displayedColumns;sticky:true\" mat-header-row></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns;\" class=\"row-hover\" mat-row></tr>\n</table>\n","import { Component, inject, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { IUpdateConfig, UpdateDialogResult } from '../../../models/update-config.model';\nimport { MatButton } from '@angular/material/button';\nimport { AsyncPipe, UpperCasePipe } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MosaDurationPipe } from '@mosa-ng/core';\n\n@Component({\n selector: 'mosa-mat-update-dialog',\n templateUrl: './mat-update.dialog.html',\n styleUrls: [ './mat-update.dialog.scss' ],\n imports: [\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatButton,\n AsyncPipe,\n UpperCasePipe,\n TranslatePipe,\n MosaDurationPipe,\n ],\n})\nexport class MatUpdateDialog implements OnInit {\n\n private readonly myMatDialogRef: MatDialogRef<MatUpdateDialog> = inject(MatDialogRef<MatUpdateDialog>);\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public readonly config: IUpdateConfig,\n ) {\n }\n\n public ngOnInit(): void {\n //\n }\n\n public close(result: UpdateDialogResult): void {\n this.myMatDialogRef.close(result);\n }\n\n}\n","<h1 class=\"active\" mat-dialog-title>{{ config.title | translate }}</h1>\n<div mat-dialog-content>\n {{ config.message | translate }}\n</div>\n<div mat-dialog-actions>\n <button (click)=\"close(0)\" [class.cancel-btn]=\"config.showIgnore\" mat-stroked-button>\n {{ 'mosa.commons.buttons.cancel' | translate | uppercase }}\n </button>\n @if (config.showIgnore) {\n <button (click)=\"close(1)\" color=\"primary\" mat-stroked-button>\n {{\n 'mosa.commons.buttons.ignoreFor' | translate: {\n duration: config.ignoreTimeout | mosaDuration: 'auto' | async | uppercase\n } | uppercase\n }}\n </button>\n }\n <button mat-flat-button color=\"primary\" (click)=\"close(2)\">\n {{ 'mosa.commons.buttons.reloadNow' | translate | uppercase }}\n </button>\n</div>\n","export interface IUpdateConfig {\n refreshInterval?: number;\n ignoreTimeout?: number;\n localStorageKey?: string;\n versionPath: string;\n showIgnore?: boolean;\n title?: string;\n message?: string;\n}\n\nexport interface IVersion {\n version: string;\n timestamp: number;\n}\n\nexport enum UpdateDialogResult {\n cancel,\n ignore,\n reload,\n}\n","import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ApiService, isNullOrEmpty } from '@mosa-ng/core';\nimport { firstValueFrom, timer } from 'rxjs';\nimport { IUpdateConfig, IVersion, UpdateDialogResult } from '../../models/update-config.model';\nimport { MatUpdateDialog } from './mat-update-dialog/mat-update.dialog';\n\n@Component({\n selector: 'mosa-update-dialog[config]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UpdateDialog {\n\n @Input('config')\n public set updateConfig(config: IUpdateConfig) {\n if (config) {\n if (!config.versionPath) {\n console.warn('LoggerService: No version path was provided. This field is required!');\n return;\n }\n\n if (!config.localStorageKey) {\n config.localStorageKey = 'mosaApplicationVersion';\n }\n\n if (!config.ignoreTimeout) {\n config.ignoreTimeout = 30000;\n }\n\n if (!config.refreshInterval) {\n config.refreshInterval = 15000;\n }\n\n if (!config.title) {\n config.title = 'mosa.components.updateDialog.title';\n }\n\n if (!config.message) {\n config.message = 'mosa.components.updateDialog.message';\n }\n\n this.config = config;\n this.end();\n this.start();\n } else {\n console.warn('LoggerService: Cannot check for version. No config was provided.');\n }\n }\n\n private firstLoad: boolean = true;\n\n private blocked: boolean = false;\n private interval: NodeJS.Timeout | undefined;\n private config!: IUpdateConfig;\n\n private readonly myApiService: ApiService = inject(ApiService);\n private readonly myMatDialog: MatDialog = inject(MatDialog);\n\n constructor() {\n }\n\n private start(): void {\n if (this.interval) {\n this.end();\n }\n void this.checkForUpdate();\n this.interval = setInterval((): Promise<void> => this.checkForUpdate(), this.config.refreshInterval);\n }\n\n private openDialog(version: IVersion): void {\n this.myMatDialog.open(MatUpdateDialog, {\n width: '600px',\n data: this.config,\n })\n .afterClosed()\n .subscribe((result: UpdateDialogResult): void => {\n switch (result) {\n case UpdateDialogResult.cancel:\n this.end();\n this.blocked = true;\n break;\n case UpdateDialogResult.ignore:\n timer(this.config.ignoreTimeout!).subscribe((): void => this.openDialog(version));\n break;\n case UpdateDialogResult.reload:\n window.location.reload();\n window.localStorage.setItem(this.config.localStorageKey!, JSON.stringify(version));\n break;\n }\n });\n }\n\n private async checkForUpdate(): Promise<void> {\n if (this.blocked) {\n return;\n }\n\n const localStorageVersion: string | null = window.localStorage.getItem(this.config.localStorageKey!);\n let localVersion: IVersion = { version: '0.0.0', timestamp: 0 };\n if (!isNullOrEmpty(localStorageVersion)) {\n localVersion = JSON.parse(localStorageVersion!);\n }\n const data: IVersion = await firstValueFrom(this.myApiService.get(this.config.versionPath));\n if (this.firstLoad) {\n window.localStorage.setItem(this.config.localStorageKey!, JSON.stringify(data));\n this.firstLoad = false;\n return;\n }\n if (data.version !== localVersion.version) {\n this.blocked = true;\n this.end();\n this.openDialog(data);\n }\n }\n\n private end(): void {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CellEditorComponent } from '../components/cell-editor/cell-editor.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CellEditorService {\n\n public cellEditor: CellEditorComponent | undefined;\n\n private documentEditListener: ((e: MouseEvent) => void | undefined) | undefined;\n\n constructor() {\n }\n\n public updateEditingCell(cellEditor: CellEditorComponent): void {\n if (cellEditor !== this.cellEditor) {\n this.cellEditor?.toOutput(true);\n }\n this.cellEditor = cellEditor;\n this.cellEditor.toInput();\n this.bindDocumentEditListener();\n }\n\n public bindDocumentEditListener(): void {\n if (!this.documentEditListener) {\n this.documentEditListener = (e: MouseEvent): void => {\n e.preventDefault();\n const target: HTMLElement = e.target as HTMLElement;\n const mosaCellEditor: HTMLElement | null = target.closest('mosa-cell-editor');\n if (this.cellEditor && mosaCellEditor !== this.cellEditor.element && !target.classList.contains('cell-output')) {\n document.removeEventListener('click', this.documentEditListener!);\n this.documentEditListener = undefined;\n this.cellEditor.toOutput(true);\n this.cellEditor = undefined;\n }\n };\n\n document.addEventListener('click', this.documentEditListener);\n }\n }\n\n public isEditingCellValid(): boolean {\n return this.cellEditor?.element != null && Array.from(this.cellEditor.element.querySelectorAll('.ng-invalid')).length === 0;\n }\n}\n","import { ContentChild, Directive, ElementRef, HostListener, inject, OnInit } from '@angular/core';\nimport { CellEditorComponent } from '../components/cell-editor/cell-editor.component';\nimport { CellEditorService } from '../services/cell-editor.service';\n\n@Directive({ selector: 'td[mosaCellEditor]' })\nexport class CellEditorDirective implements OnInit {\n\n @ContentChild(CellEditorComponent)\n private readonly cellEditor!: CellEditorComponent;\n\n private readonly myElementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n private readonly myCellEditorService: CellEditorService = inject(CellEditorService);\n\n constructor() {\n }\n\n @HostListener('keydown.escape', [ '$event' ])\n public onEscapeKeyDown(e: Event): void {\n e.preventDefault();\n this.cellEditor.toOutput();\n }\n\n @HostListener('keydown.tab', [ '$event' ])\n @HostListener('keydown.shift.tab', [ '$event' ])\n @HostListener('keydown.meta.tab', [ '$event' ])\n public onShiftKeyDown(e: Event): void {\n e.preventDefault();\n if ((e as KeyboardEvent).shiftKey) {\n this.moveToCell(e, false);\n } else {\n this.moveToCell(e, true);\n }\n }\n\n @HostListener('keydown.enter', [ '$event' ])\n public onEnterKeyDown(e: Event): void {\n e.preventDefault();\n if (this.myCellEditorService.isEditingCellValid()) {\n this.moveToNextRowCell(e);\n }\n }\n\n @HostListener('click', [ '$event' ])\n public onClick(e: Event): void {\n e.preventDefault();\n this.myCellEditorService.updateEditingCell(this.cellEditor);\n this.cellEditor.cellClick.emit();\n }\n\n public ngOnInit(): void {\n this.myElementRef.nativeElement.classList.add('editable-cell');\n }\n\n private moveToNextRowCell(e: Event): void {\n const currentCell: Element | null | undefined = this.cellEditor?.element?.parentElement;\n if (!currentCell) {\n return;\n }\n\n let columnDefClass: string = '';\n currentCell.classList.forEach((className: string): void => {\n const found: boolean = className.includes('mat-column-');\n if (found) {\n columnDefClass = className;\n }\n });\n\n const targetCell: ChildNode | null = this.findNextRowEditableColumn(currentCell, columnDefClass);\n this.cellEditor.toOutput(true);\n CellEditorDirective.executeMove(e, targetCell);\n }\n\n private findNextRowEditableColumn(row: Element, matColumnClassName: string): ChildNode | null {\n const nextRow: Element | null | undefined = row.parentElement?.nextElementSibling;\n if (!nextRow) {\n return null;\n }\n\n const column: Element = nextRow.getElementsByClassName(matColumnClassName)[ 0 ];\n return column?.classList.contains('editable-cell') ?\n column.firstChild :\n this.findNextRowEditableColumn(nextRow, matColumnClassName);\n }\n\n private findNextEditableColumn(cell: Element): ChildNode | null {\n let nextCell: Element | null | undefined = cell.parentElement?.nextElementSibling;\n\n if (!nextCell) {\n const nextRow: Element | null | undefined = cell.parentElement?.parentElement?.nextElementSibling;\n if (nextRow) {\n nextCell = nextRow.firstElementChild;\n }\n }\n\n if (nextCell) {\n return nextCell.classList.contains('editable-cell')\n ? nextCell.firstChild\n : this.findNextEditableColumn(nextCell);\n }\n\n return null;\n }\n\n private findPreviousEditableColumn(cell: Element): ChildNode | null {\n let prevCell: Element | null = cell.previousElementSibling;\n\n if (!prevCell) {\n const previousRow: Element | null | undefined = cell.parentElement?.previousElementSibling;\n if (previousRow) {\n prevCell = previousRow.lastElementChild;\n }\n }\n\n if (prevCell) {\n return prevCell.classList.contains('editable-cell') ?\n prevCell.firstChild :\n this.findPreviousEditableColumn(prevCell);\n } else {\n return null;\n }\n }\n\n private moveToCell(event: Event, nextCell: boolean): void {\n const currentCell: HTMLElement = this.cellEditor.element;\n if (this.cellEditor.element != null) {\n const targetCell: ChildNode | null = nextCell\n ? this.findNextEditableColumn(currentCell)\n : this.findPreviousEditableColumn(currentCell);\n if (this.myCellEditorService.isEditingCellValid()) {\n this.cellEditor.toOutput(true);\n (targetCell as HTMLElement)?.click();\n }\n CellEditorDirective.executeMove(event, targetCell);\n }\n }\n\n private static invokeElementMethod(element: EventTarget | ChildNode | Element | null, methodName: string, args?: unknown[]): void {\n // eslint-disable-next-line @typescript-eslint/no-restricted-types,@typescript-eslint/no-unsafe-function-type,@typescript-eslint/no-explicit-any\n ((element as any)[ methodName ] as Function).apply(element, args);\n }\n\n private static executeMove(e: Event, targetCell: ChildNode | null): void {\n e.preventDefault();\n // If datepicker is opened, remove cdk-overlay from dom\n const element: Element = e.composedPath()[ 0 ] as Element;\n if (element.className.includes('td-input-date')) {\n const cdkOverlayContainer: Element = document.getElementsByClassName('cdk-overlay-container')[ 0 ];\n const cdkBackdrop: Element = cdkOverlayContainer.getElementsByClassName('cdk-overlay-backdrop')[ 0 ];\n if (cdkBackdrop != null) {\n CellEditorDirective.invokeElementMethod(cdkBackdrop, 'click');\n }\n cdkOverlayContainer.innerHTML = '';\n }\n\n CellEditorDirective.invokeElementMethod(e.target, 'blur');\n if (targetCell != null) {\n CellEditorDirective.invokeElementMethod(targetCell, 'click');\n }\n }\n\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[clickOutside]',\n})\nexport class ClickOutsideDirective {\n\n @Output()\n public clickOutside: EventEmitter<[ HTMLElement, HTMLElement ]> = new EventEmitter<[ HTMLElement, HTMLElement ]>();\n\n @Input()\n public enableWhiteListing: boolean = false;\n\n constructor(\n private readonly elementRef: ElementRef,\n ) {\n }\n\n @HostListener('document:click', [ '$event.target' ])\n public onClick(targetElement: EventTarget | null): void {\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\n const whiteListedClass = 'whitelisted';\n if (clickedInside || !targetElement) {\n return;\n }\n\n const htmlElement: HTMLElement = targetElement as HTMLElement;\n if (this.enableWhiteListing) {\n const isWhiteListed = htmlElement.classList.contains(whiteListedClass)\n || ClickOutsideDirective.getClosest(htmlElement, whiteListedClass)\n || ClickOutsideDirective.getClosest(htmlElement, 'cdk-overlay-container');\n if (!isWhiteListed) {\n this.clickOutside.emit([ this.elementRef.nativeElement, htmlElement ]);\n }\n } else {\n this.clickOutside.emit([ this.elementRef.nativeElement, htmlElement ]);\n }\n }\n\n private static getClosest(el: HTMLElement | null, selector: string): HTMLElement | null {\n while (el) {\n if (el.classList.contains(selector)) {\n return el;\n }\n el = el.parentElement;\n }\n return null;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CoreLoggerService, ILoggerConfig, ILoggerDefaultConfig, LogType } from '@mosa-ng/core';\nimport { LoggerComponent } from '../components/logger/logger.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggerService extends CoreLoggerService {\n\n private loggerComp: LoggerComponent | undefined;\n\n /**\n * Default constructor\n */\n constructor() {\n super();\n }\n\n /**\n * Setter for logger\n * @param component\n * @param defaultConfig\n */\n public logger(component: LoggerComponent, defaultConfig: ILoggerDefaultConfig): void {\n this.loggerComp = component;\n this.defaultConfig = defaultConfig;\n }\n\n /**\n * Shows the log\n * @param type\n * @param config\n */\n public override show(config: ILoggerConfig, type: LogType): void {\n super.show(config, type);\n if (this.loggerComp) {\n const i: number = this.loggerComp.slideIn(config.title, config.msg, type, config);\n\n if (config.duration !== -1) {\n setTimeout((): void => this.loggerComp?.slideOut(i), (config.duration || 1) * 1000);\n }\n }\n }\n\n}\n","import { AssetsI18nLoaderService } from '@mosa-ng/core';\nimport { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\n\n// Components\nexport * from './components/alert-widget/alert.widget';\nexport * from './components/base/cell-editor.base.component';\nexport * from './components/cell-editor/cell-editor.component';\nexport * from './components/confirm-dialog/confirm.dialog';\nexport * from './components/loading-button/loading-button.component';\nexport * from './components/logger/logger.component';\nexport * from './components/skeleton-loader/skeleton/skeleton.component';\nexport * from './components/skeleton-loader/list-skeleton-loader/list.skeleton-loader';\nexport * from './components/skeleton-loader/table-skeleton-loader/table.skeleton-loader';\nexport * from './components/update-dialog/mat-update-dialog/mat-update.dialog';\nexport * from './components/update-dialog/update.dialog';\n\n// Directives\nexport * from './directives/cell-editor.directive';\nexport * from './directives/click-outside.directive';\n\n// States\nexport * from './models/states/logger-state.model';\nexport * from './models/states/cell-editor-base-state.model';\n\n// Models\nexport * from './models/skeleton.model';\nexport * from './models/confirm-dialog.model';\nexport * from './models/table-item.model';\nexport * from './models/update-config.model';\n\n// Services\nexport * from './services/cell-editor.service';\nexport * from './services/logger.service';\n\nexport * from './services/facades/logger.facade';\n\nfunction initI18n(i18n: AssetsI18nLoaderService): Promise<void> {\n return i18n.init(undefined, 'mosa');\n}\n\nexport const provideMosaMaterial: () => EnvironmentProviders = () => makeEnvironmentProviders([\n provideAppInitializer(() => initI18n(inject(AssetsI18nLoaderService))),\n]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@mosa-ng/material",
3
- "version": "20.1.2",
3
+ "version": "21.0.1",
4
4
  "peerDependencies": {
5
- "@angular/common": ">=20.0.0 < 21.0.0",
6
- "@angular/core": ">=20.0.0 < 21.0.0"
5
+ "@angular/common": ">=21.0.0 < 22.0.0",
6
+ "@angular/core": ">=21.0.0 < 22.0.0"
7
7
  },
8
8
  "dependencies": {
9
9
  "tslib": "^2.3.0"
10
10
  },
11
11
  "sideEffects": false,
12
12
  "module": "fesm2022/mosa-ng-material.mjs",
13
- "typings": "index.d.ts",
13
+ "typings": "types/mosa-ng-material.d.ts",
14
14
  "exports": {
15
15
  "./package.json": {
16
16
  "default": "./package.json"
17
17
  },
18
18
  ".": {
19
- "types": "./index.d.ts",
19
+ "types": "./types/mosa-ng-material.d.ts",
20
20
  "default": "./fesm2022/mosa-ng-material.mjs"
21
21
  }
22
22
  }
@@ -241,10 +241,10 @@ declare class CellEditorDirective implements OnInit {
241
241
  private readonly myElementRef;
242
242
  private readonly myCellEditorService;
243
243
  constructor();
244
- onEscapeKeyDown(e: KeyboardEvent): void;
245
- onShiftKeyDown(e: KeyboardEvent): void;
246
- onEnterKeyDown(e: KeyboardEvent): void;
247
- onClick(e: MouseEvent): void;
244
+ onEscapeKeyDown(e: Event): void;
245
+ onShiftKeyDown(e: Event): void;
246
+ onEnterKeyDown(e: Event): void;
247
+ onClick(e: Event): void;
248
248
  ngOnInit(): void;
249
249
  private moveToNextRowCell;
250
250
  private findNextRowEditableColumn;
@@ -262,7 +262,7 @@ declare class ClickOutsideDirective {
262
262
  clickOutside: EventEmitter<[HTMLElement, HTMLElement]>;
263
263
  enableWhiteListing: boolean;
264
264
  constructor(elementRef: ElementRef);
265
- private onClick;
265
+ onClick(targetElement: EventTarget | null): void;
266
266
  private static getClosest;
267
267
  static ɵfac: i0.ɵɵFactoryDeclaration<ClickOutsideDirective, never>;
268
268
  static ɵdir: i0.ɵɵDirectiveDeclaration<ClickOutsideDirective, "[clickOutside]", never, { "enableWhiteListing": { "alias": "enableWhiteListing"; "required": false; }; }, { "clickOutside": "clickOutside"; }, never, never, true, never>;