@elderbyte/ngx-starter 16.0.0 → 16.0.2

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.
@@ -3,7 +3,7 @@ import { DatePipe, CommonModule, AsyncPipe, NgIf, DecimalPipe, registerLocaleDat
3
3
  import * as i0 from '@angular/core';
4
4
  import { Pipe, Injectable, LOCALE_ID, Inject, NgModule, Optional, SkipSelf, Directive, Output, Input, forwardRef, ViewChild, HostBinding, ViewChildren, ContentChild, Component, ChangeDetectionStrategy, Host, APP_INITIALIZER, TemplateRef, HostListener, EventEmitter, ViewEncapsulation, InjectionToken, ContentChildren, Self } from '@angular/core';
5
5
  import * as i1 from '@angular/platform-browser';
6
- import { Duration, Period, TemporalQueries, LocalTime, Instant, LocalDate, nativeJs, ZoneId, ZonedDateTime, Temporal } from '@js-joda/core';
6
+ import { Duration, Period, TemporalQueries, LocalTime, Instant, LocalDate, nativeJs, ZoneId, DateTimeFormatter, convert, ZonedDateTime, Temporal } from '@js-joda/core';
7
7
  import { LoggerFactory } from '@elderbyte/ts-logger';
8
8
  import { timer, defer, ReplaySubject, concat, finalize, exhaustMap, BehaviorSubject, Subject, EMPTY, combineLatest, merge, of, forkJoin, throwError, mergeWith, switchMap as switchMap$1, Observable, zip, mergeMap as mergeMap$1, fromEvent, NEVER } from 'rxjs';
9
9
  import { tap, takeUntil, takeWhile, map, filter, distinctUntilChanged, debounceTime, catchError, first, take, switchMap, mergeMap, expand, reduce, startWith, skip, delay, share, combineLatestWith, timeout, skipWhile } from 'rxjs/operators';
@@ -17,7 +17,7 @@ import * as i1$1 from '@angular/cdk/a11y';
17
17
  import { A11yModule } from '@angular/cdk/a11y';
18
18
  import * as i2 from '@ngx-translate/core';
19
19
  import { TranslateModule, TranslateService } from '@ngx-translate/core';
20
- import * as i5$1 from '@angular/material/form-field';
20
+ import * as i5 from '@angular/material/form-field';
21
21
  import { MatFormFieldControl, MatFormField, MatFormFieldModule } from '@angular/material/form-field';
22
22
  import * as i1$3 from '@angular/router';
23
23
  import { RouterModule, NavigationEnd, RouterLinkActive } from '@angular/router';
@@ -31,11 +31,11 @@ import * as i4$1 from '@angular/material/toolbar';
31
31
  import { MatToolbarModule } from '@angular/material/toolbar';
32
32
  import * as i17 from '@angular/material/card';
33
33
  import { MatCardModule } from '@angular/material/card';
34
- import * as i5 from '@angular/material/core';
35
- import { MatRippleModule, mixinColor, MatCommonModule, NativeDateAdapter, MatNativeDateModule, DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
36
- import * as i5$2 from '@angular/material/button';
34
+ import * as i4$2 from '@angular/material/core';
35
+ import { MatRippleModule, mixinColor, MatCommonModule, NativeDateAdapter, MAT_DATE_LOCALE, MatNativeDateModule, DateAdapter } from '@angular/material/core';
36
+ import * as i5$1 from '@angular/material/button';
37
37
  import { MatButtonModule } from '@angular/material/button';
38
- import * as i4$2 from '@angular/material/input';
38
+ import * as i4$3 from '@angular/material/input';
39
39
  import { MatInputModule } from '@angular/material/input';
40
40
  import * as i6 from '@angular/material/chips';
41
41
  import { MatChipsModule } from '@angular/material/chips';
@@ -43,13 +43,13 @@ import * as i1$5 from '@angular/material/autocomplete';
43
43
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
44
44
  import * as i2$2 from '@angular/material/list';
45
45
  import { MatListModule } from '@angular/material/list';
46
- import * as i5$3 from '@angular/material/progress-bar';
46
+ import * as i5$2 from '@angular/material/progress-bar';
47
47
  import { MatProgressBarModule } from '@angular/material/progress-bar';
48
48
  import * as i1$6 from '@angular/material/snack-bar';
49
49
  import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
50
- import * as i5$4 from '@angular/cdk/drag-drop';
50
+ import * as i5$3 from '@angular/cdk/drag-drop';
51
51
  import { transferArrayItem, moveItemInArray, DragDropModule, CdkDropList, CdkDrag } from '@angular/cdk/drag-drop';
52
- import * as i4$3 from '@angular/material/divider';
52
+ import * as i4$4 from '@angular/material/divider';
53
53
  import { MatDividerModule } from '@angular/material/divider';
54
54
  import * as i2$3 from '@angular/material/badge';
55
55
  import { MatBadgeModule } from '@angular/material/badge';
@@ -73,15 +73,15 @@ import * as i3$2 from '@angular/cdk/layout';
73
73
  import { Breakpoints } from '@angular/cdk/layout';
74
74
  import * as i9 from '@angular/cdk/scrolling';
75
75
  import { ScrollingModule } from '@angular/cdk/scrolling';
76
- import * as i4$4 from '@angular/material/select';
76
+ import * as i4$5 from '@angular/material/select';
77
77
  import { MatSelectModule } from '@angular/material/select';
78
78
  import { Subject as Subject$1 } from 'rxjs/internal/Subject';
79
- import * as i6$1 from '@angular/material/progress-spinner';
79
+ import * as i6$2 from '@angular/material/progress-spinner';
80
80
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
81
81
  import { trigger, state, style, transition, animate } from '@angular/animations';
82
82
  import * as i7 from '@angular/material/sidenav';
83
83
  import { MatSidenavModule } from '@angular/material/sidenav';
84
- import * as i5$5 from '@angular/material/datepicker';
84
+ import * as i6$1 from '@angular/material/datepicker';
85
85
  import { MatDatepicker, MatDatepickerModule } from '@angular/material/datepicker';
86
86
  import localeDECH from '@angular/common/locales/de-CH';
87
87
  import { BehaviorSubject as BehaviorSubject$1 } from 'rxjs/internal/BehaviorSubject';
@@ -547,11 +547,14 @@ class PeriodDuration {
547
547
  if (!period) {
548
548
  throw new Error('Parameter period must not be null!');
549
549
  }
550
- if (!period) {
550
+ if (!duration) {
551
551
  throw new Error('Parameter duration must not be null!');
552
552
  }
553
553
  return new PeriodDuration(period, duration);
554
554
  }
555
+ static zero() {
556
+ return this.of(Period.ZERO, Duration.ZERO);
557
+ }
555
558
  }
556
559
 
557
560
  /**
@@ -1366,6 +1369,7 @@ class Interval {
1366
1369
  constructor(start, end) {
1367
1370
  this.start = start;
1368
1371
  this.end = end;
1372
+ this.log = LoggerFactory.getLogger(this.constructor.name);
1369
1373
  }
1370
1374
  /***************************************************************************
1371
1375
  * *
@@ -1472,16 +1476,34 @@ class Interval {
1472
1476
  * *
1473
1477
  **************************************************************************/
1474
1478
  toDuration() {
1475
- return Duration.between(this.start, this.end);
1479
+ if (!this.start || !this.end)
1480
+ return Duration.ZERO;
1481
+ try {
1482
+ return Duration.between(this.start, this.end);
1483
+ }
1484
+ catch (e) {
1485
+ this.log.error('Could not convert to Duration! Error: ', e);
1486
+ return Duration.ZERO;
1487
+ }
1476
1488
  }
1477
1489
  toPeriodDuration(zone) {
1490
+ if (!this.start || !this.end)
1491
+ return PeriodDuration.zero();
1478
1492
  return PeriodDuration.between(this.start?.atZone(zone), this.end?.atZone(zone));
1479
1493
  }
1480
1494
  toString() {
1481
1495
  return this.toDurationString();
1482
1496
  }
1483
1497
  toInstantString() {
1484
- return this.start?.toString() + '/' + this.end?.toString();
1498
+ let instantString = "";
1499
+ if (this.start) {
1500
+ instantString = instantString + this.start.toString();
1501
+ }
1502
+ instantString = instantString + "/";
1503
+ if (this.end) {
1504
+ instantString = instantString + this.end.toString();
1505
+ }
1506
+ return instantString;
1485
1507
  }
1486
1508
  toDurationString() {
1487
1509
  return this.start?.toString() + '/' + this.toDuration().toString();
@@ -9253,7 +9275,7 @@ class ElderExpandToggleButtonComponent {
9253
9275
  this.expanded = !this.expanded;
9254
9276
  }
9255
9277
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderExpandToggleButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9256
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderExpandToggleButtonComponent, selector: "elder-expand-toggle-button", inputs: { expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: "\n<a matRipple class=\"layout-row place-start-center full toggle-button\"\n (click)=\"onToggleExpand($event)\">\n <div class=\"layout-row place-start-center flex\">\n\n <ng-content></ng-content>\n\n <span class=\"flex\"></span>\n\n <div class=\"layout-col place-center-center\">\n <mat-icon>{{(expandedChange | async) ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n\n </div>\n</a>\n", dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9278
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderExpandToggleButtonComponent, selector: "elder-expand-toggle-button", inputs: { expanded: "expanded" }, outputs: { expandedChange: "expandedChange" }, ngImport: i0, template: "\n<a matRipple class=\"layout-row place-start-center full toggle-button\"\n (click)=\"onToggleExpand($event)\">\n <div class=\"layout-row place-start-center flex\">\n\n <ng-content></ng-content>\n\n <span class=\"flex\"></span>\n\n <div class=\"layout-col place-center-center\">\n <mat-icon>{{(expandedChange | async) ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n\n </div>\n</a>\n", dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9257
9279
  }
9258
9280
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderExpandToggleButtonComponent, decorators: [{
9259
9281
  type: Component,
@@ -9462,7 +9484,7 @@ class ElderLabelInputComponent extends FormFieldBaseComponent {
9462
9484
  return this._compareWith ? this._compareWith(a, b) : a === b;
9463
9485
  }
9464
9486
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLabelInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9465
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLabelInputComponent, selector: "elder-label-input", inputs: { labels: "labels", suggestionLoader: "suggestionLoader", allowNew: "allowNew", compareWith: "compareWith", colorResolver: "colorResolver", nameResolver: "nameResolver", labelBuilder: "labelBuilder" }, outputs: { labelsChanged: "labelsChanged" }, providers: buildFormIntegrationProviders(ElderLabelInputComponent), viewQueries: [{ propertyName: "inputControl", first: true, predicate: ["labelInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"full-width\"\n [appearance]=\"appearance\"\n [color]=\"color\"\n>\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n\n <mat-chip-grid #chips>\n <mat-chip-row *ngFor=\"let label of currentLabels$ | async\"\n class=\"noselect\"\n [color]=\"labelColor(label)\" [disabled]=\"disabled\"\n [removable]=\"removable\"\n (removed)=\"removeLabel(label)\"\n >\n {{labelName(label)}}\n <mat-icon matChipRemove *ngIf=\"!readonly && removable\">cancel</mat-icon>\n </mat-chip-row>\n\n <input matInput type=\"text\"\n [matChipInputFor]=\"chips\"\n [matAutocomplete]=\"labelAutoComplete\"\n [formControl]=\"labelInputControl\"\n (matChipInputTokenEnd)=\"createNewLabels($event)\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [placeholder]=\"placeholder\"\n autocomplete=\"off\"\n #labelInput>\n </mat-chip-grid>\n\n <mat-autocomplete\n #labelAutoComplete=\"matAutocomplete\"\n panelWidth=\"auto\"\n (optionSelected)=\"labelSelected($event)\">\n <mat-option *ngFor=\"let suggestion of availableSuggestions$ | async\" [value]=\"suggestion\">\n {{labelName(suggestion)}}\n </mat-option>\n </mat-autocomplete>\n\n</mat-form-field>\n\n", styles: [".full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9487
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLabelInputComponent, selector: "elder-label-input", inputs: { labels: "labels", suggestionLoader: "suggestionLoader", allowNew: "allowNew", compareWith: "compareWith", colorResolver: "colorResolver", nameResolver: "nameResolver", labelBuilder: "labelBuilder" }, outputs: { labelsChanged: "labelsChanged" }, providers: buildFormIntegrationProviders(ElderLabelInputComponent), viewQueries: [{ propertyName: "inputControl", first: true, predicate: ["labelInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"full-width\"\n [appearance]=\"appearance\"\n [color]=\"color\"\n>\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n\n <mat-chip-grid #chips>\n <mat-chip-row *ngFor=\"let label of currentLabels$ | async\"\n class=\"noselect\"\n [color]=\"labelColor(label)\" [disabled]=\"disabled\"\n [removable]=\"removable\"\n (removed)=\"removeLabel(label)\"\n >\n {{labelName(label)}}\n <mat-icon matChipRemove *ngIf=\"!readonly && removable\">cancel</mat-icon>\n </mat-chip-row>\n\n <input matInput type=\"text\"\n [matChipInputFor]=\"chips\"\n [matAutocomplete]=\"labelAutoComplete\"\n [formControl]=\"labelInputControl\"\n (matChipInputTokenEnd)=\"createNewLabels($event)\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [placeholder]=\"placeholder\"\n autocomplete=\"off\"\n #labelInput>\n </mat-chip-grid>\n\n <mat-autocomplete\n #labelAutoComplete=\"matAutocomplete\"\n panelWidth=\"auto\"\n (optionSelected)=\"labelSelected($event)\">\n <mat-option *ngFor=\"let suggestion of availableSuggestions$ | async\" [value]=\"suggestion\">\n {{labelName(suggestion)}}\n </mat-option>\n </mat-autocomplete>\n\n</mat-form-field>\n\n", styles: [".full-width{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatChipGrid, selector: "mat-chip-grid", inputs: ["tabIndex", "disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9466
9488
  }
9467
9489
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLabelInputComponent, decorators: [{
9468
9490
  type: Component,
@@ -10001,7 +10023,7 @@ class ElderFileSelectComponent {
10001
10023
  this.filesChange.next(files);
10002
10024
  }
10003
10025
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFileSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10004
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderFileSelectComponent, selector: "elder-file-select", inputs: { multiple: "multiple", accept: "accept", icon: "icon", color: "color" }, outputs: { filesChange: "filesChange" }, ngImport: i0, template: "\n\n<button mat-icon-button type=\"button\"\n [elderFileSelect]=\"accept\"\n [elderFileSelectMultiple]=\"multiple\"\n (elderFileSelectChange)=\"fileInputChanged($event)\"\n>\n <mat-icon [color]=\"color\">{{icon}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderFileSelectDirective, selector: "[elderFileSelect]", inputs: ["elderFileSelect", "elderFileSelectMultiple", "elderFileSelectDirectory"], outputs: ["elderFileSelectChange", "elderSingleFileSelectChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10026
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderFileSelectComponent, selector: "elder-file-select", inputs: { multiple: "multiple", accept: "accept", icon: "icon", color: "color" }, outputs: { filesChange: "filesChange" }, ngImport: i0, template: "\n\n<button mat-icon-button type=\"button\"\n [elderFileSelect]=\"accept\"\n [elderFileSelectMultiple]=\"multiple\"\n (elderFileSelectChange)=\"fileInputChanged($event)\"\n>\n <mat-icon [color]=\"color\">{{icon}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderFileSelectDirective, selector: "[elderFileSelect]", inputs: ["elderFileSelect", "elderFileSelectMultiple", "elderFileSelectDirectory"], outputs: ["elderFileSelectChange", "elderSingleFileSelectChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10005
10027
  }
10006
10028
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFileSelectComponent, decorators: [{
10007
10029
  type: Component,
@@ -10058,7 +10080,7 @@ class ElderFileUploadComponent {
10058
10080
  return forkJoin(Array.from(this.uploadProgress.values()));
10059
10081
  }
10060
10082
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10061
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderFileUploadComponent, selector: "elder-file-upload", inputs: { files: "files", multiple: "multiple", accept: "accept", uploadClient: "uploadClient" }, ngImport: i0, template: "\n\n<div class=\"layout-col\">\n\n <div class=\"layout-row gap-md\">\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n *ngIf=\"uploadClient\" (click)=\"startUpload($event)\" [disabled]=\"files.length === 0\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n\n <elder-file-select\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n (filesChange)=\"files = $event\"\n ></elder-file-select>\n\n </div>\n\n <mat-list>\n <h2 mat-subheader>Selected Files ({{files.length}})</h2>\n <mat-list-item *ngFor=\"let fileEntry of files\">\n <mat-icon mat-list-icon>attach_file</mat-icon>\n <h4 mat-line>{{fileEntry.relativePath}}</h4>\n <p mat-line> {{fileEntry.file.size | bytes}} - {{fileEntry.file.lastModified | timeAgo}}</p>\n\n <mat-progress-bar *ngIf=\"(transferOf(fileEntry.file)?.state$ | async) as state\"\n [color]=\"(state.hasFailed ? 'warn' : undefined)\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\">\n </mat-progress-bar>\n\n </mat-list-item>\n </mat-list>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i2$2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$2.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: ElderFileSelectComponent, selector: "elder-file-select", inputs: ["multiple", "accept", "icon", "color"], outputs: ["filesChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: BytesPipe, name: "bytes" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }] }); }
10083
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderFileUploadComponent, selector: "elder-file-upload", inputs: { files: "files", multiple: "multiple", accept: "accept", uploadClient: "uploadClient" }, ngImport: i0, template: "\n\n<div class=\"layout-col\">\n\n <div class=\"layout-row gap-md\">\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n *ngIf=\"uploadClient\" (click)=\"startUpload($event)\" [disabled]=\"files.length === 0\">\n <mat-icon>cloud_upload</mat-icon>\n </button>\n\n <elder-file-select\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n (filesChange)=\"files = $event\"\n ></elder-file-select>\n\n </div>\n\n <mat-list>\n <h2 mat-subheader>Selected Files ({{files.length}})</h2>\n <mat-list-item *ngFor=\"let fileEntry of files\">\n <mat-icon mat-list-icon>attach_file</mat-icon>\n <h4 mat-line>{{fileEntry.relativePath}}</h4>\n <p mat-line> {{fileEntry.file.size | bytes}} - {{fileEntry.file.lastModified | timeAgo}}</p>\n\n <mat-progress-bar *ngIf=\"(transferOf(fileEntry.file)?.state$ | async) as state\"\n [color]=\"(state.hasFailed ? 'warn' : undefined)\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\">\n </mat-progress-bar>\n\n </mat-list-item>\n </mat-list>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i2$2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2$2.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: ElderFileSelectComponent, selector: "elder-file-select", inputs: ["multiple", "accept", "icon", "color"], outputs: ["filesChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: BytesPipe, name: "bytes" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }] }); }
10062
10084
  }
10063
10085
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFileUploadComponent, decorators: [{
10064
10086
  type: Component,
@@ -10386,7 +10408,7 @@ class StandardToastComponent {
10386
10408
  }
10387
10409
  }
10388
10410
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: StandardToastComponent, deps: [{ token: i1$6.MatSnackBarRef }, { token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
10389
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: StandardToastComponent, selector: "elder-standard-toast", ngImport: i0, template: "<div class=\"layout-col gap-xs mat-mdc-snack-bar-container\">\n\n <!-- Icon and Status -->\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon class=\"noselect\">{{icon(toast.type)}}</mat-icon>\n <span\n class=\"toast-title mat-subtitle-2 noselect\"\n [class.elder-warn-text]=\"toast.type === ToastType.Error\"\n >{{toast.status}}</span>\n </div>\n\n <span></span>\n\n <!-- Toast Message -->\n <span class=\"mat-body noselect\" matSnackBarLabel *ngIf=\"toast.message\"\n [class.elder-warn-text]=\"toast.type === ToastType.Error\"\n [class.elder-accent-text]=\"toast.type === ToastType.Warning\"\n >{{toast.message}}</span>\n\n <span></span>\n\n <!-- Toast Detail -->\n <span class=\"mat-small noselect\" matSnackBarLabel *ngIf=\"toast.detail\"\n [class.elder-warn-text]=\"toast.type === ToastType.Error\"\n [class.elder-accent-text]=\"toast.type === ToastType.Warning\"\n >{{trimDetailText(toast.detail, 200)}}</span>\n\n <!-- Actions -->\n <div class=\"layout-row place-end-center\" matSnackBarActions>\n <button mat-button matSnackBarAction type=\"button\" [color]=\"iconColor(toast.type)\" (click)=\"close()\">Ok</button>\n </div>\n\n</div>\n", styles: [".toast-title{font-size:16px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$6.MatSnackBarLabel, selector: "[matSnackBarLabel]" }, { kind: "directive", type: i1$6.MatSnackBarActions, selector: "[matSnackBarActions]" }, { kind: "directive", type: i1$6.MatSnackBarAction, selector: "[matSnackBarAction]" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: StandardToastComponent, selector: "elder-standard-toast", ngImport: i0, template: "<div class=\"layout-col gap-xs mat-mdc-snack-bar-container\">\n\n <!-- Icon and Status -->\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon class=\"noselect\">{{icon(toast.type)}}</mat-icon>\n <span\n class=\"toast-title mat-subtitle-2 noselect\"\n [class.elder-warn-text]=\"toast.type === ToastType.Error\"\n >{{toast.status}}</span>\n </div>\n\n <span></span>\n\n <!-- Toast Message -->\n <span class=\"mat-body noselect\" matSnackBarLabel *ngIf=\"toast.message\"\n [class.elder-warn-text]=\"toast.type === ToastType.Error\"\n [class.elder-accent-text]=\"toast.type === ToastType.Warning\"\n >{{toast.message}}</span>\n\n <span></span>\n\n <!-- Toast Detail -->\n <span class=\"mat-small noselect\" matSnackBarLabel *ngIf=\"toast.detail\"\n [class.elder-warn-text]=\"toast.type === ToastType.Error\"\n [class.elder-accent-text]=\"toast.type === ToastType.Warning\"\n >{{trimDetailText(toast.detail, 200)}}</span>\n\n <!-- Actions -->\n <div class=\"layout-row place-end-center\" matSnackBarActions>\n <button mat-button matSnackBarAction type=\"button\" [color]=\"iconColor(toast.type)\" (click)=\"close()\">Ok</button>\n </div>\n\n</div>\n", styles: [".toast-title{font-size:16px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$6.MatSnackBarLabel, selector: "[matSnackBarLabel]" }, { kind: "directive", type: i1$6.MatSnackBarActions, selector: "[matSnackBarActions]" }, { kind: "directive", type: i1$6.MatSnackBarAction, selector: "[matSnackBarAction]" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10390
10412
  }
10391
10413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: StandardToastComponent, decorators: [{
10392
10414
  type: Component,
@@ -11506,7 +11528,7 @@ class ElderCardStackComponent {
11506
11528
  }
11507
11529
  }
11508
11530
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderCardStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11509
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderCardStackComponent, selector: "elder-card-stack", inputs: { stackId: "stackId", headerEnabled: "headerEnabled", headerTitle: "headerTitle", canRemove: "canRemove", canAdd: "canAdd", canDrag: "canDrag", removeConfirmation: "removeConfirmation", canEnterPredicate: "canEnterPredicate", connectedTo: "connectedTo", autoMoveCards: "autoMoveCards", canCollapse: "canCollapse", copyOnDrag: "copyOnDrag", cardTemplate: "cardTemplate", stack: "stack" }, outputs: { requestNewCard: "requestNewCard", requestRemoveCard: "requestRemoveCard", cardClick: "cardClick", cardDropped: "cardDropped" }, queries: [{ propertyName: "cardTemplateQuery", first: true, predicate: ElderStackCardDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"layout-col full card-stack hoverme\">\n\n <!-- Header -->\n <header *ngIf=\"headerEnabled\"\n class=\"layout-row place-start-center flex-none gap-md stack-header p-md\">\n\n <h3 class=\"mat-subtitle-2 noselect\">{{headerTitle | translate}}</h3>\n <small class=\"mat-caption noselect\">({{(cards$ | async)?.length}})</small>\n\n <span class=\"flex\"></span>\n\n <button *ngIf=\"canAdd\" mat-icon-button type=\"button\" (click)=\"onRequestNewCard($event)\">\n <mat-icon>add</mat-icon>\n </button>\n\n </header>\n <mat-divider *ngIf=\"headerEnabled\"></mat-divider>\n\n\n <!-- card list -->\n <div class=\"layout-col flex card-container\">\n\n <div class=\"layout-col gap-sm scrollable p-sm card-list\"\n [id]=\"stackId\"\n cdkDropList\n [cdkDropListDisabled]=\"!canDrag\"\n [cdkDropListData]=\"stack\"\n [cdkDropListConnectedTo]=\"connectedTo\"\n\n [cdkDropListEnterPredicate]=\"enterPredicate\"\n (cdkDropListEntered)=\"cardEntered($event)\"\n (cdkDropListExited)=\"cardExited($event)\"\n (cdkDropListDropped)=\"cardDrop($event)\"\n >\n\n <!-- card -->\n <elder-card\n *ngFor=\"let card of cards$ | async; let i = index\"\n class=\"card flex-none\"\n [ngClass]=\"cardClick.observed ? 'clickable' : 'unclickable'\"\n cdkDrag [cdkDragData]=\"card\"\n (click)=\"onCardSelected($event, card)\">\n\n <div class=\"layout-row place-between-center flex\">\n <ng-container\n *ngTemplateOutlet=\"cardTemplate || simpleCardTemplate; context: {$implicit: card, index: i}\"></ng-container>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"canRemove\" class=\"hide\" (click)=\"onRequestRemoveCard($event, card)\">\n <mat-icon>close</mat-icon>\n </button>\n\n </div>\n\n </elder-card>\n\n </div>\n\n </div>\n\n\n <ng-template #simpleCardTemplate let-card>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">{{card}}</p>\n </div>\n </ng-template>\n\n</div>\n\n\n\n\n", styles: [".stack-header{height:62px}.card-container{min-width:120px;min-height:0}.card-list{min-height:100%}.card{cursor:move}.card.cdk-drag-disabled.clickable{cursor:pointer}.card.cdk-drag-disabled.unclickable{cursor:default}.hoverme .hide{visibility:hidden}.hoverme:hover .hide{visibility:visible}.rotate{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.scrollable{overflow-y:auto;-webkit-overflow-scrolling:touch}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.card-list.cdk-drop-list-dragging .card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5$4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: ElderCardComponent, selector: "elder-card", inputs: ["appearance", "float", "flat"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11531
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderCardStackComponent, selector: "elder-card-stack", inputs: { stackId: "stackId", headerEnabled: "headerEnabled", headerTitle: "headerTitle", canRemove: "canRemove", canAdd: "canAdd", canDrag: "canDrag", removeConfirmation: "removeConfirmation", canEnterPredicate: "canEnterPredicate", connectedTo: "connectedTo", autoMoveCards: "autoMoveCards", canCollapse: "canCollapse", copyOnDrag: "copyOnDrag", cardTemplate: "cardTemplate", stack: "stack" }, outputs: { requestNewCard: "requestNewCard", requestRemoveCard: "requestRemoveCard", cardClick: "cardClick", cardDropped: "cardDropped" }, queries: [{ propertyName: "cardTemplateQuery", first: true, predicate: ElderStackCardDirective, descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<div class=\"layout-col full card-stack hoverme\">\n\n <!-- Header -->\n <header *ngIf=\"headerEnabled\"\n class=\"layout-row place-start-center flex-none gap-md stack-header p-md\">\n\n <h3 class=\"mat-subtitle-2 noselect\">{{headerTitle | translate}}</h3>\n <small class=\"mat-caption noselect\">({{(cards$ | async)?.length}})</small>\n\n <span class=\"flex\"></span>\n\n <button *ngIf=\"canAdd\" mat-icon-button type=\"button\" (click)=\"onRequestNewCard($event)\">\n <mat-icon>add</mat-icon>\n </button>\n\n </header>\n <mat-divider *ngIf=\"headerEnabled\"></mat-divider>\n\n\n <!-- card list -->\n <div class=\"layout-col flex card-container\">\n\n <div class=\"layout-col gap-sm scrollable p-sm card-list\"\n [id]=\"stackId\"\n cdkDropList\n [cdkDropListDisabled]=\"!canDrag\"\n [cdkDropListData]=\"stack\"\n [cdkDropListConnectedTo]=\"connectedTo\"\n\n [cdkDropListEnterPredicate]=\"enterPredicate\"\n (cdkDropListEntered)=\"cardEntered($event)\"\n (cdkDropListExited)=\"cardExited($event)\"\n (cdkDropListDropped)=\"cardDrop($event)\"\n >\n\n <!-- card -->\n <elder-card\n *ngFor=\"let card of cards$ | async; let i = index\"\n class=\"card flex-none\"\n [ngClass]=\"cardClick.observed ? 'clickable' : 'unclickable'\"\n cdkDrag [cdkDragData]=\"card\"\n (click)=\"onCardSelected($event, card)\">\n\n <div class=\"layout-row place-between-center flex\">\n <ng-container\n *ngTemplateOutlet=\"cardTemplate || simpleCardTemplate; context: {$implicit: card, index: i}\"></ng-container>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"canRemove\" class=\"hide\" (click)=\"onRequestRemoveCard($event, card)\">\n <mat-icon>close</mat-icon>\n </button>\n\n </div>\n\n </elder-card>\n\n </div>\n\n </div>\n\n\n <ng-template #simpleCardTemplate let-card>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">{{card}}</p>\n </div>\n </ng-template>\n\n</div>\n\n\n\n\n", styles: [".stack-header{height:62px}.card-container{min-width:120px;min-height:0}.card-list{min-height:100%}.card{cursor:move}.card.cdk-drag-disabled.clickable{cursor:pointer}.card.cdk-drag-disabled.unclickable{cursor:default}.hoverme .hide{visibility:hidden}.hoverme:hover .hide{visibility:visible}.rotate{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.scrollable{overflow-y:auto;-webkit-overflow-scrolling:touch}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.card-list.cdk-drop-list-dragging .card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i5$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: ElderCardComponent, selector: "elder-card", inputs: ["appearance", "float", "flat"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11510
11532
  }
11511
11533
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderCardStackComponent, decorators: [{
11512
11534
  type: Component,
@@ -12285,7 +12307,7 @@ class ElderConfirmDialogComponent {
12285
12307
  this.yesNo = false;
12286
12308
  }
12287
12309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderConfirmDialogComponent, deps: [{ token: i1$7.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
12288
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderConfirmDialogComponent, selector: "elder-confirm-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md\">\n <div class=\"flex\">\n <p translate>{{ message }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button\n (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? \"actions.no\" : \"actions.cancel\") | translate}}\n </button>\n\n <button type=\"submit\" mat-raised-button cdkFocusInitial\n (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? \"actions.yes\" : \"actions.ok\") | translate}}\n </button>\n </div>\n </div>\n</div>\n\n\n\n\n\n\n\n\n", styles: [""], dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4$1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "directive", type: i1$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
12310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderConfirmDialogComponent, selector: "elder-confirm-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md\">\n <div class=\"flex\">\n <p translate>{{ message }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button\n (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? \"actions.no\" : \"actions.cancel\") | translate}}\n </button>\n\n <button type=\"submit\" mat-raised-button cdkFocusInitial\n (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? \"actions.yes\" : \"actions.ok\") | translate}}\n </button>\n </div>\n </div>\n</div>\n\n\n\n\n\n\n\n\n", styles: [""], dependencies: [{ kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4$1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "directive", type: i1$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
12289
12311
  }
12290
12312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderConfirmDialogComponent, decorators: [{
12291
12313
  type: Component,
@@ -12311,7 +12333,7 @@ class ElderQuestionDialogComponent {
12311
12333
  return !!this.answer;
12312
12334
  }
12313
12335
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderQuestionDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
12314
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderQuestionDialogComponent, selector: "elder-question-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ data.title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <form #f=\"ngForm\" class=\"layout-col flex p-md\" (ngSubmit)=\"confirm($event)\" cdkTrapFocus>\n\n <div class=\"layout-col flex\">\n <p>{{data.question}}</p>\n\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" name=\"name\" [(ngModel)]=\"answer\" cdkFocusInitial\n placeholder=\"{{'context.name' | translate}}\" required>\n </mat-form-field>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\">\n\n <button mat-button type=\"button\"\n (click)=\"cancel($event)\">\n {{'actions.cancel' | translate}}\n </button>\n\n <button mat-button type=\"submit\" color=\"primary\"\n [disabled]=\"!isValid\">\n {{'actions.ok' | translate}}\n </button>\n </div>\n </form>\n</div>\n\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4$1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
12336
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderQuestionDialogComponent, selector: "elder-question-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <mat-toolbar-row class=\"gap-sm\">\n <button mat-icon-button [matDialogClose]=\"false\"><mat-icon>close</mat-icon></button>\n <h3>{{ data.title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <form #f=\"ngForm\" class=\"layout-col flex p-md\" (ngSubmit)=\"confirm($event)\" cdkTrapFocus>\n\n <div class=\"layout-col flex\">\n <p>{{data.question}}</p>\n\n <mat-form-field class=\"full-width\">\n <input matInput type=\"text\" name=\"name\" [(ngModel)]=\"answer\" cdkFocusInitial\n placeholder=\"{{'context.name' | translate}}\" required>\n </mat-form-field>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\">\n\n <button mat-button type=\"button\"\n (click)=\"cancel($event)\">\n {{'actions.cancel' | translate}}\n </button>\n\n <button mat-button type=\"submit\" color=\"primary\"\n [disabled]=\"!isValid\">\n {{'actions.ok' | translate}}\n </button>\n </div>\n </form>\n</div>\n\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4$1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
12315
12337
  }
12316
12338
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderQuestionDialogComponent, decorators: [{
12317
12339
  type: Component,
@@ -12345,7 +12367,7 @@ class ElderSelectionDialogComponent {
12345
12367
  // this.dialogRef.updateSize('20vw', '20vh');
12346
12368
  }
12347
12369
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderSelectionDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
12348
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderSelectionDialogComponent, selector: "elder-selection-dialog", inputs: { title: "title" }, ngImport: i0, template: "\n\n<div class=\"layout-col full\">\n\n <div class=\"layout-col flex-none\">\n <h2 *ngIf=\"title\">{{title | translate}}</h2>\n </div>\n\n <div class=\"layout-col flex\">\n <ng-template [ngTemplateOutlet]=\"data.template\"></ng-template>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{'actions.cancel' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\">\n {{'actions.select' | translate}}\n </button>\n </div>\n\n\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
12370
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderSelectionDialogComponent, selector: "elder-selection-dialog", inputs: { title: "title" }, ngImport: i0, template: "\n\n<div class=\"layout-col full\">\n\n <div class=\"layout-col flex-none\">\n <h2 *ngIf=\"title\">{{title | translate}}</h2>\n </div>\n\n <div class=\"layout-col flex\">\n <ng-template [ngTemplateOutlet]=\"data.template\"></ng-template>\n </div>\n\n <div class=\"layout-row place-end-center\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{'actions.cancel' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\">\n {{'actions.select' | translate}}\n </button>\n </div>\n\n\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
12349
12371
  }
12350
12372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderSelectionDialogComponent, decorators: [{
12351
12373
  type: Component,
@@ -12788,7 +12810,7 @@ class ElderDataToolbarComponent {
12788
12810
  }
12789
12811
  }
12790
12812
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDataToolbarComponent, deps: [{ token: SelectionModel, optional: true }, { token: ELDER_DATA_VIEW, optional: true }, { token: ElderDialogService }], target: i0.ɵɵFactoryTarget.Component }); }
12791
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDataToolbarComponent, selector: "elder-data-toolbar", inputs: { canAdd: "canAdd", canRemove: "canRemove", canMore: "canMore", confirmRemoval: "confirmRemoval", keepSelectionAfterRemoval: "keepSelectionAfterRemoval", selectionModel: "selectionModel" }, outputs: { requestNew: "requestNew", requestRemove: "requestRemove" }, queries: [{ propertyName: "templates", predicate: ElderToolbarContentDirective }], ngImport: i0, template: "<!-- Table Toolbar -->\n<div\n class=\"layout-row place-between-center gap-md\"\n style=\"padding: 0 8px 0 8px\"\n *ngIf=\"selection$ | async as selection\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('main') || defaultContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n</div>\n\n<!-- Default Templates -->\n\n<!-- Default Main Content -->\n<ng-template #defaultContent let-selection>\n <!-- Left column -->\n <div class=\"layout-row place-start-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left') || defaultLeftContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('center') || defaultCenterContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <!-- Right column -->\n <div class=\"layout-row place-end-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right') || defaultRightContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n</ng-template>\n\n<!-- Default Left Content -->\n<ng-template #defaultLeftContent let-selection>\n <!-- Add Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canAdd\"\n (click)=\"requestNew.next($event)\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n</ng-template>\n\n<!-- Default Center Content -->\n<ng-template #defaultCenterContent let-selection></ng-template>\n\n<!-- Default Right Content -->\n<ng-template #defaultRightContent let-selection>\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n\n <!-- Delete Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canRemove\"\n [disabled]=\"!selection?.length\"\n (click)=\"requestRemoveItems(selection, $event)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- More Menu -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n [matMenuTriggerFor]=\"elderTableMenu\"\n [disabled]=\"!canMore\"\n >\n <mat-icon>more_vert</mat-icon>\n <mat-menu #elderTableMenu=\"matMenu\">\n <ng-content select=\"[mat-menu-item]\"></ng-content>\n <!-- Placeholder for mat menu items-->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.menu');\n context: { $implicit: selection }\n \"\n ></ng-container>\n </mat-menu>\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12813
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDataToolbarComponent, selector: "elder-data-toolbar", inputs: { canAdd: "canAdd", canRemove: "canRemove", canMore: "canMore", confirmRemoval: "confirmRemoval", keepSelectionAfterRemoval: "keepSelectionAfterRemoval", selectionModel: "selectionModel" }, outputs: { requestNew: "requestNew", requestRemove: "requestRemove" }, queries: [{ propertyName: "templates", predicate: ElderToolbarContentDirective }], ngImport: i0, template: "<!-- Table Toolbar -->\n<div\n class=\"layout-row place-between-center gap-md\"\n style=\"padding: 0 8px 0 8px\"\n *ngIf=\"selection$ | async as selection\"\n>\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('main') || defaultContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n</div>\n\n<!-- Default Templates -->\n\n<!-- Default Main Content -->\n<ng-template #defaultContent let-selection>\n <!-- Left column -->\n <div class=\"layout-row place-start-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left') || defaultLeftContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <div class=\"layout-row place-center-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('center') || defaultCenterContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n\n <!-- Right column -->\n <div class=\"layout-row place-end-center\">\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right') || defaultRightContent;\n context: { $implicit: selection }\n \"\n ></ng-container>\n </div>\n</ng-template>\n\n<!-- Default Left Content -->\n<ng-template #defaultLeftContent let-selection>\n <!-- Add Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canAdd\"\n (click)=\"requestNew.next($event)\"\n >\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('left.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n</ng-template>\n\n<!-- Default Center Content -->\n<ng-template #defaultCenterContent let-selection></ng-template>\n\n<!-- Default Right Content -->\n<ng-template #defaultRightContent let-selection>\n <!-- Placeholder for additional actions -->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.actions');\n context: { $implicit: selection }\n \"\n ></ng-container>\n\n <!-- Delete Action -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n *ngIf=\"canRemove\"\n [disabled]=\"!selection?.length\"\n (click)=\"requestRemoveItems(selection, $event)\"\n >\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- More Menu -->\n <button\n mat-icon-button type=\"button\"\n color=\"primary\"\n [matMenuTriggerFor]=\"elderTableMenu\"\n [disabled]=\"!canMore\"\n >\n <mat-icon>more_vert</mat-icon>\n <mat-menu #elderTableMenu=\"matMenu\">\n <ng-content select=\"[mat-menu-item]\"></ng-content>\n <!-- Placeholder for mat menu items-->\n <ng-container\n *ngTemplateOutlet=\"\n getTemplate('right.menu');\n context: { $implicit: selection }\n \"\n ></ng-container>\n </mat-menu>\n </button>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12792
12814
  }
12793
12815
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDataToolbarComponent, decorators: [{
12794
12816
  type: Component,
@@ -12885,7 +12907,7 @@ class ElderSingleSortComponent {
12885
12907
  this.sortChange.emit(sort);
12886
12908
  }
12887
12909
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderSingleSortComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12888
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderSingleSortComponent, selector: "elder-single-sort", inputs: { availableSorts: "availableSorts", translationPrefix: "translationPrefix", sort: "sort" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div *ngIf=\"(sort$ | async) as sort\" class=\"layout-row place-start-center flex-none\">\n\n <button mat-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n {{ translationPrefix + sort.prop | translate}}\n\n <mat-icon style=\"font-size: 22px\">sort</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let mysort of availableSorts\"\n (click)=\"setSortProp(mysort)\"\n >\n <mat-icon>sort</mat-icon>\n <span [class.mat-body-strong]=\"sort.prop == mysort\">{{translationPrefix + mysort | translate}}</span>\n </button>\n </mat-menu>\n\n </button>\n\n <button mat-icon-button type=\"button\" (click)=\"toggleSortDirection($event)\">\n <mat-icon style=\"font-size: 22px\">{{sort.dir === 'asc' ? 'arrow_downward' : 'arrow_upward'}}</mat-icon>\n </button>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12910
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderSingleSortComponent, selector: "elder-single-sort", inputs: { availableSorts: "availableSorts", translationPrefix: "translationPrefix", sort: "sort" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div *ngIf=\"(sort$ | async) as sort\" class=\"layout-row place-start-center flex-none\">\n\n <button mat-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n {{ translationPrefix + sort.prop | translate}}\n\n <mat-icon style=\"font-size: 22px\">sort</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let mysort of availableSorts\"\n (click)=\"setSortProp(mysort)\"\n >\n <mat-icon>sort</mat-icon>\n <span [class.mat-body-strong]=\"sort.prop == mysort\">{{translationPrefix + mysort | translate}}</span>\n </button>\n </mat-menu>\n\n </button>\n\n <button mat-icon-button type=\"button\" (click)=\"toggleSortDirection($event)\">\n <mat-icon style=\"font-size: 22px\">{{sort.dir === 'asc' ? 'arrow_downward' : 'arrow_upward'}}</mat-icon>\n </button>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12889
12911
  }
12890
12912
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderSingleSortComponent, decorators: [{
12891
12913
  type: Component,
@@ -13189,11 +13211,11 @@ class ElderBadgeComponent {
13189
13211
  this.elementClass = [];
13190
13212
  }
13191
13213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderBadgeComponent, selector: "elder-badge", inputs: { content: "content", setCssClass: ["cssClass", "setCssClass"] }, ngImport: i0, template: "<mat-chip elderChipLabel [color]=\"getColor()\" [class]=\"'elder-badge ' + elementClass\" *ngIf=\"content$ | async as count\">\n {{count}}\n</mat-chip>\n", styles: [".elder-badge{position:absolute!important;width:unset!important;max-width:unset!important;box-sizing:border-box;font-weight:600}.elder-badge .mdc-evolution-chip,.elder-badge .mdc-evolution-chip__cell,.elder-badge .mdc-evolution-chip__action{justify-content:center}.mat-badge-small .elder-badge.mat-badge-content{border-radius:16px;min-width:16px}.mat-badge-small.mat-badge-above .elder-badge.mat-badge-content{top:-7px!important}.mat-badge-small.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-small.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-small .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 3px!important}.mat-badge-small .elder-badge.mat-badge-content{line-height:14px!important}.mat-badge-medium .elder-badge.mat-badge-content{border-radius:22px;min-width:22px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-medium.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-medium .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-medium .elder-badge.mat-badge-content{line-height:20px!important}.mat-badge-large .elder-badge.mat-badge-content{border-radius:28px;min-width:28px}.mat-badge-large.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-large.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-large .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-large .elder-badge.mat-badge-content{line-height:26px!important}.elder-badge.mat-badge-content{transform:unset!important}\n"], dependencies: [{ kind: "component", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
13214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderBadgeComponent, selector: "elder-badge", inputs: { content: "content", setCssClass: ["cssClass", "setCssClass"] }, ngImport: i0, template: "<mat-chip elderChipLabel\n [color]=\"getColor()\"\n [class]=\"'elder-badge ' + elementClass\"\n *ngIf=\"content$ | async as count\">\n {{count}}\n</mat-chip>\n", styles: [".elder-badge{position:absolute!important;width:unset!important;max-width:unset!important;box-sizing:border-box;font-weight:600}.elder-badge .mdc-evolution-chip,.elder-badge .mdc-evolution-chip__cell,.elder-badge .mdc-evolution-chip__action{justify-content:center}.mat-badge-small .elder-badge.mat-badge-content{border-radius:16px;min-width:16px}.mat-badge-small.mat-badge-above .elder-badge.mat-badge-content{top:-7px!important}.mat-badge-small.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-small.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-small .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 3px!important}.mat-badge-small .elder-badge.mat-badge-content{line-height:14px!important}.mat-badge-medium .elder-badge.mat-badge-content{border-radius:22px;min-width:22px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-medium.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-medium .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-medium .elder-badge.mat-badge-content{line-height:20px!important}.mat-badge-large .elder-badge.mat-badge-content{border-radius:28px;min-width:28px}.mat-badge-large.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-large.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-large .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-large .elder-badge.mat-badge-content{line-height:26px!important}.elder-badge.mat-badge-content{transform:unset!important}\n"], dependencies: [{ kind: "component", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
13193
13215
  }
13194
13216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderBadgeComponent, decorators: [{
13195
13217
  type: Component,
13196
- args: [{ selector: 'elder-badge', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<mat-chip elderChipLabel [color]=\"getColor()\" [class]=\"'elder-badge ' + elementClass\" *ngIf=\"content$ | async as count\">\n {{count}}\n</mat-chip>\n", styles: [".elder-badge{position:absolute!important;width:unset!important;max-width:unset!important;box-sizing:border-box;font-weight:600}.elder-badge .mdc-evolution-chip,.elder-badge .mdc-evolution-chip__cell,.elder-badge .mdc-evolution-chip__action{justify-content:center}.mat-badge-small .elder-badge.mat-badge-content{border-radius:16px;min-width:16px}.mat-badge-small.mat-badge-above .elder-badge.mat-badge-content{top:-7px!important}.mat-badge-small.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-small.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-small .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 3px!important}.mat-badge-small .elder-badge.mat-badge-content{line-height:14px!important}.mat-badge-medium .elder-badge.mat-badge-content{border-radius:22px;min-width:22px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-medium.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-medium .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-medium .elder-badge.mat-badge-content{line-height:20px!important}.mat-badge-large .elder-badge.mat-badge-content{border-radius:28px;min-width:28px}.mat-badge-large.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-large.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-large .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-large .elder-badge.mat-badge-content{line-height:26px!important}.elder-badge.mat-badge-content{transform:unset!important}\n"] }]
13218
+ args: [{ selector: 'elder-badge', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<mat-chip elderChipLabel\n [color]=\"getColor()\"\n [class]=\"'elder-badge ' + elementClass\"\n *ngIf=\"content$ | async as count\">\n {{count}}\n</mat-chip>\n", styles: [".elder-badge{position:absolute!important;width:unset!important;max-width:unset!important;box-sizing:border-box;font-weight:600}.elder-badge .mdc-evolution-chip,.elder-badge .mdc-evolution-chip__cell,.elder-badge .mdc-evolution-chip__action{justify-content:center}.mat-badge-small .elder-badge.mat-badge-content{border-radius:16px;min-width:16px}.mat-badge-small.mat-badge-above .elder-badge.mat-badge-content{top:-7px!important}.mat-badge-small.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-small.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-small .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 3px!important}.mat-badge-small .elder-badge.mat-badge-content{line-height:14px!important}.mat-badge-medium .elder-badge.mat-badge-content{border-radius:22px;min-width:22px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-medium.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-medium .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-medium .elder-badge.mat-badge-content{line-height:20px!important}.mat-badge-large .elder-badge.mat-badge-content{border-radius:28px;min-width:28px}.mat-badge-large.mat-badge-overlap.mat-badge-after .elder-badge.mat-badge-content{right:-5px;transform:translate(100%)!important}.mat-badge-large.mat-badge-overlap.mat-badge-before .elder-badge.mat-badge-content{left:-5px;transform:translate(-100%)!important}.mat-badge-large .elder-badge.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding:0 6px!important}.mat-badge-large .elder-badge.mat-badge-content{line-height:26px!important}.elder-badge.mat-badge-content{transform:unset!important}\n"] }]
13197
13219
  }], ctorParameters: function () { return []; }, propDecorators: { content: [{
13198
13220
  type: Input
13199
13221
  }], setCssClass: [{
@@ -14554,7 +14576,7 @@ class ElderTableComponent extends ElderDataViewBaseComponent {
14554
14576
  provide: ELDER_DATA_VIEW,
14555
14577
  useExisting: forwardRef(() => ElderTableComponent)
14556
14578
  }
14557
- ], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col {{isDataValid(dataContext?.data | async) ? 'flex' : ''}} scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <ng-container *ngIf=\"!isDataValid(dataContext?.data | async)\">\n <elder-data-context-state-indicator class=\"flex\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n </ng-container>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i11.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i11.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14579
+ ], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef }, { propertyName: "elderColumns", predicate: ElderTableColumnDirective }, { propertyName: "rowDefs", predicate: MatRowDef }, { propertyName: "toolbarRowTemplateQuery", predicate: ElderTableToolbarDirective, read: TemplateRef }], viewQueries: [{ propertyName: "matTable", first: true, predicate: MatTable, descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "rowsQuery", predicate: ElderTableRowDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <div class=\"layout-col elder-table full\">\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div class=\"layout-col {{isDataValid(dataContext?.data | async) ? 'flex' : ''}} scrollable elder-table-scroll\"\n elderInfiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"$any(dataContext$ | async)\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <div class=\"layout-row place-start-center\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode === 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <ng-container *ngIf=\"!isDataValid(dataContext?.data | async)\">\n <elder-data-context-state-indicator class=\"flex\" [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n </ng-container>\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"layout-row flex-none place-end-center gap-md elder-table-footer\">\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n </div>\n</mat-card>\n", styles: [".elder-mat-inner-table{width:100%}.elder-table-row.dense{height:42px!important}.elder-mat-table-container{border-radius:4px;overflow:hidden}.mat-column-select{overflow:initial;min-width:72px;max-width:5%;width:72px}.elder-row-removing{text-decoration:line-through}.elder-row-hidden{display:none}.elder-table-row{cursor:pointer}:host{min-width:0;min-height:0}.elder-table-hint{color:gray}.elder-table-footer{height:44px}.elder-table-checkbox{opacity:.25;transition:opacity .5s ease-in-out}.elder-table-row:hover .elder-table-checkbox{opacity:.9}.elder-table-checkbox-visible{opacity:1}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$8.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i11.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i11.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i11.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: ElderTableRowDirective, selector: "tr[elderTableRow]", inputs: ["elderTableRow"], exportAs: ["elderTableRow"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14558
14580
  }
14559
14581
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderTableComponent, decorators: [{
14560
14582
  type: Component,
@@ -15025,7 +15047,7 @@ class ElderFormFieldLabelDirective {
15025
15047
  this._matFormField.subscriptSizing = 'dynamic'; // Auto collapse hint/error line
15026
15048
  }
15027
15049
  }
15028
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldLabelDirective, deps: [{ token: i5$1.MatFormField }], target: i0.ɵɵFactoryTarget.Directive }); }
15050
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldLabelDirective, deps: [{ token: i5.MatFormField }], target: i0.ɵɵFactoryTarget.Directive }); }
15029
15051
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: ElderFormFieldLabelDirective, selector: "mat-form-field[elderFormFieldLabel]", inputs: { enabled: ["elderFormFieldLabel", "enabled"] }, host: { properties: { "class.elder-form-field-label": "this.getFormFieldLabelStyle" } }, ngImport: i0 }); }
15030
15052
  }
15031
15053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldLabelDirective, decorators: [{
@@ -15033,7 +15055,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
15033
15055
  args: [{
15034
15056
  selector: 'mat-form-field[elderFormFieldLabel]'
15035
15057
  }]
15036
- }], ctorParameters: function () { return [{ type: i5$1.MatFormField }]; }, propDecorators: { getFormFieldLabelStyle: [{
15058
+ }], ctorParameters: function () { return [{ type: i5.MatFormField }]; }, propDecorators: { getFormFieldLabelStyle: [{
15037
15059
  type: HostBinding,
15038
15060
  args: ['class.elder-form-field-label']
15039
15061
  }], enabled: [{
@@ -15322,7 +15344,7 @@ class ElderFormFieldDenseDirective extends ElderClassHostBindingBase {
15322
15344
  this._matFormField.floatLabel = this._floatLabel; // Always float label so it is not out of bounds
15323
15345
  }
15324
15346
  }
15325
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldDenseDirective, deps: [{ token: i5$1.MatFormField }], target: i0.ɵɵFactoryTarget.Directive }); }
15347
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldDenseDirective, deps: [{ token: i5.MatFormField }], target: i0.ɵɵFactoryTarget.Directive }); }
15326
15348
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: { elderDense: "elderDense", subscriptSizing: "subscriptSizing", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0 }); }
15327
15349
  }
15328
15350
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldDenseDirective, decorators: [{
@@ -15330,7 +15352,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
15330
15352
  args: [{
15331
15353
  selector: 'mat-form-field[elderDense]',
15332
15354
  }]
15333
- }], ctorParameters: function () { return [{ type: i5$1.MatFormField }]; }, propDecorators: { elderDense: [{
15355
+ }], ctorParameters: function () { return [{ type: i5.MatFormField }]; }, propDecorators: { elderDense: [{
15334
15356
  type: Input
15335
15357
  }], subscriptSizing: [{
15336
15358
  type: Input
@@ -15901,7 +15923,7 @@ class ElderFormFieldNoHintDirective extends ElderClassHostBindingBase {
15901
15923
  this._matFormField.subscriptSizing = 'dynamic'; // Auto collapse hint/error line
15902
15924
  }
15903
15925
  }
15904
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldNoHintDirective, deps: [{ token: i5$1.MatFormField }], target: i0.ɵɵFactoryTarget.Directive }); }
15926
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldNoHintDirective, deps: [{ token: i5.MatFormField }], target: i0.ɵɵFactoryTarget.Directive }); }
15905
15927
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: ElderFormFieldNoHintDirective, selector: "mat-form-field[elderNoHint]", inputs: { elderNoHint: "elderNoHint" }, usesInheritance: true, ngImport: i0 }); }
15906
15928
  }
15907
15929
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormFieldNoHintDirective, decorators: [{
@@ -15909,7 +15931,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
15909
15931
  args: [{
15910
15932
  selector: 'mat-form-field[elderNoHint]'
15911
15933
  }]
15912
- }], ctorParameters: function () { return [{ type: i5$1.MatFormField }]; }, propDecorators: { elderNoHint: [{
15934
+ }], ctorParameters: function () { return [{ type: i5.MatFormField }]; }, propDecorators: { elderNoHint: [{
15913
15935
  type: Input
15914
15936
  }] } });
15915
15937
 
@@ -16199,7 +16221,7 @@ class ElderValidationErrorDirective {
16199
16221
  this.ref.markForCheck();
16200
16222
  }
16201
16223
  }
16202
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderValidationErrorDirective, deps: [{ token: ValidationMessageRendererService }, { token: i5$1.MatFormField }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
16224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderValidationErrorDirective, deps: [{ token: ValidationMessageRendererService }, { token: i5.MatFormField }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
16203
16225
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.5", type: ElderValidationErrorDirective, selector: "mat-error[elderValidationError]", ngImport: i0 }); }
16204
16226
  }
16205
16227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderValidationErrorDirective, decorators: [{
@@ -16207,7 +16229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
16207
16229
  args: [{
16208
16230
  selector: 'mat-error[elderValidationError]'
16209
16231
  }]
16210
- }], ctorParameters: function () { return [{ type: ValidationMessageRendererService }, { type: i5$1.MatFormField }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
16232
+ }], ctorParameters: function () { return [{ type: ValidationMessageRendererService }, { type: i5.MatFormField }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
16211
16233
 
16212
16234
  class ElderFormsDirectivesModule {
16213
16235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderFormsDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -17165,7 +17187,7 @@ class ElderGridComponent extends ElderDataViewBaseComponent {
17165
17187
  provide: ELDER_DATA_VIEW,
17166
17188
  useExisting: forwardRef(() => ElderGridComponent)
17167
17189
  }
17168
- ], queries: [{ propertyName: "tileTemplateQuery", first: true, predicate: ElderGridTileDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "toolbarTemplateQuery", first: true, predicate: ElderGridToolbarDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "virtualScrollViewPort", first: true, predicate: ["virtualScrollViewPort"], descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <!-- Grid Browser -->\n <div class=\"layout-col full elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n elderInfiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <mat-card appearance=\"outlined\" *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay elder-click-through\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </mat-card>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"layout-row place-end-center gap-md flex-none elder-grid-footer\"\n *ngIf=\"footerVisible\"\n style=\"padding-right: 12px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</mat-card>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" class=\"layout-col place-center-center flex\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.elder-grid-tile-overlay{position:absolute;inset:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-click-through{pointer-events:none}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i4$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: ElderSingleSortComponent, selector: "elder-single-sort", inputs: ["availableSorts", "translationPrefix", "sort"], outputs: ["sortChange"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17190
+ ], queries: [{ propertyName: "tileTemplateQuery", first: true, predicate: ElderGridTileDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "toolbarTemplateQuery", first: true, predicate: ElderGridToolbarDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "virtualScrollViewPort", first: true, predicate: ["virtualScrollViewPort"], descendants: true, static: true }, { propertyName: "matPaginator", first: true, predicate: MatPaginator, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-card class=\"full\"\n [class.embedded]=\"embedded\"\n [appearance]=\"appearance\"\n style=\"overflow: hidden\"\n>\n <!-- Grid Browser -->\n <div class=\"layout-col full elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n class=\"layout-row place-start-center flex-none elder-grid-toolbar\">\n\n <div class=\"layout-col flex-none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox class=\"flex-none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n class=\"flex-none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <elder-data-context-state-indicator class=\"flex-none\" [dataContext]=\"data\">\n </elder-data-context-state-indicator>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"layout-col flex elder-grid-browser\"\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n elderInfiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <mat-card appearance=\"outlined\" *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay elder-click-through\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </mat-card>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar class=\"flex-none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"layout-row place-end-center gap-md flex-none elder-grid-footer\"\n *ngIf=\"footerVisible\"\n style=\"padding-right: 12px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n class=\"flex-none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</mat-card>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" class=\"layout-col place-center-center flex\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n", styles: [":host{min-width:0;min-height:0}.elder-grid-tile-row{display:flex;flex-direction:row;padding:8px}.elder-grid-tile-row:first-child{padding-top:16px}.elder-grid-tile-hidden{flex:0 1 100%;margin:8px;width:100%;height:100%}.elder-grid-tile-content{position:relative;width:100%;height:100%;overflow:hidden}.elder-grid-tile-overlay{position:absolute;inset:0;transition:background-color .1s ease-in,opacity .1s ease-in}.elder-click-through{pointer-events:none}.elder-grid-tile-overlay-visible{opacity:1}.elder-grid-tile-overlay-hidden{opacity:0}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i4$4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i9.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i9.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i9.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: ElderSingleSortComponent, selector: "elder-single-sort", inputs: ["availableSorts", "translationPrefix", "sort"], outputs: ["sortChange"] }, { kind: "component", type: ElderSelectionMasterCheckboxComponent, selector: "elder-selection-master-checkbox" }, { kind: "directive", type: DataContextSelectionDirective, selector: "[elderDataContextSelection]", inputs: ["elderDataContextSelectionModel", "elderDataContextSelection"], exportAs: ["elderDataContextSelection"] }, { kind: "component", type: DataContextStateIndicatorComponent, selector: "elder-data-context-state-indicator", inputs: ["dataContext"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: i12.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i17.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17169
17191
  }
17170
17192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderGridComponent, decorators: [{
17171
17193
  type: Component,
@@ -17795,7 +17817,7 @@ class ElderLanguageSwitcherComponent {
17795
17817
  return this.language.isLanguageActive(lang);
17796
17818
  }
17797
17819
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLanguageSwitcherComponent, deps: [{ token: ElderLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
17798
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLanguageSwitcherComponent, selector: "elder-language-switcher", inputs: { slimMode: "slimMode" }, ngImport: i0, template: "\n\n<mat-menu #languageMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let lang of languages\" (click)=\"currentLanguage = lang\">\n <mat-icon>language</mat-icon>\n <span [class.active]=\"isLanguageActive(lang)\">{{ 'language.' + lang | translate }}</span>\n </button>\n</mat-menu>\n\n<button mat-button type=\"button\"\n *ngIf=\"slimMode\" [matMenuTriggerFor]=\"languageMenu\">\n <div class=\"layout-row place-start-center\">\n <mat-icon>language</mat-icon>\n <span class=\"language\">{{currentLanguage}}</span>\n </div>\n</button>\n\n\n<mat-form-field *ngIf=\"!slimMode\">\n <mat-select placeholder=\"{{'language.language' | translate}}\" name=\"language\" [(ngModel)]=\"currentLanguage\">\n <mat-option *ngFor=\"let lang of languages\" [value]=\"lang\">{{ 'language.' + lang | translate }}</mat-option>\n </mat-select>\n</mat-form-field>\n", styles: [".language{font-size:16px;text-transform:uppercase}.active{font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i4$4.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
17820
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLanguageSwitcherComponent, selector: "elder-language-switcher", inputs: { slimMode: "slimMode" }, ngImport: i0, template: "\n\n<mat-menu #languageMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let lang of languages\" (click)=\"currentLanguage = lang\">\n <mat-icon>language</mat-icon>\n <span [class.active]=\"isLanguageActive(lang)\">{{ 'language.' + lang | translate }}</span>\n </button>\n</mat-menu>\n\n<button mat-button type=\"button\"\n *ngIf=\"slimMode\" [matMenuTriggerFor]=\"languageMenu\">\n <div class=\"layout-row place-start-center\">\n <mat-icon>language</mat-icon>\n <span class=\"language\">{{currentLanguage}}</span>\n </div>\n</button>\n\n\n<mat-form-field *ngIf=\"!slimMode\">\n <mat-select placeholder=\"{{'language.language' | translate}}\" name=\"language\" [(ngModel)]=\"currentLanguage\">\n <mat-option *ngFor=\"let lang of languages\" [value]=\"lang\">{{ 'language.' + lang | translate }}</mat-option>\n </mat-select>\n</mat-form-field>\n", styles: [".language{font-size:16px;text-transform:uppercase}.active{font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i4$5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "component", type: i4$2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
17799
17821
  }
17800
17822
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLanguageSwitcherComponent, decorators: [{
17801
17823
  type: Component,
@@ -18054,7 +18076,7 @@ class ElderDetailDialogComponent {
18054
18076
  this.dialogRef.close(this.entity$.getValue());
18055
18077
  }
18056
18078
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDetailDialogComponent, deps: [{ token: i1$7.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }, { token: ElderMasterDetailService }], target: i0.ɵɵFactoryTarget.Component }); }
18057
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDetailDialogComponent, selector: "elder-detail-dialog", ngImport: i0, template: "<div class=\"layout-col full\" *ngIf=\"entity$ | async as entity\">\n\n <span style=\"width: 100vw;\"></span>\n\n <!-- Header Section -->\n <elder-toolbar class=\"gap-md\" >\n <button (click)=\"close()\" mat-icon-button *elderToolbarColumn=\"'left.begin'\">\n <mat-icon>close</mat-icon>\n </button>\n </elder-toolbar>\n\n <div class=\"layout-row flex gap-md\">\n <ng-container *ngTemplateOutlet=\"data.detailTemplateRef; context: {$implicit: entity}\"></ng-container>\n </div>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "directive", type: ElderToolbarColumnDirective, selector: "[elderToolbarColumn]", inputs: ["elderToolbarColumn", "elderToolbarDefault"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18079
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDetailDialogComponent, selector: "elder-detail-dialog", ngImport: i0, template: "<div class=\"layout-col full\" *ngIf=\"entity$ | async as entity\">\n\n <span style=\"width: 100vw;\"></span>\n\n <!-- Header Section -->\n <elder-toolbar class=\"gap-md\" >\n <button (click)=\"close()\" mat-icon-button *elderToolbarColumn=\"'left.begin'\">\n <mat-icon>close</mat-icon>\n </button>\n </elder-toolbar>\n\n <div class=\"layout-row flex gap-md\">\n <ng-container *ngTemplateOutlet=\"data.detailTemplateRef; context: {$implicit: entity}\"></ng-container>\n </div>\n\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "directive", type: ElderToolbarColumnDirective, selector: "[elderToolbarColumn]", inputs: ["elderToolbarColumn", "elderToolbarDefault"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18058
18080
  }
18059
18081
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDetailDialogComponent, decorators: [{
18060
18082
  type: Component,
@@ -18330,7 +18352,7 @@ class ElderQuantityFormFieldComponent extends ElderFromFieldCustomizableBase {
18330
18352
  this.floatLabel = 'auto';
18331
18353
  }
18332
18354
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderQuantityFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18333
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderQuantityFormFieldComponent, selector: "elder-quantity-form-field", usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [color]=\"color\"\n>\n\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n\n <span matIconPrefix *ngIf=\"showIcon && icon\">\n <mat-icon [inline]=\"true\">{{icon}}</mat-icon>\n </span>\n\n <ng-content></ng-content>\n\n <mat-hint *ngIf=\"showHint\" align=\"end\">\n <span *ngIf=\"hint\">{{hint}}</span>\n </mat-hint>\n\n <mat-error elderValidationError></mat-error>\n\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5$1.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: ElderValidationErrorDirective, selector: "mat-error[elderValidationError]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18355
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderQuantityFormFieldComponent, selector: "elder-quantity-form-field", usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n [color]=\"color\"\n>\n\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n\n <span matIconPrefix *ngIf=\"showIcon && icon\">\n <mat-icon [inline]=\"true\">{{icon}}</mat-icon>\n </span>\n\n <ng-content></ng-content>\n\n <mat-hint *ngIf=\"showHint\" align=\"end\">\n <span *ngIf=\"hint\">{{hint}}</span>\n </mat-hint>\n\n <mat-error elderValidationError></mat-error>\n\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: ElderValidationErrorDirective, selector: "mat-error[elderValidationError]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18334
18356
  }
18335
18357
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderQuantityFormFieldComponent, decorators: [{
18336
18358
  type: Component,
@@ -18741,7 +18763,7 @@ class TemplatedSelectionDialogComponent {
18741
18763
  ngOnInit() {
18742
18764
  }
18743
18765
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: TemplatedSelectionDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: SelectionModel }], target: i0.ɵɵFactoryTarget.Component }); }
18744
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: TemplatedSelectionDialogComponent, selector: "elder-templated-selection-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <button mat-icon-button type=\"button\" matDialogClose=\"\">\n <mat-icon>close</mat-icon>\n </button>\n <span class=\"flex\"></span>\n <button mat-stroked-button type=\"submit\" color=\"accent\"\n *ngIf=\"selectionModel.selection | async as selection\"\n [disabled]=\"!selection || selection.length === 0\"\n [mat-dialog-close]=\"selection\"\n >\n {{'actions.select' | translate}}\n </button>\n </mat-toolbar>\n <div class=\"layout-col flex\" style=\"overflow: hidden\">\n <ng-container *ngTemplateOutlet=\"data.selectionComponentTemplate\"></ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18766
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: TemplatedSelectionDialogComponent, selector: "elder-templated-selection-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\n <mat-toolbar elderTheme class=\"flex-none\">\n <button mat-icon-button type=\"button\" matDialogClose=\"\">\n <mat-icon>close</mat-icon>\n </button>\n <span class=\"flex\"></span>\n <button mat-stroked-button type=\"submit\" color=\"accent\"\n *ngIf=\"selectionModel.selection | async as selection\"\n [disabled]=\"!selection || selection.length === 0\"\n [mat-dialog-close]=\"selection\"\n >\n {{'actions.select' | translate}}\n </button>\n </mat-toolbar>\n <div class=\"layout-col flex\" style=\"overflow: hidden\">\n <ng-container *ngTemplateOutlet=\"data.selectionComponentTemplate\"></ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18745
18767
  }
18746
18768
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: TemplatedSelectionDialogComponent, decorators: [{
18747
18769
  type: Component,
@@ -19340,7 +19362,7 @@ class ElderAutocompleteComponent {
19340
19362
  return String(value);
19341
19363
  }
19342
19364
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
19343
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderAutocompleteComponent, selector: "elder-autocomplete", inputs: { isOptionDisabledFn: "isOptionDisabledFn", isOptionHiddenFn: "isOptionHiddenFn", optionValueConverterFn: "optionValueConverterFn", enabled: "enabled", valueTemplate: "valueTemplate", dataContext: "dataContext", displayPropertyResolver: "displayPropertyResolver" }, outputs: { optionSelected: "optionSelected" }, queries: [{ propertyName: "valueTemplateQuery", first: true, predicate: ElderSelectValueDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "matAutocomplete", first: true, predicate: ["auto"], descendants: true }], exportAs: ["elderAutocomplete"], ngImport: i0, template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll elderElderInfiniteAutocomplete (closeToEnd)=\"onAutoCompleteCloseToEnd($event)\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n <mat-option disabled *ngIf=\"!(dataContext$ | async)\">\n <span class=\"mat-caption\">No DataSource / DataContext!</span>\n </mat-option>\n\n <ng-container *ngIf=\"dataContext$ | async as dc\">\n\n <mat-option disabled *ngIf=\"dc.isClosed\">\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"mat-caption\">DataContext Closed!</span>\n </div>\n </mat-option>\n\n <ng-container *ngIf=\"availableSuggestions$ | async as suggestions\">\n\n <mat-option *ngIf=\"suggestions.length === 0\" disabled>\n No Data.\n </mat-option>\n\n <ng-container *ngFor=\"let suggestion of suggestions\">\n <mat-option\n *ngIf=\"isOptionVisible(suggestion)\"\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"valueTemplate || simpleValueTemplate; context: {$implicit: suggestion}\">\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"dataState$ | async as state\">\n\n <mat-option disabled *ngIf=\"!state.idle || state.loading\">\n <mat-progress-bar\n [value]=\"100\"\n [mode]=\"state.loading ? 'query' : 'determinate'\"\n [color]=\"state.error ? 'warn' : 'primary'\"\n ></mat-progress-bar>\n </mat-option>\n\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #simpleValueTemplate let-value>\n <ng-container *ngIf=\"displayPropertyResolver$ | async as propertyResolver\">\n <span class=\"noselect\">{{propertyResolver(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "directive", type: ElderInfiniteAutocompleteDirective, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19365
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderAutocompleteComponent, selector: "elder-autocomplete", inputs: { isOptionDisabledFn: "isOptionDisabledFn", isOptionHiddenFn: "isOptionHiddenFn", optionValueConverterFn: "optionValueConverterFn", enabled: "enabled", valueTemplate: "valueTemplate", dataContext: "dataContext", displayPropertyResolver: "displayPropertyResolver" }, outputs: { optionSelected: "optionSelected" }, queries: [{ propertyName: "valueTemplateQuery", first: true, predicate: ElderSelectValueDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "matAutocomplete", first: true, predicate: ["auto"], descendants: true }], exportAs: ["elderAutocomplete"], ngImport: i0, template: "<mat-autocomplete\n #auto=\"matAutocomplete\"\n panelWidth=\"auto\"\n [autoActiveFirstOption]=\"true\"\n (opened)=\"onAutocompleteOpened($event)\"\n (optionSelected)=\"onOptionSelected($event)\"\n elderInfiniteScroll elderElderInfiniteAutocomplete (closeToEnd)=\"onAutoCompleteCloseToEnd($event)\"\n>\n <!--\n <mat-option *ngIf=\"allowNull\" [value]=\"null\">{{nullDisplay | translate}}</mat-option>\n -->\n\n <mat-option disabled *ngIf=\"!(dataContext$ | async)\">\n <span class=\"mat-caption\">No DataSource / DataContext!</span>\n </mat-option>\n\n <ng-container *ngIf=\"dataContext$ | async as dc\">\n\n <mat-option disabled *ngIf=\"dc.isClosed\">\n <div class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"mat-caption\">DataContext Closed!</span>\n </div>\n </mat-option>\n\n <ng-container *ngIf=\"availableSuggestions$ | async as suggestions\">\n\n <mat-option *ngIf=\"suggestions.length === 0\" disabled>\n No Data.\n </mat-option>\n\n <ng-container *ngFor=\"let suggestion of suggestions\">\n <mat-option\n *ngIf=\"isOptionVisible(suggestion)\"\n [value]=\"toOptionValue(suggestion)\"\n [id]=\"getIdAsString(suggestion)\"\n [disabled]=\"!isOptionAvailable(suggestion)\"\n >\n <ng-container\n *ngTemplateOutlet=\"valueTemplate || simpleValueTemplate; context: {$implicit: suggestion}\">\n </ng-container>\n <!--\n <span class=\"mat-caption\">value: {{toOptionValue(suggestion)}}</span>\n -->\n </mat-option>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"dataState$ | async as state\">\n\n <mat-option disabled *ngIf=\"!state.idle || state.loading\">\n <mat-progress-bar\n [value]=\"100\"\n [mode]=\"state.loading ? 'query' : 'determinate'\"\n [color]=\"state.error ? 'warn' : 'primary'\"\n ></mat-progress-bar>\n </mat-option>\n\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #simpleValueTemplate let-value>\n <ng-container *ngIf=\"displayPropertyResolver$ | async as propertyResolver\">\n <span class=\"noselect\">{{propertyResolver(value)}}</span>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4$2.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: ElderInfiniteScrollDirective, selector: "[elderInfiniteScroll]", inputs: ["listenToHost", "eventThrottle", "offsetFactor", "ignoreScrollEvent", "containerId", "scrollContainer"], outputs: ["closeToEnd", "scrolling"] }, { kind: "directive", type: ElderInfiniteAutocompleteDirective, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19344
19366
  }
19345
19367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAutocompleteComponent, decorators: [{
19346
19368
  type: Component,
@@ -19967,7 +19989,7 @@ class ElderSelectComponent extends ElderSelectBase {
19967
19989
  provide: ELDER_SELECT_BASE,
19968
19990
  useExisting: forwardRef(() => ElderSelectComponent)
19969
19991
  }
19970
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"(entityWrapped$ | async) as entityWrapper\"\n class=\"layout-row place-start-center elder-flex-control\"\n>\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"state?.error || icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-mdc-control-icon elder-icon-small noselect clickable-icon\"\n [class.loading]=\"state.loading\"\n [color]=\"state?.error ? 'warn' : (focused ? 'primary' : undefined)\"\n (click)=\"onCurrentClicked(entity)\"\n >\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"!icon && state?.error\"\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n </div>\n </ng-container>\n\n <!-- A dynamic input -->\n <input #input\n matInput type=\"text\" class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [matAutocomplete] #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\" [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'submit'}\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n\n <!-- This breaks stuff: [displayWith]=\"displayPropertyResolver$ | async\" -->\n\n <elder-autocomplete\n #elderAuto=\"elderAutocomplete\"\n [dataContext]=\"dataContext$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [enabled]=\"!!autocomplete\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-autocomplete>\n\n <div class=\"layout-row place-start-center flex-none\">\n\n <mat-icon\n *ngIf=\"!selectionPopup && !autocomplete && !entityWrapper.displayRemove\"\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\">\n arrow_drop_down\n </mat-icon>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"selectionPopup && !entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\" aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n\n\n </div>\n</div>\n\n\n\n", styles: ["@keyframes shrink{0%{transform:scale(1)}to{transform:scale(.75)}}.loading{animation:shrink .3s ease-in-out infinite alternate;-webkit-animation:shrink .3s ease-in-out infinite alternate}.clickable-icon{cursor:pointer}.full-width{width:100%}.elder-select-dropdown-input{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$2.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: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: ElderAutocompleteComponent, selector: "elder-autocomplete", inputs: ["isOptionDisabledFn", "isOptionHiddenFn", "optionValueConverterFn", "enabled", "valueTemplate", "dataContext", "displayPropertyResolver"], outputs: ["optionSelected"], exportAs: ["elderAutocomplete"] }, { kind: "directive", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: ["queryFilter", "filters", "sorts", "elderAutocomplete"] }, { kind: "directive", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19992
+ ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n *ngIf=\"(entityWrapped$ | async) as entityWrapper\"\n class=\"layout-row place-start-center elder-flex-control\"\n>\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"state?.error || icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-mdc-control-icon elder-icon-small noselect clickable-icon\"\n [class.loading]=\"state.loading\"\n [color]=\"state?.error ? 'warn' : (focused ? 'primary' : undefined)\"\n (click)=\"onCurrentClicked(entity)\"\n >\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"!icon && state?.error\"\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n </div>\n </ng-container>\n\n <!-- A dynamic input -->\n <input #input\n matInput type=\"text\" class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [matAutocomplete] #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\" [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'submit'}\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n\n <!-- This breaks stuff: [displayWith]=\"displayPropertyResolver$ | async\" -->\n\n <elder-autocomplete\n #elderAuto=\"elderAutocomplete\"\n [dataContext]=\"dataContext$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [enabled]=\"!!autocomplete\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-autocomplete>\n\n <div class=\"layout-row place-start-center flex-none\">\n\n <mat-icon\n *ngIf=\"!selectionPopup && !autocomplete && !entityWrapper.displayRemove\"\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\">\n arrow_drop_down\n </mat-icon>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"selectionPopup && !entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"entityWrapper.displayRemove\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\" aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n\n\n </div>\n</div>\n\n\n\n", styles: ["@keyframes shrink{0%{transform:scale(1)}to{transform:scale(.75)}}.loading{animation:shrink .3s ease-in-out infinite alternate;-webkit-animation:shrink .3s ease-in-out infinite alternate}.clickable-icon{cursor:pointer}.full-width{width:100%}.elder-select-dropdown-input{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$3.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: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: ElderAutocompleteComponent, selector: "elder-autocomplete", inputs: ["isOptionDisabledFn", "isOptionHiddenFn", "optionValueConverterFn", "enabled", "valueTemplate", "dataContext", "displayPropertyResolver"], outputs: ["optionSelected"], exportAs: ["elderAutocomplete"] }, { kind: "directive", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: ["queryFilter", "filters", "sorts", "elderAutocomplete"] }, { kind: "directive", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19971
19993
  }
19972
19994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderSelectComponent, decorators: [{
19973
19995
  type: Component,
@@ -20205,7 +20227,7 @@ class ElderQuantityInputControlComponent extends ElderFormFieldControlBase {
20205
20227
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderQuantityInputControlComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }, { token: ElderUnitService }, { token: i1$4.DecimalPipe }], target: i0.ɵɵFactoryTarget.Component }); }
20206
20228
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderQuantityInputControlComponent, selector: "elder-quantity-input", inputs: { displayFormat: "displayFormat", quantityValue: "quantityValue", unit: "unit", hideUnit: "hideUnit" }, outputs: { quantityValueChange: "quantityValueChange", unitChange: "unitChange" }, providers: [
20207
20229
  { provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent },
20208
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input #input\n matInput type=\"number\" elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'change'}\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n >\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{unitSymbol$ | async}}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.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: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20230
+ ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input #input\n matInput type=\"number\" elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"formattedValue$ | async\" [ngModelOptions]=\"{standalone: true, updateOn: 'change'}\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n >\n <span *ngIf=\"!hideUnit\" class=\"mat-small elder-quantity-unit\">{{unitSymbol$ | async}}</span>\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$3.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: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
20209
20231
  }
20210
20232
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderQuantityInputControlComponent, decorators: [{
20211
20233
  type: Component,
@@ -21761,7 +21783,7 @@ class ElderMultiSelectChipsComponent extends ElderMultiSelectBase {
21761
21783
  provide: ELDER_SELECT_BASE,
21762
21784
  useExisting: forwardRef(() => ElderMultiSelectChipsComponent)
21763
21785
  }
21764
- ], queries: [{ propertyName: "_customChipInput", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: "chipTemplateQuery", first: true, predicate: ElderSelectChipDirective, descendants: true, read: TemplateRef }, { propertyName: "chipAvatarTemplateQuery", first: true, predicate: ElderSelectChipAvatarDirective, descendants: true, read: TemplateRef }, { propertyName: "customInputTemplateQuery", first: true, predicate: ElderSelectCustomInputDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "_chipInput", first: true, predicate: ElderSelectComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n <mat-chip-set #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n cdkDropList\n [cdkDropListOrientation]=\"stacked ? 'vertical' : 'horizontal'\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowSorting\"\n >\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{icon}}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n <mat-chip-row elderChipLabel *ngFor=\"let chipModel of chipValues\"\n class=\"noselect clickable-chip\"\n [value]=\"resolveChipValue(chipModel.value)\"\n [color]=\"chipModel.color\"\n [removable]=\"chipModel.removeable\"\n (keydown)=\"onChipKeyDown($event, chipModel.value)\"\n (click)=\"onCurrentClicked(chipModel.value)\"\n cdkDrag [cdkDragData]=\"chipModel.value\" [cdkDragDisabled]=\"!allowSorting\"\n >\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n <mat-icon matChipRemove\n *ngIf=\"chipModel.removeable\"\n (click)=\"onClickRemoveChip($event, chipModel.value)\">\n cancel\n </mat-icon>\n </mat-chip-row>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <!-- [matChipInputFor]=\"chips\" -->\n <ng-container\n *ngTemplateOutlet=\"templates.input || selectInput;\">\n </ng-container>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-set>\n</div>\n\n<ng-template #selectInput>\n <!-- mat-mdc-chip-input -->\n <elder-select autocomplete elderClearSelect\n class=\"elder-chip-input-select flex\"\n [data]=\"dataContext$ | async\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"!!readonly\"\n [placeholder]=\"placeholder\"\n (entityUpdated)=\"appendEntity($event)\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n ></elder-select>\n</ng-template>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{chipModel.displayText | elderTruncate:20}}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i5$4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "component", type: ElderSelectComponent, selector: "elder-select", inputs: ["nullDisplay", "autocomplete", "allowNull", "entity", "entityId"], outputs: ["entityIdChange", "entityIdUpdated", "entityChange", "entityUpdated"] }, { kind: "directive", type: ElderClearSelectDirective, selector: "[elderClearSelect]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTruncatePipe, name: "elderTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21786
+ ], queries: [{ propertyName: "_customChipInput", first: true, predicate: MatFormFieldControl, descendants: true }, { propertyName: "chipTemplateQuery", first: true, predicate: ElderSelectChipDirective, descendants: true, read: TemplateRef }, { propertyName: "chipAvatarTemplateQuery", first: true, predicate: ElderSelectChipAvatarDirective, descendants: true, read: TemplateRef }, { propertyName: "customInputTemplateQuery", first: true, predicate: ElderSelectCustomInputDirective, descendants: true, read: TemplateRef }], viewQueries: [{ propertyName: "_chipInput", first: true, predicate: ElderSelectComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"(selectChips$ | async) as chipValues\"\n class=\"elder-flex-control\"\n [matTooltip]=\"(state$ | async)?.error\"\n>\n <mat-chip-set #chips\n [class.mat-mdc-chip-set-stacked]=\"stacked\"\n cdkDropList\n [cdkDropListOrientation]=\"stacked ? 'vertical' : 'horizontal'\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"!allowSorting\"\n >\n\n <ng-container *ngIf=\"(mergedState$ | async) as state\">\n <div *ngIf=\"icon\"\n class=\"elder-input-prefix-icon-container flex-none\"\n >\n <mat-icon *ngIf=\"icon\" disabled\n class=\"elder-prefix-icon elder-mdc-control-icon elder-icon-small noselect\"\n [class.loading]=\"state.loading\"\n >\n {{icon}}\n </mat-icon>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"templates$ | async as templates\">\n <mat-chip-row elderChipLabel *ngFor=\"let chipModel of chipValues\"\n class=\"noselect clickable-chip\"\n [value]=\"resolveChipValue(chipModel.value)\"\n [color]=\"chipModel.color\"\n [removable]=\"chipModel.removeable\"\n (keydown)=\"onChipKeyDown($event, chipModel.value)\"\n (click)=\"onCurrentClicked(chipModel.value)\"\n cdkDrag [cdkDragData]=\"chipModel.value\" [cdkDragDisabled]=\"!allowSorting\"\n >\n <mat-chip-avatar\n *ngIf=\"templates.avatar && !chipModel.avatarSpec.hide\"\n [class.chip-avatar-xl]=\"chipModel.avatarSpec.large\"\n >\n <ng-container\n *ngTemplateOutlet=\"templates.avatar; context: {$implicit: chipModel}\">\n </ng-container>\n </mat-chip-avatar>\n\n <ng-container\n *ngTemplateOutlet=\"templates.chip || simpleChipTemplate; context: {$implicit: chipModel}\">\n </ng-container>\n <mat-icon matChipRemove\n *ngIf=\"chipModel.removeable\"\n (click)=\"onClickRemoveChip($event, chipModel.value)\">\n cancel\n </mat-icon>\n </mat-chip-row>\n\n <div class=\"layout-row place-start-center elder-chip-input\">\n\n <!-- [matChipInputFor]=\"chips\" -->\n <ng-container\n *ngTemplateOutlet=\"templates.input || selectInput;\">\n </ng-container>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button elder-browse-icon\"\n *ngIf=\"selectionPopup\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n </div>\n </ng-container>\n </mat-chip-set>\n</div>\n\n<ng-template #selectInput>\n <!-- mat-mdc-chip-input -->\n <elder-select autocomplete elderClearSelect\n class=\"elder-chip-input-select flex\"\n [data]=\"dataContext$ | async\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"!!readonly\"\n [placeholder]=\"placeholder\"\n (entityUpdated)=\"appendEntity($event)\"\n [displayPropertyResolver]=\"displayPropertyResolver$ | async\"\n [valueTemplate]=\"valueTemplate\"\n [queryFilter]=\"queryFilter\" [filters]=\"filters\" [sorts]=\"sorts\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n ></elder-select>\n</ng-template>\n\n<ng-template #simpleChipTemplate let-chipModel>\n <span class=\"elder-chip-text\">{{chipModel.displayText | elderTruncate:20}}</span>\n</ng-template>\n\n", styles: [".elder-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cdk-drag-preview{box-sizing:border-box;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "editable"], outputs: ["edited"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i5$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderChipLabelDirective, selector: "[elderChipLabel]", inputs: ["appearance", "color", "stateColor", "levelColor"] }, { kind: "component", type: ElderSelectComponent, selector: "elder-select", inputs: ["nullDisplay", "autocomplete", "allowNull", "entity", "entityId"], outputs: ["entityIdChange", "entityIdUpdated", "entityChange", "entityUpdated"] }, { kind: "directive", type: ElderClearSelectDirective, selector: "[elderClearSelect]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTruncatePipe, name: "elderTruncate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21765
21787
  }
21766
21788
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderMultiSelectChipsComponent, decorators: [{
21767
21789
  type: Component,
@@ -22517,7 +22539,7 @@ class ElderNavLinkComponent {
22517
22539
  return this.navList.isActive(this.value);
22518
22540
  }
22519
22541
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderNavLinkComponent, deps: [{ token: ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
22520
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderNavLinkComponent, selector: "elder-nav-link", inputs: { title: "title", queryParamsHandling: "queryParamsHandling", queryParams: "queryParams", icon: "icon", fontIcon: "fontIcon", fontSet: "fontSet", svgIcon: "svgIcon", routerLink: "routerLink", href: "href", target: "target", value: "value", disabled: "disabled" }, outputs: { clicked: "clicked" }, host: { properties: { "attr.tabindex": "this.tabIndex" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<!-- Router Link -->\n<ng-container *ngIf=\"model$ | async as model\">\n <a *ngIf=\"model.routerLink as routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [routerLink]=\"routerLink\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"dummy\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Href Link -->\n <a *ngIf=\"model.href as href\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [href]=\"href\"\n [target]=\"model.hrefTarget\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Simple Button -->\n <a *ngIf=\"!model.href && !model.routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n (click)=\"itemClick($event)\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n</ng-container>\n\n\n<ng-template #defaultLinkTemplate>\n <div class=\"layout-row place-start-center flex gap-md noselect\">\n <mat-icon *ngIf=\"!(!icon && !title)\"\n [fontIcon]=\"fontIcon\"\n [fontSet]=\"fontSet\">\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"svgIcon\"\n [svgIcon]=\"svgIcon\"\n ></mat-icon>\n <span *ngIf=\"title\" class=\"noselect\">\n {{ title | translate}}\n </span>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".nav-link{text-decoration:none;padding-left:16px;padding-right:16px;min-height:48px;border-radius:4px;overflow:hidden;transition:background .5s}.nav-link .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22542
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderNavLinkComponent, selector: "elder-nav-link", inputs: { title: "title", queryParamsHandling: "queryParamsHandling", queryParams: "queryParams", icon: "icon", fontIcon: "fontIcon", fontSet: "fontSet", svgIcon: "svgIcon", routerLink: "routerLink", href: "href", target: "target", value: "value", disabled: "disabled" }, outputs: { clicked: "clicked" }, host: { properties: { "attr.tabindex": "this.tabIndex" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<!-- Router Link -->\n<ng-container *ngIf=\"model$ | async as model\">\n <a *ngIf=\"model.routerLink as routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [routerLink]=\"routerLink\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [queryParams]=\"queryParams\"\n routerLinkActive=\"dummy\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Href Link -->\n <a *ngIf=\"model.href as href\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n [href]=\"href\"\n [target]=\"model.hrefTarget\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n\n <!-- Simple Button -->\n <a *ngIf=\"!model.href && !model.routerLink\"\n matRipple [matRippleDisabled]=\"disabled\"\n class=\"layout-row place-start-center nav-link\n mdc-list-item mdc-list-item--with-one-line\"\n (click)=\"itemClick($event)\"\n [class.nav-link-clickable]=\"!disabled\"\n [class.nav-link-disabled]=\"disabled\"\n [class.nav-link-active]=\"active$ | async\"\n [class.nav-link-inactive]=\"(active$ | async) === false\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n</ng-container>\n\n\n<ng-template #defaultLinkTemplate>\n <div class=\"layout-row place-start-center flex gap-md noselect\">\n <mat-icon *ngIf=\"!(!icon && !title)\"\n [fontIcon]=\"fontIcon\"\n [fontSet]=\"fontSet\">\n {{icon}}\n </mat-icon>\n <mat-icon *ngIf=\"svgIcon\"\n [svgIcon]=\"svgIcon\"\n ></mat-icon>\n <span *ngIf=\"title\" class=\"noselect\">\n {{ title | translate}}\n </span>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".nav-link{text-decoration:none;padding-left:16px;padding-right:16px;min-height:48px;border-radius:4px;overflow:hidden;transition:background .5s}.nav-link .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22521
22543
  }
22522
22544
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderNavLinkComponent, decorators: [{
22523
22545
  type: Component,
@@ -22623,7 +22645,7 @@ class ElderNavGroupComponent {
22623
22645
  return this.navList.isActive(this.value);
22624
22646
  }
22625
22647
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderNavGroupComponent, deps: [{ token: ElderNavListComponent }], target: i0.ɵɵFactoryTarget.Component }); }
22626
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderNavGroupComponent, selector: "elder-nav-group", inputs: { value: "value" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "children", predicate: ElderNavLinkComponent }], ngImport: i0, template: "\n<ng-container *ngIf=\"(state$ | async) as state\">\n <div class=\"layout-col nav-group\">\n <a matRipple\n class=\"layout-row place-start-center nav-group-button mat-button-fill\n mdc-list-item\n mdc-list-item--with-one-line\"\n [class.nav-group-button-open]=\"state.isOpen\"\n [class.nav-group-button-closed]=\"!state.isOpen\"\n [class.nav-group-button-active]=\"active$ | async\"\n (click)=\"itemClick($event)\"\n >\n\n <div class=\"layout-row place-start-center gap-lg full noselect mdc-list-item__primary-text\">\n <ng-content></ng-content>\n <span class=\"flex\"></span>\n <mat-icon>{{state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n </a>\n\n <!-- Nested Items projection -->\n <div class=\"layout-col nav-group-items-container p-sm gap-sm\"\n [@openClose]=\"state.isOpen ? 'open' : 'closed'\">\n <ng-content select=\"elder-nav-link\"></ng-content>\n </div>\n\n </div>\n</ng-container>\n", styles: [".nav-group-button-closed{padding-left:16px}.nav-group{min-height:48px}.nav-group-button{padding-right:16px;min-height:48px;font-size:16px;font-weight:400;border-radius:4px;cursor:pointer}.nav-group-button .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}.nav-group-items-container{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], animations: [
22648
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderNavGroupComponent, selector: "elder-nav-group", inputs: { value: "value" }, outputs: { clicked: "clicked" }, queries: [{ propertyName: "children", predicate: ElderNavLinkComponent }], ngImport: i0, template: "\n<ng-container *ngIf=\"(state$ | async) as state\">\n <div class=\"layout-col nav-group\">\n <a matRipple\n class=\"layout-row place-start-center nav-group-button mat-button-fill\n mdc-list-item\n mdc-list-item--with-one-line\"\n [class.nav-group-button-open]=\"state.isOpen\"\n [class.nav-group-button-closed]=\"!state.isOpen\"\n [class.nav-group-button-active]=\"active$ | async\"\n (click)=\"itemClick($event)\"\n >\n\n <div class=\"layout-row place-start-center gap-lg full noselect mdc-list-item__primary-text\">\n <ng-content></ng-content>\n <span class=\"flex\"></span>\n <mat-icon>{{state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'}}</mat-icon>\n </div>\n </a>\n\n <!-- Nested Items projection -->\n <div class=\"layout-col nav-group-items-container p-sm gap-sm\"\n [@openClose]=\"state.isOpen ? 'open' : 'closed'\">\n <ng-content select=\"elder-nav-link\"></ng-content>\n </div>\n\n </div>\n</ng-container>\n", styles: [".nav-group-button-closed{padding-left:16px}.nav-group{min-height:48px}.nav-group-button{padding-right:16px;min-height:48px;font-size:16px;font-weight:400;border-radius:4px;cursor:pointer}.nav-group-button .mat-icon{height:24px;width:24px;font-size:24px;padding:4px}.nav-group-items-container{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], animations: [
22627
22649
  trigger('openClose', [
22628
22650
  state('open', style({
22629
22651
  height: '*',
@@ -22869,7 +22891,7 @@ class ElderBreadCrumbsComponent {
22869
22891
  return nodes;
22870
22892
  }
22871
22893
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderBreadCrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22872
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderBreadCrumbsComponent, selector: "elder-bread-crumbs", inputs: { root: "root", rootTranslation: "rootTranslation", rootIcon: "rootIcon", backgroundColor: "backgroundColor", editModeEnabled: "editModeEnabled", path: "path" }, outputs: { pathChange: "pathChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5$2.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$2.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: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "directive", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22894
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderBreadCrumbsComponent, selector: "elder-bread-crumbs", inputs: { root: "root", rootTranslation: "rootTranslation", rootIcon: "rootIcon", backgroundColor: "backgroundColor", editModeEnabled: "editModeEnabled", path: "path" }, outputs: { pathChange: "pathChange" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<!-- main container-->\n<div class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n *ngIf=\"{enabled: editMode$ | async} as editMode\"\n>\n\n <!-- path container -->\n <form #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n <mat-form-field class=\"flex\" *ngIf=\"editMode.enabled\" elderDense >\n {{ pathInput.focus() }}\n <input matInput type=\"text\" name=\"pathInput\" #pathInput\n [ngModel]=\"path\" (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent [elderKeyEventFilter]=\"'Enter'\" (onElderKeyEvent)=\"onEnter()\">\n </mat-form-field>\n\n <!-- navigation control (if editMode:disabled) -->\n <ng-container *ngIf=\"!editMode.enabled\">\n <div class=\"layout-row place-center-center flex-none\"\n *ngFor=\"let node of nodes$ | async;let isFirst = first;let isLast = last\">\n\n <!-- arrow right icon as path element delimiter -->\n <mat-icon *ngIf=\"!isFirst\" class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n\n <!-- root element (case root icon) -->\n <a *ngIf=\"isFirst && rootIcon\"\n mat-icon-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <mat-icon>{{rootIcon}}</mat-icon>\n </a>\n\n <!-- intermediate elements (not last and (not first or root icon)) -->\n <a *ngIf=\"!isLast && (!isFirst || !rootIcon)\"\n mat-button class=\"breadcrumb\"\n (click)=\"goToPath(node)\" elderStopEventPropagation\n >\n <span>{{node.name}}</span>\n </a>\n\n <!-- last element (is last and (not first or root icon)) -->\n <a mat-button class=\"breadcrumb\" *ngIf=\"isLast && (!isFirst || !rootIcon)\"\n (click)=\"null\" elderStopEventPropagation\n >\n {{node.name}}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n\n </div>\n </ng-container>\n\n </form>\n\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{'Pfad kopieren'}}</span>\n </button>\n\n <button mat-menu-item type=\"button\" (click)=\"onMenuEditPathClick($event)\" elderStopEventPropagation>\n <mat-icon *ngIf=\"!editMode.enabled\">edit</mat-icon>\n <mat-icon *ngIf=\"editMode.enabled\">done</mat-icon>\n <span *ngIf=\"!editMode.enabled\">{{'Pfad editieren'}}</span>\n <span *ngIf=\"editMode.enabled\">{{'Pfad best\u00E4tigen'}}</span>\n </button>\n\n </mat-menu>\n\n </button>\n</div>\n\n\n", styles: [".breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5$1.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4$3.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: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "directive", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22873
22895
  }
22874
22896
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderBreadCrumbsComponent, decorators: [{
22875
22897
  type: Component,
@@ -23463,7 +23485,7 @@ class ElderShellComponent {
23463
23485
  }, 5);
23464
23486
  }
23465
23487
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderShellComponent, deps: [{ token: ElderShellService }, { token: ElderRouteOutletDrawerService }, { token: i0.ChangeDetectorRef }, { token: ElderThemeService }, { token: GlobalDragDropService }], target: i0.ɵɵFactoryTarget.Component }); }
23466
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderShellComponent, selector: "elder-shell", inputs: { sideNavToggleEnabled: "sideNavToggleEnabled", leftSideAutoFocus: "leftSideAutoFocus", rightSideAutoFocus: "rightSideAutoFocus", color: "color", menuColor: "menuColor", menuIconColor: "menuIconColor" }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], ngImport: i0, template: "<mat-sidenav-container\n elderThemeApplier\n class=\"full-width\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div class=\"layout-col full elder-side-nav\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div class=\"layout-col full\">\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n <elder-toolbar [color]=\"color\" class=\"flex-none\" style=\"max-width: 100%; min-width: 100%\" >\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\"\n [color]=\"menuColor$ | async\"\n class=\"flex-none\" style=\"width: auto\"\n >\n <button mat-icon-button [color]=\"menuIconColor$ | async\" type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n </elder-toolbar>\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav .elder-side-nav{min-width:350px}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i7.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i7.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i7.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "directive", type: ElderThemeApplierDirective, selector: "[elderThemeApplier]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23488
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderShellComponent, selector: "elder-shell", inputs: { sideNavToggleEnabled: "sideNavToggleEnabled", leftSideAutoFocus: "leftSideAutoFocus", rightSideAutoFocus: "rightSideAutoFocus", color: "color", menuColor: "menuColor", menuIconColor: "menuIconColor" }, queries: [{ propertyName: "sideContentLeft", first: true, predicate: ElderShellSideLeftDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "sideContentRight", first: true, predicate: ElderShellSideRightDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "centerContent", first: true, predicate: ElderShellCenterDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rightSideDrawer", first: true, predicate: ["rightSideDetail"], descendants: true, static: true }], ngImport: i0, template: "<mat-sidenav-container\n elderThemeApplier\n class=\"full-width\"\n (backdropClick)=\"onBackdropClick($event)\"\n>\n\n <!-- Left Side Nav -->\n <mat-sidenav position=\"start\"\n mode=\"over\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"leftSideAutoFocus\"\n [opened]=\"leftSideContentOpen$ | async\"\n (closed)=\"closeLeftSideContent()\">\n <div class=\"layout-col full elder-side-nav\">\n <ng-container *ngTemplateOutlet=\"sideContentLeft || fallbackSideContentLeft;\"></ng-container>\n </div>\n </mat-sidenav>\n\n <!-- Main Content -->\n <mat-sidenav-content>\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"centerContent || fallbackCenterContent;\"></ng-container>\n </div>\n </mat-sidenav-content>\n\n <!-- Right Side Detail -->\n <mat-sidenav mode=\"over\" #rightSideDetail id=\"elder-right-side-detail\"\n position=\"end\"\n [fixedInViewport]=\"true\"\n [autoFocus]=\"rightSideAutoFocus\"\n [disableClose]=\"true\" (keydown.escape)=\"onEscapeRightSide($event)\">\n <div class=\"layout-col full\">\n <ng-container *ngTemplateOutlet=\"sideContentRight || fallbackSideContentRight;\"></ng-container>\n </div>\n </mat-sidenav>\n\n</mat-sidenav-container>\n\n<ng-template #fallbackSideContentLeft>\n <div class=\"layout-col flex\">\n <p class=\"noselect\">No Left Side Content Defined!</p>\n </div>\n</ng-template>\n\n<ng-template #fallbackSideContentRight>\n <router-outlet name=\"side\" class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #fallbackCenterContent>\n <div class=\"layout-col full\">\n\n <!-- Header -->\n <ng-container *ngTemplateOutlet=\"(headerTemplate$ | async) || defaultHeaderTemplate\"></ng-container>\n\n <!-- Center -->\n <ng-container *ngTemplateOutlet=\"(centerTemplate$ | async) || defaultCenterTemplate\"></ng-container>\n\n <!-- Footer -->\n <ng-container *ngTemplateOutlet=\"(footerTemplate$ | async) || defaultFooterTemplate\"></ng-container>\n\n </div>\n</ng-template>\n\n\n<ng-template #defaultHeaderTemplate>\n <elder-toolbar [color]=\"color\" class=\"flex-none\" style=\"max-width: 100%; min-width: 100%\" >\n <!-- Toolbar Prefix: Sidenav Toggle -->\n <mat-toolbar *ngIf=\"sideNavToggleEnabled\"\n [color]=\"menuColor$ | async\"\n class=\"flex-none\" style=\"width: auto\"\n >\n <button mat-icon-button [color]=\"menuIconColor$ | async\" type=\"button\" (click)=\"toggleSideNav()\">\n <mat-icon>menu</mat-icon>\n </button>\n </mat-toolbar>\n </elder-toolbar>\n</ng-template>\n\n<ng-template #defaultCenterTemplate>\n <!-- Primary Router Outlet -->\n <router-outlet class=\"router-flex\"></router-outlet>\n</ng-template>\n\n<ng-template #defaultFooterTemplate>\n <!-- Default Footer is empty -->\n</ng-template>\n", styles: ["mat-sidenav{margin:0;height:100%;overflow:hidden}mat-sidenav .elder-side-nav{min-width:350px}mat-sidenav-container{margin:0;width:100%;height:100%;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: i7.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i7.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i7.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "directive", type: ElderThemeApplierDirective, selector: "[elderThemeApplier]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23467
23489
  }
23468
23490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderShellComponent, decorators: [{
23469
23491
  type: Component,
@@ -23610,7 +23632,7 @@ class ElderShellNavigationToggleComponent {
23610
23632
  return parts.join('/');
23611
23633
  }
23612
23634
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderShellNavigationToggleComponent, deps: [{ token: i1$3.Router }, { token: ElderShellService }], target: i0.ɵɵFactoryTarget.Component }); }
23613
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderShellNavigationToggleComponent, selector: "elder-shell-nav-toggle", inputs: { roots: "roots", hide: "hide" }, ngImport: i0, template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
23635
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderShellNavigationToggleComponent, selector: "elder-shell-nav-toggle", inputs: { roots: "roots", hide: "hide" }, ngImport: i0, template: "\n<button mat-icon-button type=\"button\" (click)=\"onClick()\" *ngIf=\"showComponent()\">\n <mat-icon>{{icon | async}}</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }] }); }
23614
23636
  }
23615
23637
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderShellNavigationToggleComponent, decorators: [{
23616
23638
  type: Component,
@@ -23859,24 +23881,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
23859
23881
  }]
23860
23882
  }] });
23861
23883
 
23884
+ class LocaleDateFormats {
23885
+ /***************************************************************************
23886
+ * *
23887
+ * Fields *
23888
+ * *
23889
+ **************************************************************************/
23890
+ static { this.fallbackDateFormats = ['MM/dd/yyyy', 'MM/dd/yy']; }
23891
+ static { this.dateFormats = new Map([
23892
+ ["de-CH", ['dd.MM.yyyy', 'dd.MM.yy']],
23893
+ ["de-DE", ['dd.MM.yyyy', 'dd.MM.yy']],
23894
+ ["en-UK", ['dd/MM/yyyy', 'dd/MM/yy']],
23895
+ ["en-US", this.fallbackDateFormats]
23896
+ ]); }
23897
+ /***************************************************************************
23898
+ * *
23899
+ * Public API *
23900
+ * *
23901
+ **************************************************************************/
23902
+ static getFormatsOfLocale(locale) {
23903
+ if (this.dateFormats.has(locale)) {
23904
+ return this.dateFormats.get(locale);
23905
+ }
23906
+ else {
23907
+ return this.fallbackDateFormats;
23908
+ }
23909
+ }
23910
+ }
23911
+
23862
23912
  /** Adapts the native JS Date for use with cdk-based components that work with dates. */
23863
23913
  /**
23864
23914
  * Makes week starting at monday. For example MatDatePicker.
23865
23915
  */
23866
23916
  class CustomDateAdapter extends NativeDateAdapter {
23867
- constructor() {
23868
- super(...arguments);
23917
+ constructor(matDateLocale) {
23918
+ super(matDateLocale);
23869
23919
  this.logger = LoggerFactory.getLogger(this.constructor.name);
23920
+ this.matDateLocale = matDateLocale;
23870
23921
  }
23871
23922
  getFirstDayOfWeek() {
23872
23923
  return 1;
23873
23924
  }
23874
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: CustomDateAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
23925
+ parse(value, parseFormat) {
23926
+ const formats = LocaleDateFormats.getFormatsOfLocale(this.matDateLocale);
23927
+ for (let i = 0; i < formats.length; i++) {
23928
+ try {
23929
+ const formatter = DateTimeFormatter.ofPattern(formats[i]);
23930
+ return convert(LocalDate.parse(value, formatter)).toDate();
23931
+ }
23932
+ catch (e) {
23933
+ // ignore
23934
+ }
23935
+ }
23936
+ this.logger.trace('Could not parse "' + value + '" to date!');
23937
+ return null;
23938
+ }
23939
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: CustomDateAdapter, deps: [{ token: MAT_DATE_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable }); }
23875
23940
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: CustomDateAdapter }); }
23876
23941
  }
23877
23942
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: CustomDateAdapter, decorators: [{
23878
23943
  type: Injectable
23879
- }] });
23944
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
23945
+ type: Inject,
23946
+ args: [MAT_DATE_LOCALE]
23947
+ }] }]; } });
23880
23948
 
23881
23949
  class PeriodBucket {
23882
23950
  /***************************************************************************
@@ -24187,7 +24255,7 @@ class ElderLocalDateInputComponent extends ElderFormFieldControlBase {
24187
24255
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalDateInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
24188
24256
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: { zone: "zone", autoDatePicker: "autoDatePicker", arrows: "arrows", today: "today", center: "center", datePickerTouchUi: "datePickerTouchUi", allowNull: "allowNull", datePickerEnabled: "datePickerEnabled", isoValue: "isoValue", dateValue: "dateValue", isoDateValue: "isoDateValue" }, outputs: { blurred: "blurred", valueUpdatedBlur: "valueUpdatedBlur", isoValueChange: "isoValueChange", dateValueChange: "dateValueChange", isoDateValueChange: "isoDateValueChange" }, providers: [
24189
24257
  { provide: MatFormFieldControl, useExisting: ElderLocalDateInputComponent },
24190
- ], viewQueries: [{ propertyName: "picker", first: true, predicate: MatDatepicker, descendants: true, static: true }, { propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-center elder-flex-control\"\n>\n\n <button mat-icon-button type=\"button\" *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <input matInput elderNoSpinner class=\"flex elder-mdc-input-fix elder-local-date-input\" #input\n type=\"date\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"date$ | async | date: 'yyyy-MM-dd'\"\n (ngModelChange)=\"onDateInputChanged($event)\"\n (blur)=\"blurred.next($event)\"\n [class.elder-auto-date-picker]=\"autoDatePicker\"\n [class.noselect]=\"autoDatePicker\"\n [class.center]=\"center || arrows\"\n (click)=\"onDateInputClicked($event)\"\n >\n <input style=\"display: none\" [matDatepicker]=\"picker\" (dateChange)=\"onDatepickerInputChange($event)\">\n\n <button mat-icon-button type=\"button\" *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\">\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\" *ngIf=\"today\"\n class=\"elder-control-icon-button\" style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\">\n <mat-icon>today</mat-icon>\n </button>\n\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n *ngIf=\"datePickerEnabled && (!allowNull || (value$ | async) === null)\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"allowNull && (value$ | async)\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\" aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n\n</div>\n\n\n\n", styles: ["input::-webkit-calendar-picker-indicator{display:none}.elder-auto-date-picker{cursor:pointer}.elder-local-date-input.center{text-align:center}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.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: i5$5.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i5$5.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i5$5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i5$5.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24258
+ ], viewQueries: [{ propertyName: "picker", first: true, predicate: MatDatepicker, descendants: true, static: true }, { propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-center elder-flex-control\"\n>\n\n <button mat-icon-button type=\"button\" *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\">\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <input matInput elderNoSpinner class=\"flex elder-mdc-input-fix elder-local-date-input\" #input\n type=\"date\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"date$ | async | date: 'yyyy-MM-dd'\"\n (ngModelChange)=\"onDateInputChanged($event)\"\n (blur)=\"blurred.next($event)\"\n [class.elder-auto-date-picker]=\"autoDatePicker\"\n [class.noselect]=\"autoDatePicker\"\n [class.center]=\"center || arrows\"\n (click)=\"onDateInputClicked($event)\"\n >\n <input style=\"display: none\" [matDatepicker]=\"picker\" (dateChange)=\"onDatepickerInputChange($event)\">\n\n <button mat-icon-button type=\"button\" *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\">\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\" *ngIf=\"today\"\n class=\"elder-control-icon-button\" style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\">\n <mat-icon>today</mat-icon>\n </button>\n\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n *ngIf=\"datePickerEnabled && (!allowNull || (value$ | async) === null)\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n\n <button mat-icon-button type=\"button\" class=\"elder-control-icon-button\"\n *ngIf=\"allowNull && (value$ | async)\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\" aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n\n</div>\n\n\n\n", styles: ["input::-webkit-calendar-picker-indicator{display:none}.elder-auto-date-picker{cursor:pointer}.elder-local-date-input.center{text-align:center}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$3.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$1.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6$1.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i6$1.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24191
24259
  }
24192
24260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalDateInputComponent, decorators: [{
24193
24261
  type: Component,
@@ -24296,7 +24364,7 @@ class ElderDateSwitcherComponent extends FormFieldBaseComponent {
24296
24364
  : a === b;
24297
24365
  }
24298
24366
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDateSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDateSwitcherComponent, selector: "elder-date-switcher", inputs: { datePickerEnabled: "datePickerEnabled", datePickerTouchUi: "datePickerTouchUi", dense: "dense", date: "date" }, outputs: { dateChange: "dateChange" }, host: { classAttribute: "elder-form-field-host" }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), usesInheritance: true, ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"flex full\" [elderDense]=\"dense\">\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24367
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDateSwitcherComponent, selector: "elder-date-switcher", inputs: { datePickerEnabled: "datePickerEnabled", datePickerTouchUi: "datePickerTouchUi", dense: "dense", date: "date" }, outputs: { dateChange: "dateChange" }, host: { classAttribute: "elder-form-field-host" }, providers: buildFormIntegrationProviders(ElderDateSwitcherComponent), usesInheritance: true, ngImport: i0, template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"flex full\" [elderDense]=\"dense\">\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n <elder-local-date-input\n arrows today autoDatePicker datePickerTouchUi\n [datePickerEnabled]=\"false\"\n [datePickerTouchUi]=\"datePickerTouchUi\"\n [value]=\"value$ | async\"\n (valueUpdated)=\"updateValue($event)\"\n >\n </elder-local-date-input>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24300
24368
  }
24301
24369
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDateSwitcherComponent, decorators: [{
24302
24370
  type: Component,
@@ -24384,7 +24452,7 @@ class ElderDateTimeInputComponent extends ElderFormFieldControlBase {
24384
24452
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDateTimeInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
24385
24453
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDateTimeInputComponent, selector: "elder-date-time-input", inputs: { center: "center", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [
24386
24454
  { provide: MatFormFieldControl, useExisting: ElderDateTimeInputComponent },
24387
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input matInput class=\"flex-grow elder-mdc-input-fix elder-datetime-local-input\" #input\n [name]=\"ngControl?.name + '-inner-input'\"\n type=\"datetime-local\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"valueDate$ | async | date:'yyyy-MM-ddTHH:mm'\"\n (ngModelChange)=\"onDateTimeChanged($event)\"\n [class.center]=\"center\"\n >\n</div>\n", styles: [".elder-datetime-local-input.center{text-align:center}\n"], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.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: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24455
+ ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input matInput class=\"flex-grow elder-mdc-input-fix elder-datetime-local-input\" #input\n [name]=\"ngControl?.name + '-inner-input'\"\n type=\"datetime-local\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"valueDate$ | async | date:'yyyy-MM-ddTHH:mm'\"\n (ngModelChange)=\"onDateTimeChanged($event)\"\n [class.center]=\"center\"\n >\n</div>\n", styles: [".elder-datetime-local-input.center{text-align:center}\n"], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$3.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: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24388
24456
  }
24389
24457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDateTimeInputComponent, decorators: [{
24390
24458
  type: Component,
@@ -24469,7 +24537,7 @@ class ElderLocalTimeInputComponent extends ElderFormFieldControlBase {
24469
24537
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalTimeInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
24470
24538
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalTimeInputComponent, selector: "elder-local-time-input", inputs: { isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [
24471
24539
  { provide: MatFormFieldControl, useExisting: ElderLocalTimeInputComponent },
24472
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input matInput class=\"flex-grow elder-mdc-input-fix\" #input\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n type=\"time\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"hourMinuteStr$ | async\"\n (ngModelChange)=\"onHourMinuteChanged($event)\">\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.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: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24540
+ ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n class=\"layout-row place-start-baseline elder-flex-control\"\n>\n <input matInput class=\"flex-grow elder-mdc-input-fix\" #input\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholder | translate\"\n type=\"time\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"hourMinuteStr$ | async\"\n (ngModelChange)=\"onHourMinuteChanged($event)\">\n</div>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$3.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: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24473
24541
  }
24474
24542
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalTimeInputComponent, decorators: [{
24475
24543
  type: Component,
@@ -24495,7 +24563,7 @@ class ElderIntervalInputComponent extends ElderFormFieldControlBase {
24495
24563
  * Constructor *
24496
24564
  * *
24497
24565
  **************************************************************************/
24498
- constructor(hostRef, zone, focusMonitor, translateService, ngControl) {
24566
+ constructor(hostRef, zone, focusMonitor, translateService, ngControl, customDateAdapter, matDateLocale) {
24499
24567
  super(hostRef, 'interval-input', // => mat-mdc-form-field-type-interval-input
24500
24568
  focusMonitor, translateService, ngControl);
24501
24569
  this.ngControl = ngControl;
@@ -24513,6 +24581,7 @@ class ElderIntervalInputComponent extends ElderFormFieldControlBase {
24513
24581
  this.endLocalDate$ = this.value$.pipe(map(interval => interval?.end ? LocalDate.from(interval.end.atZone(this.zone)) : null));
24514
24582
  this.startDate$ = this.mapIgnoreErrorObservable(this.startLocalDate$, (d) => TimeUtil.localDateToDate(d));
24515
24583
  this.endDate$ = this.mapIgnoreErrorObservable(this.endLocalDate$, (d) => TimeUtil.localDateToDate(d));
24584
+ this.dateformat = LocaleDateFormats.getFormatsOfLocale(matDateLocale)[0].toLowerCase();
24516
24585
  }
24517
24586
  /***************************************************************************
24518
24587
  * *
@@ -24619,20 +24688,23 @@ class ElderIntervalInputComponent extends ElderFormFieldControlBase {
24619
24688
  return of(null);
24620
24689
  }));
24621
24690
  }
24622
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderIntervalInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
24691
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderIntervalInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }, { token: i4$2.DateAdapter }, { token: MAT_DATE_LOCALE }], target: i0.ɵɵFactoryTarget.Component }); }
24623
24692
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderIntervalInputComponent, selector: "elder-interval-input", inputs: { zone: "zone", mode: "mode", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [
24624
24693
  { provide: MatFormFieldControl, useExisting: ElderIntervalInputComponent },
24625
- ], usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\n\n <!-- DATE_TIME_RANGE -->\n <div *ngSwitchCase=\"'date-time-range'\"\n class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n\n <!-- DAY_TIME_RANGE -->\n <div *ngSwitchCase=\"'day-time-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n\n <!-- DATE_RANGE -->\n <div *ngSwitchCase=\"'date-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n placeholder=\"dd.mm.yyyy\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n placeholder=\"dd.mm.yyyy\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n\n <!-- SINGLE_DAY -->\n <div *ngSwitchCase=\"'single-day'\"\n class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n\n</ng-container>\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$5.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i5$5.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i5$5.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i5$5.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i5$5.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i5$5.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ElderDateTimeInputComponent, selector: "elder-date-time-input", inputs: ["center", "isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: ElderLocalTimeInputComponent, selector: "elder-local-time-input", inputs: ["isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24694
+ ], usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\n\n <!-- DATE_TIME_RANGE -->\n <div *ngSwitchCase=\"'date-time-range'\"\n class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n\n <!-- DAY_TIME_RANGE -->\n <div *ngSwitchCase=\"'day-time-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n\n <!-- DATE_RANGE -->\n <div *ngSwitchCase=\"'date-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n\n <!-- SINGLE_DAY -->\n <div *ngSwitchCase=\"'single-day'\"\n class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n\n</ng-container>\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1$4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$1.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i6$1.MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: i6$1.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i6$1.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i6$1.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i6$1.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ElderDateTimeInputComponent, selector: "elder-date-time-input", inputs: ["center", "isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: ElderLocalTimeInputComponent, selector: "elder-local-time-input", inputs: ["isoValue"], outputs: ["isoValueChange"] }, { kind: "component", type: ElderLocalDateInputComponent, selector: "elder-local-date-input", inputs: ["zone", "autoDatePicker", "arrows", "today", "center", "datePickerTouchUi", "allowNull", "datePickerEnabled", "isoValue", "dateValue", "isoDateValue"], outputs: ["blurred", "valueUpdatedBlur", "isoValueChange", "dateValueChange", "isoDateValueChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24626
24695
  }
24627
24696
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderIntervalInputComponent, decorators: [{
24628
24697
  type: Component,
24629
24698
  args: [{ selector: 'elder-interval-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
24630
24699
  { provide: MatFormFieldControl, useExisting: ElderIntervalInputComponent },
24631
- ], template: "<ng-container [ngSwitch]=\"mode\">\n\n <!-- DATE_TIME_RANGE -->\n <div *ngSwitchCase=\"'date-time-range'\"\n class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n\n <!-- DAY_TIME_RANGE -->\n <div *ngSwitchCase=\"'day-time-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n\n <!-- DATE_RANGE -->\n <div *ngSwitchCase=\"'date-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n placeholder=\"dd.mm.yyyy\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n placeholder=\"dd.mm.yyyy\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n\n <!-- SINGLE_DAY -->\n <div *ngSwitchCase=\"'single-day'\"\n class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n\n</ng-container>\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"] }]
24700
+ ], template: "<ng-container [ngSwitch]=\"mode\">\n\n <!-- DATE_TIME_RANGE -->\n <div *ngSwitchCase=\"'date-time-range'\"\n class=\"layout-row\">\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n <span class=\"mat-date-range-input-separator flex-none\">\u2013</span>\n <elder-date-time-input class=\"flex\" center\n [value]=\"(value$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n\n <!-- DAY_TIME_RANGE -->\n <div *ngSwitchCase=\"'day-time-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(value$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.from' | translate)\"\n ></elder-date-time-input>\n\n <!-- [name]=\"name + '-day-end'\" -->\n <elder-local-time-input\n [value]=\"endTime$ | async\"\n (valueUpdated)=\"onDayTimeEndTimeChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '') + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n\n <!-- DATE_RANGE -->\n <div *ngSwitchCase=\"'date-range'\"\n class=\"layout-row gap-xs elder-flex-interval-control\">\n\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\" name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n <input matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\" name=\"date-range.end\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur'}\"\n (ngModelChange)=\"onEndDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n >\n </mat-date-range-input>\n <mat-datepicker-toggle class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n\n <!-- SINGLE_DAY -->\n <div *ngSwitchCase=\"'single-day'\"\n class=\"layout-row elder-flex-control\">\n\n <!-- [name]=\"name\" -->\n <elder-local-date-input class=\"flex\" center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeholder || '')\"\n ></elder-local-date-input>\n </div>\n\n</ng-container>\n\n\n\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"] }]
24632
24701
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.FocusMonitor }, { type: i2.TranslateService }, { type: i3.NgControl, decorators: [{
24633
24702
  type: Optional
24634
24703
  }, {
24635
24704
  type: Self
24705
+ }] }, { type: i4$2.DateAdapter }, { type: undefined, decorators: [{
24706
+ type: Inject,
24707
+ args: [MAT_DATE_LOCALE]
24636
24708
  }] }]; }, propDecorators: { zone: [{
24637
24709
  type: Input
24638
24710
  }], mode: [{
@@ -24728,7 +24800,7 @@ class ElderDurationInputComponent extends ElderFormFieldControlBase {
24728
24800
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDurationInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
24729
24801
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderDurationInputComponent, selector: "elder-duration-input", inputs: { isoValue: "isoValue", format: "format", durationFormat: "durationFormat" }, outputs: { isoValueChange: "isoValueChange" }, providers: [
24730
24802
  { provide: MatFormFieldControl, useExisting: ElderDurationInputComponent },
24731
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-center flex-none\" *ngIf=\"durationContext$ | async as durationCtx\">\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.days\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-days'\"\n type=\"number\" class=\"duration-input duration-input-days flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.days)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withDays($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.hours\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-hours'\"\n type=\"number\" class=\"duration-input duration-input-hours flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.hours)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withHours($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">h</span>\n </div>\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.minutes\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-minutes'\"\n type=\"number\" class=\"duration-input duration-input-minutes flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.minutes)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withMinutes($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">min</span>\n </div>\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.seconds\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-seconds'\"\n type=\"number\" class=\"duration-input duration-input-seconds flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.seconds)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withSeconds($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">sec</span>\n </div>\n\n</div>\n", styles: [".suffix{opacity:.7}.duration-input{text-align:right}.duration-input-days{min-width:26px}.duration-input-hours{min-width:20px}.duration-input-minutes,.duration-input-seconds{min-width:26px}input.duration-input::-webkit-outer-spin-button,input.duration-input::-webkit-inner-spin-button{display:none}input.duration-input{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.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: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24803
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-center flex-none\" *ngIf=\"durationContext$ | async as durationCtx\">\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.days\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-days'\"\n type=\"number\" class=\"duration-input duration-input-days flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.days)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withDays($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.hours\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-hours'\"\n type=\"number\" class=\"duration-input duration-input-hours flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.hours)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withHours($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">h</span>\n </div>\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.minutes\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-minutes'\"\n type=\"number\" class=\"duration-input duration-input-minutes flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.minutes)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withMinutes($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">min</span>\n </div>\n\n <div class=\"layout-row place-start-baseline duration-field flex\" *ngIf=\"durationCtx.format.seconds\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-seconds'\"\n type=\"number\" class=\"duration-input duration-input-seconds flex-auto\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(durationCtx?.bucket?.seconds)\"\n (ngModelChange)=\"onBucketChanged(durationCtx.bucket.withSeconds($event))\">\n <span class=\"mat-caption suffix flex-none noselect\">sec</span>\n </div>\n\n</div>\n", styles: [".suffix{opacity:.7}.duration-input{text-align:right}.duration-input-days{min-width:26px}.duration-input-hours{min-width:20px}.duration-input-minutes,.duration-input-seconds{min-width:26px}input.duration-input::-webkit-outer-spin-button,input.duration-input::-webkit-inner-spin-button{display:none}input.duration-input{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$3.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: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24732
24804
  }
24733
24805
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderDurationInputComponent, decorators: [{
24734
24806
  type: Component,
@@ -24843,7 +24915,7 @@ class ElderPeriodInputComponent extends ElderFormFieldControlBase {
24843
24915
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderPeriodInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
24844
24916
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderPeriodInputComponent, selector: "elder-period-input", inputs: { isoValue: "isoValue", format: "format", periodFormat: "periodFormat" }, outputs: { isoValueChange: "isoValueChange" }, providers: [
24845
24917
  { provide: MatFormFieldControl, useExisting: ElderPeriodInputComponent },
24846
- ], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-center flex-none\" *ngIf=\"periodContext$ | async as periodCtx\">\n\n <div class=\"layout-row place-start-baseline flex period-field\" *ngIf=\"periodCtx.format.days\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-days'\"\n type=\"number\" class=\"period-input\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(periodCtx?.bucket?.days)\"\n (ngModelChange)=\"onBucketChanged(periodCtx.bucket.withDays($event))\">\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n\n <div class=\"layout-row place-start-baseline flex period-field\" *ngIf=\"periodCtx.format.months\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-months'\"\n type=\"number\" class=\"period-input\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(periodCtx?.bucket?.months)\"\n (ngModelChange)=\"onBucketChanged(periodCtx.bucket.withMonths($event))\">\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">mnt</span>\n </div>\n\n <div class=\"layout-row place-start-baseline flex period-field\" *ngIf=\"periodCtx.format.years\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-years'\"\n type=\"number\" class=\"period-input\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(periodCtx?.bucket?.years)\"\n (ngModelChange)=\"onBucketChanged(periodCtx.bucket.withYears($event))\">\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">yrs</span>\n </div>\n\n\n</div>\n", styles: [".suffix{opacity:.7}.period-input{text-align:right}input.period-input::-webkit-outer-spin-button,input.period-input::-webkit-inner-spin-button{display:none}input.period-input{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.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: "directive", type: i5$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24918
+ ], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-center flex-none\" *ngIf=\"periodContext$ | async as periodCtx\">\n\n <div class=\"layout-row place-start-baseline flex period-field\" *ngIf=\"periodCtx.format.days\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-days'\"\n type=\"number\" class=\"period-input\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(periodCtx?.bucket?.days)\"\n (ngModelChange)=\"onBucketChanged(periodCtx.bucket.withDays($event))\">\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n\n <div class=\"layout-row place-start-baseline flex period-field\" *ngIf=\"periodCtx.format.months\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-months'\"\n type=\"number\" class=\"period-input\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(periodCtx?.bucket?.months)\"\n (ngModelChange)=\"onBucketChanged(periodCtx.bucket.withMonths($event))\">\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">mnt</span>\n </div>\n\n <div class=\"layout-row place-start-baseline flex period-field\" *ngIf=\"periodCtx.format.years\">\n <input matInput elderNoSpinner\n [name]=\"ngControl?.name + '-inner-years'\"\n type=\"number\" class=\"period-input\"\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"round(periodCtx?.bucket?.years)\"\n (ngModelChange)=\"onBucketChanged(periodCtx.bucket.withYears($event))\">\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">yrs</span>\n </div>\n\n\n</div>\n", styles: [".suffix{opacity:.7}.period-input{text-align:right}input.period-input::-webkit-outer-spin-button,input.period-input::-webkit-inner-spin-button{display:none}input.period-input{-moz-appearance:textfield}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$3.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: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24847
24919
  }
24848
24920
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderPeriodInputComponent, decorators: [{
24849
24921
  type: Component,
@@ -25167,7 +25239,7 @@ class ElderLocalizedInputTableComponent extends FormFieldBaseComponent {
25167
25239
  return localizables;
25168
25240
  }
25169
25241
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalizedInputTableComponent, deps: [{ token: ElderToastService }, { token: ElderLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
25170
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalizedInputTableComponent, selector: "elder-localized-input-table", inputs: { dense: "dense", float: "float", embedded: "embedded", textColumns: "textColumns", defaultLanguageTags: "defaultLanguageTags" }, providers: buildFormIntegrationProviders(ElderLocalizedInputTableComponent), queries: [{ propertyName: "textColumnsQuery", predicate: ElderLocalizedTextColumnDirective }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-col full\">\n <elder-table matSort class=\"flex\"\n [data]=\"data\"\n [selectionVisible]=\"true\"\n [selectionMultiEnabled]=\"true\"\n [dense]=\"dense\"\n [float]=\"float\"\n [embedded]=\"embedded\"\n >\n\n <elder-data-toolbar\n *elderTableToolbar\n [canAdd]=\"!isLocked\"\n [canRemove]=\"!isLocked\"\n [canMore]=\"false\"\n (requestNew)=\"onNewRequested()\"\n (requestRemove)=\"onRemoveRequested($event)\"\n >\n\n <ng-template elderToolbarContent=\"left.actions\">\n <div class=\"layout-col place-start-center\">\n <h4 elderCardSubtitle style=\"margin: 0\">{{label ?? placeholder}}</h4>\n </div>\n </ng-template>\n\n </elder-data-toolbar>\n\n <ng-container matColumnDef=\"locale\">\n <th mat-header-cell *matHeaderCellDef style=\"width: 100px\" mat-sort-header>Locale</th>\n <td mat-cell *matCellDef=\"let localized\">\n <mat-chip-set><mat-chip>{{localized.locale}}</mat-chip></mat-chip-set>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let textColumn of textColumns$ | async\" matColumnDef=\"{{textColumn.name}}\">\n <th mat-header-cell *matHeaderCellDef>{{textColumn.title | translate}}</th>\n <td mat-cell *matCellDef=\"let localized\">\n\n <div class=\"layout-row place-center-center\">\n <mat-form-field class=\"full-width\" appearance=\"fill\" elderDense>\n <!--\n <mat-label>{{textColumn.title | translate}} ({{localized.locale}})</mat-label>\n -->\n <!--\n <span matTextPrefix>{{textColumn.title | translate}}</span>\n -->\n <input\n matInput\n type=\"text\"\n name=\"i18n-{{localized.locale}}-{{textColumn.name}}\"\n [ngModel]=\"localized[textColumn.name]\" [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"onColumnTextUpdated(localized, textColumn, $event)\"\n [required]=\"required && textColumn.required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n />\n </mat-form-field>\n </div>\n\n\n\n </td>\n </ng-container>\n\n </elder-table>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ElderTableComponent, selector: "elder-table", inputs: ["idField", "removingField", "hiddenField", "pageSizeOptions", "keepSelection", "showFooter", "toolbarTemplate", "data", "displayedColumns", "selectionVisible"] }, { kind: "directive", type: ElderTableToolbarDirective, selector: "[elderTableToolbar]" }, { kind: "component", type: ElderDataToolbarComponent, selector: "elder-data-toolbar", inputs: ["canAdd", "canRemove", "canMore", "confirmRemoval", "keepSelectionAfterRemoval", "selectionModel"], outputs: ["requestNew", "requestRemove"] }, { kind: "directive", type: ElderToolbarContentDirective, selector: "[elderToolbarContent]", inputs: ["elderToolbarContent"] }, { kind: "component", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: ElderCardSubtitleDirective, selector: "elder-card-subtitle, [elder-card-subtitle], [elderCardSubtitle]" }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25242
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalizedInputTableComponent, selector: "elder-localized-input-table", inputs: { dense: "dense", float: "float", embedded: "embedded", textColumns: "textColumns", defaultLanguageTags: "defaultLanguageTags" }, providers: buildFormIntegrationProviders(ElderLocalizedInputTableComponent), queries: [{ propertyName: "textColumnsQuery", predicate: ElderLocalizedTextColumnDirective }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-col full\">\n <elder-table matSort class=\"flex\"\n [data]=\"data\"\n [selectionVisible]=\"true\"\n [selectionMultiEnabled]=\"true\"\n [dense]=\"dense\"\n [float]=\"float\"\n [embedded]=\"embedded\"\n >\n\n <elder-data-toolbar\n *elderTableToolbar\n [canAdd]=\"!isLocked\"\n [canRemove]=\"!isLocked\"\n [canMore]=\"false\"\n (requestNew)=\"onNewRequested()\"\n (requestRemove)=\"onRemoveRequested($event)\"\n >\n\n <ng-template elderToolbarContent=\"left.actions\">\n <div class=\"layout-col place-start-center\">\n <h4 elderCardSubtitle style=\"margin: 0\">{{label ?? placeholder}}</h4>\n </div>\n </ng-template>\n\n </elder-data-toolbar>\n\n <ng-container matColumnDef=\"locale\">\n <th mat-header-cell *matHeaderCellDef style=\"width: 100px\" mat-sort-header>Locale</th>\n <td mat-cell *matCellDef=\"let localized\">\n <mat-chip-set><mat-chip>{{localized.locale}}</mat-chip></mat-chip-set>\n </td>\n </ng-container>\n\n <ng-container *ngFor=\"let textColumn of textColumns$ | async\" matColumnDef=\"{{textColumn.name}}\">\n <th mat-header-cell *matHeaderCellDef>{{textColumn.title | translate}}</th>\n <td mat-cell *matCellDef=\"let localized\">\n\n <div class=\"layout-row place-center-center\">\n <mat-form-field class=\"full-width\" appearance=\"fill\" elderDense>\n <!--\n <mat-label>{{textColumn.title | translate}} ({{localized.locale}})</mat-label>\n -->\n <!--\n <span matTextPrefix>{{textColumn.title | translate}}</span>\n -->\n <input\n matInput\n type=\"text\"\n name=\"i18n-{{localized.locale}}-{{textColumn.name}}\"\n [ngModel]=\"localized[textColumn.name]\" [ngModelOptions]=\"{updateOn: 'blur'}\"\n (ngModelChange)=\"onColumnTextUpdated(localized, textColumn, $event)\"\n [required]=\"required && textColumn.required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n />\n </mat-form-field>\n </div>\n\n\n\n </td>\n </ng-container>\n\n </elder-table>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ElderTableComponent, selector: "elder-table", inputs: ["idField", "removingField", "hiddenField", "pageSizeOptions", "keepSelection", "showFooter", "toolbarTemplate", "data", "displayedColumns", "selectionVisible"] }, { kind: "directive", type: ElderTableToolbarDirective, selector: "[elderTableToolbar]" }, { kind: "component", type: ElderDataToolbarComponent, selector: "elder-data-toolbar", inputs: ["canAdd", "canRemove", "canMore", "confirmRemoval", "keepSelectionAfterRemoval", "selectionModel"], outputs: ["requestNew", "requestRemove"] }, { kind: "directive", type: ElderToolbarContentDirective, selector: "[elderToolbarContent]", inputs: ["elderToolbarContent"] }, { kind: "component", type: i6.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "directive", type: ElderCardSubtitleDirective, selector: "elder-card-subtitle, [elder-card-subtitle], [elderCardSubtitle]" }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25171
25243
  }
25172
25244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalizedInputTableComponent, decorators: [{
25173
25245
  type: Component,
@@ -25195,7 +25267,7 @@ class ElderLocalizedInputDialogComponent {
25195
25267
  ngOnInit() {
25196
25268
  }
25197
25269
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalizedInputDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
25198
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalizedInputDialogComponent, selector: "elder-localized-input-dialog", ngImport: i0, template: "\n<div class=\"layout-col full\">\n\n <mat-toolbar elderTheme color=\"primary\">\n <mat-toolbar-row class=\"gap-sm\">\n <mat-icon class=\"noselect\">translate</mat-icon>\n <h2 class=\"noselect\" translate>{{data.title}}</h2>\n <span class=\"flex\"></span>\n <button *ngIf=\"data.explicitSave\"\n mat-icon-button type=\"submit\"\n [disabled]=\"data.readonly\"\n [mat-dialog-close]=\"data.localizables\"\n >\n <mat-icon>save</mat-icon>\n </button>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-sm\">\n <elder-localized-input-table\n [float]=\"true\" class=\"flex\"\n [textColumns]=\"data.textColumns\"\n [(value)]=\"data.localizables\"\n [readonly]=\"data.readonly\"\n [disabled]=\"data.disabled\"\n [required]=\"data.required\"\n >\n </elder-localized-input-table>\n </div>\n</div>\n\n\n\n\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4$1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "component", type: ElderLocalizedInputTableComponent, selector: "elder-localized-input-table", inputs: ["dense", "float", "embedded", "textColumns", "defaultLanguageTags"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalizedInputDialogComponent, selector: "elder-localized-input-dialog", ngImport: i0, template: "\n<div class=\"layout-col full\">\n\n <mat-toolbar elderTheme color=\"primary\">\n <mat-toolbar-row class=\"gap-sm\">\n <mat-icon class=\"noselect\">translate</mat-icon>\n <h2 class=\"noselect\" translate>{{data.title}}</h2>\n <span class=\"flex\"></span>\n <button *ngIf=\"data.explicitSave\"\n mat-icon-button type=\"submit\"\n [disabled]=\"data.readonly\"\n [mat-dialog-close]=\"data.localizables\"\n >\n <mat-icon>save</mat-icon>\n </button>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-sm\">\n <elder-localized-input-table\n [float]=\"true\" class=\"flex\"\n [textColumns]=\"data.textColumns\"\n [(value)]=\"data.localizables\"\n [readonly]=\"data.readonly\"\n [disabled]=\"data.disabled\"\n [required]=\"data.required\"\n >\n </elder-localized-input-table>\n </div>\n</div>\n\n\n\n\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1$7.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i4$1.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "component", type: ElderLocalizedInputTableComponent, selector: "elder-localized-input-table", inputs: ["dense", "float", "embedded", "textColumns", "defaultLanguageTags"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25199
25271
  }
25200
25272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalizedInputDialogComponent, decorators: [{
25201
25273
  type: Component,
@@ -25408,7 +25480,7 @@ class ElderLocalizedInputComponent extends FormFieldBaseComponent {
25408
25480
  }
25409
25481
  }
25410
25482
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalizedInputComponent, deps: [{ token: ElderLocalizedInputDialogService }, { token: LocalisationPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
25411
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalizedInputComponent, selector: "elder-localized-input", inputs: { textColumns: "textColumns", translatedValue: "translatedValue" }, outputs: { translatedValueChange: "translatedValueChange" }, host: { classAttribute: "elder-form-field-host" }, providers: buildFormIntegrationProviders(ElderLocalizedInputComponent), queries: [{ propertyName: "textColumnsQuery", predicate: ElderLocalizedTextColumnDirective }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [appearance]=\"appearance\"\n [color]=\"color\"\n>\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n\n <mat-icon matPrefix *ngIf=\"icon\"\n [color]=\"color\">\n {{icon}}\n </mat-icon>\n\n <button matSuffix mat-icon-button\n (click)=\"openTranslationPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon>translate</mat-icon>\n </button>\n\n <!-- A dynamic input -->\n <input\n matInput type=\"text\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n readonly\n [name]=\"name + '-localized'\"\n [ngModel]=\"inputText$ | async\" [ngModelOptions]=\"{standalone: true}\"\n >\n\n <mat-hint>{{hintText$ | async}}</mat-hint>\n\n</mat-form-field>\n", styles: [".prefix-padding{padding-right:4px}.leading-icon{font-size:16px;width:16px;height:16px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25483
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderLocalizedInputComponent, selector: "elder-localized-input", inputs: { textColumns: "textColumns", translatedValue: "translatedValue" }, outputs: { translatedValueChange: "translatedValueChange" }, host: { classAttribute: "elder-form-field-host" }, providers: buildFormIntegrationProviders(ElderLocalizedInputComponent), queries: [{ propertyName: "textColumnsQuery", predicate: ElderLocalizedTextColumnDirective }], usesInheritance: true, ngImport: i0, template: "<mat-form-field [appearance]=\"appearance\"\n [color]=\"color\"\n>\n <mat-label *ngIf=\"label\">{{label | translate}}</mat-label>\n\n <mat-icon matPrefix *ngIf=\"icon\"\n [color]=\"color\">\n {{icon}}\n </mat-icon>\n\n <button matSuffix mat-icon-button\n (click)=\"openTranslationPopup($event)\" aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon>translate</mat-icon>\n </button>\n\n <!-- A dynamic input -->\n <input\n matInput type=\"text\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n readonly\n [name]=\"name + '-localized'\"\n [ngModel]=\"inputText$ | async\" [ngModelOptions]=\"{standalone: true}\"\n >\n\n <mat-hint>{{hintText$ | async}}</mat-hint>\n\n</mat-form-field>\n", styles: [".prefix-padding{padding-right:4px}.leading-icon{font-size:16px;width:16px;height:16px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25412
25484
  }
25413
25485
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderLocalizedInputComponent, decorators: [{
25414
25486
  type: Component,
@@ -26206,7 +26278,7 @@ class ElderSearchBoxComponent {
26206
26278
  this.searchModel.reset();
26207
26279
  }
26208
26280
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderSearchBoxComponent, deps: [{ token: ElderSearchContextDirective }], target: i0.ɵɵFactoryTarget.Component }); }
26209
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderSearchBoxComponent, selector: "elder-search-box", inputs: { autoPanel: "autoPanel", name: "name", queryKey: "queryKey", placeholder: "placeholder", label: "label", hint: "hint", autocomplete: "autocomplete", appearance: "appearance", dense: "dense" }, host: { classAttribute: "elder-form-field-host" }, queries: [{ propertyName: "advancedSearch", first: true, predicate: ElderSearchPanelComponent, descendants: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\">\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5$1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "component", type: ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputKey", "elderSearchInputTransform", "elderSearchInput", "elderSearchInputFallback"], exportAs: ["elderSearchInput"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderSearchBoxComponent, selector: "elder-search-box", inputs: { autoPanel: "autoPanel", name: "name", queryKey: "queryKey", placeholder: "placeholder", label: "label", hint: "hint", autocomplete: "autocomplete", appearance: "appearance", dense: "dense" }, host: { classAttribute: "elder-form-field-host" }, queries: [{ propertyName: "advancedSearch", first: true, predicate: ElderSearchPanelComponent, descendants: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\" style=\"overflow: hidden\">\n <mat-form-field\n *ngIf=\"overlayState$ | async as overlayState\"\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto\" subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\">\n\n <button matPrefix mat-icon-button type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input matInput type=\"text\" [name]=\"name\" [placeholder]=\"placeholder\" #search cdkFocusInitial\n ngModel\n elderSearchInput [elderSearchInputKey]=\"queryKey\" #searchInput=\"elderSearchInput\"\n [autocomplete]=\"(autoPanel && overlayState.hasOverlay) ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"autoPanel && overlayState.hasOverlay && (searchInput?.state$ | async)?.pristine\"\n >\n <mat-hint *ngIf=\"hint\">{{hint}}</mat-hint>\n\n <div class=\"layout-row\" matSuffix *ngIf=\"searchModel.userDefinedAttributes$ | async as userDefinedFilters\">\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"userDefinedFilters.length > 0\"\n (click)=\"clearSearch($event)\"\n name=\"clear\" aria-label=\"Clear\">\n <mat-icon>close</mat-icon>\n </button>\n\n <button mat-icon-button type=\"button\"\n *ngIf=\"overlayState.hasOverlay\" name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\" (click)=\"blurFocus($event)\">\n <mat-icon\n [matBadge]=\"userDefinedFilters.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"userDefinedFilters.length == 0\"\n matBadgeColor=\"accent\"\n [color]=\"userDefinedFilters.length > 0 ? 'accent' : undefined\"\n >\n filter_list\n </mat-icon>\n </button>\n </div>\n </mat-form-field>\n</div>\n\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n\n <!-- Project the users search inputs here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-raised-button type=\"button\" name=\"clear\"\n (click)=\"clearSearch($event)\">{{'context.reset' | translate}}\n </button>\n\n <button mat-raised-button type=\"button\" name=\"ok\" color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\">Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-box-field{margin-top:4px;margin-bottom:4px}.elder-search-panel-container{min-width:250px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "directive", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "component", type: ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputKey", "elderSearchInputTransform", "elderSearchInput", "elderSearchInputFallback"], exportAs: ["elderSearchInput"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26210
26282
  }
26211
26283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderSearchBoxComponent, decorators: [{
26212
26284
  type: Component,
@@ -26775,7 +26847,7 @@ class HttpDataTransferComponent {
26775
26847
  }
26776
26848
  }
26777
26849
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: HttpDataTransferComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26778
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{statusIcon(state)}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26850
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: HttpDataTransferComponent, selector: "elder-data-transfer", inputs: { transfer: "transfer" }, ngImport: i0, template: "\n\n<div *ngIf=\"($state | async) as state\"\n class=\"layout-row place-start-center gap-lg flex p-md transfer\"\n>\n\n <div class=\"layout-col place-center-center flex-10\">\n <mat-icon class=\"noselect\">\n {{statusIcon(state)}}\n </mat-icon>\n\n <!--\n <mat-icon\n *ngIf=\"!(statusOf(file)?.error | async) && (statusOf(file)?.progress | async) === 100\"\n class=\"green-icon\"\n >check</mat-icon>\n -->\n\n </div>\n\n\n <div class=\"layout-col flex-80\" style=\"overflow: hidden\">\n\n <span class=\"mat-subtitle-2 noselect title\">{{transfer.name}}</span>\n\n <mat-progress-bar\n [matTooltip]=\"state.error?.message\"\n [color]=\"(state.error ? 'warn' : '')\"\n mode=\"determinate\"\n [value]=\"state.progress.percentDone\"\n ></mat-progress-bar>\n\n <span class=\"mat-caption noselect\">{{($detail | async)}}</span>\n\n </div>\n\n\n <div class=\"layout-col place-center-center flex-10\">\n <button mat-icon-button type=\"button\"\n (click)=\"transfer.abort()\" [disabled]=\"state.isDone\">\n <mat-icon>\n close\n </mat-icon>\n </button>\n </div>\n\n</div>\n", styles: [".transfer{overflow:hidden}.title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-bottom:5px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26779
26851
  }
26780
26852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: HttpDataTransferComponent, decorators: [{
26781
26853
  type: Component,
@@ -26888,7 +26960,7 @@ class HttpDataTransferAggregateComponent {
26888
26960
  this.aggregate$ = this.transferService.transferAggregate;
26889
26961
  }
26890
26962
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: HttpDataTransferAggregateComponent, deps: [{ token: ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component }); }
26891
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: { hiddenWhenInactive: "hiddenWhenInactive" }, ngImport: i0, template: "<ng-container *ngIf=\"(aggregate$ | async) as aggregate\">\n\n <div *ngIf=\"!hiddenWhenInactive || aggregate.inTransfer > 0\" class=\"layout-col flex\">\n <div class=\"layout-row place-center-center\">\n <span>{{aggregate.bps}}</span>\n </div>\n\n <mat-progress-bar\n [color]=\"'accent'\"\n mode=\"determinate\"\n [value]=\"aggregate.percentDone\"\n\n ></mat-progress-bar>\n\n <div class=\"layout-row\">\n <!--\n <span class=\"mat-caption\">{{aggregate.doneBytesAgg | bytes:1}}</span>\n -->\n <span class=\"mat-caption\">{{aggregate.percentDone}}%</span>\n\n <span class=\"flex\"></span>\n <span class=\"mat-caption\">TOTAL {{aggregate.totalBytesAgg | bytes:1}}</span>\n </div>\n </div>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: BytesPipe, name: "bytes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26963
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: HttpDataTransferAggregateComponent, selector: "elder-data-transfer-aggregate", inputs: { hiddenWhenInactive: "hiddenWhenInactive" }, ngImport: i0, template: "<ng-container *ngIf=\"(aggregate$ | async) as aggregate\">\n\n <div *ngIf=\"!hiddenWhenInactive || aggregate.inTransfer > 0\" class=\"layout-col flex\">\n <div class=\"layout-row place-center-center\">\n <span>{{aggregate.bps}}</span>\n </div>\n\n <mat-progress-bar\n [color]=\"'accent'\"\n mode=\"determinate\"\n [value]=\"aggregate.percentDone\"\n\n ></mat-progress-bar>\n\n <div class=\"layout-row\">\n <!--\n <span class=\"mat-caption\">{{aggregate.doneBytesAgg | bytes:1}}</span>\n -->\n <span class=\"mat-caption\">{{aggregate.percentDone}}%</span>\n\n <span class=\"flex\"></span>\n <span class=\"mat-caption\">TOTAL {{aggregate.totalBytesAgg | bytes:1}}</span>\n </div>\n </div>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$2.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: BytesPipe, name: "bytes" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26892
26964
  }
26893
26965
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: HttpDataTransferAggregateComponent, decorators: [{
26894
26966
  type: Component,
@@ -26940,7 +27012,7 @@ class HttpDataTransferIndicatorComponent {
26940
27012
  this.aggregate$ = this.transferService.transferAggregate;
26941
27013
  }
26942
27014
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: HttpDataTransferIndicatorComponent, deps: [{ token: ElderDataTransferService }], target: i0.ɵɵFactoryTarget.Component }); }
26943
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: HttpDataTransferIndicatorComponent, selector: "elder-data-transfer-indicator", inputs: { activeColor: "activeColor", inactiveColor: "inactiveColor" }, ngImport: i0, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n <button mat-icon-button type=\"button\"\n class=\"layout-row place-center-center\"\n [elderOverlayTrigger]=\"overlay\">\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"24\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;border-radius:4px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i2$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i6$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27015
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: HttpDataTransferIndicatorComponent, selector: "elder-data-transfer-indicator", inputs: { activeColor: "activeColor", inactiveColor: "inactiveColor" }, ngImport: i0, template: "\n<ng-container *ngIf=\"aggregate$ | async as aggregate\">\n <button mat-icon-button type=\"button\"\n class=\"layout-row place-center-center\"\n [elderOverlayTrigger]=\"overlay\">\n <mat-icon *ngIf=\"aggregate.inTransfer == 0\" [color]=\"inactiveColor\">cloud_upload</mat-icon>\n <mat-progress-spinner\n *ngIf=\"aggregate.inTransfer > 0\"\n [matBadge]=\"aggregate.inTransfer\"\n matBadgePosition=\"above after\"\n matBadgeSize=\"small\"\n [matBadgeColor]=\"activeColor\"\n [color]=\"activeColor\"\n [strokeWidth]=\"3\"\n [diameter]=\"24\"\n [value]=\"aggregate.percentDone\"\n mode=\"determinate\"\n >\n </mat-progress-spinner>\n </button>\n</ng-container>\n\n<elder-overlay #overlay=\"elderOverlay\" originX=\"center\" overlayX=\"center\">\n <elder-data-transfer-overview class=\"panel\">\n </elder-data-transfer-overview>\n</elder-overlay>\n\n", styles: [".panel{width:380px;height:350px;border-radius:4px;overflow:hidden;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i2$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: i6$2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ElderOverlayComponent, selector: "elder-overlay", inputs: ["originX", "originY", "overlayX", "overlayY", "offsetY", "offsetX", "backdrop", "backdropVisible", "origin", "positionStrategy", "overlaySize"], outputs: ["keydownEvents", "attachedChange"], exportAs: ["elderOverlay"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: HttpDataTransferOverviewComponent, selector: "elder-data-transfer-overview" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26944
27016
  }
26945
27017
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: HttpDataTransferIndicatorComponent, decorators: [{
26946
27018
  type: Component,
@@ -27092,7 +27164,7 @@ class ElderOfflineIndicatorComponent {
27092
27164
  return this.connectivityService.online$;
27093
27165
  }
27094
27166
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderOfflineIndicatorComponent, deps: [{ token: ElderConnectivityService }], target: i0.ɵɵFactoryTarget.Component }); }
27095
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderOfflineIndicatorComponent, selector: "elder-offline-indicator", ngImport: i0, template: "\n\n<ng-container *ngIf=\"(status$ | async) as status\">\n <button mat-icon-button type=\"button\" color=\"warn\"\n *ngIf=\"!status.online\"\n matTooltip=\"Lost Internet Connection, {{status.timeStamp | timeAgo}}\"\n >\n <mat-icon>offline_bolt</mat-icon>\n </button>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27167
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderOfflineIndicatorComponent, selector: "elder-offline-indicator", ngImport: i0, template: "\n\n<ng-container *ngIf=\"(status$ | async) as status\">\n <button mat-icon-button type=\"button\" color=\"warn\"\n *ngIf=\"!status.online\"\n matTooltip=\"Lost Internet Connection, {{status.timeStamp | timeAgo}}\"\n >\n <mat-icon>offline_bolt</mat-icon>\n </button>\n</ng-container>\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27096
27168
  }
27097
27169
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderOfflineIndicatorComponent, decorators: [{
27098
27170
  type: Component,
@@ -27462,7 +27534,7 @@ class ElderGlobalSearchComponent {
27462
27534
  return '';
27463
27535
  }
27464
27536
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderGlobalSearchComponent, deps: [{ token: i1$3.Router }, { token: ElderGlobalSearchService }], target: i0.ɵɵFactoryTarget.Component }); }
27465
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderGlobalSearchComponent, selector: "elder-global-search", inputs: { hideWhenDisabled: "hideWhenDisabled", searchCollapsed: "searchCollapsed" }, outputs: { searchCollapsedChange: "searchCollapsedChange" }, viewQueries: [{ propertyName: "txtSearch", first: true, predicate: ["txtSearch"], descendants: true }], ngImport: i0, template: "<div class=\"layout-row place-center-center\">\n\n <span *ngIf=\"searchCollapsed\" class=\"flex\"></span>\n\n\n <div *ngIf=\"!searchCollapsed\" class=\"layout-row place-center-center flex\">\n\n <!-- Query Keywords -->\n <mat-form-field color=\"accent\" floatPlaceholder=\"never\" class=\"flex\">\n <mat-icon matPrefix>search</mat-icon>\n <input matInput type=\"search\"\n (keyup)=\"onQueryChanged()\"\n #txtSearch>\n </mat-form-field>\n\n <!-- Sort -->\n <mat-menu #sortMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let sort of availableSort\"\n class=\"layout-row place-between-center\"\n (click)=\"sortBy(sort)\"\n >\n {{sort.name | translate}}\n <mat-icon *ngIf=\"selectedSort?.id==sort.id\">check</mat-icon>\n </button>\n </mat-menu>\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n [matMenuTriggerFor]=\"sortMenu\">\n <mat-icon>sort</mat-icon>\n </button>\n\n <!-- Sort Asc/Desc-->\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n (click)=\"toggleSortAsc()\">\n <mat-icon>{{sortAsc ? \"arrow_downward\" : \"arrow_upward\"}}</mat-icon>\n </button>\n </div>\n\n\n <!-- Toggle Global Search -->\n <button mat-icon-button type=\"button\"\n *ngIf=\"!isSearchHidden\"\n (click)=\"toggleSearch()\"\n [disabled]=\"globalSearchDisabled\" >\n <mat-icon>{{toggleIcon}}</mat-icon>\n </button>\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
27537
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderGlobalSearchComponent, selector: "elder-global-search", inputs: { hideWhenDisabled: "hideWhenDisabled", searchCollapsed: "searchCollapsed" }, outputs: { searchCollapsedChange: "searchCollapsedChange" }, viewQueries: [{ propertyName: "txtSearch", first: true, predicate: ["txtSearch"], descendants: true }], ngImport: i0, template: "<div class=\"layout-row place-center-center\">\n\n <span *ngIf=\"searchCollapsed\" class=\"flex\"></span>\n\n\n <div *ngIf=\"!searchCollapsed\" class=\"layout-row place-center-center flex\">\n\n <!-- Query Keywords -->\n <mat-form-field color=\"accent\" floatPlaceholder=\"never\" class=\"flex\">\n <mat-icon matPrefix>search</mat-icon>\n <input matInput type=\"search\"\n (keyup)=\"onQueryChanged()\"\n #txtSearch>\n </mat-form-field>\n\n <!-- Sort -->\n <mat-menu #sortMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let sort of availableSort\"\n class=\"layout-row place-between-center\"\n (click)=\"sortBy(sort)\"\n >\n {{sort.name | translate}}\n <mat-icon *ngIf=\"selectedSort?.id==sort.id\">check</mat-icon>\n </button>\n </mat-menu>\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n [matMenuTriggerFor]=\"sortMenu\">\n <mat-icon>sort</mat-icon>\n </button>\n\n <!-- Sort Asc/Desc-->\n <button mat-icon-button type=\"button\"\n *ngIf=\"canSort\"\n (click)=\"toggleSortAsc()\">\n <mat-icon>{{sortAsc ? \"arrow_downward\" : \"arrow_upward\"}}</mat-icon>\n </button>\n </div>\n\n\n <!-- Toggle Global Search -->\n <button mat-icon-button type=\"button\"\n *ngIf=\"!isSearchHidden\"\n (click)=\"toggleSearch()\"\n [disabled]=\"globalSearchDisabled\" >\n <mat-icon>{{toggleIcon}}</mat-icon>\n </button>\n</div>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
27466
27538
  }
27467
27539
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderGlobalSearchComponent, decorators: [{
27468
27540
  type: Component,
@@ -27936,7 +28008,7 @@ class ElderUrlFragmentSwitcherComponent {
27936
28008
  window.open(window.location.href.replace(this.urlRegex.exec(window.location.href)[this.regexArrayIndex], urlFragment), this.windowOpenIn);
27937
28009
  }
27938
28010
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderUrlFragmentSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27939
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderUrlFragmentSwitcherComponent, selector: "elder-url-fragment-switcher", inputs: { disable: "disable", urlFragments: "urlFragments", urlRegex: "urlRegex", regexArrayIndex: "regexArrayIndex", windowOpenIn: "windowOpenIn" }, ngImport: i0, template: "<ng-container *ngIf=\"activeUrlFragment$ | async as activeUrlFragment\">\n <elder-button-group>\n <button mat-stroked-button type=\"button\" disabled [ngStyle]=\"{'background-color': activeUrlFragment.color}\">\n <div class=\"layout-col\">\n <span *ngIf=\"!disable\" class=\"caption\">{{activeUrlFragment.name}}</span>\n </div>\n </button>\n\n <button mat-stroked-button type=\"button\"\n *ngIf=\"!disable \" [matMenuTriggerFor]=\"fragmentMenu\"\n [ngStyle]=\"{'background-color': activeUrlFragment.color}\">\n <mat-icon>flip_camera_android</mat-icon>\n </button>\n </elder-button-group>\n</ng-container>\n\n<mat-menu #fragmentMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let urlFragment of urlFragments\"\n (click)=\"setActiveUrlFragment(urlFragment.fragment)\">\n <mat-icon [ngStyle]=\"{'color': urlFragment.color}\">flip_camera_android</mat-icon>\n <span>{{ urlFragment.name }}</span>\n </button>\n\n</mat-menu>\n", styles: [".activeURlFragment{padding-left:6px}.mat-body-strong{line-height:5px;padding-top:10px;padding-bottom:8px;color:#000}.caption{color:#fff}.mat-body-strong-no-caption{line-height:5px;padding-top:15px;padding-bottom:14px;color:#000}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ElderButtonGroupComponent, selector: "elder-button-group" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28011
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderUrlFragmentSwitcherComponent, selector: "elder-url-fragment-switcher", inputs: { disable: "disable", urlFragments: "urlFragments", urlRegex: "urlRegex", regexArrayIndex: "regexArrayIndex", windowOpenIn: "windowOpenIn" }, ngImport: i0, template: "<ng-container *ngIf=\"activeUrlFragment$ | async as activeUrlFragment\">\n <elder-button-group>\n <button mat-stroked-button type=\"button\" disabled [ngStyle]=\"{'background-color': activeUrlFragment.color}\">\n <div class=\"layout-col\">\n <span *ngIf=\"!disable\" class=\"caption\">{{activeUrlFragment.name}}</span>\n </div>\n </button>\n\n <button mat-stroked-button type=\"button\"\n *ngIf=\"!disable \" [matMenuTriggerFor]=\"fragmentMenu\"\n [ngStyle]=\"{'background-color': activeUrlFragment.color}\">\n <mat-icon>flip_camera_android</mat-icon>\n </button>\n </elder-button-group>\n</ng-container>\n\n<mat-menu #fragmentMenu=\"matMenu\">\n <button mat-menu-item type=\"button\"\n *ngFor=\"let urlFragment of urlFragments\"\n (click)=\"setActiveUrlFragment(urlFragment.fragment)\">\n <mat-icon [ngStyle]=\"{'color': urlFragment.color}\">flip_camera_android</mat-icon>\n <span>{{ urlFragment.name }}</span>\n </button>\n\n</mat-menu>\n", styles: [".activeURlFragment{padding-left:6px}.mat-body-strong{line-height:5px;padding-top:10px;padding-bottom:8px;color:#000}.caption{color:#fff}.mat-body-strong-no-caption{line-height:5px;padding-top:15px;padding-bottom:14px;color:#000}\n"], dependencies: [{ kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ElderButtonGroupComponent, selector: "elder-button-group" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27940
28012
  }
27941
28013
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderUrlFragmentSwitcherComponent, decorators: [{
27942
28014
  type: Component,
@@ -28410,7 +28482,7 @@ class ElderCsvExportBtnComponent {
28410
28482
  }
28411
28483
  }
28412
28484
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderCsvExportBtnComponent, deps: [{ token: CsvStreamExporterBuilderService }], target: i0.ɵɵFactoryTarget.Component }); }
28413
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderCsvExportBtnComponent, selector: "elder-csv-export-btn", inputs: { dataSource: "dataSource", csvSpec: "csvSpec", filters: "filters", sorts: "sorts", chunkSize: "chunkSize" }, ngImport: i0, template: "\n<button type=\"button\" mat-icon-button\n (click)=\"startExport()\">\n <mat-icon>file_download</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i5$2.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28485
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderCsvExportBtnComponent, selector: "elder-csv-export-btn", inputs: { dataSource: "dataSource", csvSpec: "csvSpec", filters: "filters", sorts: "sorts", chunkSize: "chunkSize" }, ngImport: i0, template: "\n<button type=\"button\" mat-icon-button\n (click)=\"startExport()\">\n <mat-icon>file_download</mat-icon>\n</button>\n", styles: [""], dependencies: [{ kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28414
28486
  }
28415
28487
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderCsvExportBtnComponent, decorators: [{
28416
28488
  type: Component,
@@ -28606,7 +28678,7 @@ class IframeHostComponent {
28606
28678
  }
28607
28679
  }
28608
28680
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: IframeHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28609
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: IframeHostComponent, selector: "elder-i-frame-host", inputs: { iframeParams: "iframeParams" }, outputs: { message: "message", close: "close" }, host: { listeners: { "window:message": "onWindowMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"{state: iframeState$ | async, params: iframeParams$ | async} as ctx\">\n\n <div class=\"layout-col full\">\n\n <!-- In Case of Error -->\n <div *ngIf=\"ctx.state.hasError\"\n class=\"layout-row place-center-center flex\"\n >\n <span>Failed to load Iframe: {{ctx.state.message}}</span>\n </div>\n\n <!-- IFrame -->\n <iframe #iframe\n *ngIf=\"!ctx.state.hasError\"\n (load)=\"onIframeLoadEvent($event)\"\n (error)=\"onIframeErrorEvent($event)\"\n [src]=\"ctx.params.srcUrl | elderSafeUrl\"\n class=\"iframe flex\"\n allow=\"clipboard *;clipboard-read *;clipboard-write *;\"\n ></iframe>\n\n <!-- Bottom Toolbar -->\n <mat-toolbar *ngIf=\"!ctx.params.hideActionBar\" elderTheme class=\"layout-row place-between-center flex-none elder-dense-toolbar\">\n\n <a mat-icon-button (click)=\"doClose($event)\" class=\"elder-icon-button-sm\">\n <mat-icon>close</mat-icon>\n </a>\n\n <a mat-icon-button class=\"elder-icon-button-sm\"\n [href]=\"ctx.params.srcUrl | elderSafeUrl\" target=\"_blank\">\n <mat-icon>open_in_new</mat-icon>\n </a>\n </mat-toolbar>\n </div>\n\n</ng-container>\n\n\n\n", styles: [".iframe{margin:0;border:0;height:100%;background-color:#fff}.elder-dense-toolbar,.elder-dense-toolbar .mat-toolbar-row{height:40px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$2.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: ElderSafeUrlPipe, name: "elderSafeUrl" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28681
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: IframeHostComponent, selector: "elder-i-frame-host", inputs: { iframeParams: "iframeParams" }, outputs: { message: "message", close: "close" }, host: { listeners: { "window:message": "onWindowMessage($event)" } }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"{state: iframeState$ | async, params: iframeParams$ | async} as ctx\">\n\n <div class=\"layout-col full\">\n\n <!-- In Case of Error -->\n <div *ngIf=\"ctx.state.hasError\"\n class=\"layout-row place-center-center flex\"\n >\n <span>Failed to load Iframe: {{ctx.state.message}}</span>\n </div>\n\n <!-- IFrame -->\n <iframe #iframe\n *ngIf=\"!ctx.state.hasError\"\n (load)=\"onIframeLoadEvent($event)\"\n (error)=\"onIframeErrorEvent($event)\"\n [src]=\"ctx.params.srcUrl | elderSafeUrl\"\n class=\"iframe flex\"\n allow=\"clipboard *;clipboard-read *;clipboard-write *;\"\n ></iframe>\n\n <!-- Bottom Toolbar -->\n <mat-toolbar *ngIf=\"!ctx.params.hideActionBar\" elderTheme class=\"layout-row place-between-center flex-none elder-dense-toolbar\">\n\n <a mat-icon-button (click)=\"doClose($event)\" class=\"elder-icon-button-sm\">\n <mat-icon>close</mat-icon>\n </a>\n\n <a mat-icon-button class=\"elder-icon-button-sm\"\n [href]=\"ctx.params.srcUrl | elderSafeUrl\" target=\"_blank\">\n <mat-icon>open_in_new</mat-icon>\n </a>\n </mat-toolbar>\n </div>\n\n</ng-container>\n\n\n\n", styles: [".iframe{margin:0;border:0;height:100%;background-color:#fff}.elder-dense-toolbar,.elder-dense-toolbar .mat-toolbar-row{height:40px}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatIconAnchor, selector: "a[mat-icon-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: ElderSafeUrlPipe, name: "elderSafeUrl" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28610
28682
  }
28611
28683
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: IframeHostComponent, decorators: [{
28612
28684
  type: Component,
@@ -29189,7 +29261,7 @@ class ElderExceptionDetailComponent {
29189
29261
  this.errorCtx$.next(ExceptionDetailCtx.of(error));
29190
29262
  }
29191
29263
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderExceptionDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderExceptionDetailComponent, selector: "elder-exception-detail", inputs: { expanded: "expanded", stacktraceRows: "stacktraceRows", error: "error" }, ngImport: i0, template: "<ng-container *ngIf=\"errorCtx$ | async as errorCtx\">\n\n <mat-accordion *ngIf=\"errorCtx.detail as error\" class=\"full\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n <mat-panel-title class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\" class=\"noselect\">warning</mat-icon>\n <span class=\"noselect\">{{errorCtx.panelTitle}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"noselect\">\n <span class=\"mat-caption\">{{errorCtx.panelDescription}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div class=\"layout-col flex p-xs\" style=\"overflow: hidden\">\n\n <mat-form-field class=\"full-width\">\n <mat-label>Detail</mat-label>\n <input matInput [value]=\"error.detail\" readonly>\n </mat-form-field>\n\n <mat-form-field class=\"full-width\">\n <mat-label>Stacktrace</mat-label>\n <textarea class=\"stacktrace\" matInput [value]=\"error.stacktrace\" [rows]=\"stacktraceRows\"></textarea>\n </mat-form-field>\n\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n\n</ng-container>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2$5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2$5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i2$5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i2$5.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29264
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderExceptionDetailComponent, selector: "elder-exception-detail", inputs: { expanded: "expanded", stacktraceRows: "stacktraceRows", error: "error" }, ngImport: i0, template: "<ng-container *ngIf=\"errorCtx$ | async as errorCtx\">\n\n <mat-accordion *ngIf=\"errorCtx.detail as error\" class=\"full\">\n <mat-expansion-panel [expanded]=\"expanded\">\n <mat-expansion-panel-header>\n <mat-panel-title class=\"layout-row place-start-center gap-sm\">\n <mat-icon color=\"warn\" class=\"noselect\">warning</mat-icon>\n <span class=\"noselect\">{{errorCtx.panelTitle}}</span>\n </mat-panel-title>\n <mat-panel-description class=\"noselect\">\n <span class=\"mat-caption\">{{errorCtx.panelDescription}}</span>\n </mat-panel-description>\n </mat-expansion-panel-header>\n\n <div class=\"layout-col flex p-xs\" style=\"overflow: hidden\">\n\n <mat-form-field class=\"full-width\">\n <mat-label>Detail</mat-label>\n <input matInput [value]=\"error.detail\" readonly>\n </mat-form-field>\n\n <mat-form-field class=\"full-width\">\n <mat-label>Stacktrace</mat-label>\n <textarea class=\"stacktrace\" matInput [value]=\"error.stacktrace\" [rows]=\"stacktraceRows\"></textarea>\n </mat-form-field>\n\n </div>\n </mat-expansion-panel>\n </mat-accordion>\n\n</ng-container>\n\n\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$5.MatAccordion, selector: "mat-accordion", inputs: ["multi", "hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i2$5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i2$5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i2$5.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i2$5.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29193
29265
  }
29194
29266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderExceptionDetailComponent, decorators: [{
29195
29267
  type: Component,
@@ -29251,7 +29323,7 @@ class ElderAuditedEntityComponent {
29251
29323
  this.auditedCtx$.next(new AuditedEntityCtx(audited));
29252
29324
  }
29253
29325
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAuditedEntityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29254
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderAuditedEntityComponent, selector: "elder-audited-entity", inputs: { appearance: "appearance", dateFormat: "dateFormat", audited: "audited" }, ngImport: i0, template: "<section class=\"layout-row wrap gap-sm\" *ngIf=\"auditedCtx$ | async as ctx\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label class=\"layout-row place-start-center gap-xs\">\n <mat-icon class=\"decent noselect\" inline>add_circle_outline</mat-icon>\n <span>{{'context.createdAt' | translate}} {{ctx.audited?.createdAt | timeAgo}}</span>\n </mat-label>\n <input matInput name=\"created\"\n [value]=\"ctx.audited?.createdAt | date:dateFormat\"\n readonly>\n <mat-hint>{{ctx.audited?.createdBy}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field [appearance]=\"appearance\">\n <mat-label class=\"layout-row place-start-center gap-xs\">\n <mat-icon class=\"decent noselect\">mode_edit_outline</mat-icon>\n <span>{{'context.modifiedAt' | translate}} {{ctx.audited?.modifiedAt | timeAgo}}</span>\n </mat-label>\n <input matInput name=\"modified\"\n [value]=\"ctx.audited?.modifiedAt | date:dateFormat\"\n readonly>\n <mat-hint>{{ctx.audited?.modifiedBy}}</mat-hint>\n </mat-form-field>\n</section>\n", styles: [".decent{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$2.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: i5$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: ElderAuditedEntityComponent, selector: "elder-audited-entity", inputs: { appearance: "appearance", dateFormat: "dateFormat", audited: "audited" }, ngImport: i0, template: "<section class=\"layout-row wrap gap-sm\" *ngIf=\"auditedCtx$ | async as ctx\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label class=\"layout-row place-start-center gap-xs\">\n <mat-icon class=\"decent noselect\" inline>add_circle_outline</mat-icon>\n <span>{{'context.createdAt' | translate}} {{ctx.audited?.createdAt | timeAgo}}</span>\n </mat-label>\n <input matInput name=\"created\"\n [value]=\"ctx.audited?.createdAt | date:dateFormat\"\n readonly>\n <mat-hint>{{ctx.audited?.createdBy}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field [appearance]=\"appearance\">\n <mat-label class=\"layout-row place-start-center gap-xs\">\n <mat-icon class=\"decent noselect\">mode_edit_outline</mat-icon>\n <span>{{'context.modifiedAt' | translate}} {{ctx.audited?.modifiedAt | timeAgo}}</span>\n </mat-label>\n <input matInput name=\"modified\"\n [value]=\"ctx.audited?.modifiedAt | date:dateFormat\"\n readonly>\n <mat-hint>{{ctx.audited?.modifiedBy}}</mat-hint>\n </mat-form-field>\n</section>\n", styles: [".decent{opacity:.5}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$3.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: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$4.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29255
29327
  }
29256
29328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: ElderAuditedEntityComponent, decorators: [{
29257
29329
  type: Component,