@meshmakers/shared-ui 3.1.139-0 → 3.1.143-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/esm2022/lib/mm-autocomplete-input/mm-autocomplete-input.component.mjs +302 -0
  2. package/esm2022/lib/mm-breadcrumb/mm-breadcrumb.component.mjs +108 -0
  3. package/esm2022/lib/mm-confirmation-window/mm-confirmation-window.component.mjs +75 -0
  4. package/esm2022/lib/mm-entity-select-input/mm-entity-select-input.component.mjs +293 -0
  5. package/esm2022/lib/{mm-shared-ui/mm-message-details → mm-message-details}/mm-message-details.component.mjs +4 -4
  6. package/esm2022/lib/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component.mjs +316 -0
  7. package/esm2022/lib/mm-notification-bar/mm-notification-bar.component.mjs +40 -0
  8. package/esm2022/lib/mm-progress-window/mm-progress-window.component.mjs +34 -0
  9. package/esm2022/lib/mm-shared-ui.module.mjs +83 -0
  10. package/esm2022/lib/{shared → models}/abstractDetailsComponent.mjs +1 -1
  11. package/esm2022/lib/{shared → models}/commonValidators.mjs +1 -1
  12. package/esm2022/lib/models/confirmation.mjs +15 -0
  13. package/esm2022/lib/models/progressValue.mjs +9 -0
  14. package/esm2022/lib/services/confirmation.service.mjs +69 -0
  15. package/esm2022/lib/services/progress-notifier.service.mjs +63 -0
  16. package/esm2022/public-api.mjs +13 -16
  17. package/fesm2022/meshmakers-shared-ui.mjs +267 -337
  18. package/fesm2022/meshmakers-shared-ui.mjs.map +1 -1
  19. package/lib/{breadcrumb/mat-breadcrumb → mm-breadcrumb}/mm-breadcrumb.component.d.ts +1 -2
  20. package/lib/{confirmation-dialog/confirmation-window → mm-confirmation-window}/mm-confirmation-window.component.d.ts +1 -1
  21. package/lib/{progress-notifier/progress-window → mm-progress-window}/mm-progress-window.component.d.ts +1 -1
  22. package/lib/mm-shared-ui.module.d.ts +25 -0
  23. package/lib/{confirmation-dialog/services → services}/confirmation.service.d.ts +1 -1
  24. package/package.json +3 -3
  25. package/public-api.d.ts +12 -15
  26. package/esm2022/lib/breadcrumb/breadcrumb.module.mjs +0 -22
  27. package/esm2022/lib/breadcrumb/mat-breadcrumb/mm-breadcrumb.component.mjs +0 -109
  28. package/esm2022/lib/breadcrumb/model/breadcrumb.mjs +0 -2
  29. package/esm2022/lib/breadcrumb/services/breadcrumb.service.mjs +0 -22
  30. package/esm2022/lib/confirmation-dialog/confirmation-dialog.module.mjs +0 -26
  31. package/esm2022/lib/confirmation-dialog/confirmation-window/mm-confirmation-window.component.mjs +0 -75
  32. package/esm2022/lib/confirmation-dialog/services/confirmation.service.mjs +0 -69
  33. package/esm2022/lib/confirmation-dialog/shared/confirmation.mjs +0 -15
  34. package/esm2022/lib/mm-shared-ui/mm-autocomplete-input/mm-autocomplete-input.component.mjs +0 -302
  35. package/esm2022/lib/mm-shared-ui/mm-entity-select-input/mm-entity-select-input.component.mjs +0 -293
  36. package/esm2022/lib/mm-shared-ui/mm-multiple-entity-select-input/mm-multiple-entity-select-input.component.mjs +0 -316
  37. package/esm2022/lib/mm-shared-ui/mm-notification-bar/mm-notification-bar.component.mjs +0 -40
  38. package/esm2022/lib/mm-shared-ui/mm-shared-ui.module.mjs +0 -74
  39. package/esm2022/lib/progress-notifier/progress-notifier.module.mjs +0 -27
  40. package/esm2022/lib/progress-notifier/progress-window/mm-progress-window.component.mjs +0 -35
  41. package/esm2022/lib/progress-notifier/services/progress-notifier.service.mjs +0 -63
  42. package/esm2022/lib/progress-notifier/shared/progressValue.mjs +0 -9
  43. package/lib/breadcrumb/breadcrumb.module.d.ts +0 -12
  44. package/lib/breadcrumb/model/breadcrumb.d.ts +0 -4
  45. package/lib/breadcrumb/services/breadcrumb.service.d.ts +0 -11
  46. package/lib/confirmation-dialog/confirmation-dialog.module.d.ts +0 -12
  47. package/lib/mm-shared-ui/mm-shared-ui.module.d.ts +0 -22
  48. package/lib/progress-notifier/progress-notifier.module.d.ts +0 -13
  49. /package/lib/{mm-shared-ui/mm-autocomplete-input → mm-autocomplete-input}/mm-autocomplete-input.component.d.ts +0 -0
  50. /package/lib/{mm-shared-ui/mm-entity-select-input → mm-entity-select-input}/mm-entity-select-input.component.d.ts +0 -0
  51. /package/lib/{mm-shared-ui/mm-message-details → mm-message-details}/mm-message-details.component.d.ts +0 -0
  52. /package/lib/{mm-shared-ui/mm-multiple-entity-select-input → mm-multiple-entity-select-input}/mm-multiple-entity-select-input.component.d.ts +0 -0
  53. /package/lib/{mm-shared-ui/mm-notification-bar → mm-notification-bar}/mm-notification-bar.component.d.ts +0 -0
  54. /package/lib/{shared → models}/abstractDetailsComponent.d.ts +0 -0
  55. /package/lib/{shared → models}/commonValidators.d.ts +0 -0
  56. /package/lib/{confirmation-dialog/shared → models}/confirmation.d.ts +0 -0
  57. /package/lib/{progress-notifier/shared → models}/progressValue.d.ts +0 -0
  58. /package/lib/{progress-notifier/services → services}/progress-notifier.service.d.ts +0 -0
@@ -1,14 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, Inject, EventEmitter, forwardRef, HostBinding, ViewChild, Input, NgModule, Injectable } from '@angular/core';
3
- import * as i2 from '@angular/common';
3
+ import * as i2$1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1 from '@angular/material/dialog';
6
6
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
7
- import * as i3 from '@angular/material/button';
7
+ import * as i2 from '@angular/material/button';
8
8
  import { MatButtonModule } from '@angular/material/button';
9
9
  import * as i1$1 from '@meshmakers/shared-services';
10
10
  import { IsoDateTime } from '@meshmakers/shared-services';
11
- import * as i3$1 from '@angular/material/toolbar';
11
+ import * as i3 from '@angular/material/toolbar';
12
12
  import { MatToolbarModule } from '@angular/material/toolbar';
13
13
  import * as i5 from '@angular/material/icon';
14
14
  import { MatIconModule } from '@angular/material/icon';
@@ -20,7 +20,7 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion';
20
20
  import { debounceTime, filter, tap, map, switchMap } from 'rxjs/operators';
21
21
  import { Subject, of, BehaviorSubject } from 'rxjs';
22
22
  import * as i1$2 from '@angular/cdk/a11y';
23
- import * as i3$2 from '@angular/material/autocomplete';
23
+ import * as i3$1 from '@angular/material/autocomplete';
24
24
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
25
25
  import * as i4 from '@angular/material/core';
26
26
  import * as i5$1 from '@angular/material/input';
@@ -30,13 +30,8 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
30
30
  import { ENTER, COMMA } from '@angular/cdk/keycodes';
31
31
  import * as i7$1 from '@angular/material/chips';
32
32
  import { MatChipsModule } from '@angular/material/chips';
33
- import * as i4$1 from '@angular/material/progress-bar';
34
- import { MatProgressBarModule } from '@angular/material/progress-bar';
35
33
  import * as i1$3 from '@angular/router';
36
- import { NavigationEnd, PRIMARY_OUTLET, RouterModule } from '@angular/router';
37
- import * as i4$2 from '@angular/material/list';
38
- import { MatListModule } from '@angular/material/list';
39
- import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
34
+ import { NavigationEnd, PRIMARY_OUTLET } from '@angular/router';
40
35
 
41
36
  class MmMessageDetailsComponent {
42
37
  dialogRef;
@@ -48,10 +43,10 @@ class MmMessageDetailsComponent {
48
43
  this.errorMessage = data.errorMessage;
49
44
  }
50
45
  ngOnInit() { }
51
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmMessageDetailsComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
52
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmMessageDetailsComponent, selector: "mm-message-details", ngImport: i0, template: "<mat-dialog-content>\n\n <h2>{{errorMessage.title}}</h2>\n <p>{{errorMessage.message}}</p>\n\n\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button color=\"primary\" mat-dialog-close mat-raised-button>OK</button>\n</mat-dialog-actions>\n", styles: [""], dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] });
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmMessageDetailsComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmMessageDetailsComponent, selector: "mm-message-details", ngImport: i0, template: "<mat-dialog-content>\n\n <h2>{{errorMessage.title}}</h2>\n <p>{{errorMessage.message}}</p>\n\n\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button color=\"primary\" mat-dialog-close mat-raised-button>OK</button>\n</mat-dialog-actions>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] });
53
48
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmMessageDetailsComponent, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmMessageDetailsComponent, decorators: [{
55
50
  type: Component,
56
51
  args: [{ selector: 'mm-message-details', template: "<mat-dialog-content>\n\n <h2>{{errorMessage.title}}</h2>\n <p>{{errorMessage.message}}</p>\n\n\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <button color=\"primary\" mat-dialog-close mat-raised-button>OK</button>\n</mat-dialog-actions>\n" }]
57
52
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -83,10 +78,10 @@ class MmNotificationBarComponent {
83
78
  }
84
79
  });
85
80
  }
86
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmNotificationBarComponent, deps: [{ token: i1$1.MessageService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
87
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmNotificationBarComponent, selector: "mm-notification-bar", ngImport: i0, template: "<mat-toolbar [hidden]=\"!errorMessage\" class=\"mm-notification-bar-background\">\n <a (click)=\"onShowDetails()\"><span class=\"mat-small\"><u>{{ errorMessage?.title }}</u></span></a>\n\n <!-- This fills the remaining space of the current row -->\n <span class=\"notification-fill-remaining-space\"></span>\n\n <button (click)=\"onHide()\" class=\"mm-notification-bar-button\" mat-fab><mat-icon>close</mat-icon></button>\n</mat-toolbar>\n", styles: [".notification-fill-remaining-space{flex:1 1 auto}\n"], dependencies: [{ kind: "component", type: i3$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmNotificationBarComponent, deps: [{ token: i1$1.MessageService }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
82
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmNotificationBarComponent, selector: "mm-notification-bar", ngImport: i0, template: "<mat-toolbar [hidden]=\"!errorMessage\" class=\"mm-notification-bar-background\">\n <a (click)=\"onShowDetails()\"><span class=\"mat-small\"><u>{{ errorMessage?.title }}</u></span></a>\n\n <!-- This fills the remaining space of the current row -->\n <span class=\"notification-fill-remaining-space\"></span>\n\n <button (click)=\"onHide()\" class=\"mm-notification-bar-button\" mat-fab><mat-icon>close</mat-icon></button>\n</mat-toolbar>\n", styles: [".notification-fill-remaining-space{flex:1 1 auto}\n"], dependencies: [{ kind: "component", type: i3.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i2.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
88
83
  }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmNotificationBarComponent, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmNotificationBarComponent, decorators: [{
90
85
  type: Component,
91
86
  args: [{ selector: 'mm-notification-bar', template: "<mat-toolbar [hidden]=\"!errorMessage\" class=\"mm-notification-bar-background\">\n <a (click)=\"onShowDetails()\"><span class=\"mat-small\"><u>{{ errorMessage?.title }}</u></span></a>\n\n <!-- This fills the remaining space of the current row -->\n <span class=\"notification-fill-remaining-space\"></span>\n\n <button (click)=\"onHide()\" class=\"mm-notification-bar-button\" mat-fab><mat-icon>close</mat-icon></button>\n</mat-toolbar>\n", styles: [".notification-fill-remaining-space{flex:1 1 auto}\n"] }]
92
87
  }], ctorParameters: () => [{ type: i1$1.MessageService }, { type: i1.MatDialog }] });
@@ -317,8 +312,8 @@ class MmAutocompleteInputComponent {
317
312
  };
318
313
  _onTouched = () => {
319
314
  };
320
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmAutocompleteInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1$2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
321
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmAutocompleteInputComponent, selector: "mm-autocomplete", inputs: { dataSource: "dataSource", disabled: "disabled", placeholder: "placeholder", required: "required", prefix: "prefix" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [
315
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmAutocompleteInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1$2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
316
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmAutocompleteInputComponent, selector: "mm-autocomplete", inputs: { dataSource: "dataSource", disabled: "disabled", placeholder: "placeholder", required: "required", prefix: "prefix" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [
322
317
  {
323
318
  provide: NG_VALUE_ACCESSOR,
324
319
  useExisting: forwardRef(() => MmAutocompleteInputComponent),
@@ -333,9 +328,9 @@ class MmAutocompleteInputComponent {
333
328
  useExisting: forwardRef(() => MmAutocompleteInputComponent),
334
329
  multi: true
335
330
  }
336
- ], viewQueries: [{ propertyName: "inputField", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\"\n (closed)=\"onAutoCompleteClosed()\" (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let str of filteredStrings\" [value]=\"str\">\n {{str}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: ["span{opacity:0;transition:opacity .2s}:host.floating span{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
331
+ ], viewQueries: [{ propertyName: "inputField", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\"\n (closed)=\"onAutoCompleteClosed()\" (optionActivated)=\"onOptionActivated($event)\"\n (optionSelected)=\"onOptionSelected($event)\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let str of filteredStrings\" [value]=\"str\">\n {{str}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: ["span{opacity:0;transition:opacity .2s}:host.floating span{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
337
332
  }
338
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmAutocompleteInputComponent, decorators: [{
333
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmAutocompleteInputComponent, decorators: [{
339
334
  type: Component,
340
335
  args: [{ selector: "mm-autocomplete", host: {
341
336
  "[id]": "id",
@@ -596,8 +591,8 @@ class MmEntitySelectInputComponent {
596
591
  this.stateChanges.next();
597
592
  }
598
593
  }
599
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmEntitySelectInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1$2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
600
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmEntitySelectInputComponent, selector: "mm-entity-select", inputs: { dataSource: "dataSource", disabled: "disabled", placeholder: "placeholder", required: "required", prefix: "prefix" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [
594
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmEntitySelectInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1$2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
595
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmEntitySelectInputComponent, selector: "mm-entity-select", inputs: { dataSource: "dataSource", disabled: "disabled", placeholder: "placeholder", required: "required", prefix: "prefix" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [
601
596
  {
602
597
  provide: NG_VALUE_ACCESSOR,
603
598
  useExisting: forwardRef(() => MmEntitySelectInputComponent),
@@ -612,9 +607,9 @@ class MmEntitySelectInputComponent {
612
607
  useExisting: forwardRef(() => MmEntitySelectInputComponent),
613
608
  multi: true
614
609
  }
615
- ], viewQueries: [{ propertyName: "inputField", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: ["span{opacity:0;transition:opacity .2s}:host.floating span{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
610
+ ], viewQueries: [{ propertyName: "inputField", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\" [matAutocomplete]=\"auto\"\n [placeholder]=\"placeholder\" matInput>\n<mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n", styles: ["span{opacity:0;transition:opacity .2s}:host.floating span{opacity:1}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
616
611
  }
617
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmEntitySelectInputComponent, decorators: [{
612
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmEntitySelectInputComponent, decorators: [{
618
613
  type: Component,
619
614
  args: [{ selector: 'mm-entity-select', host: {
620
615
  '[id]': 'id',
@@ -895,8 +890,8 @@ class MmMultipleEntitySelectInputComponent {
895
890
  this.stateChanges.next();
896
891
  }
897
892
  }
898
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmMultipleEntitySelectInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1$2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
899
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmMultipleEntitySelectInputComponent, selector: "mm-multiple-entity-select", inputs: { dataSource: "dataSource", disabled: "disabled", placeholder: "placeholder", required: "required", prefix: "prefix" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [
893
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmMultipleEntitySelectInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1$2.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component });
894
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmMultipleEntitySelectInputComponent, selector: "mm-multiple-entity-select", inputs: { dataSource: "dataSource", disabled: "disabled", placeholder: "placeholder", required: "required", prefix: "prefix" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [
900
895
  {
901
896
  provide: NG_VALUE_ACCESSOR,
902
897
  useExisting: forwardRef(() => MmMultipleEntitySelectInputComponent),
@@ -911,9 +906,9 @@ class MmMultipleEntitySelectInputComponent {
911
906
  useExisting: forwardRef(() => MmMultipleEntitySelectInputComponent),
912
907
  multi: true
913
908
  }
914
- ], viewQueries: [{ propertyName: "inputField", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<mat-chip-grid #list>\n <mat-chip-row *ngFor=\"let entity of valuesFormControl.value\"\n (removed)=\"remove(entity)\"\n [editable]=\"false\"\n [aria-description]=\"'press enter to edit ' + dataSource?.onDisplayEntity(entity) ?? null\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n <button matChipRemove [attr.aria-label]=\"'remove ' + dataSource?.onDisplayEntity(entity) ?? null\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n <input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"list\"\n matChipInputAddOnBlur=\"true\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [placeholder]=\"placeholder\" matInput>\n <mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n</mat-chip-grid>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i7$1.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i7$1.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i7$1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i7$1.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
909
+ ], viewQueries: [{ propertyName: "inputField", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<mat-chip-grid #list>\n <mat-chip-row *ngFor=\"let entity of valuesFormControl.value\"\n (removed)=\"remove(entity)\"\n [editable]=\"false\"\n [aria-description]=\"'press enter to edit ' + dataSource?.onDisplayEntity(entity) ?? null\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n <button matChipRemove [attr.aria-label]=\"'remove ' + dataSource?.onDisplayEntity(entity) ?? null\">\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n <input #input (blur)=\"onTouched()\" (focusout)=\"onFocusOut()\" [formControl]=\"searchFormControl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"list\"\n matChipInputAddOnBlur=\"true\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n [placeholder]=\"placeholder\" matInput>\n <mat-autocomplete #auto=\"matAutocomplete\" (closed)=\"onEntityClosed()\"\n (optionActivated)=\"onEntityActivated($event)\" (optionSelected)=\"onEntitySelected($event)\"\n [displayWith]=\"dataSource?.onDisplayEntity ?? null\">\n <mat-option *ngIf=\"isLoading\" class=\"is-loading\">\n <mat-spinner diameter=\"50\"></mat-spinner>\n </mat-option>\n <ng-container *ngIf=\"!isLoading\">\n <mat-option *ngFor=\"let entity of filteredEntities\" [value]=\"entity\">\n {{dataSource?.onDisplayEntity(entity) ?? null}}\n </mat-option>\n </ng-container>\n </mat-autocomplete>\n</mat-chip-grid>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i7$1.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i7$1.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i7$1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i7$1.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
915
910
  }
916
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmMultipleEntitySelectInputComponent, decorators: [{
911
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmMultipleEntitySelectInputComponent, decorators: [{
917
912
  type: Component,
918
913
  args: [{ selector: 'mm-multiple-entity-select', host: {
919
914
  '[id]': 'id',
@@ -957,166 +952,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
957
952
  args: ['class.floating']
958
953
  }] } });
959
954
 
960
- class MmSharedUiModule {
961
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmSharedUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
962
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: MmSharedUiModule, declarations: [MmNotificationBarComponent,
963
- MmMessageDetailsComponent,
964
- MmAutocompleteInputComponent,
965
- MmEntitySelectInputComponent,
966
- MmMultipleEntitySelectInputComponent], imports: [CommonModule,
967
- MatToolbarModule,
968
- MatButtonModule,
969
- MatSnackBarModule,
970
- MatDialogModule,
971
- MatAutocompleteModule,
972
- MatInputModule,
973
- MatProgressSpinnerModule,
974
- MatChipsModule,
975
- MatIconModule,
976
- ReactiveFormsModule], exports: [MmNotificationBarComponent, MmAutocompleteInputComponent, MmEntitySelectInputComponent, MmMultipleEntitySelectInputComponent] });
977
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmSharedUiModule, imports: [CommonModule,
978
- MatToolbarModule,
979
- MatButtonModule,
980
- MatSnackBarModule,
981
- MatDialogModule,
982
- MatAutocompleteModule,
983
- MatInputModule,
984
- MatProgressSpinnerModule,
985
- MatChipsModule,
986
- MatIconModule,
987
- ReactiveFormsModule] });
988
- }
989
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmSharedUiModule, decorators: [{
990
- type: NgModule,
991
- args: [{
992
- declarations: [
993
- MmNotificationBarComponent,
994
- MmMessageDetailsComponent,
995
- MmAutocompleteInputComponent,
996
- MmEntitySelectInputComponent,
997
- MmMultipleEntitySelectInputComponent
998
- ],
999
- exports: [MmNotificationBarComponent, MmAutocompleteInputComponent, MmEntitySelectInputComponent, MmMultipleEntitySelectInputComponent],
1000
- imports: [
1001
- CommonModule,
1002
- MatToolbarModule,
1003
- MatButtonModule,
1004
- MatSnackBarModule,
1005
- MatDialogModule,
1006
- MatAutocompleteModule,
1007
- MatInputModule,
1008
- MatProgressSpinnerModule,
1009
- MatChipsModule,
1010
- MatIconModule,
1011
- ReactiveFormsModule
1012
- ]
1013
- }]
1014
- }] });
1015
-
1016
- class MmProgressWindowComponent {
1017
- data;
1018
- statusText;
1019
- progressValue;
1020
- constructor(data) {
1021
- this.data = data;
1022
- this.statusText = null;
1023
- this.progressValue = 0;
1024
- data.progress.subscribe((value) => {
1025
- this.statusText = value.statusText;
1026
- this.progressValue = value.progressValue;
1027
- });
1028
- }
1029
- ngOnInit() { }
1030
- onCancelClick() {
1031
- this.data.cancelOperation();
1032
- }
1033
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmProgressWindowComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
1034
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmProgressWindowComponent, selector: "mm-progress-window", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-progress-bar *ngIf=\"data.isDeterminate\" [value]=\"progressValue\" mode=\"determinate\"></mat-progress-bar>\n <mat-progress-bar *ngIf=\"!data.isDeterminate\" mode=\"indeterminate\"></mat-progress-bar>\n <p>{{statusText}}</p>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onCancelClick()\" *ngIf=\"data.isCancelOperationAvailable\" mat-button>Cancel</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
1035
- }
1036
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmProgressWindowComponent, decorators: [{
1037
- type: Component,
1038
- args: [{ selector: 'mm-progress-window', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-progress-bar *ngIf=\"data.isDeterminate\" [value]=\"progressValue\" mode=\"determinate\"></mat-progress-bar>\n <mat-progress-bar *ngIf=\"!data.isDeterminate\" mode=\"indeterminate\"></mat-progress-bar>\n <p>{{statusText}}</p>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onCancelClick()\" *ngIf=\"data.isCancelOperationAvailable\" mat-button>Cancel</button>\n</div>\n" }]
1039
- }], ctorParameters: () => [{ type: undefined, decorators: [{
1040
- type: Inject,
1041
- args: [MAT_DIALOG_DATA]
1042
- }] }] });
1043
-
1044
- class ProgressNotifierService {
1045
- dialog;
1046
- _currentProgressValue;
1047
- currentDialogRef;
1048
- constructor(dialog) {
1049
- this.dialog = dialog;
1050
- this._currentProgressValue = new BehaviorSubject(null);
1051
- this.currentDialogRef = null;
1052
- this._isCanceled = false;
1053
- }
1054
- _isCanceled;
1055
- get isCanceled() {
1056
- return this._isCanceled;
1057
- }
1058
- set isCanceled(value) {
1059
- this._isCanceled = value;
955
+ class MmBreadcrumbComponent {
956
+ activatedRoute;
957
+ router;
958
+ breadcrumbService;
959
+ breadcrumb = [];
960
+ fontSize = '18px';
961
+ fontColor = '#0275d8';
962
+ lastLinkColor = '#000';
963
+ symbol = ' / ';
964
+ constructor(activatedRoute, router, breadcrumbService) {
965
+ this.activatedRoute = activatedRoute;
966
+ this.router = router;
967
+ this.breadcrumbService = breadcrumbService;
968
+ this.breadCrumbData();
1060
969
  }
1061
- start(title, isDeterminate, isCancelOperationAvailable) {
1062
- this.isCanceled = false;
1063
- this.reportProgressDeterminate(0, 100, 'Working...');
1064
- this.currentDialogRef = this.dialog.open(MmProgressWindowComponent, {
1065
- width: '50vw',
1066
- maxWidth: '50vw',
1067
- data: {
1068
- title,
1069
- isDeterminate,
1070
- progress: this._currentProgressValue.asObservable(),
1071
- isCancelOperationAvailable,
1072
- cancelOperation: () => {
1073
- this.reportProgressIndeterminate('Canceling operation...');
1074
- this.isCanceled = true;
1075
- }
1076
- }
970
+ ngOnInit() {
971
+ this.breadcrumbService.breadcrumbLabels.subscribe((labelData) => {
972
+ Object.entries(labelData).forEach(([key, value]) => {
973
+ this.breadcrumb.forEach((crumb) => {
974
+ const labelParams = crumb.label.match(/[^{{]+(?=}})/g);
975
+ if (labelParams) {
976
+ for (const labelParam of labelParams) {
977
+ if (labelParam === key) {
978
+ crumb.label = crumb.label.replace('{{' + labelParam + '}}', value);
979
+ }
980
+ }
981
+ }
982
+ });
983
+ });
1077
984
  });
1078
- }
1079
- reportProgressDeterminate(progressCurrent, progressMax, statusText) {
1080
- const progressPercentage = (progressMax / 100) * progressCurrent;
1081
- this._currentProgressValue.next({
1082
- statusText,
1083
- progressValue: progressPercentage
985
+ this.breadcrumbService.newBreadcrumb.subscribe((breadcrumb) => {
986
+ if (breadcrumb.length > 0) {
987
+ this.updateData(this.activatedRoute, breadcrumb);
988
+ }
1084
989
  });
1085
990
  }
1086
- reportProgressIndeterminate(statusText) {
1087
- this._currentProgressValue.next({
1088
- statusText,
1089
- progressValue: 0
991
+ breadCrumbData() {
992
+ this.router.events
993
+ .pipe(filter((event) => event instanceof NavigationEnd))
994
+ .pipe(map(() => this.activatedRoute))
995
+ .pipe(map((route) => {
996
+ while (route.firstChild) {
997
+ route = route.firstChild;
998
+ }
999
+ return route;
1000
+ }))
1001
+ .pipe(filter((route) => route.outlet === PRIMARY_OUTLET))
1002
+ .subscribe((route) => {
1003
+ this.updateData(route, null);
1090
1004
  });
1091
1005
  }
1092
- complete() {
1093
- this.currentDialogRef?.close();
1094
- }
1095
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProgressNotifierService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
1096
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProgressNotifierService });
1097
- }
1098
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProgressNotifierService, decorators: [{
1099
- type: Injectable
1100
- }], ctorParameters: () => [{ type: i1.MatDialog }] });
1101
-
1102
- class ProgressNotifierModule {
1103
- static forRoot() {
1104
- return {
1105
- ngModule: ProgressNotifierModule,
1106
- providers: [ProgressNotifierService]
1107
- };
1006
+ updateData(route, newBreadcrumb) {
1007
+ if (route.snapshot.data['breadcrumb'] || newBreadcrumb) {
1008
+ const data = route.snapshot.data['breadcrumb'] ? route.snapshot.data['breadcrumb'] : newBreadcrumb;
1009
+ const breadcrumb = JSON.parse(JSON.stringify(data));
1010
+ breadcrumb.forEach((crumb) => {
1011
+ if (crumb.url) {
1012
+ const urlChunks = crumb.url.split('/');
1013
+ for (const chunk of urlChunks) {
1014
+ if (chunk.includes(':')) {
1015
+ const paramID = chunk.replace(':', '');
1016
+ const routerParamID = route.snapshot.params[paramID];
1017
+ crumb.url = crumb.url.replace(`:${paramID}`, routerParamID);
1018
+ }
1019
+ }
1020
+ }
1021
+ const labelParams = crumb.label.match(/[^{{]+(?=}})/g);
1022
+ if (labelParams) {
1023
+ for (const labelParam of labelParams) {
1024
+ const routerParamID = decodeURIComponent(route.snapshot.params[labelParam.trim()]);
1025
+ if (routerParamID) {
1026
+ crumb.label = crumb.label.replace('{{' + labelParam + '}}', routerParamID);
1027
+ }
1028
+ else {
1029
+ // crumb.label = crumb.label.replace('{{' + labelParam + '}}', '');
1030
+ }
1031
+ }
1032
+ }
1033
+ });
1034
+ this.breadcrumb = breadcrumb;
1035
+ }
1036
+ else {
1037
+ this.breadcrumb = [];
1038
+ }
1108
1039
  }
1109
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProgressNotifierModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1110
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: ProgressNotifierModule, declarations: [MmProgressWindowComponent], imports: [CommonModule, MatDialogModule, MatButtonModule, MatProgressBarModule] });
1111
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProgressNotifierModule, imports: [CommonModule, MatDialogModule, MatButtonModule, MatProgressBarModule] });
1040
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmBreadcrumbComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i1$3.Router }, { token: i1$1.BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component });
1041
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmBreadcrumbComponent, selector: "mm-breadcrumb", inputs: { fontSize: "fontSize", fontColor: "fontColor", lastLinkColor: "lastLinkColor", symbol: "symbol" }, ngImport: i0, template: "<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumb.length\">\n<!-- <mat-list-item>-->\n<!-- <span class=\"mat-bread-crumb-spacer\">-->\n<!-- <span *ngFor=\"let item of breadcrumb\">-->\n<!-- <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"-->\n<!-- class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>-->\n<!-- <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>-->\n<!-- <span *ngIf=\"breadcrumb.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>-->\n<!-- </span>-->\n<!-- </span>-->\n<!-- </mat-list-item>-->\n</mat-list>\n", styles: [".mat-bread-crumb{height:30px}.mat-bread-crumb-list{padding-bottom:10px}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1112
1042
  }
1113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ProgressNotifierModule, decorators: [{
1114
- type: NgModule,
1115
- args: [{
1116
- declarations: [MmProgressWindowComponent],
1117
- imports: [CommonModule, MatDialogModule, MatButtonModule, MatProgressBarModule]
1118
- }]
1119
- }] });
1043
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmBreadcrumbComponent, decorators: [{
1044
+ type: Component,
1045
+ args: [{ selector: 'mm-breadcrumb', template: "<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumb.length\">\n<!-- <mat-list-item>-->\n<!-- <span class=\"mat-bread-crumb-spacer\">-->\n<!-- <span *ngFor=\"let item of breadcrumb\">-->\n<!-- <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"-->\n<!-- class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>-->\n<!-- <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>-->\n<!-- <span *ngIf=\"breadcrumb.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>-->\n<!-- </span>-->\n<!-- </span>-->\n<!-- </mat-list-item>-->\n</mat-list>\n", styles: [".mat-bread-crumb{height:30px}.mat-bread-crumb-list{padding-bottom:10px}\n"] }]
1046
+ }], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$3.Router }, { type: i1$1.BreadcrumbService }], propDecorators: { fontSize: [{
1047
+ type: Input
1048
+ }], fontColor: [{
1049
+ type: Input
1050
+ }], lastLinkColor: [{
1051
+ type: Input
1052
+ }], symbol: [{
1053
+ type: Input
1054
+ }] } });
1120
1055
 
1121
1056
  var ButtonTypes;
1122
1057
  (function (ButtonTypes) {
@@ -1190,10 +1125,10 @@ class MmConfirmationWindowComponent {
1190
1125
  result: this.button3Result
1191
1126
  });
1192
1127
  }
1193
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmConfirmationWindowComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
1194
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmConfirmationWindowComponent, selector: "mm-confirmation-window", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>{{data.message}}</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onButton1()\" color=\"primary\" mat-button>{{button1Text}}</button>\n <button (click)=\"onButton2()\" *ngIf=\"button2Text\" mat-button>{{button2Text}}</button>\n <button (click)=\"onButton3()\" *ngIf=\"button3Text\" mat-button>{{button3Text}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
1128
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmConfirmationWindowComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
1129
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmConfirmationWindowComponent, selector: "mm-confirmation-window", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>{{data.message}}</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onButton1()\" color=\"primary\" mat-button>{{button1Text}}</button>\n <button (click)=\"onButton2()\" *ngIf=\"button2Text\" mat-button>{{button2Text}}</button>\n <button (click)=\"onButton3()\" *ngIf=\"button3Text\" mat-button>{{button3Text}}</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] });
1195
1130
  }
1196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmConfirmationWindowComponent, decorators: [{
1131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmConfirmationWindowComponent, decorators: [{
1197
1132
  type: Component,
1198
1133
  args: [{ selector: 'mm-confirmation-window', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>{{data.message}}</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onButton1()\" color=\"primary\" mat-button>{{button1Text}}</button>\n <button (click)=\"onButton2()\" *ngIf=\"button2Text\" mat-button>{{button2Text}}</button>\n <button (click)=\"onButton3()\" *ngIf=\"button3Text\" mat-button>{{button3Text}}</button>\n</div>\n" }]
1199
1134
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -1201,6 +1136,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
1201
1136
  args: [MAT_DIALOG_DATA]
1202
1137
  }] }] });
1203
1138
 
1139
+ class MmProgressWindowComponent {
1140
+ data;
1141
+ statusText;
1142
+ progressValue;
1143
+ constructor(data) {
1144
+ this.data = data;
1145
+ this.statusText = null;
1146
+ this.progressValue = 0;
1147
+ data.progress.subscribe((value) => {
1148
+ this.statusText = value.statusText;
1149
+ this.progressValue = value.progressValue;
1150
+ });
1151
+ }
1152
+ ngOnInit() { }
1153
+ onCancelClick() {
1154
+ this.data.cancelOperation();
1155
+ }
1156
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmProgressWindowComponent, deps: [{ token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
1157
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.2", type: MmProgressWindowComponent, selector: "mm-progress-window", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-progress-bar *ngIf=\"data.isDeterminate\" [value]=\"progressValue\" mode=\"determinate\"></mat-progress-bar>\n <mat-progress-bar *ngIf=\"!data.isDeterminate\" mode=\"indeterminate\"></mat-progress-bar>\n <p>{{statusText}}</p>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onCancelClick()\" *ngIf=\"data.isCancelOperationAvailable\" mat-button>Cancel</button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] });
1158
+ }
1159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmProgressWindowComponent, decorators: [{
1160
+ type: Component,
1161
+ args: [{ selector: 'mm-progress-window', template: "<h1 mat-dialog-title>{{data.title}}</h1>\n<div mat-dialog-content>\n <div fxLayout=\"column\">\n <mat-progress-bar *ngIf=\"data.isDeterminate\" [value]=\"progressValue\" mode=\"determinate\"></mat-progress-bar>\n <mat-progress-bar *ngIf=\"!data.isDeterminate\" mode=\"indeterminate\"></mat-progress-bar>\n <p>{{statusText}}</p>\n </div>\n</div>\n<div style=\"justify-content: flex-end;\" mat-dialog-actions>\n <button (click)=\"onCancelClick()\" *ngIf=\"data.isCancelOperationAvailable\" mat-button>Cancel</button>\n</div>\n" }]
1162
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1163
+ type: Inject,
1164
+ args: [MAT_DIALOG_DATA]
1165
+ }] }] });
1166
+
1167
+ class MmSharedUiModule {
1168
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmSharedUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1169
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: MmSharedUiModule, declarations: [MmBreadcrumbComponent,
1170
+ MmConfirmationWindowComponent,
1171
+ MmProgressWindowComponent,
1172
+ MmNotificationBarComponent,
1173
+ MmMessageDetailsComponent,
1174
+ MmAutocompleteInputComponent,
1175
+ MmEntitySelectInputComponent,
1176
+ MmMultipleEntitySelectInputComponent], imports: [CommonModule,
1177
+ MatToolbarModule,
1178
+ MatButtonModule,
1179
+ MatSnackBarModule,
1180
+ MatDialogModule,
1181
+ MatAutocompleteModule,
1182
+ MatInputModule,
1183
+ MatProgressSpinnerModule,
1184
+ MatChipsModule,
1185
+ MatIconModule,
1186
+ ReactiveFormsModule], exports: [MmBreadcrumbComponent, MmConfirmationWindowComponent, MmNotificationBarComponent, MmAutocompleteInputComponent, MmEntitySelectInputComponent, MmMultipleEntitySelectInputComponent] });
1187
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmSharedUiModule, imports: [CommonModule,
1188
+ MatToolbarModule,
1189
+ MatButtonModule,
1190
+ MatSnackBarModule,
1191
+ MatDialogModule,
1192
+ MatAutocompleteModule,
1193
+ MatInputModule,
1194
+ MatProgressSpinnerModule,
1195
+ MatChipsModule,
1196
+ MatIconModule,
1197
+ ReactiveFormsModule] });
1198
+ }
1199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: MmSharedUiModule, decorators: [{
1200
+ type: NgModule,
1201
+ args: [{
1202
+ declarations: [
1203
+ MmBreadcrumbComponent,
1204
+ MmConfirmationWindowComponent,
1205
+ MmProgressWindowComponent,
1206
+ MmNotificationBarComponent,
1207
+ MmMessageDetailsComponent,
1208
+ MmAutocompleteInputComponent,
1209
+ MmEntitySelectInputComponent,
1210
+ MmMultipleEntitySelectInputComponent,
1211
+ ],
1212
+ exports: [MmBreadcrumbComponent, MmConfirmationWindowComponent, MmNotificationBarComponent, MmAutocompleteInputComponent, MmEntitySelectInputComponent, MmMultipleEntitySelectInputComponent],
1213
+ imports: [
1214
+ CommonModule,
1215
+ MatToolbarModule,
1216
+ MatButtonModule,
1217
+ MatSnackBarModule,
1218
+ MatDialogModule,
1219
+ MatAutocompleteModule,
1220
+ MatInputModule,
1221
+ MatProgressSpinnerModule,
1222
+ MatChipsModule,
1223
+ MatIconModule,
1224
+ ReactiveFormsModule
1225
+ ]
1226
+ }]
1227
+ }] });
1228
+
1204
1229
  class ConfirmationService {
1205
1230
  dialog;
1206
1231
  constructor(dialog) {
@@ -1254,34 +1279,73 @@ class ConfirmationService {
1254
1279
  });
1255
1280
  return dialogRef.afterClosed().pipe(map((value) => value?.result === ButtonTypes.Ok));
1256
1281
  }
1257
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ConfirmationService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
1258
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ConfirmationService, providedIn: 'root' });
1282
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ConfirmationService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
1283
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ConfirmationService, providedIn: 'root' });
1259
1284
  }
1260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ConfirmationService, decorators: [{
1285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ConfirmationService, decorators: [{
1261
1286
  type: Injectable,
1262
1287
  args: [{
1263
1288
  providedIn: 'root'
1264
1289
  }]
1265
1290
  }], ctorParameters: () => [{ type: i1.MatDialog }] });
1266
1291
 
1267
- class ConfirmationDialogModule {
1268
- static forRoot() {
1269
- return {
1270
- ngModule: ConfirmationDialogModule,
1271
- providers: [ConfirmationService]
1272
- };
1292
+ class ProgressNotifierService {
1293
+ dialog;
1294
+ _currentProgressValue;
1295
+ currentDialogRef;
1296
+ constructor(dialog) {
1297
+ this.dialog = dialog;
1298
+ this._currentProgressValue = new BehaviorSubject(null);
1299
+ this.currentDialogRef = null;
1300
+ this._isCanceled = false;
1273
1301
  }
1274
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ConfirmationDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1275
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: ConfirmationDialogModule, declarations: [MmConfirmationWindowComponent], imports: [CommonModule, MatDialogModule, MatButtonModule] });
1276
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ConfirmationDialogModule, imports: [CommonModule, MatDialogModule, MatButtonModule] });
1302
+ _isCanceled;
1303
+ get isCanceled() {
1304
+ return this._isCanceled;
1305
+ }
1306
+ set isCanceled(value) {
1307
+ this._isCanceled = value;
1308
+ }
1309
+ start(title, isDeterminate, isCancelOperationAvailable) {
1310
+ this.isCanceled = false;
1311
+ this.reportProgressDeterminate(0, 100, 'Working...');
1312
+ this.currentDialogRef = this.dialog.open(MmProgressWindowComponent, {
1313
+ width: '50vw',
1314
+ maxWidth: '50vw',
1315
+ data: {
1316
+ title,
1317
+ isDeterminate,
1318
+ progress: this._currentProgressValue.asObservable(),
1319
+ isCancelOperationAvailable,
1320
+ cancelOperation: () => {
1321
+ this.reportProgressIndeterminate('Canceling operation...');
1322
+ this.isCanceled = true;
1323
+ }
1324
+ }
1325
+ });
1326
+ }
1327
+ reportProgressDeterminate(progressCurrent, progressMax, statusText) {
1328
+ const progressPercentage = (progressMax / 100) * progressCurrent;
1329
+ this._currentProgressValue.next({
1330
+ statusText,
1331
+ progressValue: progressPercentage
1332
+ });
1333
+ }
1334
+ reportProgressIndeterminate(statusText) {
1335
+ this._currentProgressValue.next({
1336
+ statusText,
1337
+ progressValue: 0
1338
+ });
1339
+ }
1340
+ complete() {
1341
+ this.currentDialogRef?.close();
1342
+ }
1343
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ProgressNotifierService, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
1344
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ProgressNotifierService });
1277
1345
  }
1278
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ConfirmationDialogModule, decorators: [{
1279
- type: NgModule,
1280
- args: [{
1281
- declarations: [MmConfirmationWindowComponent],
1282
- imports: [CommonModule, MatDialogModule, MatButtonModule]
1283
- }]
1284
- }] });
1346
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ProgressNotifierService, decorators: [{
1347
+ type: Injectable
1348
+ }], ctorParameters: () => [{ type: i1.MatDialog }] });
1285
1349
 
1286
1350
  function isEmptyInputValue(value) {
1287
1351
  // we don't check for string here so it also works with arrays
@@ -1370,140 +1434,6 @@ class AbstractDetailsComponent {
1370
1434
  }
1371
1435
  }
1372
1436
 
1373
- class BreadcrumbService {
1374
- breadcrumbLabels = new BehaviorSubject([]);
1375
- newBreadcrumb = new BehaviorSubject([]);
1376
- updateBreadcrumbLabels(labels) {
1377
- this.breadcrumbLabels.next(labels);
1378
- }
1379
- updateBreadcrumb(newBreadcrumb) {
1380
- this.newBreadcrumb.next(newBreadcrumb);
1381
- }
1382
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BreadcrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1383
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BreadcrumbService, providedIn: 'root' });
1384
- }
1385
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BreadcrumbService, decorators: [{
1386
- type: Injectable,
1387
- args: [{
1388
- providedIn: 'root'
1389
- }]
1390
- }] });
1391
-
1392
- class MmBreadcrumbComponent {
1393
- activatedRoute;
1394
- router;
1395
- breadcrumbService;
1396
- breadcrumb = [];
1397
- fontSize = '18px';
1398
- fontColor = '#0275d8';
1399
- lastLinkColor = '#000';
1400
- symbol = ' / ';
1401
- constructor(activatedRoute, router, breadcrumbService) {
1402
- this.activatedRoute = activatedRoute;
1403
- this.router = router;
1404
- this.breadcrumbService = breadcrumbService;
1405
- this.breadCrumbData();
1406
- }
1407
- ngOnInit() {
1408
- this.breadcrumbService.breadcrumbLabels.subscribe((labelData) => {
1409
- Object.entries(labelData).forEach(([key, value]) => {
1410
- this.breadcrumb.forEach((crumb) => {
1411
- const labelParams = crumb.label.match(/[^{{]+(?=}})/g);
1412
- if (labelParams) {
1413
- for (const labelParam of labelParams) {
1414
- if (labelParam === key) {
1415
- crumb.label = crumb.label.replace('{{' + labelParam + '}}', value);
1416
- }
1417
- }
1418
- }
1419
- });
1420
- });
1421
- });
1422
- this.breadcrumbService.newBreadcrumb.subscribe((breadcrumb) => {
1423
- if (breadcrumb.length > 0) {
1424
- this.updateData(this.activatedRoute, breadcrumb);
1425
- }
1426
- });
1427
- }
1428
- breadCrumbData() {
1429
- this.router.events
1430
- .pipe(filter((event) => event instanceof NavigationEnd))
1431
- .pipe(map(() => this.activatedRoute))
1432
- .pipe(map((route) => {
1433
- while (route.firstChild) {
1434
- route = route.firstChild;
1435
- }
1436
- return route;
1437
- }))
1438
- .pipe(filter((route) => route.outlet === PRIMARY_OUTLET))
1439
- .subscribe((route) => {
1440
- this.updateData(route, null);
1441
- });
1442
- }
1443
- updateData(route, newBreadcrumb) {
1444
- if (route.snapshot.data['breadcrumb'] || newBreadcrumb) {
1445
- const data = route.snapshot.data['breadcrumb'] ? route.snapshot.data['breadcrumb'] : newBreadcrumb;
1446
- const breadcrumb = JSON.parse(JSON.stringify(data));
1447
- breadcrumb.forEach((crumb) => {
1448
- if (crumb.url) {
1449
- const urlChunks = crumb.url.split('/');
1450
- for (const chunk of urlChunks) {
1451
- if (chunk.includes(':')) {
1452
- const paramID = chunk.replace(':', '');
1453
- const routerParamID = route.snapshot.params[paramID];
1454
- crumb.url = crumb.url.replace(`:${paramID}`, routerParamID);
1455
- }
1456
- }
1457
- }
1458
- const labelParams = crumb.label.match(/[^{{]+(?=}})/g);
1459
- if (labelParams) {
1460
- for (const labelParam of labelParams) {
1461
- const routerParamID = decodeURIComponent(route.snapshot.params[labelParam.trim()]);
1462
- if (routerParamID) {
1463
- crumb.label = crumb.label.replace('{{' + labelParam + '}}', routerParamID);
1464
- }
1465
- else {
1466
- // crumb.label = crumb.label.replace('{{' + labelParam + '}}', '');
1467
- }
1468
- }
1469
- }
1470
- });
1471
- this.breadcrumb = breadcrumb;
1472
- }
1473
- else {
1474
- this.breadcrumb = [];
1475
- }
1476
- }
1477
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmBreadcrumbComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i1$3.Router }, { token: BreadcrumbService }], target: i0.ɵɵFactoryTarget.Component });
1478
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MmBreadcrumbComponent, selector: "mm-breadcrumb", inputs: { fontSize: "fontSize", fontColor: "fontColor", lastLinkColor: "lastLinkColor", symbol: "symbol" }, ngImport: i0, template: "<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumb.length\">\n <mat-list-item>\n <span class=\"mat-bread-crumb-spacer\">\n <span *ngFor=\"let item of breadcrumb; let i = index\">\n <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"\n class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>\n <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>\n <span *ngIf=\"breadcrumb.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>\n </span>\n </span>\n </mat-list-item>\n</mat-list>\n", styles: [".mat-bread-crumb{height:30px}.mat-bread-crumb-list{padding-bottom:10px}\n"], dependencies: [{ kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$2.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i4$2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }] });
1479
- }
1480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MmBreadcrumbComponent, decorators: [{
1481
- type: Component,
1482
- args: [{ selector: 'mm-breadcrumb', template: "<mat-list class=\"mat-bread-crumb-list\" *ngIf=\"breadcrumb.length\">\n <mat-list-item>\n <span class=\"mat-bread-crumb-spacer\">\n <span *ngFor=\"let item of breadcrumb; let i = index\">\n <a *ngIf=\"item?.url\" [routerLink]=\"item?.url\"\n class=\"mat-bread-crumb-list-item\">{{ item.label }}</a>\n <span *ngIf=\"!item?.url\" class=\"mat-bread-crumb-list-item\">{{ item.label }}</span>\n <span *ngIf=\"breadcrumb.length !== i+1\" class=\"mat-bread-crumb-list-item\">{{symbol}}</span>\n </span>\n </span>\n </mat-list-item>\n</mat-list>\n", styles: [".mat-bread-crumb{height:30px}.mat-bread-crumb-list{padding-bottom:10px}\n"] }]
1483
- }], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$3.Router }, { type: BreadcrumbService }], propDecorators: { fontSize: [{
1484
- type: Input
1485
- }], fontColor: [{
1486
- type: Input
1487
- }], lastLinkColor: [{
1488
- type: Input
1489
- }], symbol: [{
1490
- type: Input
1491
- }] } });
1492
-
1493
- class BreadcrumbModule {
1494
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1495
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: BreadcrumbModule, declarations: [MmBreadcrumbComponent], imports: [RouterModule, CommonModule, BrowserAnimationsModule, MatToolbarModule, MatListModule], exports: [MmBreadcrumbComponent] });
1496
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BreadcrumbModule, imports: [RouterModule, CommonModule, BrowserAnimationsModule, MatToolbarModule, MatListModule] });
1497
- }
1498
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BreadcrumbModule, decorators: [{
1499
- type: NgModule,
1500
- args: [{
1501
- declarations: [MmBreadcrumbComponent],
1502
- imports: [RouterModule, CommonModule, BrowserAnimationsModule, MatToolbarModule, MatListModule],
1503
- exports: [MmBreadcrumbComponent]
1504
- }]
1505
- }] });
1506
-
1507
1437
  /*
1508
1438
  * Public API Surface of shared-ui
1509
1439
  */
@@ -1512,5 +1442,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
1512
1442
  * Generated bundle index. Do not edit.
1513
1443
  */
1514
1444
 
1515
- export { AbstractDetailsComponent, BreadcrumbModule, BreadcrumbService, ButtonTypes, CommonValidators, ConfirmationDialogModule, ConfirmationService, DialogType, MmAutocompleteInputComponent, MmBreadcrumbComponent, MmEntitySelectInputComponent, MmMultipleEntitySelectInputComponent, MmNotificationBarComponent, MmSharedUiModule, ProgressNotifierModule, ProgressNotifierService };
1445
+ export { AbstractDetailsComponent, ButtonTypes, CommonValidators, ConfirmationService, DialogType, MmAutocompleteInputComponent, MmBreadcrumbComponent, MmConfirmationWindowComponent, MmEntitySelectInputComponent, MmMultipleEntitySelectInputComponent, MmNotificationBarComponent, MmSharedUiModule, ProgressNotifierService };
1516
1446
  //# sourceMappingURL=meshmakers-shared-ui.mjs.map