@elderbyte/ngx-starter 21.7.3 → 21.8.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as i2 from '@angular/common';
2
- import { formatDate, CommonModule, formatCurrency, getCurrencySymbol, AsyncPipe, NgTemplateOutlet, NgClass, NgStyle, formatNumber, DecimalPipe, DOCUMENT, DatePipe, registerLocaleData, CurrencyPipe } from '@angular/common';
2
+ import { formatDate, CommonModule, formatCurrency, getCurrencySymbol, AsyncPipe, NgTemplateOutlet, NgClass, NgStyle, formatNumber, DecimalPipe, DatePipe, registerLocaleData, DOCUMENT, CurrencyPipe } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Pipe, LOCALE_ID, Inject, NgModule, Injectable, inject, Optional, SkipSelf, Input, Output, Directive, forwardRef, ViewChild, ElementRef, DestroyRef, model, signal, computed, untracked, HostBinding, ViewChildren, ContentChild, makeEnvironmentProviders, provideEnvironmentInitializer, ChangeDetectionStrategy, Component, Host, APP_INITIALIZER, TemplateRef, HostListener, EventEmitter, input, ViewEncapsulation, InjectionToken, output, effect, ContentChildren, contentChildren, viewChild, contentChild, viewChildren, linkedSignal, booleanAttribute, Injector, NgZone, Renderer2 } from '@angular/core';
4
+ import { Pipe, LOCALE_ID, Inject, NgModule, Injectable, inject, Optional, SkipSelf, Input, Output, Directive, forwardRef, ViewChild, ElementRef, DestroyRef, model, signal, computed, untracked, HostBinding, ViewChildren, ContentChild, InjectionToken, effect, makeEnvironmentProviders, provideEnvironmentInitializer, ChangeDetectionStrategy, Component, Host, APP_INITIALIZER, TemplateRef, HostListener, EventEmitter, input, ViewEncapsulation, output, ContentChildren, contentChildren, viewChild, contentChild, viewChildren, linkedSignal, booleanAttribute, Injector, NgZone, Renderer2 } from '@angular/core';
5
5
  import * as i1 from '@angular/platform-browser';
6
6
  import { DomSanitizer } from '@angular/platform-browser';
7
7
  import { Duration, Period, TemporalQueries, LocalTime, Instant, LocalDate, nativeJs, ZoneId, DateTimeFormatter, convert, ZonedDateTime, Temporal as Temporal$1 } from '@js-joda/core';
@@ -10,44 +10,44 @@ import { timer, defer, ReplaySubject, concat, finalize, exhaustMap, BehaviorSubj
10
10
  import { tap, takeUntil, takeWhile, map, filter, distinctUntilChanged, debounceTime, catchError, first, take, switchMap as switchMap$1, mergeMap, expand, reduce, combineLatestWith, startWith, skip, delay, share, skipWhile, timeout } from 'rxjs/operators';
11
11
  import { Temporal } from '@js-temporal/polyfill';
12
12
  import * as i1$1 from '@angular/common/http';
13
- import { HttpParams, HttpEventType, HttpRequest, HttpClient, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
13
+ import { HttpParams, HttpEventType, HttpRequest, HttpClient, HttpErrorResponse, HTTP_INTERCEPTORS, HttpBackend } from '@angular/common/http';
14
14
  import { DataSource } from '@angular/cdk/collections';
15
- import { outputToObservable, takeUntilDestroyed, toSignal, toObservable, outputFromObservable } from '@angular/core/rxjs-interop';
16
- import * as i1$4 from '@angular/forms';
15
+ import { outputToObservable, takeUntilDestroyed, toObservable, toSignal, outputFromObservable } from '@angular/core/rxjs-interop';
16
+ import * as i1$3 from '@angular/forms';
17
17
  import { ControlContainer, NG_VALUE_ACCESSOR, NG_VALIDATORS, NgControl, NgModel, FormsModule, UntypedFormControl, ReactiveFormsModule, NgForm, Validators } from '@angular/forms';
18
18
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
19
19
  import { FocusMonitor, CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
20
20
  import * as i1$a from '@angular/material/form-field';
21
21
  import { MatFormField, MatFormFieldControl, MAT_FORM_FIELD_DEFAULT_OPTIONS, MatLabel, MatFormFieldModule, MatPrefix, MatHint, MatError, MatSuffix } from '@angular/material/form-field';
22
- import * as i1$2 from '@ngx-translate/core';
23
- import { TranslateModule, TranslateService } from '@ngx-translate/core';
24
- import * as i1$3 from '@angular/router';
22
+ import * as i1$9 from '@ngx-translate/core';
23
+ import { TranslateService, TranslatePipe, TranslateModule, provideTranslateService, TranslateLoader } from '@ngx-translate/core';
24
+ import * as i1$2 from '@angular/router';
25
25
  import { RouterModule, NavigationEnd, RouterLinkActive, RouterLink, RouterOutlet, convertToParamMap, EventType } from '@angular/router';
26
26
  import * as i1$f from '@angular/material/icon';
27
27
  import { MatIconRegistry, MatIcon, MatIconModule } from '@angular/material/icon';
28
28
  import { MatSlideToggle, MatSlideToggleModule } from '@angular/material/slide-toggle';
29
- import * as i1$5 from '@angular/material/toolbar';
29
+ import * as i1$4 from '@angular/material/toolbar';
30
30
  import { MatToolbar, MatToolbarRow, MatToolbarModule } from '@angular/material/toolbar';
31
31
  import { MatCard, MatCardModule } from '@angular/material/card';
32
32
  import * as i1$d from '@angular/material/core';
33
33
  import { MatRipple, MatRippleModule, MatOption, NativeDateAdapter, MAT_DATE_LOCALE, DateAdapter, MatNativeDateModule } from '@angular/material/core';
34
34
  import * as i5 from '@angular/material/button';
35
35
  import { MatButtonModule, MatIconButton, MatButton, MatIconAnchor, MatAnchor } from '@angular/material/button';
36
- import * as i1$9 from '@angular/material/autocomplete';
36
+ import * as i1$8 from '@angular/material/autocomplete';
37
37
  import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
38
38
  import { MatChipGrid, MatChipRow, MatChipRemove, MatChipInput, MatChipsModule, MatChipSet, MatChipAvatar, MatChipTrailingIcon, MatChipListbox, MatChipOption, MatChip } from '@angular/material/chips';
39
39
  import * as i2$3 from '@angular/material/input';
40
40
  import { MatInput, MatInputModule } from '@angular/material/input';
41
41
  import { MatList, MatListSubheaderCssMatStyler, MatListItem, MatListModule } from '@angular/material/list';
42
42
  import { MatProgressBar, MatProgressBarModule } from '@angular/material/progress-bar';
43
- import * as i1$6 from '@angular/material/snack-bar';
43
+ import * as i1$5 from '@angular/material/snack-bar';
44
44
  import { MAT_SNACK_BAR_DATA, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction, MatSnackBarModule } from '@angular/material/snack-bar';
45
45
  import * as i2$1 from '@angular/cdk/drag-drop';
46
46
  import { transferArrayItem, moveItemInArray, CdkDropList, CdkDrag, DragDropModule, CdkDropListGroup } from '@angular/cdk/drag-drop';
47
47
  import { MatDivider, MatDividerModule } from '@angular/material/divider';
48
48
  import * as i6 from '@angular/material/menu';
49
49
  import { MatMenu, MatMenuItem, MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
50
- import * as i1$7 from '@angular/material/dialog';
50
+ import * as i1$6 from '@angular/material/dialog';
51
51
  import { MatDialogClose, MAT_DIALOG_DATA, MatDialogConfig, MatDialogModule, MatDialog } from '@angular/material/dialog';
52
52
  import { MatBadge, MatBadgeModule } from '@angular/material/badge';
53
53
  import * as i1$b from '@angular/material/checkbox';
@@ -55,7 +55,7 @@ import { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';
55
55
  import { MatTooltipModule, MatTooltip } from '@angular/material/tooltip';
56
56
  import { MatSelect, MatOption as MatOption$1, MatSelectModule } from '@angular/material/select';
57
57
  import { MatColumnDef, MatRowDef, MatTable, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatFooterCellDef, MatFooterCell, MatHeaderRowDef, MatHeaderRow, MatRow, MatFooterRowDef, MatFooterRow, MatTableModule } from '@angular/material/table';
58
- import * as i1$8 from '@angular/cdk/table';
58
+ import * as i1$7 from '@angular/cdk/table';
59
59
  import { CdkTableModule } from '@angular/cdk/table';
60
60
  import { MatPaginator, MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';
61
61
  import * as i2$2 from '@angular/material/sort';
@@ -9478,6 +9478,313 @@ function simpleDeepMerge(target, source) {
9478
9478
  });
9479
9479
  return output;
9480
9480
  }
9481
+ function createElderDefaultTranslateLoader(_httpBackend) {
9482
+ return new ElderMultiTranslateHttpLoader(_httpBackend, [
9483
+ { prefix: './assets/ngx-starter/i18n/', suffix: '.json' },
9484
+ { prefix: './assets/i18n/', suffix: '.json' },
9485
+ ]);
9486
+ }
9487
+
9488
+ class MemoryStorage {
9489
+ constructor() {
9490
+ this.data = new Map();
9491
+ }
9492
+ getItem(key) {
9493
+ return this.data.get(key);
9494
+ }
9495
+ setItem(key, value) {
9496
+ this.data.set(key, value);
9497
+ }
9498
+ removeItem(key) {
9499
+ this.data.delete(key);
9500
+ }
9501
+ clear() {
9502
+ this.data.clear();
9503
+ }
9504
+ get length() {
9505
+ return this.data.size;
9506
+ }
9507
+ key(index) {
9508
+ throw new Error('Method not supported in Memory Storage.');
9509
+ }
9510
+ }
9511
+ class WebStorageService {
9512
+ constructor(storage) {
9513
+ this.storage = storage;
9514
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
9515
+ if (!this.isStorageAvailable()) {
9516
+ this.logger.warn('No web storage available. Using in-memory storage fallback.');
9517
+ this.storage = new MemoryStorage();
9518
+ }
9519
+ }
9520
+ getItem(key) {
9521
+ return this.storage.getItem(key);
9522
+ }
9523
+ setItem(key, value) {
9524
+ this.storage.setItem(key, value);
9525
+ }
9526
+ removeItem(key) {
9527
+ this.storage.removeItem(key);
9528
+ }
9529
+ clear() {
9530
+ this.storage.clear();
9531
+ }
9532
+ isStorageAvailable() {
9533
+ try {
9534
+ // The best way to test if functionality is available
9535
+ // is just to try and check if it worked or not.
9536
+ this.setItem('testKey', 'hi');
9537
+ this.getItem('testKey');
9538
+ this.removeItem('testKey');
9539
+ return true;
9540
+ }
9541
+ catch (error) {
9542
+ return false;
9543
+ }
9544
+ }
9545
+ }
9546
+ class WebLocalStorage extends WebStorageService {
9547
+ constructor() {
9548
+ super(localStorage);
9549
+ }
9550
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9551
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, providedIn: 'root' }); }
9552
+ }
9553
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, decorators: [{
9554
+ type: Injectable,
9555
+ args: [{
9556
+ providedIn: 'root',
9557
+ }]
9558
+ }], ctorParameters: () => [] });
9559
+ class WebSessionStorage extends WebStorageService {
9560
+ constructor() {
9561
+ super(sessionStorage);
9562
+ }
9563
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9564
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, providedIn: 'root' }); }
9565
+ }
9566
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, decorators: [{
9567
+ type: Injectable,
9568
+ args: [{
9569
+ providedIn: 'root',
9570
+ }]
9571
+ }], ctorParameters: () => [] });
9572
+
9573
+ const ELDER_LANGUAGE_OPTIONS = new InjectionToken('ELDER_LANGUAGE_OPTIONS');
9574
+
9575
+ const LANGUAGE_STORAGE_KEY = 'language';
9576
+ const DEFAULT_LANGS = ['de', 'en'];
9577
+ const DEFAULT_FALLBACK_LANG = 'de';
9578
+ class ElderLanguageService {
9579
+ /***************************************************************************
9580
+ * *
9581
+ * Legacy Compatiblity *
9582
+ * *
9583
+ **************************************************************************/
9584
+ get currentLanguage$() {
9585
+ return toObservable(this.currentLang);
9586
+ }
9587
+ /***************************************************************************
9588
+ * *
9589
+ * Constructor *
9590
+ * *
9591
+ **************************************************************************/
9592
+ constructor() {
9593
+ this.webStorage = inject(WebLocalStorage);
9594
+ this.config = inject(ELDER_LANGUAGE_OPTIONS);
9595
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
9596
+ /***************************************************************************
9597
+ * *
9598
+ * State *
9599
+ * *
9600
+ **************************************************************************/
9601
+ this._langs = signal(null, ...(ngDevMode ? [{ debugName: "_langs" }] : /* istanbul ignore next */ []));
9602
+ this._defaultLang = signal(null, ...(ngDevMode ? [{ debugName: "_defaultLang" }] : /* istanbul ignore next */ []));
9603
+ this._currentLang = signal(null, ...(ngDevMode ? [{ debugName: "_currentLang" }] : /* istanbul ignore next */ []));
9604
+ this._browserLang = getBrowserPreferredLang();
9605
+ this._storedPreferredLang = this.getStoredPreferredLang();
9606
+ /***************************************************************************
9607
+ * *
9608
+ * Computed *
9609
+ * *
9610
+ **************************************************************************/
9611
+ this.currentLang = this._currentLang.asReadonly();
9612
+ this.defaultLang = this._defaultLang.asReadonly();
9613
+ this.langs = this._langs.asReadonly();
9614
+ }
9615
+ /***************************************************************************
9616
+ * *
9617
+ * Public API *
9618
+ * *
9619
+ **************************************************************************/
9620
+ setCurrentLang(lang) {
9621
+ if (!this.isSupported(lang)) {
9622
+ this.logger.warn('cannot set lang', lang, 'since it is not in supported langs', this._langs());
9623
+ return;
9624
+ }
9625
+ this.logger.warn('setting lang', lang);
9626
+ this.webStorage.setItem(LANGUAGE_STORAGE_KEY, lang);
9627
+ this._currentLang.set(lang);
9628
+ }
9629
+ init() {
9630
+ this.logger.warn('initializing elder language service...');
9631
+ if (this._currentLang()) {
9632
+ this.logger.warn('elder language service already initialized, skipping...');
9633
+ return;
9634
+ }
9635
+ this.setLangs(this.config?.langs);
9636
+ this.setDefaultLang(this.config?.defaultLang);
9637
+ this.setInitialLang();
9638
+ }
9639
+ /***************************************************************************
9640
+ * *
9641
+ * Private Methods *
9642
+ * *
9643
+ **************************************************************************/
9644
+ setLangs(langs) {
9645
+ if (!langs?.length) {
9646
+ throw new Error('Cannot set langs since it is not an array or empty');
9647
+ }
9648
+ this._langs.set(langs);
9649
+ }
9650
+ setDefaultLang(lang) {
9651
+ if (!this._langs().includes(lang)) {
9652
+ throw new Error(`Cannot set default lang ${lang} since it is not in supported langs ${this._langs()}`);
9653
+ }
9654
+ this._defaultLang.set(lang);
9655
+ }
9656
+ setInitialLang() {
9657
+ if (this._storedPreferredLang && this.isSupported(this._storedPreferredLang)) {
9658
+ this._currentLang.set(this._storedPreferredLang);
9659
+ return;
9660
+ }
9661
+ if (this._browserLang && this.isSupported(this._browserLang)) {
9662
+ this._currentLang.set(this._browserLang);
9663
+ return;
9664
+ }
9665
+ this._currentLang.set(this._defaultLang());
9666
+ }
9667
+ isSupported(lang) {
9668
+ return this._langs().includes(lang);
9669
+ }
9670
+ getStoredPreferredLang() {
9671
+ return this.webStorage.getItem(LANGUAGE_STORAGE_KEY);
9672
+ }
9673
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9674
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, providedIn: 'root' }); }
9675
+ }
9676
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, decorators: [{
9677
+ type: Injectable,
9678
+ args: [{
9679
+ providedIn: 'root',
9680
+ }]
9681
+ }], ctorParameters: () => [] });
9682
+ /***************************************************************************
9683
+ * *
9684
+ * Helper Functions *
9685
+ * *
9686
+ **************************************************************************/
9687
+ /**
9688
+ * Browser Language code: "de", "fr", "en", etc.
9689
+ */
9690
+ function getBrowserPreferredLang() {
9691
+ if (typeof window === 'undefined' || !window.navigator) {
9692
+ return undefined;
9693
+ }
9694
+ const cultureLang = getBrowserCultureLang();
9695
+ if (!cultureLang || typeof cultureLang !== 'string') {
9696
+ return undefined;
9697
+ }
9698
+ return cultureLang.split(/[-_]/)[0];
9699
+ }
9700
+ /**
9701
+ * Browser Culture language code: "ch-DE", "fr-FR", "en-US", etc.
9702
+ */
9703
+ function getBrowserCultureLang() {
9704
+ if (typeof window === 'undefined' || !window.navigator) {
9705
+ return undefined;
9706
+ }
9707
+ return window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
9708
+ }
9709
+
9710
+ class ElderTranslateService {
9711
+ /***************************************************************************
9712
+ * *
9713
+ * Constructor *
9714
+ * *
9715
+ **************************************************************************/
9716
+ constructor() {
9717
+ this.logger = LoggerFactory.getLogger(this.constructor.name);
9718
+ this.languageService = inject(ElderLanguageService);
9719
+ this.ngxTranslate = inject(TranslateService);
9720
+ effect(() => {
9721
+ const langs = this.languageService.langs();
9722
+ untracked(() => {
9723
+ this.setLangs(langs);
9724
+ });
9725
+ });
9726
+ effect(() => {
9727
+ const defaultLang = this.languageService.defaultLang();
9728
+ untracked(() => {
9729
+ this.setDefaultLang(defaultLang);
9730
+ });
9731
+ });
9732
+ effect(() => {
9733
+ const currentLang = this.languageService.currentLang();
9734
+ untracked(() => {
9735
+ this.setCurrentLang(currentLang);
9736
+ });
9737
+ });
9738
+ }
9739
+ /***************************************************************************
9740
+ * *
9741
+ * Private Methods *
9742
+ * *
9743
+ **************************************************************************/
9744
+ setLangs(langs) {
9745
+ if (langs?.length) {
9746
+ this.logger.warn('setting translate langs', langs);
9747
+ this.ngxTranslate.addLangs(langs);
9748
+ }
9749
+ }
9750
+ setDefaultLang(defaultLang) {
9751
+ if (defaultLang) {
9752
+ this.logger.warn('setting translate default lang', defaultLang);
9753
+ this.ngxTranslate.setFallbackLang(defaultLang);
9754
+ }
9755
+ }
9756
+ setCurrentLang(currentLang) {
9757
+ if (currentLang) {
9758
+ this.logger.warn('setting translate current lang', currentLang);
9759
+ this.ngxTranslate.use(currentLang);
9760
+ }
9761
+ }
9762
+ /***************************************************************************
9763
+ * *
9764
+ * Public API *
9765
+ * *
9766
+ **************************************************************************/
9767
+ get(key, interpolateParams) {
9768
+ return this.ngxTranslate.get(key, interpolateParams);
9769
+ }
9770
+ instant(key, interpolateParams) {
9771
+ return this.ngxTranslate.instant(key, interpolateParams);
9772
+ }
9773
+ stream(key, interpolateParams) {
9774
+ return this.ngxTranslate.stream(key, interpolateParams);
9775
+ }
9776
+ get onLangChange() {
9777
+ return this.ngxTranslate.onLangChange;
9778
+ }
9779
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9780
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslateService, providedIn: 'root' }); }
9781
+ }
9782
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslateService, decorators: [{
9783
+ type: Injectable,
9784
+ args: [{
9785
+ providedIn: 'root',
9786
+ }]
9787
+ }], ctorParameters: () => [] });
9481
9788
 
9482
9789
  class TranslatedEnumValue {
9483
9790
  constructor(value, displayValue) {
@@ -9579,7 +9886,7 @@ class ElderEnumTranslationService {
9579
9886
  stringArrayDataSource(values, translationPrefix, sort = true, asc = true) {
9580
9887
  return DelegateListDataSource.listFetcher(() => this.translateStrings(values, translationPrefix, sort, asc), 'value', (id) => this.translateOne(translationPrefix, id));
9581
9888
  }
9582
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderEnumTranslationService, deps: [{ token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
9889
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderEnumTranslationService, deps: [{ token: ElderTranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
9583
9890
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderEnumTranslationService, providedIn: 'root' }); }
9584
9891
  }
9585
9892
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderEnumTranslationService, decorators: [{
@@ -9587,7 +9894,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
9587
9894
  args: [{
9588
9895
  providedIn: 'root',
9589
9896
  }]
9590
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
9897
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
9591
9898
 
9592
9899
  class CsvSerializer {
9593
9900
  constructor(csvSpec, translateService) {
@@ -9927,7 +10234,7 @@ class ElderUrlFragmentParamsService {
9927
10234
  return new UrlQueryParams();
9928
10235
  }
9929
10236
  }
9930
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderUrlFragmentParamsService, deps: [{ token: i1$3.Router }, { token: i1$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
10237
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderUrlFragmentParamsService, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
9931
10238
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderUrlFragmentParamsService, providedIn: 'root' }); }
9932
10239
  }
9933
10240
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderUrlFragmentParamsService, decorators: [{
@@ -9935,7 +10242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
9935
10242
  args: [{
9936
10243
  providedIn: 'root',
9937
10244
  }]
9938
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }] });
10245
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }] });
9939
10246
 
9940
10247
  /**
9941
10248
  * Provides advanced router navigation support for Angular.
@@ -9977,7 +10284,7 @@ class ElderRouterService {
9977
10284
  const url = this.router.serializeUrl(urlTree);
9978
10285
  return this.location.prepareExternalUrl(url);
9979
10286
  }
9980
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterService, deps: [{ token: i1$3.Router }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
10287
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterService, deps: [{ token: i1$2.Router }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
9981
10288
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterService, providedIn: 'root' }); }
9982
10289
  }
9983
10290
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterService, decorators: [{
@@ -9985,7 +10292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
9985
10292
  args: [{
9986
10293
  providedIn: 'root',
9987
10294
  }]
9988
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i2.Location }] });
10295
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i2.Location }] });
9989
10296
 
9990
10297
  class DomUtil {
9991
10298
  /**
@@ -10062,91 +10369,6 @@ class DomUtil {
10062
10369
  }
10063
10370
  }
10064
10371
 
10065
- class MemoryStorage {
10066
- constructor() {
10067
- this.data = new Map();
10068
- }
10069
- getItem(key) {
10070
- return this.data.get(key);
10071
- }
10072
- setItem(key, value) {
10073
- this.data.set(key, value);
10074
- }
10075
- removeItem(key) {
10076
- this.data.delete(key);
10077
- }
10078
- clear() {
10079
- this.data.clear();
10080
- }
10081
- get length() {
10082
- return this.data.size;
10083
- }
10084
- key(index) {
10085
- throw new Error('Method not supported in Memory Storage.');
10086
- }
10087
- }
10088
- class WebStorageService {
10089
- constructor(storage) {
10090
- this.storage = storage;
10091
- this.logger = LoggerFactory.getLogger(this.constructor.name);
10092
- if (!this.isStorageAvailable()) {
10093
- this.logger.warn('No web storage available. Using in-memory storage fallback.');
10094
- this.storage = new MemoryStorage();
10095
- }
10096
- }
10097
- getItem(key) {
10098
- return this.storage.getItem(key);
10099
- }
10100
- setItem(key, value) {
10101
- this.storage.setItem(key, value);
10102
- }
10103
- removeItem(key) {
10104
- this.storage.removeItem(key);
10105
- }
10106
- clear() {
10107
- this.storage.clear();
10108
- }
10109
- isStorageAvailable() {
10110
- try {
10111
- // The best way to test if functionality is available
10112
- // is just to try and check if it worked or not.
10113
- this.setItem('testKey', 'hi');
10114
- this.getItem('testKey');
10115
- this.removeItem('testKey');
10116
- return true;
10117
- }
10118
- catch (error) {
10119
- return false;
10120
- }
10121
- }
10122
- }
10123
- class WebLocalStorage extends WebStorageService {
10124
- constructor() {
10125
- super(localStorage);
10126
- }
10127
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10128
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, providedIn: 'root' }); }
10129
- }
10130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, decorators: [{
10131
- type: Injectable,
10132
- args: [{
10133
- providedIn: 'root',
10134
- }]
10135
- }], ctorParameters: () => [] });
10136
- class WebSessionStorage extends WebStorageService {
10137
- constructor() {
10138
- super(sessionStorage);
10139
- }
10140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10141
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, providedIn: 'root' }); }
10142
- }
10143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, decorators: [{
10144
- type: Injectable,
10145
- args: [{
10146
- providedIn: 'root',
10147
- }]
10148
- }], ctorParameters: () => [] });
10149
-
10150
10372
  const defaultIconSets = [
10151
10373
  { url: 'assets/brand/dist/svg-bundle/elder-svg-icon-set.svg' },
10152
10374
  { url: 'assets/brand/dist/svg-bundle/country-flags.svg', namespace: 'country-flags' },
@@ -10570,7 +10792,7 @@ class ElderThemeToggleComponent {
10570
10792
  }
10571
10793
  }
10572
10794
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderThemeToggleComponent, deps: [{ token: ElderThemeService }, { token: ElderThemePreferenceService }], target: i0.ɵɵFactoryTarget.Component }); }
10573
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderThemeToggleComponent, isStandalone: true, selector: "elder-theme-toggle", inputs: { color: "color" }, ngImport: i0, template: "@if (activeToggleTheme$ | async; as activeToggleTheme) {\n <div class=\"layout-row place-start-center\">\n <mat-slide-toggle\n [ngModel]=\"activeToggleTheme !== 'default'\"\n (ngModelChange)=\"onToggle($event)\"\n [color]=\"color\"\n aria-label=\"Toggle theme\"\n >\n </mat-slide-toggle>\n <mat-icon [color]=\"color\">\n {{ activeToggleTheme === 'default' ? 'light_mode' : 'brightness_2' }}\n </mat-icon>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10795
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderThemeToggleComponent, isStandalone: true, selector: "elder-theme-toggle", inputs: { color: "color" }, ngImport: i0, template: "@if (activeToggleTheme$ | async; as activeToggleTheme) {\n <div class=\"layout-row place-start-center\">\n <mat-slide-toggle\n [ngModel]=\"activeToggleTheme !== 'default'\"\n (ngModelChange)=\"onToggle($event)\"\n [color]=\"color\"\n aria-label=\"Toggle theme\"\n >\n </mat-slide-toggle>\n <mat-icon [color]=\"color\">\n {{ activeToggleTheme === 'default' ? 'light_mode' : 'brightness_2' }}\n </mat-icon>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10574
10796
  }
10575
10797
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderThemeToggleComponent, decorators: [{
10576
10798
  type: Component,
@@ -10622,7 +10844,7 @@ class ElderThemeDirective {
10622
10844
  this.matToolbar.color = theme.heroBackground;
10623
10845
  }
10624
10846
  }
10625
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderThemeDirective, deps: [{ token: i1$5.MatToolbar, host: true, optional: true }, { token: ElderThemeService }], target: i0.ɵɵFactoryTarget.Directive }); }
10847
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderThemeDirective, deps: [{ token: i1$4.MatToolbar, host: true, optional: true }, { token: ElderThemeService }], target: i0.ɵɵFactoryTarget.Directive }); }
10626
10848
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderThemeDirective, isStandalone: true, selector: "[elderTheme]", ngImport: i0 }); }
10627
10849
  }
10628
10850
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderThemeDirective, decorators: [{
@@ -10630,7 +10852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
10630
10852
  args: [{
10631
10853
  selector: '[elderTheme]',
10632
10854
  }]
10633
- }], ctorParameters: () => [{ type: i1$5.MatToolbar, decorators: [{
10855
+ }], ctorParameters: () => [{ type: i1$4.MatToolbar, decorators: [{
10634
10856
  type: Optional
10635
10857
  }, {
10636
10858
  type: Host
@@ -10787,6 +11009,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
10787
11009
  }]
10788
11010
  }] });
10789
11011
 
11012
+ class ElderTranslatePipe extends TranslatePipe {
11013
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslatePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
11014
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslatePipe, isStandalone: true, name: "translate", pure: false }); }
11015
+ }
11016
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslatePipe, decorators: [{
11017
+ type: Pipe,
11018
+ args: [{
11019
+ name: 'translate',
11020
+ pure: false,
11021
+ }]
11022
+ }] });
11023
+
10790
11024
  class ElderLabelInputComponent extends FormFieldBaseComponent {
10791
11025
  /***************************************************************************
10792
11026
  * *
@@ -10963,7 +11197,7 @@ class ElderLabelInputComponent extends FormFieldBaseComponent {
10963
11197
  return this._compareWith ? this._compareWith(a, b) : a === b;
10964
11198
  }
10965
11199
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLabelInputComponent, isStandalone: true, 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 @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n <mat-chip-grid #chips>\n @for (label of currentLabels$ | async; track label) {\n <mat-chip-row\n class=\"noselect\"\n [color]=\"labelColor(label)\"\n [disabled]=\"disabled\"\n [removable]=\"removable\"\n (removed)=\"removeLabel(label)\"\n >\n {{ labelName(label) }}\n @if (!readonly && removable) {\n <mat-icon matChipRemove>cancel</mat-icon>\n }\n </mat-chip-row>\n }\n\n <input\n matInput\n 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 />\n </mat-chip-grid>\n\n <mat-autocomplete\n #labelAutoComplete=\"matAutocomplete\"\n panelWidth=\"auto\"\n (optionSelected)=\"labelSelected($event)\"\n >\n @for (suggestion of availableSuggestions$ | async; track suggestion) {\n <mat-option [value]=\"suggestion\">\n {{ labelName(suggestion) }}\n </mat-option>\n }\n </mat-autocomplete>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "component", type: MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLabelInputComponent, isStandalone: true, 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 @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n <mat-chip-grid #chips>\n @for (label of currentLabels$ | async; track label) {\n <mat-chip-row\n class=\"noselect\"\n [color]=\"labelColor(label)\"\n [disabled]=\"disabled\"\n [removable]=\"removable\"\n (removed)=\"removeLabel(label)\"\n >\n {{ labelName(label) }}\n @if (!readonly && removable) {\n <mat-icon matChipRemove>cancel</mat-icon>\n }\n </mat-chip-row>\n }\n\n <input\n matInput\n 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 />\n </mat-chip-grid>\n\n <mat-autocomplete\n #labelAutoComplete=\"matAutocomplete\"\n panelWidth=\"auto\"\n (optionSelected)=\"labelSelected($event)\"\n >\n @for (suggestion of availableSuggestions$ | async; track suggestion) {\n <mat-option [value]=\"suggestion\">\n {{ labelName(suggestion) }}\n </mat-option>\n }\n </mat-autocomplete>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "component", type: MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10967
11201
  }
10968
11202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelInputComponent, decorators: [{
10969
11203
  type: Component,
@@ -10982,7 +11216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
10982
11216
  MatAutocomplete,
10983
11217
  MatOption,
10984
11218
  AsyncPipe,
10985
- TranslateModule,
11219
+ ElderTranslatePipe,
10986
11220
  ], template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"full-width\"\n [appearance]=\"appearance\"\n [color]=\"color\"\n>\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n <mat-chip-grid #chips>\n @for (label of currentLabels$ | async; track label) {\n <mat-chip-row\n class=\"noselect\"\n [color]=\"labelColor(label)\"\n [disabled]=\"disabled\"\n [removable]=\"removable\"\n (removed)=\"removeLabel(label)\"\n >\n {{ labelName(label) }}\n @if (!readonly && removable) {\n <mat-icon matChipRemove>cancel</mat-icon>\n }\n </mat-chip-row>\n }\n\n <input\n matInput\n 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 />\n </mat-chip-grid>\n\n <mat-autocomplete\n #labelAutoComplete=\"matAutocomplete\"\n panelWidth=\"auto\"\n (optionSelected)=\"labelSelected($event)\"\n >\n @for (suggestion of availableSuggestions$ | async; track suggestion) {\n <mat-option [value]=\"suggestion\">\n {{ labelName(suggestion) }}\n </mat-option>\n }\n </mat-autocomplete>\n</mat-form-field>\n" }]
10987
11221
  }], ctorParameters: () => [], propDecorators: { inputControl: [{
10988
11222
  type: ViewChild,
@@ -11014,7 +11248,6 @@ class ElderLabelsModule {
11014
11248
  MatInputModule,
11015
11249
  MatChipsModule,
11016
11250
  MatAutocompleteModule,
11017
- TranslateModule,
11018
11251
  ElderLabelInputComponent], exports: [ElderLabelInputComponent] }); }
11019
11252
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelsModule, imports: [CommonModule,
11020
11253
  FormsModule,
@@ -11023,7 +11256,6 @@ class ElderLabelsModule {
11023
11256
  MatInputModule,
11024
11257
  MatChipsModule,
11025
11258
  MatAutocompleteModule,
11026
- TranslateModule,
11027
11259
  ElderLabelInputComponent] }); }
11028
11260
  }
11029
11261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelsModule, decorators: [{
@@ -11037,7 +11269,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
11037
11269
  MatInputModule,
11038
11270
  MatChipsModule,
11039
11271
  MatAutocompleteModule,
11040
- TranslateModule,
11041
11272
  ElderLabelInputComponent,
11042
11273
  ],
11043
11274
  exports: [ElderLabelInputComponent],
@@ -12213,13 +12444,13 @@ class StandardToastComponent {
12213
12444
  return text;
12214
12445
  }
12215
12446
  }
12216
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: StandardToastComponent, deps: [{ token: i1$6.MatSnackBarRef }, { token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
12447
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: StandardToastComponent, deps: [{ token: i1$5.MatSnackBarRef }, { token: MAT_SNACK_BAR_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
12217
12448
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: StandardToastComponent, isStandalone: true, selector: "elder-standard-toast", ngImport: i0, template: "<div\n class=\"layout-col place-start-stretch gap-xs mat-mdc-snack-bar-container elder-toast\"\n [class.elder-toast-type-default]=\"!toast.type\"\n [class.elder-toast-type-primary]=\"toast.type === ToastType.Success\"\n [class.elder-toast-type-warn]=\"toast.type === ToastType.Warning\"\n [class.elder-toast-type-error]=\"toast.type === ToastType.Error\"\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 class=\"toast-title mat-subtitle-2 noselect\">{{ toast.status }}</span>\n </div>\n\n <span></span>\n\n <!-- Toast Message -->\n @if (toast.message) {\n <span class=\"mat-body noselect\" matSnackBarLabel>{{ toast.message }}</span>\n }\n\n <span></span>\n\n <!-- Toast Detail -->\n @if (toast.detail) {\n <span class=\"mat-small noselect\" matSnackBarLabel>{{ trimDetailText(toast.detail, 200) }}</span>\n }\n\n <!-- Actions -->\n <div class=\"layout-row place-end-center\" matSnackBarActions>\n <button\n mat-flat-button\n matSnackBarAction\n type=\"button\"\n [color]=\"iconColor(toast.type)\"\n (click)=\"close()\"\n >\n Ok\n </button>\n </div>\n</div>\n", styles: [".elder-toast{--elder-toast-message-color-title: var(--elder-toast-message-color-title-default);--mat-button-filled-container-color: var(--md-sys-color-secondary)}.elder-toast.elder-toast-type-warn{--elder-toast-message-color-title: var(--elder-toast-message-color-title-warn);--mat-button-filled-container-color: var(--md-sys-color-tertiary)}.elder-toast.elder-toast-type-error{--elder-toast-message-color-title: var(--elder-toast-message-color-title-error);--mat-button-filled-container-color: var(--md-sys-color-error)}.elder-toast button{color:var(--elder-toast-message-color-title)!important}.elder-toast .toast-title,.elder-toast .mat-icon{color:var(--elder-toast-message-color-title)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatSnackBarLabel, selector: "[matSnackBarLabel]" }, { kind: "directive", type: MatSnackBarActions, selector: "[matSnackBarActions]" }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatSnackBarAction, selector: "[matSnackBarAction]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12218
12449
  }
12219
12450
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: StandardToastComponent, decorators: [{
12220
12451
  type: Component,
12221
12452
  args: [{ selector: 'elder-standard-toast', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatIcon, MatSnackBarLabel, MatSnackBarActions, MatButton, MatSnackBarAction], template: "<div\n class=\"layout-col place-start-stretch gap-xs mat-mdc-snack-bar-container elder-toast\"\n [class.elder-toast-type-default]=\"!toast.type\"\n [class.elder-toast-type-primary]=\"toast.type === ToastType.Success\"\n [class.elder-toast-type-warn]=\"toast.type === ToastType.Warning\"\n [class.elder-toast-type-error]=\"toast.type === ToastType.Error\"\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 class=\"toast-title mat-subtitle-2 noselect\">{{ toast.status }}</span>\n </div>\n\n <span></span>\n\n <!-- Toast Message -->\n @if (toast.message) {\n <span class=\"mat-body noselect\" matSnackBarLabel>{{ toast.message }}</span>\n }\n\n <span></span>\n\n <!-- Toast Detail -->\n @if (toast.detail) {\n <span class=\"mat-small noselect\" matSnackBarLabel>{{ trimDetailText(toast.detail, 200) }}</span>\n }\n\n <!-- Actions -->\n <div class=\"layout-row place-end-center\" matSnackBarActions>\n <button\n mat-flat-button\n matSnackBarAction\n type=\"button\"\n [color]=\"iconColor(toast.type)\"\n (click)=\"close()\"\n >\n Ok\n </button>\n </div>\n</div>\n", styles: [".elder-toast{--elder-toast-message-color-title: var(--elder-toast-message-color-title-default);--mat-button-filled-container-color: var(--md-sys-color-secondary)}.elder-toast.elder-toast-type-warn{--elder-toast-message-color-title: var(--elder-toast-message-color-title-warn);--mat-button-filled-container-color: var(--md-sys-color-tertiary)}.elder-toast.elder-toast-type-error{--elder-toast-message-color-title: var(--elder-toast-message-color-title-error);--mat-button-filled-container-color: var(--md-sys-color-error)}.elder-toast button{color:var(--elder-toast-message-color-title)!important}.elder-toast .toast-title,.elder-toast .mat-icon{color:var(--elder-toast-message-color-title)}\n"] }]
12222
- }], ctorParameters: () => [{ type: i1$6.MatSnackBarRef }, { type: undefined, decorators: [{
12453
+ }], ctorParameters: () => [{ type: i1$5.MatSnackBarRef }, { type: undefined, decorators: [{
12223
12454
  type: Inject,
12224
12455
  args: [MAT_SNACK_BAR_DATA]
12225
12456
  }] }] });
@@ -12435,7 +12666,7 @@ class ElderToastService {
12435
12666
  return this.translate.get(options.msg, options.interpolateParams).pipe(catchError((err) => options.msg) // // no translation found, we use the translation key
12436
12667
  );
12437
12668
  }
12438
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToastService, deps: [{ token: i1$2.TranslateService }, { token: i1$6.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
12669
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToastService, deps: [{ token: ElderTranslateService }, { token: i1$5.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
12439
12670
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToastService, providedIn: 'root' }); }
12440
12671
  }
12441
12672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToastService, decorators: [{
@@ -12443,7 +12674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
12443
12674
  args: [{
12444
12675
  providedIn: 'root',
12445
12676
  }]
12446
- }], ctorParameters: () => [{ type: i1$2.TranslateService }, { type: i1$6.MatSnackBar }] });
12677
+ }], ctorParameters: () => [{ type: ElderTranslateService }, { type: i1$5.MatSnackBar }] });
12447
12678
 
12448
12679
  class BlobContext {
12449
12680
  static textBlob(text, mimeType) {
@@ -12676,11 +12907,11 @@ class ElderDropZoneComponent {
12676
12907
  this.prompt = 'Drop Files here.';
12677
12908
  }
12678
12909
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDropZoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12679
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderDropZoneComponent, isStandalone: true, selector: "elder-drop-zone", inputs: { icon: "icon", prompt: "prompt" }, outputs: { filesDropped: "filesDropped", dragOver: "dragOver", dragEnd: "dragEnd" }, ngImport: i0, template: "<div\n class=\"layout-col full elder-drop-zone\"\n elderFileDropZone\n (dropFiles)=\"filesDropped.emit($event)\"\n (dragOver)=\"dragOver.emit($event)\"\n (dragEnd)=\"dragEnd.emit($event)\"\n>\n <div class=\"layout-col flex\">\n <ng-content></ng-content>\n <!-- Default content -->\n <div class=\"layout-col flex place-center-center gap-sm elder-default-content\">\n <mat-icon class=\"elder-drop-zone-icon\">{{ icon }}</mat-icon>\n <span class=\"elder-drop-zone-prompt\">{{ prompt | translate }}</span>\n </div>\n </div>\n</div>\n", styles: [".elder-drop-zone{border:4px dashed rgba(0,0,0,.4);-webkit-border-radius:8px;border-radius:8px;background-color:#00000040;cursor:pointer}.elder-drop-zone-icon{color:var(--md-sys-color-primary);font-size:28px;width:28px;height:28px}.elder-drop-zone-prompt{color:var(--md-sys-color-primary)}.elder-drop-zone.is-dragover{border:4px solid var(--md-sys-color-tertiary);background-color:var(--md-sys-color-tertiary-container)}.elder-drop-zone.is-dragover .elder-drop-zone-icon,.elder-drop-zone.is-dragover .elder-drop-zone-prompt{color:var(--md-sys-color-tertiary)}\n"], dependencies: [{ kind: "directive", type: ElderFileDropZoneDirective, selector: "[elderFileDropZone]", inputs: ["dragOverClass"], outputs: ["dragEnter", "dragOver", "dragEnd", "dragEnterFiles", "dropFiles", "elderFileDropZoneChange"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12910
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderDropZoneComponent, isStandalone: true, selector: "elder-drop-zone", inputs: { icon: "icon", prompt: "prompt" }, outputs: { filesDropped: "filesDropped", dragOver: "dragOver", dragEnd: "dragEnd" }, ngImport: i0, template: "<div\n class=\"layout-col full elder-drop-zone\"\n elderFileDropZone\n (dropFiles)=\"filesDropped.emit($event)\"\n (dragOver)=\"dragOver.emit($event)\"\n (dragEnd)=\"dragEnd.emit($event)\"\n>\n <div class=\"layout-col flex\">\n <ng-content></ng-content>\n <!-- Default content -->\n <div class=\"layout-col flex place-center-center gap-sm elder-default-content\">\n <mat-icon class=\"elder-drop-zone-icon\">{{ icon }}</mat-icon>\n <span class=\"elder-drop-zone-prompt\">{{ prompt | translate }}</span>\n </div>\n </div>\n</div>\n", styles: [".elder-drop-zone{border:4px dashed rgba(0,0,0,.4);-webkit-border-radius:8px;border-radius:8px;background-color:#00000040;cursor:pointer}.elder-drop-zone-icon{color:var(--md-sys-color-primary);font-size:28px;width:28px;height:28px}.elder-drop-zone-prompt{color:var(--md-sys-color-primary)}.elder-drop-zone.is-dragover{border:4px solid var(--md-sys-color-tertiary);background-color:var(--md-sys-color-tertiary-container)}.elder-drop-zone.is-dragover .elder-drop-zone-icon,.elder-drop-zone.is-dragover .elder-drop-zone-prompt{color:var(--md-sys-color-tertiary)}\n"], dependencies: [{ kind: "directive", type: ElderFileDropZoneDirective, selector: "[elderFileDropZone]", inputs: ["dragOverClass"], outputs: ["dragEnter", "dragOver", "dragEnd", "dragEnterFiles", "dropFiles", "elderFileDropZoneChange"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12680
12911
  }
12681
12912
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDropZoneComponent, decorators: [{
12682
12913
  type: Component,
12683
- args: [{ selector: 'elder-drop-zone', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ElderFileDropZoneDirective, MatIcon, TranslateModule], template: "<div\n class=\"layout-col full elder-drop-zone\"\n elderFileDropZone\n (dropFiles)=\"filesDropped.emit($event)\"\n (dragOver)=\"dragOver.emit($event)\"\n (dragEnd)=\"dragEnd.emit($event)\"\n>\n <div class=\"layout-col flex\">\n <ng-content></ng-content>\n <!-- Default content -->\n <div class=\"layout-col flex place-center-center gap-sm elder-default-content\">\n <mat-icon class=\"elder-drop-zone-icon\">{{ icon }}</mat-icon>\n <span class=\"elder-drop-zone-prompt\">{{ prompt | translate }}</span>\n </div>\n </div>\n</div>\n", styles: [".elder-drop-zone{border:4px dashed rgba(0,0,0,.4);-webkit-border-radius:8px;border-radius:8px;background-color:#00000040;cursor:pointer}.elder-drop-zone-icon{color:var(--md-sys-color-primary);font-size:28px;width:28px;height:28px}.elder-drop-zone-prompt{color:var(--md-sys-color-primary)}.elder-drop-zone.is-dragover{border:4px solid var(--md-sys-color-tertiary);background-color:var(--md-sys-color-tertiary-container)}.elder-drop-zone.is-dragover .elder-drop-zone-icon,.elder-drop-zone.is-dragover .elder-drop-zone-prompt{color:var(--md-sys-color-tertiary)}\n"] }]
12914
+ args: [{ selector: 'elder-drop-zone', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ElderFileDropZoneDirective, MatIcon, ElderTranslatePipe], template: "<div\n class=\"layout-col full elder-drop-zone\"\n elderFileDropZone\n (dropFiles)=\"filesDropped.emit($event)\"\n (dragOver)=\"dragOver.emit($event)\"\n (dragEnd)=\"dragEnd.emit($event)\"\n>\n <div class=\"layout-col flex\">\n <ng-content></ng-content>\n <!-- Default content -->\n <div class=\"layout-col flex place-center-center gap-sm elder-default-content\">\n <mat-icon class=\"elder-drop-zone-icon\">{{ icon }}</mat-icon>\n <span class=\"elder-drop-zone-prompt\">{{ prompt | translate }}</span>\n </div>\n </div>\n</div>\n", styles: [".elder-drop-zone{border:4px dashed rgba(0,0,0,.4);-webkit-border-radius:8px;border-radius:8px;background-color:#00000040;cursor:pointer}.elder-drop-zone-icon{color:var(--md-sys-color-primary);font-size:28px;width:28px;height:28px}.elder-drop-zone-prompt{color:var(--md-sys-color-primary)}.elder-drop-zone.is-dragover{border:4px solid var(--md-sys-color-tertiary);background-color:var(--md-sys-color-tertiary-container)}.elder-drop-zone.is-dragover .elder-drop-zone-icon,.elder-drop-zone.is-dragover .elder-drop-zone-prompt{color:var(--md-sys-color-tertiary)}\n"] }]
12684
12915
  }], ctorParameters: () => [], propDecorators: { filesDropped: [{
12685
12916
  type: Output
12686
12917
  }], dragOver: [{
@@ -12781,7 +13012,6 @@ class ElderFileModule {
12781
13012
  MatIconModule,
12782
13013
  MatProgressBarModule,
12783
13014
  ElderPipesModule,
12784
- TranslateModule,
12785
13015
  ElderFileSelectComponent,
12786
13016
  ElderFileUploadComponent,
12787
13017
  ElderFileSelectDirective,
@@ -12799,7 +13029,6 @@ class ElderFileModule {
12799
13029
  MatIconModule,
12800
13030
  MatProgressBarModule,
12801
13031
  ElderPipesModule,
12802
- TranslateModule,
12803
13032
  ElderFileSelectComponent,
12804
13033
  ElderFileUploadComponent,
12805
13034
  ElderDropZoneComponent] }); }
@@ -12814,7 +13043,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
12814
13043
  MatIconModule,
12815
13044
  MatProgressBarModule,
12816
13045
  ElderPipesModule,
12817
- TranslateModule,
12818
13046
  ElderFileSelectComponent,
12819
13047
  ElderFileUploadComponent,
12820
13048
  ElderFileSelectDirective,
@@ -13333,7 +13561,7 @@ class ElderCardStackComponent {
13333
13561
  }
13334
13562
  }
13335
13563
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCardStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13336
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderCardStackComponent, isStandalone: true, 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 <!-- Header -->\n @if (headerEnabled) {\n <header class=\"layout-row place-start-center flex-none gap-md stack-header p-md\">\n <h3 class=\"mat-subtitle-2 noselect\">{{ headerTitle | translate }}</h3>\n <small class=\"mat-caption noselect\">({{ (cards$ | async)?.length }})</small>\n <span class=\"flex\"></span>\n @if (canAdd) {\n <button mat-icon-button type=\"button\" (click)=\"onRequestNewCard($event)\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </header>\n }\n @if (headerEnabled) {\n <mat-divider></mat-divider>\n }\n\n <!-- card list -->\n <div class=\"layout-col flex card-container\">\n <div\n 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 [cdkDropListEnterPredicate]=\"enterPredicate\"\n (cdkDropListEntered)=\"cardEntered($event)\"\n (cdkDropListExited)=\"cardExited($event)\"\n (cdkDropListDropped)=\"cardDrop($event)\"\n >\n <!-- card -->\n @for (card of cards$ | async; track card; let i = $index) {\n <elder-card\n class=\"card flex-none\"\n [ngClass]=\"cardClick.observed ? 'clickable' : 'unclickable'\"\n cdkDrag\n [cdkDragData]=\"card\"\n (click)=\"onCardSelected($event, card)\"\n >\n <div class=\"layout-row place-between-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n cardTemplate || simpleCardTemplate;\n context: { $implicit: card, index: i }\n \"\n ></ng-container>\n @if (canRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"hide\"\n (click)=\"onRequestRemoveCard($event, card)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n </elder-card>\n }\n </div>\n </div>\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</div>\n", styles: [".card-stack{border-radius:var(--elder-border-radius-sm);border:var(--elder-border-light)}.card-list.cdk-drop-list-dragging{border:2px dashed var(--md-sys-color-outline-variant)}.stack-header{height:62px}.card-container{min-width:120px;min-height:0}.card-list{min-height:100%}.card{border-radius:var(--elder-border-radius-sm);box-shadow:var(--mat-app-elevation-shadow-level-1);cursor:move;overflow:hidden}.card.cdk-drag-disabled.clickable{cursor:pointer}.card.cdk-drag-disabled.unclickable{cursor:default}.hoverme .hide{visibility:hidden}.hoverme:hover .hide{visibility:visible}.rotate{transform:rotate(-90deg)}.noselect{-webkit-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: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: ElderCardComponent, selector: "elder-card", inputs: ["appearance", "float", "flat"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13564
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderCardStackComponent, isStandalone: true, 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 <!-- Header -->\n @if (headerEnabled) {\n <header class=\"layout-row place-start-center flex-none gap-md stack-header p-md\">\n <h3 class=\"mat-subtitle-2 noselect\">{{ headerTitle | translate }}</h3>\n <small class=\"mat-caption noselect\">({{ (cards$ | async)?.length }})</small>\n <span class=\"flex\"></span>\n @if (canAdd) {\n <button mat-icon-button type=\"button\" (click)=\"onRequestNewCard($event)\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </header>\n }\n @if (headerEnabled) {\n <mat-divider></mat-divider>\n }\n\n <!-- card list -->\n <div class=\"layout-col flex card-container\">\n <div\n 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 [cdkDropListEnterPredicate]=\"enterPredicate\"\n (cdkDropListEntered)=\"cardEntered($event)\"\n (cdkDropListExited)=\"cardExited($event)\"\n (cdkDropListDropped)=\"cardDrop($event)\"\n >\n <!-- card -->\n @for (card of cards$ | async; track card; let i = $index) {\n <elder-card\n class=\"card flex-none\"\n [ngClass]=\"cardClick.observed ? 'clickable' : 'unclickable'\"\n cdkDrag\n [cdkDragData]=\"card\"\n (click)=\"onCardSelected($event, card)\"\n >\n <div class=\"layout-row place-between-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n cardTemplate || simpleCardTemplate;\n context: { $implicit: card, index: i }\n \"\n ></ng-container>\n @if (canRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"hide\"\n (click)=\"onRequestRemoveCard($event, card)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n </elder-card>\n }\n </div>\n </div>\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</div>\n", styles: [".card-stack{border-radius:var(--elder-border-radius-sm);border:var(--elder-border-light)}.card-list.cdk-drop-list-dragging{border:2px dashed var(--md-sys-color-outline-variant)}.stack-header{height:62px}.card-container{min-width:120px;min-height:0}.card-list{min-height:100%}.card{border-radius:var(--elder-border-radius-sm);box-shadow:var(--mat-app-elevation-shadow-level-1);cursor:move;overflow:hidden}.card.cdk-drag-disabled.clickable{cursor:pointer}.card.cdk-drag-disabled.unclickable{cursor:default}.hoverme .hide{visibility:hidden}.hoverme:hover .hide{visibility:visible}.rotate{transform:rotate(-90deg)}.noselect{-webkit-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: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: ElderCardComponent, selector: "elder-card", inputs: ["appearance", "float", "flat"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
13337
13565
  }
13338
13566
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCardStackComponent, decorators: [{
13339
13567
  type: Component,
@@ -13347,7 +13575,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
13347
13575
  NgClass,
13348
13576
  NgTemplateOutlet,
13349
13577
  AsyncPipe,
13350
- TranslateModule,
13578
+ ElderTranslatePipe,
13351
13579
  ], template: "<div class=\"layout-col full card-stack hoverme\">\n <!-- Header -->\n @if (headerEnabled) {\n <header class=\"layout-row place-start-center flex-none gap-md stack-header p-md\">\n <h3 class=\"mat-subtitle-2 noselect\">{{ headerTitle | translate }}</h3>\n <small class=\"mat-caption noselect\">({{ (cards$ | async)?.length }})</small>\n <span class=\"flex\"></span>\n @if (canAdd) {\n <button mat-icon-button type=\"button\" (click)=\"onRequestNewCard($event)\">\n <mat-icon>add</mat-icon>\n </button>\n }\n </header>\n }\n @if (headerEnabled) {\n <mat-divider></mat-divider>\n }\n\n <!-- card list -->\n <div class=\"layout-col flex card-container\">\n <div\n 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 [cdkDropListEnterPredicate]=\"enterPredicate\"\n (cdkDropListEntered)=\"cardEntered($event)\"\n (cdkDropListExited)=\"cardExited($event)\"\n (cdkDropListDropped)=\"cardDrop($event)\"\n >\n <!-- card -->\n @for (card of cards$ | async; track card; let i = $index) {\n <elder-card\n class=\"card flex-none\"\n [ngClass]=\"cardClick.observed ? 'clickable' : 'unclickable'\"\n cdkDrag\n [cdkDragData]=\"card\"\n (click)=\"onCardSelected($event, card)\"\n >\n <div class=\"layout-row place-between-center flex\">\n <ng-container\n *ngTemplateOutlet=\"\n cardTemplate || simpleCardTemplate;\n context: { $implicit: card, index: i }\n \"\n ></ng-container>\n @if (canRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"hide\"\n (click)=\"onRequestRemoveCard($event, card)\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n </elder-card>\n }\n </div>\n </div>\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</div>\n", styles: [".card-stack{border-radius:var(--elder-border-radius-sm);border:var(--elder-border-light)}.card-list.cdk-drop-list-dragging{border:2px dashed var(--md-sys-color-outline-variant)}.stack-header{height:62px}.card-container{min-width:120px;min-height:0}.card-list{min-height:100%}.card{border-radius:var(--elder-border-radius-sm);box-shadow:var(--mat-app-elevation-shadow-level-1);cursor:move;overflow:hidden}.card.cdk-drag-disabled.clickable{cursor:pointer}.card.cdk-drag-disabled.unclickable{cursor:default}.hoverme .hide{visibility:hidden}.hoverme:hover .hide{visibility:visible}.rotate{transform:rotate(-90deg)}.noselect{-webkit-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"] }]
13352
13580
  }], ctorParameters: () => [], propDecorators: { stackId: [{
13353
13581
  type: Input
@@ -13522,8 +13750,6 @@ class ElderCardModule {
13522
13750
  // Angular
13523
13751
  CommonModule,
13524
13752
  RouterModule,
13525
- // Third Party
13526
- TranslateModule,
13527
13753
  MatCardModule,
13528
13754
  ElderCardComponent,
13529
13755
  ElderCardTitleDirective,
@@ -13542,8 +13768,6 @@ class ElderCardModule {
13542
13768
  // Angular
13543
13769
  CommonModule,
13544
13770
  RouterModule,
13545
- // Third Party
13546
- TranslateModule,
13547
13771
  MatCardModule,
13548
13772
  ElderCardComponent] }); }
13549
13773
  }
@@ -13554,8 +13778,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
13554
13778
  // Angular
13555
13779
  CommonModule,
13556
13780
  RouterModule,
13557
- // Third Party
13558
- TranslateModule,
13559
13781
  MatCardModule,
13560
13782
  ElderCardComponent,
13561
13783
  ElderCardTitleDirective,
@@ -13675,7 +13897,6 @@ class ElderCardOrganizerModule {
13675
13897
  MatDividerModule,
13676
13898
  MatRippleModule,
13677
13899
  DragDropModule,
13678
- TranslateModule,
13679
13900
  ElderCardModule,
13680
13901
  ElderCardOrganizerComponent,
13681
13902
  ElderCardStackComponent,
@@ -13686,7 +13907,6 @@ class ElderCardOrganizerModule {
13686
13907
  MatDividerModule,
13687
13908
  MatRippleModule,
13688
13909
  DragDropModule,
13689
- TranslateModule,
13690
13910
  ElderCardModule,
13691
13911
  ElderCardOrganizerComponent,
13692
13912
  ElderCardStackComponent] }); }
@@ -13701,7 +13921,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
13701
13921
  MatDividerModule,
13702
13922
  MatRippleModule,
13703
13923
  DragDropModule,
13704
- TranslateModule,
13705
13924
  ElderCardModule,
13706
13925
  ElderCardOrganizerComponent,
13707
13926
  ElderCardStackComponent,
@@ -14701,7 +14920,7 @@ class ElderCompositeSortComponent {
14701
14920
  }
14702
14921
  }
14703
14922
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCompositeSortComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14704
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderCompositeSortComponent, isStandalone: true, selector: "elder-composite-sort", inputs: { availableSorts: { classPropertyName: "availableSorts", publicName: "availableSorts", isSignal: true, isRequired: true, transformFunction: null }, sorts: { classPropertyName: "sorts", publicName: "sorts", isSignal: true, isRequired: false, transformFunction: null }, translationPrefix: { classPropertyName: "translationPrefix", publicName: "translationPrefix", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sorts: "sortsChange", sortsChange: "sortsChange" }, ngImport: i0, template: "<div class=\"layout-row place-start-center flex-none\">\n <button mat-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n {{ translationPrefix() + selectedSort().id | translate }}\n\n <mat-icon style=\"font-size: 22px; height: 22px\">sort</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n @for (namedSort of availableSorts(); track namedSort.id) {\n <button mat-menu-item type=\"button\" (click)=\"selectSort(namedSort)\">\n <mat-icon>sort</mat-icon>\n <span [class.mat-body-strong]=\"selectedSort()?.id === namedSort.id\">{{\n translationPrefix() + namedSort.id | translate\n }}</span>\n </button>\n }\n </mat-menu>\n </button>\n\n <button mat-icon-button type=\"button\" (click)=\"toggleSortDirection($event)\">\n <mat-icon style=\"font-size: 22px\">{{\n selectedSortDirection() === 'asc' ? 'arrow_downward' : 'arrow_upward'\n }}</mat-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14923
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderCompositeSortComponent, isStandalone: true, selector: "elder-composite-sort", inputs: { availableSorts: { classPropertyName: "availableSorts", publicName: "availableSorts", isSignal: true, isRequired: true, transformFunction: null }, sorts: { classPropertyName: "sorts", publicName: "sorts", isSignal: true, isRequired: false, transformFunction: null }, translationPrefix: { classPropertyName: "translationPrefix", publicName: "translationPrefix", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sorts: "sortsChange", sortsChange: "sortsChange" }, ngImport: i0, template: "<div class=\"layout-row place-start-center flex-none\">\n <button mat-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n {{ translationPrefix() + selectedSort().id | translate }}\n\n <mat-icon style=\"font-size: 22px; height: 22px\">sort</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n @for (namedSort of availableSorts(); track namedSort.id) {\n <button mat-menu-item type=\"button\" (click)=\"selectSort(namedSort)\">\n <mat-icon>sort</mat-icon>\n <span [class.mat-body-strong]=\"selectedSort()?.id === namedSort.id\">{{\n translationPrefix() + namedSort.id | translate\n }}</span>\n </button>\n }\n </mat-menu>\n </button>\n\n <button mat-icon-button type=\"button\" (click)=\"toggleSortDirection($event)\">\n <mat-icon style=\"font-size: 22px\">{{\n selectedSortDirection() === 'asc' ? 'arrow_downward' : 'arrow_upward'\n }}</mat-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14705
14924
  }
14706
14925
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCompositeSortComponent, decorators: [{
14707
14926
  type: Component,
@@ -14711,7 +14930,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14711
14930
  MatIconButton,
14712
14931
  MatMenu,
14713
14932
  MatMenuItem,
14714
- TranslateModule,
14933
+ ElderTranslatePipe,
14715
14934
  MatMenuTrigger,
14716
14935
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-row place-start-center flex-none\">\n <button mat-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n {{ translationPrefix() + selectedSort().id | translate }}\n\n <mat-icon style=\"font-size: 22px; height: 22px\">sort</mat-icon>\n\n <mat-menu #menu=\"matMenu\">\n @for (namedSort of availableSorts(); track namedSort.id) {\n <button mat-menu-item type=\"button\" (click)=\"selectSort(namedSort)\">\n <mat-icon>sort</mat-icon>\n <span [class.mat-body-strong]=\"selectedSort()?.id === namedSort.id\">{{\n translationPrefix() + namedSort.id | translate\n }}</span>\n </button>\n }\n </mat-menu>\n </button>\n\n <button mat-icon-button type=\"button\" (click)=\"toggleSortDirection($event)\">\n <mat-icon style=\"font-size: 22px\">{{\n selectedSortDirection() === 'asc' ? 'arrow_downward' : 'arrow_upward'\n }}</mat-icon>\n </button>\n</div>\n" }]
14717
14936
  }], ctorParameters: () => [], propDecorators: { availableSorts: [{ type: i0.Input, args: [{ isSignal: true, alias: "availableSorts", required: true }] }], sorts: [{ type: i0.Input, args: [{ isSignal: true, alias: "sorts", required: false }] }, { type: i0.Output, args: ["sortsChange"] }], sortsChange: [{ type: i0.Output, args: ["sortsChange"] }], translationPrefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "translationPrefix", required: false }] }] } });
@@ -14773,8 +14992,8 @@ class ElderConfirmDialogComponent {
14773
14992
  this.dialogRef = dialogRef;
14774
14993
  this.yesNo = false;
14775
14994
  }
14776
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderConfirmDialogComponent, deps: [{ token: i1$7.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
14777
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderConfirmDialogComponent, isStandalone: true, 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 type=\"button\" [matDialogClose]=\"false\">\n <mat-icon>close</mat-icon>\n </button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md gap-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 (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-flat-button cdkFocusInitial (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? 'actions.yes' : 'actions.ok') | translate }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "directive", type: MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14995
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderConfirmDialogComponent, deps: [{ token: i1$6.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
14996
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderConfirmDialogComponent, isStandalone: true, 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 type=\"button\" [matDialogClose]=\"false\">\n <mat-icon>close</mat-icon>\n </button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md gap-md\">\n <div class=\"flex\">\n <p>{{ message | translate }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-flat-button cdkFocusInitial (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? 'actions.yes' : 'actions.ok') | translate }}\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "directive", type: MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14778
14997
  }
14779
14998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderConfirmDialogComponent, decorators: [{
14780
14999
  type: Component,
@@ -14785,11 +15004,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14785
15004
  MatIconButton,
14786
15005
  MatDialogClose,
14787
15006
  MatIcon,
14788
- TranslateModule,
15007
+ ElderTranslatePipe,
14789
15008
  CdkTrapFocus,
14790
15009
  MatButton,
14791
- ], changeDetection: ChangeDetectionStrategy.OnPush, 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 type=\"button\" [matDialogClose]=\"false\">\n <mat-icon>close</mat-icon>\n </button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md gap-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 (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-flat-button cdkFocusInitial (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? 'actions.yes' : 'actions.ok') | translate }}\n </button>\n </div>\n </div>\n</div>\n" }]
14792
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }] });
15010
+ ], changeDetection: ChangeDetectionStrategy.OnPush, 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 type=\"button\" [matDialogClose]=\"false\">\n <mat-icon>close</mat-icon>\n </button>\n <h3>{{ title | translate }}</h3>\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-md gap-md\">\n <div class=\"flex\">\n <p>{{ message | translate }}</p>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\" cdkTrapFocus>\n <button type=\"button\" mat-button (click)=\"dialogRef.close(false)\">\n {{ (yesNo ? 'actions.no' : 'actions.cancel') | translate }}\n </button>\n\n <button type=\"submit\" mat-flat-button cdkFocusInitial (click)=\"dialogRef.close(true)\">\n {{ (yesNo ? 'actions.yes' : 'actions.ok') | translate }}\n </button>\n </div>\n </div>\n</div>\n" }]
15011
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }] });
14793
15012
 
14794
15013
  class QuestionDialogConfig extends ElderDialogConfig {
14795
15014
  }
@@ -14808,8 +15027,8 @@ class ElderQuestionDialogComponent {
14808
15027
  get isValid() {
14809
15028
  return !!this.answer;
14810
15029
  }
14811
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuestionDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
14812
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderQuestionDialogComponent, isStandalone: true, 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 type=\"button\" [matDialogClose]=\"false\">\n <mat-icon>close</mat-icon>\n </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 <div class=\"layout-col flex\">\n <p>{{ data.question }}</p>\n\n <mat-form-field class=\"full-width\">\n <input\n matInput\n type=\"text\"\n name=\"name\"\n [(ngModel)]=\"answer\"\n cdkFocusInitial\n placeholder=\"{{ 'context.name' | translate }}\"\n required\n />\n </mat-form-field>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\">\n <button mat-button type=\"button\" (click)=\"cancel($event)\">\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button mat-flat-button type=\"submit\" color=\"primary\" [disabled]=\"!isValid\">\n {{ 'actions.ok' | translate }}\n </button>\n </div>\n </form>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "directive", type: MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15030
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuestionDialogComponent, deps: [{ token: i1$6.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
15031
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderQuestionDialogComponent, isStandalone: true, 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 type=\"button\" [matDialogClose]=\"false\">\n <mat-icon>close</mat-icon>\n </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 <div class=\"layout-col flex\">\n <p>{{ data.question }}</p>\n\n <mat-form-field class=\"full-width\">\n <input\n matInput\n type=\"text\"\n name=\"name\"\n [(ngModel)]=\"answer\"\n cdkFocusInitial\n placeholder=\"{{ 'context.name' | translate }}\"\n required\n />\n </mat-form-field>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\">\n <button mat-button type=\"button\" (click)=\"cancel($event)\">\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button mat-flat-button type=\"submit\" color=\"primary\" [disabled]=\"!isValid\">\n {{ 'actions.ok' | translate }}\n </button>\n </div>\n </form>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "directive", type: MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14813
15032
  }
14814
15033
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuestionDialogComponent, decorators: [{
14815
15034
  type: Component,
@@ -14825,9 +15044,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14825
15044
  MatFormField,
14826
15045
  MatInput,
14827
15046
  MatButton,
14828
- TranslateModule,
15047
+ ElderTranslatePipe,
14829
15048
  ], 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 type=\"button\" [matDialogClose]=\"false\">\n <mat-icon>close</mat-icon>\n </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 <div class=\"layout-col flex\">\n <p>{{ data.question }}</p>\n\n <mat-form-field class=\"full-width\">\n <input\n matInput\n type=\"text\"\n name=\"name\"\n [(ngModel)]=\"answer\"\n cdkFocusInitial\n placeholder=\"{{ 'context.name' | translate }}\"\n required\n />\n </mat-form-field>\n </div>\n\n <div class=\"layout-row place-end-center gap-md flex-none\">\n <button mat-button type=\"button\" (click)=\"cancel($event)\">\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button mat-flat-button type=\"submit\" color=\"primary\" [disabled]=\"!isValid\">\n {{ 'actions.ok' | translate }}\n </button>\n </div>\n </form>\n</div>\n" }]
14830
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
15049
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
14831
15050
  type: Inject,
14832
15051
  args: [MAT_DIALOG_DATA]
14833
15052
  }] }] });
@@ -14850,13 +15069,13 @@ class ElderSelectionDialogComponent {
14850
15069
  confirmSelection() {
14851
15070
  this.dialogRef.close();
14852
15071
  }
14853
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
14854
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderSelectionDialogComponent, isStandalone: true, selector: "elder-selection-dialog", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n @if (title) {\n <h2>{{ title | translate }}</h2>\n }\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 gap-md\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\"\n >\n {{ 'actions.select' | translate }}\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15072
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogComponent, deps: [{ token: i1$6.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
15073
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderSelectionDialogComponent, isStandalone: true, selector: "elder-selection-dialog", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n @if (title) {\n <h2>{{ title | translate }}</h2>\n }\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 gap-md\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\"\n >\n {{ 'actions.select' | translate }}\n </button>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14855
15074
  }
14856
15075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogComponent, decorators: [{
14857
15076
  type: Component,
14858
- args: [{ selector: 'elder-selection-dialog', imports: [NgTemplateOutlet, MatButton, MatDialogClose, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n @if (title) {\n <h2>{{ title | translate }}</h2>\n }\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 gap-md\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\"\n >\n {{ 'actions.select' | translate }}\n </button>\n </div>\n</div>\n" }]
14859
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
15077
+ args: [{ selector: 'elder-selection-dialog', imports: [NgTemplateOutlet, MatButton, MatDialogClose, ElderTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-col full\">\n <div class=\"layout-col flex-none\">\n @if (title) {\n <h2>{{ title | translate }}</h2>\n }\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 gap-md\">\n <button mat-button type=\"button\" mat-dialog-close>\n {{ 'actions.cancel' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n [disabled]=\"data.selectionModel.isEmpty()\"\n (click)=\"confirmSelection()\"\n >\n {{ 'actions.select' | translate }}\n </button>\n </div>\n</div>\n" }]
15078
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
14860
15079
  type: Inject,
14861
15080
  args: [MAT_DIALOG_DATA]
14862
15081
  }] }], propDecorators: { title: [{
@@ -14890,7 +15109,7 @@ class ElderSelectionDialogDirective {
14890
15109
  });
14891
15110
  dialogRef.afterClosed().subscribe((result) => this.close.emit(result));
14892
15111
  }
14893
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogDirective, deps: [{ token: i0.TemplateRef }, { token: i1$7.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
15112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogDirective, deps: [{ token: i0.TemplateRef }, { token: i1$6.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
14894
15113
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderSelectionDialogDirective, isStandalone: true, selector: "[elderDialog]", inputs: { selectionModel: "selectionModel" }, outputs: { close: "close" }, exportAs: ["elderSelection"], ngImport: i0 }); }
14895
15114
  }
14896
15115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogDirective, decorators: [{
@@ -14899,7 +15118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14899
15118
  selector: '[elderDialog]',
14900
15119
  exportAs: 'elderSelection',
14901
15120
  }]
14902
- }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i1$7.MatDialog }], propDecorators: { selectionModel: [{
15121
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i1$6.MatDialog }], propDecorators: { selectionModel: [{
14903
15122
  type: Input
14904
15123
  }], close: [{
14905
15124
  type: Output
@@ -14928,11 +15147,11 @@ class ElderHeaderComponent {
14928
15147
  **************************************************************************/
14929
15148
  ngOnInit() { }
14930
15149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14931
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ElderHeaderComponent, isStandalone: true, selector: "elder-header", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: true, transformFunction: null }, subheader: { classPropertyName: "subheader", publicName: "subheader", isSignal: true, isRequired: false, transformFunction: null }, truncateHeader: { classPropertyName: "truncateHeader", publicName: "truncateHeader", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"layout-col\">\n <h2 [class]=\"[truncateHeader() ? 'truncate-line' : undefined]\">\n {{ header() ? (header() | translate) : '-' }}\n </h2>\n <span [class]=\"['mat-caption', truncateHeader() ? 'truncate-line' : undefined]\">{{\n subheader() ? (subheader() | translate) : ' '\n }}</span>\n</div>\n", styles: ["h2{margin:0;font:var(--md-sys-typescale-title-large);letter-spacing:var(--md-sys-typescale-title-large-tracking)}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ElderHeaderComponent, isStandalone: true, selector: "elder-header", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: true, transformFunction: null }, subheader: { classPropertyName: "subheader", publicName: "subheader", isSignal: true, isRequired: false, transformFunction: null }, truncateHeader: { classPropertyName: "truncateHeader", publicName: "truncateHeader", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"layout-col\">\n <h2 [class]=\"[truncateHeader() ? 'truncate-line' : undefined]\">\n {{ header() ? (header() | translate) : '-' }}\n </h2>\n <span [class]=\"['mat-caption', truncateHeader() ? 'truncate-line' : undefined]\">{{\n subheader() ? (subheader() | translate) : ' '\n }}</span>\n</div>\n", styles: ["h2{margin:0;font:var(--md-sys-typescale-title-large);letter-spacing:var(--md-sys-typescale-title-large-tracking)}\n"], dependencies: [{ kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
14932
15151
  }
14933
15152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderComponent, decorators: [{
14934
15153
  type: Component,
14935
- args: [{ selector: 'elder-header', imports: [TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-col\">\n <h2 [class]=\"[truncateHeader() ? 'truncate-line' : undefined]\">\n {{ header() ? (header() | translate) : '-' }}\n </h2>\n <span [class]=\"['mat-caption', truncateHeader() ? 'truncate-line' : undefined]\">{{\n subheader() ? (subheader() | translate) : ' '\n }}</span>\n</div>\n", styles: ["h2{margin:0;font:var(--md-sys-typescale-title-large);letter-spacing:var(--md-sys-typescale-title-large-tracking)}\n"] }]
15154
+ args: [{ selector: 'elder-header', imports: [ElderTranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-col\">\n <h2 [class]=\"[truncateHeader() ? 'truncate-line' : undefined]\">\n {{ header() ? (header() | translate) : '-' }}\n </h2>\n <span [class]=\"['mat-caption', truncateHeader() ? 'truncate-line' : undefined]\">{{\n subheader() ? (subheader() | translate) : ' '\n }}</span>\n</div>\n", styles: ["h2{margin:0;font:var(--md-sys-typescale-title-large);letter-spacing:var(--md-sys-typescale-title-large-tracking)}\n"] }]
14936
15155
  }], ctorParameters: () => [], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: true }] }], subheader: [{ type: i0.Input, args: [{ isSignal: true, alias: "subheader", required: false }] }], truncateHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "truncateHeader", required: false }] }] } });
14937
15156
 
14938
15157
  class ElderHeaderModule {
@@ -14941,18 +15160,12 @@ class ElderHeaderModule {
14941
15160
  // Angular
14942
15161
  CommonModule,
14943
15162
  RouterModule,
14944
- // Third Party
14945
- TranslateModule,
14946
15163
  // Angular Material
14947
15164
  ElderHeaderComponent], exports: [ElderHeaderComponent] }); }
14948
15165
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderModule, imports: [
14949
15166
  // Angular
14950
15167
  CommonModule,
14951
- RouterModule,
14952
- // Third Party
14953
- TranslateModule,
14954
- // Angular Material
14955
- ElderHeaderComponent] }); }
15168
+ RouterModule] }); }
14956
15169
  }
14957
15170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderModule, decorators: [{
14958
15171
  type: NgModule,
@@ -14961,8 +15174,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14961
15174
  // Angular
14962
15175
  CommonModule,
14963
15176
  RouterModule,
14964
- // Third Party
14965
- TranslateModule,
14966
15177
  // Angular Material
14967
15178
  ElderHeaderComponent,
14968
15179
  ],
@@ -15114,7 +15325,7 @@ class ElderDialogService {
15114
15325
  matConfig.height = '40vh';
15115
15326
  return matConfig;
15116
15327
  }
15117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogService, deps: [{ token: i1$7.MatDialog }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
15328
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogService, deps: [{ token: i1$6.MatDialog }, { token: ElderTranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
15118
15329
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogService, providedIn: 'root' }); }
15119
15330
  }
15120
15331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogService, decorators: [{
@@ -15122,7 +15333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
15122
15333
  args: [{
15123
15334
  providedIn: 'root',
15124
15335
  }]
15125
- }], ctorParameters: () => [{ type: i1$7.MatDialog }, { type: i1$2.TranslateService }] });
15336
+ }], ctorParameters: () => [{ type: i1$6.MatDialog }, { type: ElderTranslateService }] });
15126
15337
 
15127
15338
  class ElderDialogModule {
15128
15339
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -15134,7 +15345,6 @@ class ElderDialogModule {
15134
15345
  MatToolbarModule,
15135
15346
  MatInputModule,
15136
15347
  A11yModule,
15137
- TranslateModule,
15138
15348
  ElderThemeModule,
15139
15349
  ElderHeaderModule,
15140
15350
  ElderConfirmDialogComponent,
@@ -15152,7 +15362,6 @@ class ElderDialogModule {
15152
15362
  MatToolbarModule,
15153
15363
  MatInputModule,
15154
15364
  A11yModule,
15155
- TranslateModule,
15156
15365
  ElderThemeModule,
15157
15366
  ElderHeaderModule,
15158
15367
  ElderConfirmDialogComponent,
@@ -15171,7 +15380,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
15171
15380
  MatToolbarModule,
15172
15381
  MatInputModule,
15173
15382
  A11yModule,
15174
- TranslateModule,
15175
15383
  ElderThemeModule,
15176
15384
  ElderHeaderModule,
15177
15385
  ElderConfirmDialogComponent,
@@ -15571,11 +15779,11 @@ class DataContextStateIndicatorComponent {
15571
15779
  this.dataContext$.next(dataContext);
15572
15780
  }
15573
15781
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DataContextStateIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15574
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: DataContextStateIndicatorComponent, isStandalone: true, selector: "elder-data-context-state-indicator", inputs: { dataContext: "dataContext" }, ngImport: i0, template: "@if (dataContext$ | async; as dataContext) {\n @if (dataContext) {\n @if (dataContext.isStarted$ | async) {\n @if (!(dataContext?.status | async)?.hasError) {\n @if ((dataContext?.data | async)?.length === 0) {\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', iconColor: 'warn', text: 'Error while loading data' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', text: 'Data context not started' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"indicator; context: { icon: 'warning', text: 'No data context' }\"\n >\n </ng-container>\n }\n}\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context: { icon: 'info', text: 'No data available' }\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{ icon }}</mat-icon>\n <span class=\"hint mat-body-2\">{{ text | translate }}</span>\n </div>\n </div>\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:var(--md-sys-color-outline);flex-grow:1}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15782
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: DataContextStateIndicatorComponent, isStandalone: true, selector: "elder-data-context-state-indicator", inputs: { dataContext: "dataContext" }, ngImport: i0, template: "@if (dataContext$ | async; as dataContext) {\n @if (dataContext) {\n @if (dataContext.isStarted$ | async) {\n @if (!(dataContext?.status | async)?.hasError) {\n @if ((dataContext?.data | async)?.length === 0) {\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', iconColor: 'warn', text: 'Error while loading data' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', text: 'Data context not started' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"indicator; context: { icon: 'warning', text: 'No data context' }\"\n >\n </ng-container>\n }\n}\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context: { icon: 'info', text: 'No data available' }\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{ icon }}</mat-icon>\n <span class=\"hint mat-body-2\">{{ text | translate }}</span>\n </div>\n </div>\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:var(--md-sys-color-outline);flex-grow:1}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
15575
15783
  }
15576
15784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DataContextStateIndicatorComponent, decorators: [{
15577
15785
  type: Component,
15578
- args: [{ selector: 'elder-data-context-state-indicator', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, MatIcon, AsyncPipe, TranslateModule], template: "@if (dataContext$ | async; as dataContext) {\n @if (dataContext) {\n @if (dataContext.isStarted$ | async) {\n @if (!(dataContext?.status | async)?.hasError) {\n @if ((dataContext?.data | async)?.length === 0) {\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', iconColor: 'warn', text: 'Error while loading data' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', text: 'Data context not started' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"indicator; context: { icon: 'warning', text: 'No data context' }\"\n >\n </ng-container>\n }\n}\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context: { icon: 'info', text: 'No data available' }\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{ icon }}</mat-icon>\n <span class=\"hint mat-body-2\">{{ text | translate }}</span>\n </div>\n </div>\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:var(--md-sys-color-outline);flex-grow:1}\n"] }]
15786
+ args: [{ selector: 'elder-data-context-state-indicator', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, MatIcon, AsyncPipe, ElderTranslatePipe], template: "@if (dataContext$ | async; as dataContext) {\n @if (dataContext) {\n @if (dataContext.isStarted$ | async) {\n @if (!(dataContext?.status | async)?.hasError) {\n @if ((dataContext?.data | async)?.length === 0) {\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', iconColor: 'warn', text: 'Error while loading data' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n indicator;\n context: { icon: 'warning', text: 'Data context not started' }\n \"\n >\n </ng-container>\n }\n } @else {\n <ng-container\n *ngTemplateOutlet=\"indicator; context: { icon: 'warning', text: 'No data context' }\"\n >\n </ng-container>\n }\n}\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context: { icon: 'info', text: 'No data available' }\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n <div class=\"layout-col place-center-center full elder-dc-indicator-container mat-body-2\">\n <div class=\"layout-row place-center-center gap-lg\">\n <mat-icon [color]=\"iconColor\">{{ icon }}</mat-icon>\n <span class=\"hint mat-body-2\">{{ text | translate }}</span>\n </div>\n </div>\n</ng-template>\n", styles: [".elder-dc-indicator-container{color:var(--md-sys-color-outline);flex-grow:1}\n"] }]
15579
15787
  }], ctorParameters: () => [], propDecorators: { dataContext: [{
15580
15788
  type: Input
15581
15789
  }] } });
@@ -16626,8 +16834,6 @@ class ElderDataCommonModule {
16626
16834
  MatProgressBarModule,
16627
16835
  MatDialogModule,
16628
16836
  MatTooltipModule,
16629
- // translations
16630
- TranslateModule,
16631
16837
  DragDropModule,
16632
16838
  ElderDataToolbarComponent,
16633
16839
  ElderToolbarContentDirective,
@@ -16662,8 +16868,6 @@ class ElderDataCommonModule {
16662
16868
  MatProgressBarModule,
16663
16869
  MatDialogModule,
16664
16870
  MatTooltipModule,
16665
- // translations
16666
- TranslateModule,
16667
16871
  DragDropModule,
16668
16872
  ElderDataToolbarComponent,
16669
16873
  ElderCompositeSortComponent,
@@ -16686,8 +16890,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
16686
16890
  MatProgressBarModule,
16687
16891
  MatDialogModule,
16688
16892
  MatTooltipModule,
16689
- // translations
16690
- TranslateModule,
16691
16893
  DragDropModule,
16692
16894
  ElderDataToolbarComponent,
16693
16895
  ElderToolbarContentDirective,
@@ -17332,7 +17534,7 @@ class ElderTableColumnDirective {
17332
17534
  constructor(cdkColumn) {
17333
17535
  this.cdkColumn = cdkColumn;
17334
17536
  }
17335
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTableColumnDirective, deps: [{ token: i1$8.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Directive }); }
17537
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTableColumnDirective, deps: [{ token: i1$7.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Directive }); }
17336
17538
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderTableColumnDirective, isStandalone: true, selector: "th[elderColumnDef]", ngImport: i0 }); }
17337
17539
  }
17338
17540
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTableColumnDirective, decorators: [{
@@ -17340,7 +17542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
17340
17542
  args: [{
17341
17543
  selector: 'th[elderColumnDef]',
17342
17544
  }]
17343
- }], ctorParameters: () => [{ type: i1$8.CdkColumnDef }] });
17545
+ }], ctorParameters: () => [{ type: i1$7.CdkColumnDef }] });
17344
17546
 
17345
17547
  class ElderTableModelQueryGroup {
17346
17548
  /***************************************************************************
@@ -18206,7 +18408,7 @@ class ElderInfiniteAutocompleteDirective {
18206
18408
  this.unsubscribe$.next();
18207
18409
  this.unsubscribe$.complete();
18208
18410
  }
18209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInfiniteAutocompleteDirective, deps: [{ token: i1$9.MatAutocomplete, host: true }, { token: ElderInfiniteScrollDirective, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
18411
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInfiniteAutocompleteDirective, deps: [{ token: i1$8.MatAutocomplete, host: true }, { token: ElderInfiniteScrollDirective, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
18210
18412
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderInfiniteAutocompleteDirective, isStandalone: true, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]", ngImport: i0 }); }
18211
18413
  }
18212
18414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInfiniteAutocompleteDirective, decorators: [{
@@ -18214,7 +18416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
18214
18416
  args: [{
18215
18417
  selector: 'mat-autocomplete[elderElderInfiniteAutocomplete]',
18216
18418
  }]
18217
- }], ctorParameters: () => [{ type: i1$9.MatAutocomplete, decorators: [{
18419
+ }], ctorParameters: () => [{ type: i1$8.MatAutocomplete, decorators: [{
18218
18420
  type: Host
18219
18421
  }] }, { type: ElderInfiniteScrollDirective, decorators: [{
18220
18422
  type: Host
@@ -18294,12 +18496,12 @@ class ElderPaginatorIntl extends MatPaginatorIntl {
18294
18496
  previousPageLabel !== this._previousPageKey ? previousPageLabel : 'Previous page';
18295
18497
  this.changes.next();
18296
18498
  }
18297
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPaginatorIntl, deps: [{ token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
18499
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPaginatorIntl, deps: [{ token: i1$9.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
18298
18500
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPaginatorIntl }); }
18299
18501
  }
18300
18502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPaginatorIntl, decorators: [{
18301
18503
  type: Injectable
18302
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
18504
+ }], ctorParameters: () => [{ type: i1$9.TranslateService }] });
18303
18505
 
18304
18506
  class ElderDelayedFocusDirective {
18305
18507
  constructor(el) {
@@ -18355,7 +18557,7 @@ class ElderTouchedDirective {
18355
18557
  control.markAsTouched();
18356
18558
  }
18357
18559
  }
18358
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTouchedDirective, deps: [{ token: i1$4.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); }
18560
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTouchedDirective, deps: [{ token: i1$3.NgControl }], target: i0.ɵɵFactoryTarget.Directive }); }
18359
18561
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderTouchedDirective, isStandalone: true, selector: "[elderTouched]", ngImport: i0 }); }
18360
18562
  }
18361
18563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTouchedDirective, decorators: [{
@@ -18363,7 +18565,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
18363
18565
  args: [{
18364
18566
  selector: '[elderTouched]',
18365
18567
  }]
18366
- }], ctorParameters: () => [{ type: i1$4.NgControl }] });
18568
+ }], ctorParameters: () => [{ type: i1$3.NgControl }] });
18367
18569
 
18368
18570
  /**
18369
18571
  * This directive provides a parent form to any kind of nested control
@@ -19328,7 +19530,7 @@ class ElderTripleStateCheckboxDirective {
19328
19530
  toggleNextState() {
19329
19531
  this.controller.toggleNextState();
19330
19532
  }
19331
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTripleStateCheckboxDirective, deps: [{ token: i1$b.MatCheckbox }, { token: i1$4.NgModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
19533
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTripleStateCheckboxDirective, deps: [{ token: i1$b.MatCheckbox }, { token: i1$3.NgModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
19332
19534
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderTripleStateCheckboxDirective, isStandalone: true, selector: "mat-checkbox[elderTripleStateCheckbox]", outputs: { valueChange: "valueChange" }, ngImport: i0 }); }
19333
19535
  }
19334
19536
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTripleStateCheckboxDirective, decorators: [{
@@ -19336,7 +19538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19336
19538
  args: [{
19337
19539
  selector: 'mat-checkbox[elderTripleStateCheckbox]',
19338
19540
  }]
19339
- }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$4.NgModel, decorators: [{
19541
+ }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$3.NgModel, decorators: [{
19340
19542
  type: Optional
19341
19543
  }] }], propDecorators: { valueChange: [{
19342
19544
  type: Output
@@ -19642,7 +19844,7 @@ class CommonValidationMessageStrategy {
19642
19844
  }
19643
19845
  return undefined;
19644
19846
  }
19645
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonValidationMessageStrategy, deps: [{ token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19847
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonValidationMessageStrategy, deps: [{ token: ElderTranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19646
19848
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonValidationMessageStrategy, providedIn: 'root' }); }
19647
19849
  }
19648
19850
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonValidationMessageStrategy, decorators: [{
@@ -19650,7 +19852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19650
19852
  args: [{
19651
19853
  providedIn: 'root',
19652
19854
  }]
19653
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
19855
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
19654
19856
 
19655
19857
  class DynamicValidationMessageStrategy {
19656
19858
  /***************************************************************************
@@ -19687,7 +19889,7 @@ class DynamicValidationMessageStrategy {
19687
19889
  renderDynamicMessage(message) {
19688
19890
  return this.translateService.instant(message.message, message.messageParams);
19689
19891
  }
19690
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DynamicValidationMessageStrategy, deps: [{ token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19892
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DynamicValidationMessageStrategy, deps: [{ token: ElderTranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19691
19893
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DynamicValidationMessageStrategy, providedIn: 'root' }); }
19692
19894
  }
19693
19895
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DynamicValidationMessageStrategy, decorators: [{
@@ -19695,7 +19897,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19695
19897
  args: [{
19696
19898
  providedIn: 'root',
19697
19899
  }]
19698
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
19900
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
19699
19901
 
19700
19902
  class ValidationMessageRendererService {
19701
19903
  /***************************************************************************
@@ -19950,7 +20152,7 @@ class ElderSingleStateCheckboxDirective {
19950
20152
  toggleNextState() {
19951
20153
  this.controller.toggleNextState();
19952
20154
  }
19953
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSingleStateCheckboxDirective, deps: [{ token: i1$b.MatCheckbox }, { token: i1$4.NgModel }], target: i0.ɵɵFactoryTarget.Directive }); }
20155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSingleStateCheckboxDirective, deps: [{ token: i1$b.MatCheckbox }, { token: i1$3.NgModel }], target: i0.ɵɵFactoryTarget.Directive }); }
19954
20156
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderSingleStateCheckboxDirective, isStandalone: true, selector: "mat-checkbox[elderSingleStateCheckbox]", ngImport: i0 }); }
19955
20157
  }
19956
20158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSingleStateCheckboxDirective, decorators: [{
@@ -19958,7 +20160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19958
20160
  args: [{
19959
20161
  selector: 'mat-checkbox[elderSingleStateCheckbox]',
19960
20162
  }]
19961
- }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$4.NgModel }] });
20163
+ }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$3.NgModel }] });
19962
20164
 
19963
20165
  class ElderFormsDirectivesModule {
19964
20166
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderFormsDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -21073,7 +21275,6 @@ class ElderGridModule {
21073
21275
  MatSelectModule,
21074
21276
  DragDropModule,
21075
21277
  ScrollingModule,
21076
- TranslateModule,
21077
21278
  ElderDataCommonModule,
21078
21279
  ElderInfiniteScrollModule,
21079
21280
  ElderFormsDirectivesModule,
@@ -21100,7 +21301,6 @@ class ElderGridModule {
21100
21301
  MatSelectModule,
21101
21302
  DragDropModule,
21102
21303
  ScrollingModule,
21103
- TranslateModule,
21104
21304
  ElderDataCommonModule,
21105
21305
  ElderInfiniteScrollModule,
21106
21306
  ElderFormsDirectivesModule,
@@ -21123,7 +21323,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21123
21323
  MatSelectModule,
21124
21324
  DragDropModule,
21125
21325
  ScrollingModule,
21126
- TranslateModule,
21127
21326
  ElderDataCommonModule,
21128
21327
  ElderInfiniteScrollModule,
21129
21328
  ElderFormsDirectivesModule,
@@ -21548,118 +21747,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21548
21747
  type: Input
21549
21748
  }] } });
21550
21749
 
21551
- class ElderLanguageService {
21552
- /***************************************************************************
21553
- * *
21554
- * Constructors *
21555
- * *
21556
- **************************************************************************/
21557
- constructor(translate, webStorage) {
21558
- this.translate = translate;
21559
- this.webStorage = webStorage;
21560
- /***************************************************************************
21561
- * *
21562
- * Fields *
21563
- * *
21564
- **************************************************************************/
21565
- this.logger = LoggerFactory.getLogger(this.constructor.name);
21566
- this.LANGUAGE_STORAGE_KEY = 'language';
21567
- this.currentLanguage$ = new BehaviorSubject(this.translate.currentLang);
21568
- this.translate.onLangChange.subscribe((change) => this.currentLanguage$.next(change.lang));
21569
- this.applyPreferredLanguage();
21570
- }
21571
- /***************************************************************************
21572
- * *
21573
- * Public API *
21574
- * *
21575
- **************************************************************************/
21576
- /**
21577
- * Returns the key of the currently applied language.
21578
- *
21579
- * @returns language key
21580
- */
21581
- get currentLanguage() {
21582
- return this.currentLanguage$.getValue();
21583
- }
21584
- /**
21585
- * Applies the given language which will immediately get apparent
21586
- * in the UI.
21587
- *
21588
- * @param lang language key
21589
- */
21590
- set currentLanguage(lang) {
21591
- this.setLanguageAndRemember(lang);
21592
- }
21593
- /**
21594
- * Returns an array of all available language keys.
21595
- *
21596
- * @returns e.g. ['en', 'de', 'fr']
21597
- */
21598
- get languages() {
21599
- return this.translate.getLangs();
21600
- }
21601
- /**
21602
- * Checks if the given language is currently active.
21603
- *
21604
- * @param lang language key
21605
- * @returns true if given language is currently active
21606
- */
21607
- isLanguageActive(lang) {
21608
- return this.currentLanguage === lang;
21609
- }
21610
- /**
21611
- * Returns the key of the last applied language.
21612
- *
21613
- * @returns language key of last applied language
21614
- */
21615
- get lastConfigured() {
21616
- return this.lookupPreferredLanguage();
21617
- }
21618
- /***************************************************************************
21619
- * *
21620
- * Public API *
21621
- * *
21622
- **************************************************************************/
21623
- lookupPreferredLanguage() {
21624
- return this.webStorage.getItem(this.LANGUAGE_STORAGE_KEY);
21625
- }
21626
- forgetPreferredLanguage() {
21627
- this.webStorage.removeItem(this.LANGUAGE_STORAGE_KEY);
21628
- }
21629
- rememberPreferredLanguage(lang) {
21630
- this.webStorage.setItem(this.LANGUAGE_STORAGE_KEY, lang);
21631
- }
21632
- applyPreferredLanguage() {
21633
- const preferred = this.lookupPreferredLanguage();
21634
- if (preferred) {
21635
- this.setLanguage(preferred);
21636
- }
21637
- else {
21638
- this.translate.use(this.translate.getBrowserLang());
21639
- }
21640
- }
21641
- /***************************************************************************
21642
- * *
21643
- * Private Methods *
21644
- * *
21645
- **************************************************************************/
21646
- setLanguageAndRemember(lang) {
21647
- this.setLanguage(lang);
21648
- this.rememberPreferredLanguage(lang);
21649
- }
21650
- setLanguage(lang) {
21651
- this.translate.use(lang);
21652
- }
21653
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, deps: [{ token: i1$2.TranslateService }, { token: WebLocalStorage }], target: i0.ɵɵFactoryTarget.Injectable }); }
21654
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, providedIn: 'root' }); }
21655
- }
21656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, decorators: [{
21657
- type: Injectable,
21658
- args: [{
21659
- providedIn: 'root',
21660
- }]
21661
- }], ctorParameters: () => [{ type: i1$2.TranslateService }, { type: WebLocalStorage }] });
21662
-
21663
21750
  class ElderLanguageSwitcherComponent {
21664
21751
  /***************************************************************************
21665
21752
  * *
@@ -21676,13 +21763,13 @@ class ElderLanguageSwitcherComponent {
21676
21763
  * *
21677
21764
  **************************************************************************/
21678
21765
  get currentLanguage() {
21679
- return this.language.currentLanguage;
21766
+ return this.language.currentLang();
21680
21767
  }
21681
21768
  set currentLanguage(lang) {
21682
- this.language.currentLanguage = lang;
21769
+ this.language.setCurrentLang(lang);
21683
21770
  }
21684
21771
  get languages() {
21685
- return this.language.languages;
21772
+ return this.language.langs();
21686
21773
  }
21687
21774
  setLanguage(lang) {
21688
21775
  this.currentLanguage = lang;
@@ -21699,10 +21786,10 @@ class ElderLanguageSwitcherComponent {
21699
21786
  * *
21700
21787
  **************************************************************************/
21701
21788
  isLanguageActive(lang) {
21702
- return this.language.isLanguageActive(lang);
21789
+ return this.language.currentLang() === lang;
21703
21790
  }
21704
21791
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageSwitcherComponent, deps: [{ token: ElderLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
21705
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLanguageSwitcherComponent, isStandalone: true, selector: "elder-language-switcher", inputs: { slimMode: "slimMode" }, ngImport: i0, template: "<mat-menu #languageMenu=\"matMenu\">\n @for (lang of languages; track lang) {\n <button mat-menu-item type=\"button\" (click)=\"currentLanguage = lang\">\n <mat-icon>language</mat-icon>\n <span class=\"text-body-large\" [class.active]=\"isLanguageActive(lang)\">{{\n 'language.' + lang | translate\n }}</span>\n </button>\n }\n</mat-menu>\n\n@if (slimMode) {\n <button mat-button type=\"button\" [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@if (!slimMode) {\n <mat-form-field>\n <mat-select\n placeholder=\"{{ 'language.language' | translate }}\"\n name=\"language\"\n [(ngModel)]=\"currentLanguage\"\n >\n @for (lang of languages; track lang) {\n <mat-option [value]=\"lang\">{{ 'language.' + lang | translate }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n}\n", styles: [".language{font-size:16px;text-transform:uppercase}.active{font-weight:700}\n"], dependencies: [{ kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21792
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLanguageSwitcherComponent, isStandalone: true, selector: "elder-language-switcher", inputs: { slimMode: "slimMode" }, ngImport: i0, template: "<mat-menu #languageMenu=\"matMenu\">\n @for (lang of languages; track lang) {\n <button mat-menu-item type=\"button\" (click)=\"currentLanguage = lang\">\n <mat-icon>language</mat-icon>\n <span class=\"text-body-large\" [class.active]=\"isLanguageActive(lang)\">{{\n 'language.' + lang | translate\n }}</span>\n </button>\n }\n</mat-menu>\n\n@if (slimMode) {\n <button mat-button type=\"button\" [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@if (!slimMode) {\n <mat-form-field>\n <mat-select\n placeholder=\"{{ 'language.language' | translate }}\"\n name=\"language\"\n [(ngModel)]=\"currentLanguage\"\n >\n @for (lang of languages; track lang) {\n <mat-option [value]=\"lang\">{{ 'language.' + lang | translate }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n}\n", styles: [".language{font-size:16px;text-transform:uppercase}.active{font-weight:700}\n"], dependencies: [{ kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21706
21793
  }
21707
21794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageSwitcherComponent, decorators: [{
21708
21795
  type: Component,
@@ -21716,7 +21803,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21716
21803
  MatSelect,
21717
21804
  FormsModule,
21718
21805
  MatOption,
21719
- TranslateModule,
21806
+ ElderTranslatePipe,
21720
21807
  ], template: "<mat-menu #languageMenu=\"matMenu\">\n @for (lang of languages; track lang) {\n <button mat-menu-item type=\"button\" (click)=\"currentLanguage = lang\">\n <mat-icon>language</mat-icon>\n <span class=\"text-body-large\" [class.active]=\"isLanguageActive(lang)\">{{\n 'language.' + lang | translate\n }}</span>\n </button>\n }\n</mat-menu>\n\n@if (slimMode) {\n <button mat-button type=\"button\" [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@if (!slimMode) {\n <mat-form-field>\n <mat-select\n placeholder=\"{{ 'language.language' | translate }}\"\n name=\"language\"\n [(ngModel)]=\"currentLanguage\"\n >\n @for (lang of languages; track lang) {\n <mat-option [value]=\"lang\">{{ 'language.' + lang | translate }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n}\n", styles: [".language{font-size:16px;text-transform:uppercase}.active{font-weight:700}\n"] }]
21721
21808
  }], ctorParameters: () => [{ type: ElderLanguageService }], propDecorators: { slimMode: [{
21722
21809
  type: Input
@@ -21790,7 +21877,7 @@ class ElderToolbarTitleService {
21790
21877
  }
21791
21878
  return resolvedTitle;
21792
21879
  }
21793
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleService, deps: [{ token: i1$3.Router }, { token: i1$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
21880
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleService, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable }); }
21794
21881
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleService, providedIn: 'root' }); }
21795
21882
  }
21796
21883
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleService, decorators: [{
@@ -21798,7 +21885,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21798
21885
  args: [{
21799
21886
  providedIn: 'root',
21800
21887
  }]
21801
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }] });
21888
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }] });
21802
21889
 
21803
21890
  class ElderToolbarTitleComponent {
21804
21891
  /***************************************************************************
@@ -21823,13 +21910,13 @@ class ElderToolbarTitleComponent {
21823
21910
  this.toolbarService.updateTitle(this.activatedRoute);
21824
21911
  }, 10);
21825
21912
  }
21826
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleComponent, deps: [{ token: ElderToolbarTitleService }, { token: i1$3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
21827
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderToolbarTitleComponent, isStandalone: true, selector: "elder-toolbar-title", ngImport: i0, template: "<h3 class=\"mat-headline-6\">{{ title$ | async | translate }}</h3>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21913
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleComponent, deps: [{ token: ElderToolbarTitleService }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
21914
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderToolbarTitleComponent, isStandalone: true, selector: "elder-toolbar-title", ngImport: i0, template: "<h3 class=\"mat-headline-6\">{{ title$ | async | translate }}</h3>\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21828
21915
  }
21829
21916
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleComponent, decorators: [{
21830
21917
  type: Component,
21831
- args: [{ selector: 'elder-toolbar-title', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, TranslateModule], template: "<h3 class=\"mat-headline-6\">{{ title$ | async | translate }}</h3>\n" }]
21832
- }], ctorParameters: () => [{ type: ElderToolbarTitleService }, { type: i1$3.ActivatedRoute }] });
21918
+ args: [{ selector: 'elder-toolbar-title', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, ElderTranslatePipe], template: "<h3 class=\"mat-headline-6\">{{ title$ | async | translate }}</h3>\n" }]
21919
+ }], ctorParameters: () => [{ type: ElderToolbarTitleService }, { type: i1$2.ActivatedRoute }] });
21833
21920
 
21834
21921
  class ElderToolbarComponent {
21835
21922
  /***************************************************************************
@@ -21915,7 +22002,7 @@ class ElderDetailDialogComponent {
21915
22002
  close() {
21916
22003
  this.dialogRef.close(this.entity$.getValue());
21917
22004
  }
21918
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDetailDialogComponent, deps: [{ token: i1$7.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }, { token: ElderMasterDetailService }], target: i0.ɵɵFactoryTarget.Component }); }
22005
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDetailDialogComponent, deps: [{ token: i1$6.MatDialogRef, optional: true }, { token: MAT_DIALOG_DATA, optional: true }, { token: ElderMasterDetailService }], target: i0.ɵɵFactoryTarget.Component }); }
21919
22006
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderDetailDialogComponent, isStandalone: true, selector: "elder-detail-dialog", ngImport: i0, template: "@if (entity$ | async; as entity) {\n <div class=\"layout-col full\">\n <span style=\"width: 100vw\"></span>\n <!-- Header Section -->\n <elder-toolbar class=\"gap-md\">\n <button (click)=\"close()\" type=\"button\" mat-icon-button *elderToolbarColumn=\"'left.begin'\">\n <mat-icon>close</mat-icon>\n </button>\n </elder-toolbar>\n <div class=\"layout-row flex gap-md\">\n <ng-container\n *ngTemplateOutlet=\"data.detailTemplateRef; context: { $implicit: entity }\"\n ></ng-container>\n </div>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: ElderToolbarComponent, selector: "elder-toolbar", inputs: ["color"] }, { kind: "directive", type: ElderToolbarColumnDirective, selector: "[elderToolbarColumn]", inputs: ["elderToolbarColumn", "elderToolbarDefault"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21920
22007
  }
21921
22008
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDetailDialogComponent, decorators: [{
@@ -21928,7 +22015,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21928
22015
  NgTemplateOutlet,
21929
22016
  AsyncPipe,
21930
22017
  ], template: "@if (entity$ | async; as entity) {\n <div class=\"layout-col full\">\n <span style=\"width: 100vw\"></span>\n <!-- Header Section -->\n <elder-toolbar class=\"gap-md\">\n <button (click)=\"close()\" type=\"button\" mat-icon-button *elderToolbarColumn=\"'left.begin'\">\n <mat-icon>close</mat-icon>\n </button>\n </elder-toolbar>\n <div class=\"layout-row flex gap-md\">\n <ng-container\n *ngTemplateOutlet=\"data.detailTemplateRef; context: { $implicit: entity }\"\n ></ng-container>\n </div>\n </div>\n}\n" }]
21931
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef, decorators: [{
22018
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef, decorators: [{
21932
22019
  type: Optional
21933
22020
  }] }, { type: undefined, decorators: [{
21934
22021
  type: Optional
@@ -22046,7 +22133,7 @@ class ElderMasterDetailComponent {
22046
22133
  this.dialogRef.close();
22047
22134
  }
22048
22135
  }
22049
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderMasterDetailComponent, deps: [{ token: ElderMasterDetailService }, { token: i1$7.MatDialog }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
22136
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderMasterDetailComponent, deps: [{ token: ElderMasterDetailService }, { token: i1$6.MatDialog }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
22050
22137
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderMasterDetailComponent, isStandalone: true, selector: "elder-master-detail", inputs: { mode: "mode" }, host: { classAttribute: "layout-col flex p-pane" }, providers: [ElderMasterDetailProvider.ExistingOrNewMasterDetailService], queries: [{ propertyName: "master", first: true, predicate: ElderMasterDirective, descendants: true, read: TemplateRef }, { propertyName: "detail", first: true, predicate: ElderDetailDirective, descendants: true, read: TemplateRef }], ngImport: i0, template: "<elder-basic-pane-layout class=\"flex p-0\">\n <ng-container *ngTemplateOutlet=\"master\"></ng-container>\n\n @if (modeSig() === 'EMBEDDED') {\n @if (currentActive(); as currentActive) {\n <ng-container\n *ngTemplateOutlet=\"detail; context: { $implicit: currentActive }\"\n ></ng-container>\n }\n }\n</elder-basic-pane-layout>\n", styles: [""], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ElderBasicPaneLayoutComponent, selector: "elder-basic-pane-layout" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22051
22138
  }
22052
22139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderMasterDetailComponent, decorators: [{
@@ -22054,7 +22141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
22054
22141
  args: [{ selector: 'elder-master-detail', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ElderMasterDetailProvider.ExistingOrNewMasterDetailService], imports: [NgTemplateOutlet, ElderBasicPaneLayoutComponent], host: {
22055
22142
  class: 'layout-col flex p-pane',
22056
22143
  }, template: "<elder-basic-pane-layout class=\"flex p-0\">\n <ng-container *ngTemplateOutlet=\"master\"></ng-container>\n\n @if (modeSig() === 'EMBEDDED') {\n @if (currentActive(); as currentActive) {\n <ng-container\n *ngTemplateOutlet=\"detail; context: { $implicit: currentActive }\"\n ></ng-container>\n }\n }\n</elder-basic-pane-layout>\n" }]
22057
- }], ctorParameters: () => [{ type: ElderMasterDetailService }, { type: i1$7.MatDialog }, { type: i0.ViewContainerRef }], propDecorators: { master: [{
22144
+ }], ctorParameters: () => [{ type: ElderMasterDetailService }, { type: i1$6.MatDialog }, { type: i0.ViewContainerRef }], propDecorators: { master: [{
22058
22145
  type: ContentChild,
22059
22146
  args: [ElderMasterDirective, { read: TemplateRef, static: false }]
22060
22147
  }], detail: [{
@@ -22204,7 +22291,7 @@ class ElderQuantityFormFieldComponent extends ElderFromFieldCustomizableBase {
22204
22291
  this.floatLabel = 'auto';
22205
22292
  }
22206
22293
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuantityFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22207
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderQuantityFormFieldComponent, isStandalone: true, selector: "elder-quantity-form-field", usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" [appearance]=\"appearance\" [color]=\"color\">\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n @if (showIcon && icon) {\n <span matIconPrefix>\n <mat-icon [inline]=\"true\">{{ icon }}</mat-icon>\n </span>\n }\n\n <ng-content></ng-content>\n\n @if (showHint) {\n <mat-hint align=\"end\">\n @if (hint) {\n <span>{{ hint }}</span>\n }\n </mat-hint>\n }\n\n <mat-error elderValidationError></mat-error>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: ElderValidationErrorDirective, selector: "mat-error[elderValidationError]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22294
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderQuantityFormFieldComponent, isStandalone: true, selector: "elder-quantity-form-field", usesInheritance: true, ngImport: i0, template: "<mat-form-field [floatLabel]=\"floatLabel\" [appearance]=\"appearance\" [color]=\"color\">\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n @if (showIcon && icon) {\n <span matIconPrefix>\n <mat-icon [inline]=\"true\">{{ icon }}</mat-icon>\n </span>\n }\n\n <ng-content></ng-content>\n\n @if (showHint) {\n <mat-hint align=\"end\">\n @if (hint) {\n <span>{{ hint }}</span>\n }\n </mat-hint>\n }\n\n <mat-error elderValidationError></mat-error>\n</mat-form-field>\n", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: ElderValidationErrorDirective, selector: "mat-error[elderValidationError]" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22208
22295
  }
22209
22296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuantityFormFieldComponent, decorators: [{
22210
22297
  type: Component,
@@ -22216,7 +22303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
22216
22303
  MatHint,
22217
22304
  MatError,
22218
22305
  ElderValidationErrorDirective,
22219
- TranslateModule,
22306
+ ElderTranslatePipe,
22220
22307
  ], template: "<mat-form-field [floatLabel]=\"floatLabel\" [appearance]=\"appearance\" [color]=\"color\">\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n @if (showIcon && icon) {\n <span matIconPrefix>\n <mat-icon [inline]=\"true\">{{ icon }}</mat-icon>\n </span>\n }\n\n <ng-content></ng-content>\n\n @if (showHint) {\n <mat-hint align=\"end\">\n @if (hint) {\n <span>{{ hint }}</span>\n }\n </mat-hint>\n }\n\n <mat-error elderValidationError></mat-error>\n</mat-form-field>\n" }]
22221
22308
  }], ctorParameters: () => [] });
22222
22309
 
@@ -23026,8 +23113,8 @@ class TemplatedSelectionDialogComponent {
23026
23113
  **************************************************************************/
23027
23114
  this.log = LoggerFactory.getLogger(this.constructor.name);
23028
23115
  }
23029
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: TemplatedSelectionDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: SelectionModel }], target: i0.ɵɵFactoryTarget.Component }); }
23030
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: TemplatedSelectionDialogComponent, isStandalone: true, 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 @if (selectionModel.selection | async; as selection) {\n <button\n mat-stroked-button\n type=\"submit\"\n [disabled]=\"!selection || selection.length === 0\"\n [mat-dialog-close]=\"selection\"\n >\n {{ 'actions.select' | translate }}\n </button>\n }\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: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: TemplatedSelectionDialogComponent, deps: [{ token: i1$6.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: SelectionModel }], target: i0.ɵɵFactoryTarget.Component }); }
23117
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: TemplatedSelectionDialogComponent, isStandalone: true, 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 @if (selectionModel.selection | async; as selection) {\n <button\n mat-stroked-button\n type=\"submit\"\n [disabled]=\"!selection || selection.length === 0\"\n [mat-dialog-close]=\"selection\"\n >\n {{ 'actions.select' | translate }}\n </button>\n }\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: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23031
23118
  }
23032
23119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: TemplatedSelectionDialogComponent, decorators: [{
23033
23120
  type: Component,
@@ -23040,9 +23127,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
23040
23127
  MatButton,
23041
23128
  NgTemplateOutlet,
23042
23129
  AsyncPipe,
23043
- TranslateModule,
23130
+ ElderTranslatePipe,
23044
23131
  ], 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 @if (selectionModel.selection | async; as selection) {\n <button\n mat-stroked-button\n type=\"submit\"\n [disabled]=\"!selection || selection.length === 0\"\n [mat-dialog-close]=\"selection\"\n >\n {{ 'actions.select' | translate }}\n </button>\n }\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" }]
23045
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
23132
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
23046
23133
  type: Inject,
23047
23134
  args: [MAT_DIALOG_DATA]
23048
23135
  }] }, { type: SelectionModel }] });
@@ -23129,7 +23216,7 @@ class SelectionModelPopupDirective {
23129
23216
  viewContainerRef: this.viewContainer,
23130
23217
  });
23131
23218
  }
23132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SelectionModelPopupDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1$7.MatDialog }, { token: ElderDataViewOptionsProvider }, { token: SelectionModel }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
23219
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: SelectionModelPopupDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1$6.MatDialog }, { token: ElderDataViewOptionsProvider }, { token: SelectionModel }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
23133
23220
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: SelectionModelPopupDirective, isStandalone: true, selector: "[elderSelectionModelPopup]", inputs: { elderSelectionModelPopupTransform: "elderSelectionModelPopupTransform" }, providers: [
23134
23221
  {
23135
23222
  provide: SelectionModel,
@@ -23159,7 +23246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
23159
23246
  ElderTableProviders.ClearTableModel, // Since this popup is frequently used inside an elder-table search box
23160
23247
  ],
23161
23248
  }]
23162
- }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$7.MatDialog }, { type: ElderDataViewOptionsProvider }, { type: SelectionModel }, { type: i0.ChangeDetectorRef }], propDecorators: { elderSelectionModelPopupTransform: [{
23249
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i1$6.MatDialog }, { type: ElderDataViewOptionsProvider }, { type: SelectionModel }, { type: i0.ChangeDetectorRef }], propDecorators: { elderSelectionModelPopupTransform: [{
23163
23250
  type: Input
23164
23251
  }] } });
23165
23252
 
@@ -23588,7 +23675,7 @@ class ElderAutocompleteDirective {
23588
23675
  this.logger.warn('No DataContext available to update suggestions!');
23589
23676
  }
23590
23677
  }
23591
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteDirective, deps: [{ token: i1$9.MatAutocompleteTrigger }], target: i0.ɵɵFactoryTarget.Directive }); }
23678
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteDirective, deps: [{ token: i1$8.MatAutocompleteTrigger }], target: i0.ɵɵFactoryTarget.Directive }); }
23592
23679
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderAutocompleteDirective, isStandalone: true, selector: "[elderAutocomplete]", inputs: { queryFilter: "queryFilter", filters: "filters", sorts: "sorts", autocomplete: ["elderAutocomplete", "autocomplete"] }, host: { listeners: { "keyup": "onKeyUp($event)" } }, ngImport: i0 }); }
23593
23680
  }
23594
23681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteDirective, decorators: [{
@@ -23596,7 +23683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
23596
23683
  args: [{
23597
23684
  selector: '[elderAutocomplete]',
23598
23685
  }]
23599
- }], ctorParameters: () => [{ type: i1$9.MatAutocompleteTrigger }], propDecorators: { queryFilter: [{
23686
+ }], ctorParameters: () => [{ type: i1$8.MatAutocompleteTrigger }], propDecorators: { queryFilter: [{
23600
23687
  type: Input
23601
23688
  }], filters: [{
23602
23689
  type: Input
@@ -24399,7 +24486,7 @@ class ElderSelectComponent extends ElderSelectBase {
24399
24486
  provide: ELDER_SELECT_BASE,
24400
24487
  useExisting: forwardRef(() => ElderSelectComponent),
24401
24488
  },
24402
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (entityWrapped(); as entityWrapper) {\n <div class=\"layout-row place-start-center elder-flex-control\">\n @if (state(); as state) {\n @if (state?.error || icon) {\n <div class=\"elder-input-prefix-icon-container flex-none\">\n @if (icon) {\n <mat-icon\n 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 } @else if (state?.error) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n }\n </div>\n }\n }\n\n <!-- A dynamic input -->\n <input\n #input\n matInput\n type=\"text\"\n class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [matAutocomplete]\n #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\"\n [queryFilter]=\"queryFilter\"\n [filters]=\"filters\"\n [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText()\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'submit' }\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n />\n\n <elder-suggestion-panel\n #elderAuto=\"elderSuggestionPanel\"\n [dataSource]=\"dataContextS()?.dataSource\"\n [valueTemplate]=\"valueTemplate\"\n enabled\n [displayPropertyResolver]=\"displayPropertyResolverS()\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n elderAutoSelectSuggestFirst\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-suggestion-panel>\n\n <div class=\"layout-row place-start-center flex-none\">\n @if (!selectionPopup && !autocomplete && !entityWrapper.displayRemove) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n arrow_drop_down\n </mat-icon>\n }\n\n @if (selectionPopup && !entityWrapper.displayRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\"\n aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n }\n\n @if (entityWrapper.displayRemove && !this.readonlyS()) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLockedS()\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n }\n </div>\n </div>\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,.elder-select-dropdown-input{cursor:pointer}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]" }, { kind: "directive", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: ["queryFilter", "filters", "sorts", "elderAutocomplete"] }, { kind: "component", type: ElderSuggestionPanelComponent, selector: "elder-suggestion-panel", inputs: ["isOptionDisabledFn", "isOptionHiddenFn", "optionValueConverterFn", "enabled", "valueTemplate", "dataSource", "displayPropertyResolver"], outputs: ["optionSelected"], exportAs: ["elderSuggestionPanel"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: ElderAutoSelectSuggestFirstDirective, selector: "[elderAutoSelectSuggestFirst]" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24489
+ ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (entityWrapped(); as entityWrapper) {\n <div class=\"layout-row place-start-center elder-flex-control\">\n @if (state(); as state) {\n @if (state?.error || icon) {\n <div class=\"elder-input-prefix-icon-container flex-none\">\n @if (icon) {\n <mat-icon\n 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 } @else if (state?.error) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n }\n </div>\n }\n }\n\n <!-- A dynamic input -->\n <input\n #input\n matInput\n type=\"text\"\n class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [matAutocomplete]\n #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\"\n [queryFilter]=\"queryFilter\"\n [filters]=\"filters\"\n [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText()\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'submit' }\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n />\n\n <elder-suggestion-panel\n #elderAuto=\"elderSuggestionPanel\"\n [dataSource]=\"dataContextS()?.dataSource\"\n [valueTemplate]=\"valueTemplate\"\n enabled\n [displayPropertyResolver]=\"displayPropertyResolverS()\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n elderAutoSelectSuggestFirst\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-suggestion-panel>\n\n <div class=\"layout-row place-start-center flex-none\">\n @if (!selectionPopup && !autocomplete && !entityWrapper.displayRemove) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n arrow_drop_down\n </mat-icon>\n }\n\n @if (selectionPopup && !entityWrapper.displayRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\"\n aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n }\n\n @if (entityWrapper.displayRemove && !this.readonlyS()) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLockedS()\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n }\n </div>\n </div>\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,.elder-select-dropdown-input{cursor:pointer}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]" }, { kind: "directive", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: ["queryFilter", "filters", "sorts", "elderAutocomplete"] }, { kind: "component", type: ElderSuggestionPanelComponent, selector: "elder-suggestion-panel", inputs: ["isOptionDisabledFn", "isOptionHiddenFn", "optionValueConverterFn", "enabled", "valueTemplate", "dataSource", "displayPropertyResolver"], outputs: ["optionSelected"], exportAs: ["elderSuggestionPanel"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "directive", type: ElderAutoSelectSuggestFirstDirective, selector: "[elderAutoSelectSuggestFirst]" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24403
24490
  }
24404
24491
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectComponent, decorators: [{
24405
24492
  type: Component,
@@ -24420,7 +24507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
24420
24507
  ElderSuggestionPanelComponent,
24421
24508
  MatIconButton,
24422
24509
  ElderStopEventPropagationDirective,
24423
- TranslateModule,
24510
+ ElderTranslatePipe,
24424
24511
  ElderAutoSelectSuggestFirstDirective,
24425
24512
  ], template: "@if (entityWrapped(); as entityWrapper) {\n <div class=\"layout-row place-start-center elder-flex-control\">\n @if (state(); as state) {\n @if (state?.error || icon) {\n <div class=\"elder-input-prefix-icon-container flex-none\">\n @if (icon) {\n <mat-icon\n 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 } @else if (state?.error) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n }\n </div>\n }\n }\n\n <!-- A dynamic input -->\n <input\n #input\n matInput\n type=\"text\"\n class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [matAutocomplete]\n #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\"\n [queryFilter]=\"queryFilter\"\n [filters]=\"filters\"\n [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText()\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'submit' }\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n />\n\n <elder-suggestion-panel\n #elderAuto=\"elderSuggestionPanel\"\n [dataSource]=\"dataContextS()?.dataSource\"\n [valueTemplate]=\"valueTemplate\"\n enabled\n [displayPropertyResolver]=\"displayPropertyResolverS()\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n elderAutoSelectSuggestFirst\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-suggestion-panel>\n\n <div class=\"layout-row place-start-center flex-none\">\n @if (!selectionPopup && !autocomplete && !entityWrapper.displayRemove) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n arrow_drop_down\n </mat-icon>\n }\n\n @if (selectionPopup && !entityWrapper.displayRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\"\n aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n }\n\n @if (entityWrapper.displayRemove && !this.readonlyS()) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLockedS()\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n }\n </div>\n </div>\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,.elder-select-dropdown-input{cursor:pointer}\n"] }]
24426
24513
  }], ctorParameters: () => [], propDecorators: { inputRef: [{
@@ -24644,11 +24731,11 @@ class ElderQuantityInputControlComponent extends ElderFormFieldControlBase {
24644
24731
  return a?.value === b?.value && a?.unit === b?.unit;
24645
24732
  }
24646
24733
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuantityInputControlComponent, deps: [{ token: ElderUnitService }], target: i0.ɵɵFactoryTarget.Component }); }
24647
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderQuantityInputControlComponent, isStandalone: true, selector: "elder-quantity-input", inputs: { displayFormat: "displayFormat", quantityValue: "quantityValue", unit: "unit", hideUnit: "hideUnit" }, outputs: { quantityValueChange: "quantityValueChange", unitChange: "unitChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n @if (!hideUnit) {\n <span class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n }\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24734
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderQuantityInputControlComponent, isStandalone: true, selector: "elder-quantity-input", inputs: { displayFormat: "displayFormat", quantityValue: "quantityValue", unit: "unit", hideUnit: "hideUnit" }, outputs: { quantityValueChange: "quantityValueChange", unitChange: "unitChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }, { propertyName: "quantityInput", first: true, predicate: ["quantityMatInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n @if (!hideUnit) {\n <span class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n }\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24648
24735
  }
24649
24736
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuantityInputControlComponent, decorators: [{
24650
24737
  type: Component,
24651
- args: [{ selector: 'elder-quantity-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], imports: [MatInput, FormsModule, ElderFormFieldNoSpinnerDirective, AsyncPipe, TranslateModule], template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n @if (!hideUnit) {\n <span class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n }\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"] }]
24738
+ args: [{ selector: 'elder-quantity-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderQuantityInputControlComponent }], imports: [MatInput, FormsModule, ElderFormFieldNoSpinnerDirective, AsyncPipe, ElderTranslatePipe], template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n #input\n matInput\n type=\"number\"\n elderNoSpinner\n #quantityMatInput=\"matInput\"\n class=\"flex-grow elder-quantity-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [readonly]=\"readonly\"\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [ngModel]=\"formattedValue$ | async\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'change' }\"\n (ngModelChange)=\"onQuantityValueChanged($event)\"\n />\n @if (!hideUnit) {\n <span class=\"mat-small elder-quantity-unit\">{{ unitSymbol$ | async }}</span>\n }\n</div>\n", styles: [".elder-quantity-input{text-align:right}.elder-quantity-unit{margin-left:4px}\n"] }]
24652
24739
  }], ctorParameters: () => [{ type: ElderUnitService }], propDecorators: { inputRef: [{
24653
24740
  type: ViewChild,
24654
24741
  args: ['input']
@@ -24879,11 +24966,11 @@ class ElderDimensionsInputComponent extends ElderFormFieldControlBase {
24879
24966
  return Dimensions.from(this.unit, this.lengthValue, this.widthValue, value);
24880
24967
  }
24881
24968
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDimensionsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24882
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderDimensionsInputComponent, isStandalone: true, selector: "elder-dimensions-input", inputs: { name: "name", appearance: "appearance", color: "color", placeholderLength: "placeholderLength", placeholderWidth: "placeholderWidth", placeholderHeight: "placeholderHeight", displayFormat: "displayFormat", mode: "mode", requiredLength: "requiredLength", requiredWidth: "requiredWidth", requiredHeight: "requiredHeight", unit: "unit", lengthValue: "lengthValue", widthValue: "widthValue", heightValue: "heightValue" }, outputs: { unitChange: "unitChange", lengthValueChange: "lengthValueChange", widthValueChange: "widthValueChange", heightValueChange: "heightValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderDimensionsInputComponent }], usesInheritance: true, ngImport: i0, template: "@if (context$ | async; as context) {\n <div role=\"group\" class=\"layout-row place-start-baseline g-md full\">\n <!-- elder-form-field-small -->\n @if (context.lengthActive) {\n <elder-quantity-input\n [quantityValue]=\"lengthValue\"\n (quantityValueChange)=\"onLengthValueChanged($event)\"\n [unit]=\"unit\"\n [placeholder]=\"(placeholderLength ? placeholderLength : 'dimensions.length') | translate\"\n [displayFormat]=\"displayFormat\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isLengthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.lengthActive && context.widthActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.widthActive) {\n <elder-quantity-input\n [quantityValue]=\"widthValue\"\n (quantityValueChange)=\"onWidthValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderWidth ? placeholderWidth : 'dimensions.width') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isWidthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.widthActive && context.heightActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.heightActive) {\n <elder-quantity-input\n [quantityValue]=\"heightValue\"\n (quantityValueChange)=\"onHeightValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderHeight ? placeholderHeight : 'dimensions.height') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n >\n </elder-quantity-input>\n }\n <!--\n [requiredIgnoreZero]=\"requiredIgnoreZero\"\n [elderMultipleOf]=\"multipleOf\" ngModel\n [min]=\"min\"\n [max]=\"max\"\n [required]=\"requiredLength\"\n -->\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: ElderQuantityInputControlComponent, selector: "elder-quantity-input", inputs: ["displayFormat", "quantityValue", "unit", "hideUnit"], outputs: ["quantityValueChange", "unitChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24969
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderDimensionsInputComponent, isStandalone: true, selector: "elder-dimensions-input", inputs: { name: "name", appearance: "appearance", color: "color", placeholderLength: "placeholderLength", placeholderWidth: "placeholderWidth", placeholderHeight: "placeholderHeight", displayFormat: "displayFormat", mode: "mode", requiredLength: "requiredLength", requiredWidth: "requiredWidth", requiredHeight: "requiredHeight", unit: "unit", lengthValue: "lengthValue", widthValue: "widthValue", heightValue: "heightValue" }, outputs: { unitChange: "unitChange", lengthValueChange: "lengthValueChange", widthValueChange: "widthValueChange", heightValueChange: "heightValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderDimensionsInputComponent }], usesInheritance: true, ngImport: i0, template: "@if (context$ | async; as context) {\n <div role=\"group\" class=\"layout-row place-start-baseline g-md full\">\n <!-- elder-form-field-small -->\n @if (context.lengthActive) {\n <elder-quantity-input\n [quantityValue]=\"lengthValue\"\n (quantityValueChange)=\"onLengthValueChanged($event)\"\n [unit]=\"unit\"\n [placeholder]=\"(placeholderLength ? placeholderLength : 'dimensions.length') | translate\"\n [displayFormat]=\"displayFormat\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isLengthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.lengthActive && context.widthActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.widthActive) {\n <elder-quantity-input\n [quantityValue]=\"widthValue\"\n (quantityValueChange)=\"onWidthValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderWidth ? placeholderWidth : 'dimensions.width') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isWidthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.widthActive && context.heightActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.heightActive) {\n <elder-quantity-input\n [quantityValue]=\"heightValue\"\n (quantityValueChange)=\"onHeightValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderHeight ? placeholderHeight : 'dimensions.height') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n >\n </elder-quantity-input>\n }\n <!--\n [requiredIgnoreZero]=\"requiredIgnoreZero\"\n [elderMultipleOf]=\"multipleOf\" ngModel\n [min]=\"min\"\n [max]=\"max\"\n [required]=\"requiredLength\"\n -->\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: ElderQuantityInputControlComponent, selector: "elder-quantity-input", inputs: ["displayFormat", "quantityValue", "unit", "hideUnit"], outputs: ["quantityValueChange", "unitChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24883
24970
  }
24884
24971
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDimensionsInputComponent, decorators: [{
24885
24972
  type: Component,
24886
- args: [{ selector: 'elder-dimensions-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderDimensionsInputComponent }], imports: [ElderQuantityInputControlComponent, AsyncPipe, TranslateModule], template: "@if (context$ | async; as context) {\n <div role=\"group\" class=\"layout-row place-start-baseline g-md full\">\n <!-- elder-form-field-small -->\n @if (context.lengthActive) {\n <elder-quantity-input\n [quantityValue]=\"lengthValue\"\n (quantityValueChange)=\"onLengthValueChanged($event)\"\n [unit]=\"unit\"\n [placeholder]=\"(placeholderLength ? placeholderLength : 'dimensions.length') | translate\"\n [displayFormat]=\"displayFormat\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isLengthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.lengthActive && context.widthActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.widthActive) {\n <elder-quantity-input\n [quantityValue]=\"widthValue\"\n (quantityValueChange)=\"onWidthValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderWidth ? placeholderWidth : 'dimensions.width') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isWidthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.widthActive && context.heightActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.heightActive) {\n <elder-quantity-input\n [quantityValue]=\"heightValue\"\n (quantityValueChange)=\"onHeightValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderHeight ? placeholderHeight : 'dimensions.height') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n >\n </elder-quantity-input>\n }\n <!--\n [requiredIgnoreZero]=\"requiredIgnoreZero\"\n [elderMultipleOf]=\"multipleOf\" ngModel\n [min]=\"min\"\n [max]=\"max\"\n [required]=\"requiredLength\"\n -->\n </div>\n}\n" }]
24973
+ args: [{ selector: 'elder-dimensions-input', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderDimensionsInputComponent }], imports: [ElderQuantityInputControlComponent, AsyncPipe, ElderTranslatePipe], template: "@if (context$ | async; as context) {\n <div role=\"group\" class=\"layout-row place-start-baseline g-md full\">\n <!-- elder-form-field-small -->\n @if (context.lengthActive) {\n <elder-quantity-input\n [quantityValue]=\"lengthValue\"\n (quantityValueChange)=\"onLengthValueChanged($event)\"\n [unit]=\"unit\"\n [placeholder]=\"(placeholderLength ? placeholderLength : 'dimensions.length') | translate\"\n [displayFormat]=\"displayFormat\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isLengthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.lengthActive && context.widthActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.widthActive) {\n <elder-quantity-input\n [quantityValue]=\"widthValue\"\n (quantityValueChange)=\"onWidthValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderWidth ? placeholderWidth : 'dimensions.width') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [hideUnit]=\"!context.isWidthLast\"\n >\n </elder-quantity-input>\n }\n @if (context.widthActive && context.heightActive) {\n <span class=\"noselect\">&times;</span>\n }\n @if (context.heightActive) {\n <elder-quantity-input\n [quantityValue]=\"heightValue\"\n (quantityValueChange)=\"onHeightValueChanged($event)\"\n [unit]=\"unit\"\n [displayFormat]=\"displayFormat\"\n [placeholder]=\"(placeholderHeight ? placeholderHeight : 'dimensions.height') | translate\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n >\n </elder-quantity-input>\n }\n <!--\n [requiredIgnoreZero]=\"requiredIgnoreZero\"\n [elderMultipleOf]=\"multipleOf\" ngModel\n [min]=\"min\"\n [max]=\"max\"\n [required]=\"requiredLength\"\n -->\n </div>\n}\n" }]
24887
24974
  }], ctorParameters: () => [], propDecorators: { name: [{
24888
24975
  type: Input
24889
24976
  }], appearance: [{
@@ -25165,8 +25252,6 @@ class ElderMeasuresModule {
25165
25252
  CommonModule,
25166
25253
  RouterModule,
25167
25254
  FormsModule,
25168
- // Third Party
25169
- TranslateModule,
25170
25255
  // Angular Material
25171
25256
  MatIconModule,
25172
25257
  MatInputModule,
@@ -25194,8 +25279,6 @@ class ElderMeasuresModule {
25194
25279
  CommonModule,
25195
25280
  RouterModule,
25196
25281
  FormsModule,
25197
- // Third Party
25198
- TranslateModule,
25199
25282
  // Angular Material
25200
25283
  MatIconModule,
25201
25284
  MatInputModule,
@@ -25213,8 +25296,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
25213
25296
  CommonModule,
25214
25297
  RouterModule,
25215
25298
  FormsModule,
25216
- // Third Party
25217
- TranslateModule,
25218
25299
  // Angular Material
25219
25300
  MatIconModule,
25220
25301
  MatInputModule,
@@ -25470,7 +25551,7 @@ class ElderAutocompleteManyDirective {
25470
25551
  // The wordAtCursor might not be the full autocompleted phrase (if there are multiple words)
25471
25552
  this.cursorPosition = wordAtCursor.start + autocompletedPhrase.length;
25472
25553
  }
25473
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteManyDirective, deps: [{ token: i1$9.MatAutocompleteTrigger }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
25554
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteManyDirective, deps: [{ token: i1$8.MatAutocompleteTrigger }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
25474
25555
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderAutocompleteManyDirective, isStandalone: true, selector: "[elderAutocompleteMany]", inputs: { queryFilter: "queryFilter", filters: "filters", sorts: "sorts", textProperty: "textProperty", textPropertyResolverFn: "textPropertyResolverFn", autocomplete: ["elderAutocompleteMany", "autocomplete"] }, host: { listeners: { "keyup": "onKeyUp($event)" } }, ngImport: i0 }); }
25475
25556
  }
25476
25557
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteManyDirective, decorators: [{
@@ -25478,7 +25559,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
25478
25559
  args: [{
25479
25560
  selector: '[elderAutocompleteMany]',
25480
25561
  }]
25481
- }], ctorParameters: () => [{ type: i1$9.MatAutocompleteTrigger }, { type: i0.ElementRef }], propDecorators: { queryFilter: [{
25562
+ }], ctorParameters: () => [{ type: i1$8.MatAutocompleteTrigger }, { type: i0.ElementRef }], propDecorators: { queryFilter: [{
25482
25563
  type: Input
25483
25564
  }], filters: [{
25484
25565
  type: Input
@@ -26680,8 +26761,6 @@ class ElderChipsModule {
26680
26761
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderChipsModule, imports: [
26681
26762
  // Angular
26682
26763
  CommonModule,
26683
- // Third Party
26684
- TranslateModule,
26685
26764
  // Material
26686
26765
  MatChipsModule,
26687
26766
  A11yModule,
@@ -26689,8 +26768,6 @@ class ElderChipsModule {
26689
26768
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderChipsModule, imports: [
26690
26769
  // Angular
26691
26770
  CommonModule,
26692
- // Third Party
26693
- TranslateModule,
26694
26771
  // Material
26695
26772
  MatChipsModule,
26696
26773
  A11yModule] }); }
@@ -26701,8 +26778,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
26701
26778
  imports: [
26702
26779
  // Angular
26703
26780
  CommonModule,
26704
- // Third Party
26705
- TranslateModule,
26706
26781
  // Material
26707
26782
  MatChipsModule,
26708
26783
  A11yModule,
@@ -28136,7 +28211,7 @@ class ElderSearchIncludeExcludeDirective {
28136
28211
  extractName() {
28137
28212
  return this.ngModel?.name;
28138
28213
  }
28139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchIncludeExcludeDirective, deps: [{ token: ElderSearchContextDirective }, { token: i0.DestroyRef }, { token: IncludeExcludeSelectionModel }, { token: i1$4.NgModel, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
28214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchIncludeExcludeDirective, deps: [{ token: ElderSearchContextDirective }, { token: i0.DestroyRef }, { token: IncludeExcludeSelectionModel }, { token: i1$3.NgModel, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
28140
28215
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderSearchIncludeExcludeDirective, isStandalone: true, selector: "[elderSearchIncludeExclude]", inputs: { includeSuffix: "includeSuffix", excludeSuffix: "excludeSuffix", queryKey: "queryKey" }, exportAs: ["elderSearchInput"], ngImport: i0 }); }
28141
28216
  }
28142
28217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchIncludeExcludeDirective, decorators: [{
@@ -28145,7 +28220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28145
28220
  selector: '[elderSearchIncludeExclude]',
28146
28221
  exportAs: 'elderSearchInput',
28147
28222
  }]
28148
- }], ctorParameters: () => [{ type: ElderSearchContextDirective }, { type: i0.DestroyRef }, { type: IncludeExcludeSelectionModel }, { type: i1$4.NgModel, decorators: [{
28223
+ }], ctorParameters: () => [{ type: ElderSearchContextDirective }, { type: i0.DestroyRef }, { type: IncludeExcludeSelectionModel }, { type: i1$3.NgModel, decorators: [{
28149
28224
  type: Optional
28150
28225
  }, {
28151
28226
  type: Host
@@ -28177,7 +28252,6 @@ class ElderSelectModule {
28177
28252
  MatTooltipModule,
28178
28253
  CdkDropList,
28179
28254
  CdkDrag,
28180
- TranslateModule,
28181
28255
  ElderFormsDirectivesModule,
28182
28256
  ElderTableModule,
28183
28257
  ElderInfiniteScrollModule,
@@ -28237,7 +28311,6 @@ class ElderSelectModule {
28237
28311
  MatProgressSpinnerModule,
28238
28312
  MatChipsModule,
28239
28313
  MatTooltipModule,
28240
- TranslateModule,
28241
28314
  ElderFormsDirectivesModule,
28242
28315
  ElderTableModule,
28243
28316
  ElderInfiniteScrollModule,
@@ -28272,7 +28345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28272
28345
  MatTooltipModule,
28273
28346
  CdkDropList,
28274
28347
  CdkDrag,
28275
- TranslateModule,
28276
28348
  ElderFormsDirectivesModule,
28277
28349
  ElderTableModule,
28278
28350
  ElderInfiniteScrollModule,
@@ -28338,8 +28410,6 @@ class ElderToolbarModule {
28338
28410
  MatButtonModule,
28339
28411
  MatIconModule,
28340
28412
  MatBadgeModule,
28341
- // translations
28342
- TranslateModule,
28343
28413
  ElderToolbarComponent,
28344
28414
  ElderToolbarColumnDirective,
28345
28415
  ElderToolbarTitleComponent], exports: [ElderToolbarComponent, ElderToolbarColumnDirective, ElderToolbarTitleComponent] }); }
@@ -28355,10 +28425,7 @@ class ElderToolbarModule {
28355
28425
  MatButtonModule,
28356
28426
  MatIconModule,
28357
28427
  MatBadgeModule,
28358
- // translations
28359
- TranslateModule,
28360
- ElderToolbarComponent,
28361
- ElderToolbarTitleComponent] }); }
28428
+ ElderToolbarComponent] }); }
28362
28429
  }
28363
28430
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarModule, decorators: [{
28364
28431
  type: NgModule,
@@ -28375,8 +28442,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28375
28442
  MatButtonModule,
28376
28443
  MatIconModule,
28377
28444
  MatBadgeModule,
28378
- // translations
28379
- TranslateModule,
28380
28445
  ElderToolbarComponent,
28381
28446
  ElderToolbarColumnDirective,
28382
28447
  ElderToolbarTitleComponent,
@@ -28676,7 +28741,7 @@ class ElderNavLinkComponent {
28676
28741
  }
28677
28742
  }
28678
28743
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderNavLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28679
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderNavLinkComponent, isStandalone: true, selector: "elder-nav-link", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, fontIcon: { classPropertyName: "fontIcon", publicName: "fontIcon", isSignal: true, isRequired: false, transformFunction: null }, fontSet: { classPropertyName: "fontSet", publicName: "fontSet", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, svgIcon: { classPropertyName: "svgIcon", publicName: "svgIcon", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null }, queryParamsHandling: { classPropertyName: "queryParamsHandling", publicName: "queryParamsHandling", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activated: "activated" }, host: { properties: { "attr.tabindex": "-1" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<!-- Router Link -->\n@if (routerLink()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n [routerLink]=\"routerLink()\"\n [queryParamsHandling]=\"queryParamsHandling()\"\n [queryParams]=\"queryParams()\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n<!-- Href Link -->\n@if (href()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n [href]=\"href()\"\n [target]=\"target()\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n<!-- Simple Button -->\n@if (!href() && !routerLink()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n (click)=\"onItemClicked($event)\"\n (keydown)=\"onItemKeyDown($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n\n<ng-template #defaultLinkTemplate>\n <div class=\"nav-link-content layout-row place-start-center flex gap-md noselect\">\n @if (title() || icon() || fontIcon()) {\n <mat-icon [fontIcon]=\"fontIcon()\" [fontSet]=\"fontSet()\">\n {{ icon() }}\n </mat-icon>\n }\n @if (svgIcon()) {\n <mat-icon [svgIcon]=\"svgIcon()\"></mat-icon>\n }\n @if (title()) {\n <span class=\"noselect\">\n {{ title() | translate }}\n </span>\n }\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:var(--elder-nav-item-height);border-radius:var(--elder-border-radius-sm);overflow:hidden;transition:background-color .5s,color .5s}.nav-link .mat-icon{height:32px;width:32px;font-size:24px;padding:4px}.nav-link.nav-link-clickable{cursor:pointer}.nav-link.nav-link-clickable:hover{background-color:var(--elder-nav-link-hover-color)}.nav-link.nav-link-disabled{cursor:default}.nav-link.nav-link-active{background-color:var(--elder-nav-link-active-color);color:var(--md-sys-color-primary)}.nav-link.nav-link-active .mat-icon{color:var(--md-sys-color-on-teriary)}.nav-link.nav-link-inactive,.nav-link.nav-link-inactive .mat-icon{color:var(--md-sys-color-on-surface)}\n"], dependencies: [{ kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28744
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderNavLinkComponent, isStandalone: true, selector: "elder-nav-link", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, fontIcon: { classPropertyName: "fontIcon", publicName: "fontIcon", isSignal: true, isRequired: false, transformFunction: null }, fontSet: { classPropertyName: "fontSet", publicName: "fontSet", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, svgIcon: { classPropertyName: "svgIcon", publicName: "svgIcon", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null }, queryParamsHandling: { classPropertyName: "queryParamsHandling", publicName: "queryParamsHandling", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activated: "activated" }, host: { properties: { "attr.tabindex": "-1" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<!-- Router Link -->\n@if (routerLink()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n [routerLink]=\"routerLink()\"\n [queryParamsHandling]=\"queryParamsHandling()\"\n [queryParams]=\"queryParams()\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n<!-- Href Link -->\n@if (href()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n [href]=\"href()\"\n [target]=\"target()\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n<!-- Simple Button -->\n@if (!href() && !routerLink()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n (click)=\"onItemClicked($event)\"\n (keydown)=\"onItemKeyDown($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n\n<ng-template #defaultLinkTemplate>\n <div class=\"nav-link-content layout-row place-start-center flex gap-md noselect\">\n @if (title() || icon() || fontIcon()) {\n <mat-icon [fontIcon]=\"fontIcon()\" [fontSet]=\"fontSet()\">\n {{ icon() }}\n </mat-icon>\n }\n @if (svgIcon()) {\n <mat-icon [svgIcon]=\"svgIcon()\"></mat-icon>\n }\n @if (title()) {\n <span class=\"noselect\">\n {{ title() | translate }}\n </span>\n }\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:var(--elder-nav-item-height);border-radius:var(--elder-border-radius-sm);overflow:hidden;transition:background-color .5s,color .5s}.nav-link .mat-icon{height:32px;width:32px;font-size:24px;padding:4px}.nav-link.nav-link-clickable{cursor:pointer}.nav-link.nav-link-clickable:hover{background-color:var(--elder-nav-link-hover-color)}.nav-link.nav-link-disabled{cursor:default}.nav-link.nav-link-active{background-color:var(--elder-nav-link-active-color);color:var(--md-sys-color-primary)}.nav-link.nav-link-active .mat-icon{color:var(--md-sys-color-on-teriary)}.nav-link.nav-link-inactive,.nav-link.nav-link-inactive .mat-icon{color:var(--md-sys-color-on-surface)}\n"], dependencies: [{ kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28680
28745
  }
28681
28746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderNavLinkComponent, decorators: [{
28682
28747
  type: Component,
@@ -28687,7 +28752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28687
28752
  RouterLinkActive,
28688
28753
  RouterLink,
28689
28754
  MatIcon,
28690
- TranslateModule,
28755
+ ElderTranslatePipe,
28691
28756
  NgTemplateOutlet,
28692
28757
  NgClass,
28693
28758
  ], template: "<!-- Router Link -->\n@if (routerLink()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n [routerLink]=\"routerLink()\"\n [queryParamsHandling]=\"queryParamsHandling()\"\n [queryParams]=\"queryParams()\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n<!-- Href Link -->\n@if (href()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n [href]=\"href()\"\n [target]=\"target()\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n<!-- Simple Button -->\n@if (!href() && !routerLink()) {\n <a\n matRipple\n [matRippleDisabled]=\"disabled()\"\n class=\"layout-row place-start-center nav-link\"\n [ngClass]=\"navLinkClasses()\"\n routerLinkActive=\"dummy\"\n (click)=\"onItemClicked($event)\"\n (keydown)=\"onItemKeyDown($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"defaultLinkTemplate\"></ng-container>\n </a>\n}\n\n<ng-template #defaultLinkTemplate>\n <div class=\"nav-link-content layout-row place-start-center flex gap-md noselect\">\n @if (title() || icon() || fontIcon()) {\n <mat-icon [fontIcon]=\"fontIcon()\" [fontSet]=\"fontSet()\">\n {{ icon() }}\n </mat-icon>\n }\n @if (svgIcon()) {\n <mat-icon [svgIcon]=\"svgIcon()\"></mat-icon>\n }\n @if (title()) {\n <span class=\"noselect\">\n {{ title() | translate }}\n </span>\n }\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:var(--elder-nav-item-height);border-radius:var(--elder-border-radius-sm);overflow:hidden;transition:background-color .5s,color .5s}.nav-link .mat-icon{height:32px;width:32px;font-size:24px;padding:4px}.nav-link.nav-link-clickable{cursor:pointer}.nav-link.nav-link-clickable:hover{background-color:var(--elder-nav-link-hover-color)}.nav-link.nav-link-disabled{cursor:default}.nav-link.nav-link-active{background-color:var(--elder-nav-link-active-color);color:var(--md-sys-color-primary)}.nav-link.nav-link-active .mat-icon{color:var(--md-sys-color-on-teriary)}.nav-link.nav-link-inactive,.nav-link.nav-link-inactive .mat-icon{color:var(--md-sys-color-on-surface)}\n"] }]
@@ -28836,7 +28901,6 @@ class ElderNavModule {
28836
28901
  MatIconModule,
28837
28902
  MatButtonModule,
28838
28903
  A11yModule,
28839
- TranslateModule,
28840
28904
  MatListModule,
28841
28905
  MatRippleModule,
28842
28906
  ElderNavListComponent,
@@ -28847,7 +28911,6 @@ class ElderNavModule {
28847
28911
  MatIconModule,
28848
28912
  MatButtonModule,
28849
28913
  A11yModule,
28850
- TranslateModule,
28851
28914
  MatListModule,
28852
28915
  MatRippleModule,
28853
28916
  ElderNavLinkComponent,
@@ -28863,7 +28926,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28863
28926
  MatIconModule,
28864
28927
  MatButtonModule,
28865
28928
  A11yModule,
28866
- TranslateModule,
28867
28929
  MatListModule,
28868
28930
  MatRippleModule,
28869
28931
  ElderNavListComponent,
@@ -29033,7 +29095,7 @@ class ElderBreadCrumbsComponent {
29033
29095
  return nodes;
29034
29096
  }
29035
29097
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29036
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderBreadCrumbsComponent, isStandalone: true, 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@if ({ enabled: editMode$ | async }; as editMode) {\n <div\n class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n >\n <!-- path container -->\n <form\n #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n @if (editMode.enabled) {\n <mat-form-field class=\"flex\" elderDense>\n {{ pathInput.focus() }}\n <input\n matInput\n type=\"text\"\n name=\"pathInput\"\n #pathInput\n [ngModel]=\"path\"\n (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent\n [elderKeyEventFilter]=\"'Enter'\"\n (onElderKeyEvent)=\"onEnter()\"\n />\n </mat-form-field>\n }\n <!-- navigation control (if editMode:disabled) -->\n @if (!editMode.enabled) {\n @for (node of nodes$ | async; track node; let isFirst = $first; let isLast = $last) {\n <div class=\"layout-row place-center-center flex-none\">\n <!-- arrow right icon as path element delimiter -->\n @if (!isFirst) {\n <mat-icon class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n }\n <!-- root element (case root icon) -->\n @if (isFirst && rootIcon) {\n <a\n mat-icon-button\n class=\"breadcrumb\"\n (click)=\"goToPath(node)\"\n elderStopEventPropagation\n >\n <mat-icon>{{ rootIcon }}</mat-icon>\n </a>\n }\n <!-- intermediate elements (not last and (not first or root icon)) -->\n @if (!isLast && (!isFirst || !rootIcon)) {\n <a mat-button class=\"breadcrumb\" (click)=\"goToPath(node)\" elderStopEventPropagation>\n <span>{{ node.name }}</span>\n </a>\n }\n <!-- last element (is last and (not first or root icon)) -->\n @if (isLast && (!isFirst || !rootIcon)) {\n <a mat-button class=\"breadcrumb\" (click)=\"(null)\" elderStopEventPropagation>\n {{ node.name }}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n }\n </div>\n }\n }\n </form>\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{ 'Pfad kopieren' }}</span>\n </button>\n <button\n mat-menu-item\n type=\"button\"\n (click)=\"onMenuEditPathClick($event)\"\n elderStopEventPropagation\n >\n @if (!editMode.enabled) {\n <mat-icon>edit</mat-icon>\n }\n @if (editMode.enabled) {\n <mat-icon>done</mat-icon>\n }\n @if (!editMode.enabled) {\n <span>{{ 'Pfad editieren' }}</span>\n }\n @if (editMode.enabled) {\n <span>{{ 'Pfad best\u00E4tigen' }}</span>\n }\n </button>\n </mat-menu>\n </button>\n </div>\n}\n", styles: [".breadcrumb-bar{padding-top:4px;padding-bottom:4px}.breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconAnchor, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatAnchor, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29098
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderBreadCrumbsComponent, isStandalone: true, 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@if ({ enabled: editMode$ | async }; as editMode) {\n <div\n class=\"layout-row place-start-center full breadcrumb-bar\"\n [style.background-color]=\"backgroundColor\"\n >\n <!-- path container -->\n <form\n #breadCrumbForm=\"ngForm\"\n class=\"layout-row place-start-center flex breadcrumb-path\"\n (click)=\"enableEditMode()\"\n >\n <!-- path edit control (if editMode:enabled) -->\n @if (editMode.enabled) {\n <mat-form-field class=\"flex\" elderDense>\n {{ pathInput.focus() }}\n <input\n matInput\n type=\"text\"\n name=\"pathInput\"\n #pathInput\n [ngModel]=\"path\"\n (ngModelChange)=\"onPathInputChange($event)\"\n (blur)=\"onPathEditBlur($event)\"\n elderKeyEvent\n [elderKeyEventFilter]=\"'Enter'\"\n (onElderKeyEvent)=\"onEnter()\"\n />\n </mat-form-field>\n }\n <!-- navigation control (if editMode:disabled) -->\n @if (!editMode.enabled) {\n @for (node of nodes$ | async; track node; let isFirst = $first; let isLast = $last) {\n <div class=\"layout-row place-center-center flex-none\">\n <!-- arrow right icon as path element delimiter -->\n @if (!isFirst) {\n <mat-icon class=\"noselect breadcrumb-arrow\">keyboard_arrow_right</mat-icon>\n }\n <!-- root element (case root icon) -->\n @if (isFirst && rootIcon) {\n <a\n mat-icon-button\n class=\"breadcrumb\"\n (click)=\"goToPath(node)\"\n elderStopEventPropagation\n >\n <mat-icon>{{ rootIcon }}</mat-icon>\n </a>\n }\n <!-- intermediate elements (not last and (not first or root icon)) -->\n @if (!isLast && (!isFirst || !rootIcon)) {\n <a mat-button class=\"breadcrumb\" (click)=\"goToPath(node)\" elderStopEventPropagation>\n <span>{{ node.name }}</span>\n </a>\n }\n <!-- last element (is last and (not first or root icon)) -->\n @if (isLast && (!isFirst || !rootIcon)) {\n <a mat-button class=\"breadcrumb\" (click)=\"(null)\" elderStopEventPropagation>\n {{ node.name }}\n <mat-icon>arrow_drop_down</mat-icon>\n </a>\n }\n </div>\n }\n }\n </form>\n <!-- bread crumb action menu button -->\n <button mat-icon-button type=\"button\" [matMenuTriggerFor]=\"menu\">\n <mat-icon style=\"font-size: 22px\">arrow_drop_down</mat-icon>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item type=\"button\" [elderClipboardPut]=\"path\">\n <mat-icon>content_copy</mat-icon>\n <span>{{ 'Pfad kopieren' }}</span>\n </button>\n <button\n mat-menu-item\n type=\"button\"\n (click)=\"onMenuEditPathClick($event)\"\n elderStopEventPropagation\n >\n @if (!editMode.enabled) {\n <mat-icon>edit</mat-icon>\n }\n @if (editMode.enabled) {\n <mat-icon>done</mat-icon>\n }\n @if (!editMode.enabled) {\n <span>{{ 'Pfad editieren' }}</span>\n }\n @if (editMode.enabled) {\n <span>{{ 'Pfad best\u00E4tigen' }}</span>\n }\n </button>\n </mat-menu>\n </button>\n </div>\n}\n", styles: [".breadcrumb-bar{padding-top:4px;padding-bottom:4px}.breadcrumb-path{padding:0 8px}.breadcrumb{padding-left:4px;padding-right:4px;font-size:18px;font-weight:400}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderKeyEventDirective, selector: "[elderKeyEvent]", inputs: ["elderKeyEventFilter", "elderKeyEventDown", "elderKeyEventChildren", "elderKeyEventCallback"], outputs: ["onElderKeyEvent"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconAnchor, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatAnchor, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: ElderClipboardPutDirective, selector: "[elderClipboardPut]", inputs: ["elderClipboardPut"], outputs: ["clipboardCopied"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29037
29099
  }
29038
29100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsComponent, decorators: [{
29039
29101
  type: Component,
@@ -29078,7 +29140,6 @@ class ElderBreadCrumbsModule {
29078
29140
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule,
29079
29141
  FormsModule,
29080
29142
  ReactiveFormsModule,
29081
- TranslateModule,
29082
29143
  MatFormFieldModule,
29083
29144
  MatIconModule,
29084
29145
  MatButtonModule,
@@ -29089,7 +29150,6 @@ class ElderBreadCrumbsModule {
29089
29150
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule,
29090
29151
  FormsModule,
29091
29152
  ReactiveFormsModule,
29092
- TranslateModule,
29093
29153
  MatFormFieldModule,
29094
29154
  MatIconModule,
29095
29155
  MatButtonModule,
@@ -29105,7 +29165,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
29105
29165
  CommonModule,
29106
29166
  FormsModule,
29107
29167
  ReactiveFormsModule,
29108
- TranslateModule,
29109
29168
  MatFormFieldModule,
29110
29169
  MatIconModule,
29111
29170
  MatButtonModule,
@@ -29118,35 +29177,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
29118
29177
  }]
29119
29178
  }] });
29120
29179
 
29121
- /**
29122
- * This service updates the HTML lang attribute based on the current language.
29123
- * (Manipulates the DOM directly)
29124
- */
29125
- class ElderHtmlLangAttributeService {
29126
- /***************************************************************************
29127
- * *
29128
- * Constructor *
29129
- * *
29130
- **************************************************************************/
29131
- constructor() {
29132
- this.languageService = inject(ElderLanguageService);
29133
- this.htmlDocument = inject(DOCUMENT);
29134
- this.languageService.currentLanguage$.subscribe((lang) => {
29135
- if (lang) {
29136
- this.htmlDocument.documentElement.setAttribute('lang', lang);
29137
- }
29138
- });
29139
- }
29140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHtmlLangAttributeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
29141
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHtmlLangAttributeService, providedIn: 'root' }); }
29142
- }
29143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHtmlLangAttributeService, decorators: [{
29144
- type: Injectable,
29145
- args: [{
29146
- providedIn: 'root',
29147
- }]
29148
- }], ctorParameters: () => [] });
29149
-
29150
29180
  /**
29151
29181
  * Bootstrap service that initializes services on startup.
29152
29182
  */
@@ -29182,7 +29212,6 @@ class ElderServicesBootstrap {
29182
29212
  }
29183
29213
  initializeServices() {
29184
29214
  inject(ElderThemeService);
29185
- inject(ElderHtmlLangAttributeService);
29186
29215
  }
29187
29216
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderServicesBootstrap, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
29188
29217
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderServicesBootstrap, providedIn: 'root' }); }
@@ -29304,7 +29333,7 @@ class ElderRouterOutletService {
29304
29333
  this.collectActiveOutletsRecursive(c, outlets);
29305
29334
  }
29306
29335
  }
29307
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterOutletService, deps: [{ token: i1$3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
29336
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterOutletService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
29308
29337
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterOutletService, providedIn: 'root' }); }
29309
29338
  }
29310
29339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterOutletService, decorators: [{
@@ -29312,7 +29341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
29312
29341
  args: [{
29313
29342
  providedIn: 'root',
29314
29343
  }]
29315
- }], ctorParameters: () => [{ type: i1$3.Router }] });
29344
+ }], ctorParameters: () => [{ type: i1$2.Router }] });
29316
29345
 
29317
29346
  /**
29318
29347
  * This service manages the side content.
@@ -29483,7 +29512,7 @@ class ElderShellService {
29483
29512
  this.clickOutsideToClose = clickOutsideToClose;
29484
29513
  return this.routerOutletService.activate(this.detailContentOutlet, args, extras);
29485
29514
  }
29486
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellService, deps: [{ token: i1$3.Router }, { token: ElderRouterOutletService }], target: i0.ɵɵFactoryTarget.Injectable }); }
29515
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellService, deps: [{ token: i1$2.Router }, { token: ElderRouterOutletService }], target: i0.ɵɵFactoryTarget.Injectable }); }
29487
29516
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellService, providedIn: 'root' }); }
29488
29517
  }
29489
29518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellService, decorators: [{
@@ -29491,7 +29520,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
29491
29520
  args: [{
29492
29521
  providedIn: 'root',
29493
29522
  }]
29494
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: ElderRouterOutletService }] });
29523
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: ElderRouterOutletService }] });
29495
29524
 
29496
29525
  class ElderRouteOutletDrawerService {
29497
29526
  /***************************************************************************
@@ -29921,13 +29950,13 @@ class ElderShellNavigationToggleComponent {
29921
29950
  parts.splice(parts.length - 1, 1);
29922
29951
  return parts.join('/');
29923
29952
  }
29924
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellNavigationToggleComponent, deps: [{ token: i1$3.Router }, { token: ElderShellService }], target: i0.ɵɵFactoryTarget.Component }); }
29953
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellNavigationToggleComponent, deps: [{ token: i1$2.Router }, { token: ElderShellService }], target: i0.ɵɵFactoryTarget.Component }); }
29925
29954
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderShellNavigationToggleComponent, isStandalone: true, selector: "elder-shell-nav-toggle", inputs: { roots: { classPropertyName: "roots", publicName: "roots", isSignal: true, isRequired: false, transformFunction: null }, hide: { classPropertyName: "hide", publicName: "hide", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (showComponent()) {\n <button mat-icon-button type=\"button\" (click)=\"onClick()\">\n <mat-icon>{{ icon() }}</mat-icon>\n </button>\n}\n", styles: [""], dependencies: [{ kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
29926
29955
  }
29927
29956
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellNavigationToggleComponent, decorators: [{
29928
29957
  type: Component,
29929
29958
  args: [{ selector: 'elder-shell-nav-toggle', imports: [MatIconButton, MatIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (showComponent()) {\n <button mat-icon-button type=\"button\" (click)=\"onClick()\">\n <mat-icon>{{ icon() }}</mat-icon>\n </button>\n}\n" }]
29930
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: ElderShellService }], propDecorators: { roots: [{ type: i0.Input, args: [{ isSignal: true, alias: "roots", required: false }] }], hide: [{ type: i0.Input, args: [{ isSignal: true, alias: "hide", required: false }] }] } });
29959
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: ElderShellService }], propDecorators: { roots: [{ type: i0.Input, args: [{ isSignal: true, alias: "roots", required: false }] }], hide: [{ type: i0.Input, args: [{ isSignal: true, alias: "hide", required: false }] }] } });
29931
29960
 
29932
29961
  class ElderShellSlotDirective {
29933
29962
  /***************************************************************************
@@ -30002,11 +30031,11 @@ class ElderStaticNavToggleComponent {
30002
30031
  this.shellService.toggleStaticNav();
30003
30032
  }
30004
30033
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderStaticNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30005
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderStaticNavToggleComponent, isStandalone: true, selector: "elder-static-nav-toggle", ngImport: i0, template: "<div class=\"layout-row place-start-center\">\n <mat-slide-toggle\n [ngModel]=\"staticNavOpen()\"\n (ngModelChange)=\"onToggle($event)\"\n [color]=\"'primary'\"\n ></mat-slide-toggle>\n <mat-icon fontSet=\"material-symbols-outlined\">side_navigation</mat-icon>\n <span class=\"text-body-small ml-xs\">{{ 'static_nav.toggle_static_nav' | translate }}</span>\n</div>\n", dependencies: [{ kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30034
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderStaticNavToggleComponent, isStandalone: true, selector: "elder-static-nav-toggle", ngImport: i0, template: "<div class=\"layout-row place-start-center\">\n <mat-slide-toggle\n [ngModel]=\"staticNavOpen()\"\n (ngModelChange)=\"onToggle($event)\"\n [color]=\"'primary'\"\n ></mat-slide-toggle>\n <mat-icon fontSet=\"material-symbols-outlined\">side_navigation</mat-icon>\n <span class=\"text-body-small ml-xs\">{{ 'static_nav.toggle_static_nav' | translate }}</span>\n</div>\n", dependencies: [{ kind: "component", type: MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30006
30035
  }
30007
30036
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderStaticNavToggleComponent, decorators: [{
30008
30037
  type: Component,
30009
- args: [{ selector: 'elder-static-nav-toggle', imports: [MatSlideToggle, FormsModule, TranslateModule, MatIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-row place-start-center\">\n <mat-slide-toggle\n [ngModel]=\"staticNavOpen()\"\n (ngModelChange)=\"onToggle($event)\"\n [color]=\"'primary'\"\n ></mat-slide-toggle>\n <mat-icon fontSet=\"material-symbols-outlined\">side_navigation</mat-icon>\n <span class=\"text-body-small ml-xs\">{{ 'static_nav.toggle_static_nav' | translate }}</span>\n</div>\n" }]
30038
+ args: [{ selector: 'elder-static-nav-toggle', imports: [MatSlideToggle, FormsModule, ElderTranslatePipe, MatIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-row place-start-center\">\n <mat-slide-toggle\n [ngModel]=\"staticNavOpen()\"\n (ngModelChange)=\"onToggle($event)\"\n [color]=\"'primary'\"\n ></mat-slide-toggle>\n <mat-icon fontSet=\"material-symbols-outlined\">side_navigation</mat-icon>\n <span class=\"text-body-small ml-xs\">{{ 'static_nav.toggle_static_nav' | translate }}</span>\n</div>\n" }]
30010
30039
  }] });
30011
30040
 
30012
30041
  class ElderAppearanceSettingsComponent {
@@ -30094,7 +30123,6 @@ class ElderShellModule {
30094
30123
  ElderToolbarModule,
30095
30124
  ElderPanelModule,
30096
30125
  ElderThemeModule,
30097
- TranslateModule,
30098
30126
  ElderShellComponent,
30099
30127
  ElderShellSideLeftDirective,
30100
30128
  ElderShellSideRightDirective,
@@ -30122,7 +30150,6 @@ class ElderShellModule {
30122
30150
  ElderToolbarModule,
30123
30151
  ElderPanelModule,
30124
30152
  ElderThemeModule,
30125
- TranslateModule,
30126
30153
  ElderShellComponent,
30127
30154
  ElderShellNavigationToggleComponent,
30128
30155
  ElderAppHeaderComponent,
@@ -30143,7 +30170,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30143
30170
  ElderToolbarModule,
30144
30171
  ElderPanelModule,
30145
30172
  ElderThemeModule,
30146
- TranslateModule,
30147
30173
  ElderShellComponent,
30148
30174
  ElderShellSideLeftDirective,
30149
30175
  ElderShellSideRightDirective,
@@ -30636,7 +30662,7 @@ class ElderLocalDateInputComponent extends ElderFormFieldControlBase {
30636
30662
  return a && b ? a.equals(b) : a === b;
30637
30663
  }
30638
30664
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalDateInputComponent, deps: [{ token: SmartLocalDateParserService }], target: i0.ɵɵFactoryTarget.Component }); }
30639
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalDateInputComponent, isStandalone: true, 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: [{ provide: MatFormFieldControl, useExisting: ElderLocalDateInputComponent }], 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 class=\"layout-row place-start-center elder-flex-control\">\n @if (arrows) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n }\n\n <input\n matInput\n elderNoSpinner\n class=\"flex elder-mdc-input-fix elder-local-date-input\"\n #input\n type=\"date\"\n elderToggleTextInput\n [name]=\"controlName + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | 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\n style=\"display: none\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"onDatepickerInputChange($event)\"\n />\n\n @if (arrows) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n }\n\n @if (today) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\"\n >\n <mat-icon>today</mat-icon>\n </button>\n }\n\n @if (datePickerEnabled && (!allowNull || (value$ | async) === null)) {\n <mat-datepicker-toggle class=\"elder-control-icon-button\" [disabled]=\"isLocked\" [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n }\n\n @if (allowNull && (value$ | async)) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n</div>\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: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: ElderToggleTextInputDirective, selector: "input[elderToggleTextInput]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30665
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalDateInputComponent, isStandalone: true, 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: [{ provide: MatFormFieldControl, useExisting: ElderLocalDateInputComponent }], 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 class=\"layout-row place-start-center elder-flex-control\">\n @if (arrows) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n }\n\n <input\n matInput\n elderNoSpinner\n class=\"flex elder-mdc-input-fix elder-local-date-input\"\n #input\n type=\"date\"\n elderToggleTextInput\n [name]=\"controlName + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | 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\n style=\"display: none\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"onDatepickerInputChange($event)\"\n />\n\n @if (arrows) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n }\n\n @if (today) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\"\n >\n <mat-icon>today</mat-icon>\n </button>\n }\n\n @if (datePickerEnabled && (!allowNull || (value$ | async) === null)) {\n <mat-datepicker-toggle class=\"elder-control-icon-button\" [disabled]=\"isLocked\" [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n }\n\n @if (allowNull && (value$ | async)) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n</div>\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: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: ElderToggleTextInputDirective, selector: "input[elderToggleTextInput]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30640
30666
  }
30641
30667
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalDateInputComponent, decorators: [{
30642
30668
  type: Component,
@@ -30653,7 +30679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30653
30679
  MatDatepicker,
30654
30680
  AsyncPipe,
30655
30681
  DatePipe,
30656
- TranslateModule,
30682
+ ElderTranslatePipe,
30657
30683
  ElderToggleTextInputDirective,
30658
30684
  ], template: "<div class=\"layout-row place-start-center elder-flex-control\">\n @if (arrows) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n }\n\n <input\n matInput\n elderNoSpinner\n class=\"flex elder-mdc-input-fix elder-local-date-input\"\n #input\n type=\"date\"\n elderToggleTextInput\n [name]=\"controlName + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | 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\n style=\"display: none\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"onDatepickerInputChange($event)\"\n />\n\n @if (arrows) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n }\n\n @if (today) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\"\n >\n <mat-icon>today</mat-icon>\n </button>\n }\n\n @if (datePickerEnabled && (!allowNull || (value$ | async) === null)) {\n <mat-datepicker-toggle class=\"elder-control-icon-button\" [disabled]=\"isLocked\" [for]=\"picker\">\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n }\n\n @if (allowNull && (value$ | async)) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n</div>\n", styles: ["input::-webkit-calendar-picker-indicator{display:none}.elder-auto-date-picker{cursor:pointer}.elder-local-date-input.center{text-align:center}\n"] }]
30659
30685
  }], ctorParameters: () => [{ type: SmartLocalDateParserService }], propDecorators: { zone: [{
@@ -30752,7 +30778,7 @@ class ElderDateSwitcherComponent extends FormFieldBaseComponent {
30752
30778
  return a && b ? a.equals(b) : a === b;
30753
30779
  }
30754
30780
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30755
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderDateSwitcherComponent, isStandalone: true, 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 @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n <elder-local-date-input\n arrows\n today\n autoDatePicker\n 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: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30781
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderDateSwitcherComponent, isStandalone: true, 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 @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n <elder-local-date-input\n arrows\n today\n autoDatePicker\n 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: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { 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: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], viewProviders: [ViewProviders.ParentControlContainer], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30756
30782
  }
30757
30783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateSwitcherComponent, decorators: [{
30758
30784
  type: Component,
@@ -30762,7 +30788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30762
30788
  MatLabel,
30763
30789
  ElderLocalDateInputComponent,
30764
30790
  AsyncPipe,
30765
- TranslateModule,
30791
+ ElderTranslatePipe,
30766
30792
  ], template: "<mat-form-field subscriptSizing=\"dynamic\" class=\"flex full\" [elderDense]=\"dense\">\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n <elder-local-date-input\n arrows\n today\n autoDatePicker\n 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" }]
30767
30793
  }], ctorParameters: () => [], propDecorators: { datePickerEnabled: [{
30768
30794
  type: Input
@@ -30834,11 +30860,11 @@ class ElderLocalTimeInputComponent extends ElderFormFieldControlBase {
30834
30860
  return a && b ? a.equals(b) : a === b;
30835
30861
  }
30836
30862
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalTimeInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30837
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderLocalTimeInputComponent, isStandalone: true, selector: "elder-local-time-input", inputs: { isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalTimeInputComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n matInput\n class=\"flex-grow elder-mdc-input-fix\"\n #input\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n type=\"time\"\n elderToggleTextInput\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"hourMinuteStr$ | async\"\n (ngModelChange)=\"onHourMinuteChanged($event)\"\n />\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: ElderToggleTextInputDirective, selector: "input[elderToggleTextInput]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30863
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderLocalTimeInputComponent, isStandalone: true, selector: "elder-local-time-input", inputs: { isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalTimeInputComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n matInput\n class=\"flex-grow elder-mdc-input-fix\"\n #input\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n type=\"time\"\n elderToggleTextInput\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"hourMinuteStr$ | async\"\n (ngModelChange)=\"onHourMinuteChanged($event)\"\n />\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderToggleTextInputDirective, selector: "input[elderToggleTextInput]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30838
30864
  }
30839
30865
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalTimeInputComponent, decorators: [{
30840
30866
  type: Component,
30841
- args: [{ selector: 'elder-local-time-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalTimeInputComponent }], imports: [MatInput, FormsModule, AsyncPipe, TranslateModule, ElderToggleTextInputDirective], template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n matInput\n class=\"flex-grow elder-mdc-input-fix\"\n #input\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n type=\"time\"\n elderToggleTextInput\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"hourMinuteStr$ | async\"\n (ngModelChange)=\"onHourMinuteChanged($event)\"\n />\n</div>\n" }]
30867
+ args: [{ selector: 'elder-local-time-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalTimeInputComponent }], imports: [MatInput, FormsModule, AsyncPipe, ElderTranslatePipe, ElderToggleTextInputDirective], template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n matInput\n class=\"flex-grow elder-mdc-input-fix\"\n #input\n [name]=\"controlName + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n type=\"time\"\n elderToggleTextInput\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [ngModel]=\"hourMinuteStr$ | async\"\n (ngModelChange)=\"onHourMinuteChanged($event)\"\n />\n</div>\n" }]
30842
30868
  }], ctorParameters: () => [], propDecorators: { inputRef: [{
30843
30869
  type: ViewChild,
30844
30870
  args: ['input']
@@ -30914,7 +30940,7 @@ class ElderDateTimeInputComponent extends ElderFormFieldControlBase {
30914
30940
  return a && b ? a.equals(b) : a === b;
30915
30941
  }
30916
30942
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateTimeInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30917
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderDateTimeInputComponent, isStandalone: true, selector: "elder-date-time-input", inputs: { center: "center", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderDateTimeInputComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n matInput\n class=\"flex-grow elder-mdc-input-fix elder-datetime-local-input\"\n #input\n [name]=\"controlName + '-inner-input'\"\n type=\"datetime-local\"\n elderToggleTextInput\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | 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: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: ElderToggleTextInputDirective, selector: "input[elderToggleTextInput]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30943
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ElderDateTimeInputComponent, isStandalone: true, selector: "elder-date-time-input", inputs: { center: "center", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderDateTimeInputComponent }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n matInput\n class=\"flex-grow elder-mdc-input-fix elder-datetime-local-input\"\n #input\n [name]=\"controlName + '-inner-input'\"\n type=\"datetime-local\"\n elderToggleTextInput\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | 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: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderToggleTextInputDirective, selector: "input[elderToggleTextInput]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30918
30944
  }
30919
30945
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateTimeInputComponent, decorators: [{
30920
30946
  type: Component,
@@ -30923,7 +30949,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30923
30949
  FormsModule,
30924
30950
  AsyncPipe,
30925
30951
  DatePipe,
30926
- TranslateModule,
30952
+ ElderTranslatePipe,
30927
30953
  ElderToggleTextInputDirective,
30928
30954
  ], template: "<div class=\"layout-row place-start-baseline elder-flex-control\">\n <input\n matInput\n class=\"flex-grow elder-mdc-input-fix elder-datetime-local-input\"\n #input\n [name]=\"controlName + '-inner-input'\"\n type=\"datetime-local\"\n elderToggleTextInput\n [required]=\"!!required\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | 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"] }]
30929
30955
  }], ctorParameters: () => [], propDecorators: { inputRef: [{
@@ -31091,13 +31117,13 @@ class ElderIntervalInputComponent extends ElderFormFieldControlBase {
31091
31117
  }
31092
31118
  }
31093
31119
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderIntervalInputComponent, deps: [{ token: i1$d.DateAdapter }, { token: MAT_DATE_LOCALE }], target: i0.ɵɵFactoryTarget.Component }); }
31094
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderIntervalInputComponent, isStandalone: true, selector: "elder-interval-input", inputs: { zone: "zone", valueAsIsoStr: "valueAsIsoStr", mode: "mode", isDefaultDatePickerDisabled: "isDefaultDatePickerDisabled", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderIntervalInputComponent }], usesInheritance: true, ngImport: i0, template: "@switch (mode) {\n @case ('date-time-range') {\n <div class=\"layout-row\">\n <elder-date-time-input\n class=\"flex\"\n center\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeHolderOrEmpty() | translate) + ' ' + ('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\n class=\"flex\"\n center\n [value]=\"(interval$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeHolderOrEmpty() | translate) + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n }\n @case ('day-time-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeHolderOrEmpty() | translate) + ' ' + ('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]=\"(placeHolderOrEmpty() | translate) + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n }\n\n @case ('date-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input\n matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\"\n name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur' }\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n />\n <input\n matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\"\n 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\n @if (!isDefaultDatePickerDisabled) {\n <mat-datepicker-toggle\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\"\n >\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n }\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n }\n\n @case ('single-day') {\n <div class=\"layout-row elder-flex-control\">\n <!-- [name]=\"name\" -->\n <elder-local-date-input\n class=\"flex\"\n center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeHolderOrEmpty() | translate\"\n ></elder-local-date-input>\n </div>\n }\n}\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { 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: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderIntervalInputComponent, isStandalone: true, selector: "elder-interval-input", inputs: { zone: "zone", valueAsIsoStr: "valueAsIsoStr", mode: "mode", isDefaultDatePickerDisabled: "isDefaultDatePickerDisabled", isoValue: "isoValue" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderIntervalInputComponent }], usesInheritance: true, ngImport: i0, template: "@switch (mode) {\n @case ('date-time-range') {\n <div class=\"layout-row\">\n <elder-date-time-input\n class=\"flex\"\n center\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeHolderOrEmpty() | translate) + ' ' + ('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\n class=\"flex\"\n center\n [value]=\"(interval$ | async)?.end\"\n (valueUpdated)=\"onEndChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeHolderOrEmpty() | translate) + ' ' + ('interval.to' | translate)\"\n ></elder-date-time-input>\n </div>\n }\n @case ('day-time-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n <!-- [name]=\"name + '-day-start'\" -->\n <elder-date-time-input\n [value]=\"(interval$ | async)?.start\"\n (valueUpdated)=\"onDayTimeStartChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"(placeHolderOrEmpty() | translate) + ' ' + ('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]=\"(placeHolderOrEmpty() | translate) + ' ' + ('interval.to' | translate)\"\n ></elder-local-time-input>\n </div>\n }\n\n @case ('date-range') {\n <div class=\"layout-row gap-xs elder-flex-interval-control\">\n <mat-date-range-input\n class=\"mdc-text-field__input\"\n [rangePicker]=\"picker\"\n [disabled]=\"!!disabled\"\n >\n <input\n matStartDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"startDate$ | async\"\n name=\"date-range.start\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'blur' }\"\n (ngModelChange)=\"onStartDateChanged($event)\"\n [readonly]=\"readonly\"\n [disabled]=\"!!disabled\"\n />\n <input\n matEndDate\n [placeholder]=\"dateformat\"\n [ngModel]=\"endDate$ | async\"\n 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\n @if (!isDefaultDatePickerDisabled) {\n <mat-datepicker-toggle\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n [for]=\"picker\"\n >\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n }\n <mat-date-range-picker #picker></mat-date-range-picker>\n </div>\n }\n\n @case ('single-day') {\n <div class=\"layout-row elder-flex-control\">\n <!-- [name]=\"name\" -->\n <elder-local-date-input\n class=\"flex\"\n center\n [value]=\"startLocalDate$ | async\"\n (valueUpdated)=\"onSingleDayDateChanged($event)\"\n [required]=\"required\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeHolderOrEmpty() | translate\"\n ></elder-local-date-input>\n </div>\n }\n}\n", styles: [".elder-flex-interval-control{flex:1 1 auto;overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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: MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "component", type: MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { 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: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31095
31121
  }
31096
31122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderIntervalInputComponent, decorators: [{
31097
31123
  type: Component,
31098
31124
  args: [{ selector: 'elder-interval-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderIntervalInputComponent }], imports: [
31099
31125
  AsyncPipe,
31100
- TranslateModule,
31126
+ ElderTranslatePipe,
31101
31127
  FormsModule,
31102
31128
  ElderDateTimeInputComponent,
31103
31129
  ElderLocalTimeInputComponent,
@@ -31207,7 +31233,7 @@ class ElderDurationInputComponent extends ElderFormFieldControlBase {
31207
31233
  return a && b ? a.equals(b) : a === b;
31208
31234
  }
31209
31235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDurationInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31210
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderDurationInputComponent, isStandalone: true, selector: "elder-duration-input", inputs: { isoValue: "isoValue", format: "format", durationFormat: "durationFormat" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderDurationInputComponent }], usesInheritance: true, ngImport: i0, template: "@if (durationContext$ | async; as durationCtx) {\n <div class=\"layout-row place-start-center flex-none\">\n @if (durationCtx.format.days) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-days'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n }\n @if (durationCtx.format.hours) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-hours'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">h</span>\n </div>\n }\n @if (durationCtx.format.minutes) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-minutes'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">min</span>\n </div>\n }\n @if (durationCtx.format.seconds) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-seconds'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">sec</span>\n </div>\n }\n </div>\n}\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: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderDurationInputComponent, isStandalone: true, selector: "elder-duration-input", inputs: { isoValue: "isoValue", format: "format", durationFormat: "durationFormat" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderDurationInputComponent }], usesInheritance: true, ngImport: i0, template: "@if (durationContext$ | async; as durationCtx) {\n <div class=\"layout-row place-start-center flex-none\">\n @if (durationCtx.format.days) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-days'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n }\n @if (durationCtx.format.hours) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-hours'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">h</span>\n </div>\n }\n @if (durationCtx.format.minutes) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-minutes'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">min</span>\n </div>\n }\n @if (durationCtx.format.seconds) {\n <div class=\"layout-row place-start-baseline duration-field flex\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-seconds'\"\n type=\"number\"\n 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 />\n <span class=\"mat-caption suffix flex-none noselect\">sec</span>\n </div>\n }\n </div>\n}\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: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31211
31237
  }
31212
31238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDurationInputComponent, decorators: [{
31213
31239
  type: Component,
@@ -31311,7 +31337,7 @@ class ElderPeriodInputComponent extends ElderFormFieldControlBase {
31311
31337
  return a && b ? a.equals(b) : a === b;
31312
31338
  }
31313
31339
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPeriodInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31314
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderPeriodInputComponent, isStandalone: true, selector: "elder-period-input", inputs: { isoValue: "isoValue", format: "format", periodFormat: "periodFormat" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderPeriodInputComponent }], usesInheritance: true, ngImport: i0, template: "@if (periodContext$ | async; as periodCtx) {\n <div class=\"layout-row place-start-center flex-none\">\n @if (periodCtx.format.days) {\n <div class=\"layout-row place-start-baseline flex period-field\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-days'\"\n type=\"number\"\n 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 />\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n }\n @if (periodCtx.format.months) {\n <div class=\"layout-row place-start-baseline flex period-field\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-months'\"\n type=\"number\"\n 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 />\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">mnt</span>\n </div>\n }\n @if (periodCtx.format.years) {\n <div class=\"layout-row place-start-baseline flex period-field\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-years'\"\n type=\"number\"\n 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 />\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">yrs</span>\n </div>\n }\n </div>\n}\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: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31340
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderPeriodInputComponent, isStandalone: true, selector: "elder-period-input", inputs: { isoValue: "isoValue", format: "format", periodFormat: "periodFormat" }, outputs: { isoValueChange: "isoValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderPeriodInputComponent }], usesInheritance: true, ngImport: i0, template: "@if (periodContext$ | async; as periodCtx) {\n <div class=\"layout-row place-start-center flex-none\">\n @if (periodCtx.format.days) {\n <div class=\"layout-row place-start-baseline flex period-field\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-days'\"\n type=\"number\"\n 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 />\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">d</span>\n </div>\n }\n @if (periodCtx.format.months) {\n <div class=\"layout-row place-start-baseline flex period-field\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-months'\"\n type=\"number\"\n 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 />\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">mnt</span>\n </div>\n }\n @if (periodCtx.format.years) {\n <div class=\"layout-row place-start-baseline flex period-field\">\n <input\n matInput\n elderNoSpinner\n [name]=\"controlName + '-inner-years'\"\n type=\"number\"\n 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 />\n <span matSuffix class=\"mat-caption suffix flex-none noselect\">yrs</span>\n </div>\n }\n </div>\n}\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: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31315
31341
  }
31316
31342
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPeriodInputComponent, decorators: [{
31317
31343
  type: Component,
@@ -32230,7 +32256,7 @@ class ElderIntervalPickerComponent {
32230
32256
  }
32231
32257
  }
32232
32258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderIntervalPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderIntervalPickerComponent, isStandalone: true, selector: "elder-interval-picker", inputs: { emitType: { classPropertyName: "emitType", publicName: "emitType", isSignal: true, isRequired: false, transformFunction: null }, autoEmitMode: { classPropertyName: "autoEmitMode", publicName: "autoEmitMode", isSignal: true, isRequired: false, transformFunction: null }, intervalInputMode: { classPropertyName: "intervalInputMode", publicName: "intervalInputMode", isSignal: true, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, externalInterval: { classPropertyName: "externalInterval", publicName: "externalInterval", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intervalChange: "intervalChange" }, providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], viewQueries: [{ propertyName: "calendarStart", first: true, predicate: ["rangeCalendarStart"], descendants: true }, { propertyName: "calendarEnd", first: true, predicate: ["rangeCalendarEnd"], descendants: true }, { propertyName: "calendarStartElRef", first: true, predicate: ["rangeCalendarStart"], descendants: true, read: ElementRef }, { propertyName: "calendarEndElRef", first: true, predicate: ["rangeCalendarEnd"], descendants: true, read: ElementRef }, { propertyName: "startDateInput", first: true, predicate: ["startDateInput"], descendants: true }, { propertyName: "endDateInput", first: true, predicate: ["endDateInput"], descendants: true }], ngImport: i0, template: "<div class=\"interval-picker-component p-md layout-col gap-xxl\">\n <div class=\"layout-row gap-xxl place-between-start\" style=\"gap: 5%\">\n <div class=\"layout-col gap-md pt-xs\">\n <div class=\"layout-col\">\n <div class=\"layout-row select-buttons-container gap-sm\">\n <div class=\"layout-col gap-xs place-start-stretch\">\n <button mat-button type=\"button\" (click)=\"controller.select.selectCurrentDay()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.anchorDay' | translate }}\n } @else {\n {{ 'intervalPicker.today' | translate }}\n }\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectYesterday()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.last' | translate }} 1 {{ 'intervalPicker.day' | translate }}\n } @else {\n {{ 'intervalPicker.yesterday' | translate }}\n }\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastSevenDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 7\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastThirtyDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 30\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLast365daysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 365\n {{ 'intervalPicker.days' | translate }}\n </button>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"pt-sm\"></div>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastFiveMinutes()\">\n {{ 'intervalPicker.last' | translate }} 5\n {{ 'intervalPicker.minutes' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastHour()\">\n {{ 'intervalPicker.last' | translate }} {{ 'intervalPicker.hour' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLast24Hours()\">\n {{ 'intervalPicker.last' | translate }} 24\n {{ 'intervalPicker.hours' | translate }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n <div class=\"layout-col\">\n <!-- smart shift -->\n <div class=\"layout-row place-around-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ presenter.smartShiftMessage() }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- calendars and input controls -->\n <div\n class=\"layout-row place-around-center\"\n style=\"align-items: flex-start; min-height: 280px\"\n >\n <mat-calendar\n #rangeCalendarStart\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setStartDateFromJSDate($event)\"\n [maxDate]=\"presenter.endDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n <mat-calendar\n #rangeCalendarEnd\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setEndDateFromJSDate($event)\"\n [minDate]=\"presenter.startDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n </div>\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"startDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.startDateHtmlString()\"\n (ngModelChange)=\"controller.form.setStartDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endDate' | translate }}</mat-label>\n <input\n #endDateInput\n name=\"endDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.endDateHtmlString()\"\n (ngModelChange)=\"controller.form.setEndDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n </div>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startTime' | translate }}</mat-label>\n <input\n name=\"startTimeInput\"\n matInput\n type=\"time\"\n #startTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.startTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setStartTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearStartTime()\"\n [disabled]=\"!presenter.isStartTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endTime' | translate }}</mat-label>\n <input\n name=\"endTimeInput\"\n matInput\n type=\"time\"\n #endTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.endTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setEndTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearEndTime()\"\n [disabled]=\"!presenter.isEndTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n <br />\n </div>\n <div class=\"pt-xs\" style=\"width: 25%\">\n <div class=\"layout-col gap-lg\">\n <div class=\"layout-col gap-xs place-start-start\">\n <!-- select current -->\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentWeek()\">\n {{ 'intervalPicker.currentPeriod.week' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentMonth()\">\n {{ 'intervalPicker.currentPeriod.month' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentQuarter()\">\n {{ 'intervalPicker.currentPeriod.quarter' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentYear()\">\n {{ 'intervalPicker.currentPeriod.year' | translate }}\n </button>\n </div>\n <div class=\"fixed-shifts-container\">\n <div class=\"layout-col place-start-stretch\">\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.day' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.month' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.year' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n\n @if (true) {\n <!-- shift minute -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.minute' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- shift hour -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.hour' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"layout-row place-between-center gap-xxl pt-sm\">\n <div>\n @if (showAnchor()) {\n <div class=\"layout-row flex-none gap-md\">\n <mat-menu #anchorMenu=\"matMenu\">\n @if (presenter.startDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToEndDateTime()\"\n [disabled]=\"!presenter.startDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">login</mat-icon>\n <span>{{ 'intervalPicker.endDate' | translate }}</span>\n </button>\n }\n @if (presenter.endDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToStartDateTime()\"\n [disabled]=\"!presenter.endDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">logout</mat-icon>\n <span>{{ 'intervalPicker.startDate' | translate }}</span>\n </button>\n }\n @if (presenter.isFixedAnchorDateSet()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.resetAnchor()\"\n [disabled]=\"!presenter.isFixedAnchorDateSet() || anchorReadOnly()\"\n >\n <mat-icon>close</mat-icon>\n <span>{{ 'intervalPicker.clear' | translate }}</span>\n </button>\n }\n </mat-menu>\n\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"anchorDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.anchorDateHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorDateFromString($event)\"\n [readonly]=\"anchorReadOnly()\"\n />\n @if (!anchorReadOnly()) {\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n [matMenuTriggerFor]=\"anchorMenu\"\n [disabled]=\"presenter.isAnchorMenuDisabled()\"\n >\n <mat-icon class=\"material-symbols-outlined\">more_horiz</mat-icon>\n </button>\n }\n </mat-form-field>\n @if (intervalInputMode() === 'date-time-range') {\n <mat-form-field class=\"input-control-container-short\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorTime' | translate }}</mat-label>\n <input\n matInput\n name=\"anchorTimeInput\"\n type=\"time\"\n #anchorTimeControl=\"ngModel\"\n step=\"1\"\n [readonly]=\"anchorReadOnly()\"\n [ngModel]=\"presenter.anchorTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.anchor.resetAnchorTime()\"\n [disabled]=\"anchorReadOnly() || presenter.isAnchorTimeMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n }\n </div>\n }\n </div>\n <!-- result interval -->\n <div class=\"layout-col place-center-center\">\n <div class=\"date-interval mat-caption pt-xs\">\n @if (presenter.startDateTimeAsJSDate()) {\n {{ presenter.startDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.startDateNotSet' | translate }}\n }\n <span> - </span>\n @if (presenter.endDateTimeAsJSDate()) {\n {{ presenter.endDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.endDateNotSet' | translate }}\n }\n </div>\n <div>\n <span class=\"mat-caption\">{{ presenter.deltaHumanReadable() || '&nbsp;' }}</span>\n </div>\n </div>\n <div class=\"layout-row gap-lg\">\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"controller.clearInterval()\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n {{ 'intervalPicker.clear' | translate }}\n </button>\n\n @if (!this.autoEmitMode()) {\n <button type=\"button\" color=\"primary\" mat-flat-button (click)=\"controller.manualEmit()\">\n {{ 'actions.ok' | translate }}\n </button>\n }\n </div>\n</div>\n", styles: [".interval-picker-component{min-width:840px;max-width:100%}.fixed-shifts-container{max-width:160px}.input-control-container{width:192px;max-width:100%}.input-control-container-short{width:140px;max-width:100%}.select-buttons-container button{white-space:nowrap;text-align:left;justify-content:flex-start}::ng-deep .interval-picker-component .mat-calendar-body-cell.elder-custom-anchor-date .mat-calendar-body-cell-content{border-radius:50%;background-color:#def;background-color:#b4d2ebbf}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$e.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$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", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$f.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32259
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderIntervalPickerComponent, isStandalone: true, selector: "elder-interval-picker", inputs: { emitType: { classPropertyName: "emitType", publicName: "emitType", isSignal: true, isRequired: false, transformFunction: null }, autoEmitMode: { classPropertyName: "autoEmitMode", publicName: "autoEmitMode", isSignal: true, isRequired: false, transformFunction: null }, intervalInputMode: { classPropertyName: "intervalInputMode", publicName: "intervalInputMode", isSignal: true, isRequired: false, transformFunction: null }, showAnchor: { classPropertyName: "showAnchor", publicName: "showAnchor", isSignal: true, isRequired: false, transformFunction: null }, anchorReadOnly: { classPropertyName: "anchorReadOnly", publicName: "anchorReadOnly", isSignal: true, isRequired: false, transformFunction: null }, externalAnchorDateTime: { classPropertyName: "externalAnchorDateTime", publicName: "externalAnchorDateTime", isSignal: true, isRequired: false, transformFunction: null }, externalInterval: { classPropertyName: "externalInterval", publicName: "externalInterval", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intervalChange: "intervalChange" }, providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], viewQueries: [{ propertyName: "calendarStart", first: true, predicate: ["rangeCalendarStart"], descendants: true }, { propertyName: "calendarEnd", first: true, predicate: ["rangeCalendarEnd"], descendants: true }, { propertyName: "calendarStartElRef", first: true, predicate: ["rangeCalendarStart"], descendants: true, read: ElementRef }, { propertyName: "calendarEndElRef", first: true, predicate: ["rangeCalendarEnd"], descendants: true, read: ElementRef }, { propertyName: "startDateInput", first: true, predicate: ["startDateInput"], descendants: true }, { propertyName: "endDateInput", first: true, predicate: ["endDateInput"], descendants: true }], ngImport: i0, template: "<div class=\"interval-picker-component p-md layout-col gap-xxl\">\n <div class=\"layout-row gap-xxl place-between-start\" style=\"gap: 5%\">\n <div class=\"layout-col gap-md pt-xs\">\n <div class=\"layout-col\">\n <div class=\"layout-row select-buttons-container gap-sm\">\n <div class=\"layout-col gap-xs place-start-stretch\">\n <button mat-button type=\"button\" (click)=\"controller.select.selectCurrentDay()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.anchorDay' | translate }}\n } @else {\n {{ 'intervalPicker.today' | translate }}\n }\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectYesterday()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.last' | translate }} 1 {{ 'intervalPicker.day' | translate }}\n } @else {\n {{ 'intervalPicker.yesterday' | translate }}\n }\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastSevenDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 7\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastThirtyDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 30\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLast365daysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 365\n {{ 'intervalPicker.days' | translate }}\n </button>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"pt-sm\"></div>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastFiveMinutes()\">\n {{ 'intervalPicker.last' | translate }} 5\n {{ 'intervalPicker.minutes' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastHour()\">\n {{ 'intervalPicker.last' | translate }} {{ 'intervalPicker.hour' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLast24Hours()\">\n {{ 'intervalPicker.last' | translate }} 24\n {{ 'intervalPicker.hours' | translate }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n <div class=\"layout-col\">\n <!-- smart shift -->\n <div class=\"layout-row place-around-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ presenter.smartShiftMessage() }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- calendars and input controls -->\n <div\n class=\"layout-row place-around-center\"\n style=\"align-items: flex-start; min-height: 280px\"\n >\n <mat-calendar\n #rangeCalendarStart\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setStartDateFromJSDate($event)\"\n [maxDate]=\"presenter.endDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n <mat-calendar\n #rangeCalendarEnd\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setEndDateFromJSDate($event)\"\n [minDate]=\"presenter.startDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n </div>\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"startDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.startDateHtmlString()\"\n (ngModelChange)=\"controller.form.setStartDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endDate' | translate }}</mat-label>\n <input\n #endDateInput\n name=\"endDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.endDateHtmlString()\"\n (ngModelChange)=\"controller.form.setEndDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n </div>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startTime' | translate }}</mat-label>\n <input\n name=\"startTimeInput\"\n matInput\n type=\"time\"\n #startTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.startTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setStartTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearStartTime()\"\n [disabled]=\"!presenter.isStartTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endTime' | translate }}</mat-label>\n <input\n name=\"endTimeInput\"\n matInput\n type=\"time\"\n #endTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.endTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setEndTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearEndTime()\"\n [disabled]=\"!presenter.isEndTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n <br />\n </div>\n <div class=\"pt-xs\" style=\"width: 25%\">\n <div class=\"layout-col gap-lg\">\n <div class=\"layout-col gap-xs place-start-start\">\n <!-- select current -->\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentWeek()\">\n {{ 'intervalPicker.currentPeriod.week' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentMonth()\">\n {{ 'intervalPicker.currentPeriod.month' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentQuarter()\">\n {{ 'intervalPicker.currentPeriod.quarter' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentYear()\">\n {{ 'intervalPicker.currentPeriod.year' | translate }}\n </button>\n </div>\n <div class=\"fixed-shifts-container\">\n <div class=\"layout-col place-start-stretch\">\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.day' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.month' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.year' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n\n @if (true) {\n <!-- shift minute -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.minute' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- shift hour -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.hour' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"layout-row place-between-center gap-xxl pt-sm\">\n <div>\n @if (showAnchor()) {\n <div class=\"layout-row flex-none gap-md\">\n <mat-menu #anchorMenu=\"matMenu\">\n @if (presenter.startDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToEndDateTime()\"\n [disabled]=\"!presenter.startDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">login</mat-icon>\n <span>{{ 'intervalPicker.endDate' | translate }}</span>\n </button>\n }\n @if (presenter.endDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToStartDateTime()\"\n [disabled]=\"!presenter.endDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">logout</mat-icon>\n <span>{{ 'intervalPicker.startDate' | translate }}</span>\n </button>\n }\n @if (presenter.isFixedAnchorDateSet()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.resetAnchor()\"\n [disabled]=\"!presenter.isFixedAnchorDateSet() || anchorReadOnly()\"\n >\n <mat-icon>close</mat-icon>\n <span>{{ 'intervalPicker.clear' | translate }}</span>\n </button>\n }\n </mat-menu>\n\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"anchorDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.anchorDateHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorDateFromString($event)\"\n [readonly]=\"anchorReadOnly()\"\n />\n @if (!anchorReadOnly()) {\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n [matMenuTriggerFor]=\"anchorMenu\"\n [disabled]=\"presenter.isAnchorMenuDisabled()\"\n >\n <mat-icon class=\"material-symbols-outlined\">more_horiz</mat-icon>\n </button>\n }\n </mat-form-field>\n @if (intervalInputMode() === 'date-time-range') {\n <mat-form-field class=\"input-control-container-short\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorTime' | translate }}</mat-label>\n <input\n matInput\n name=\"anchorTimeInput\"\n type=\"time\"\n #anchorTimeControl=\"ngModel\"\n step=\"1\"\n [readonly]=\"anchorReadOnly()\"\n [ngModel]=\"presenter.anchorTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.anchor.resetAnchorTime()\"\n [disabled]=\"anchorReadOnly() || presenter.isAnchorTimeMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n }\n </div>\n }\n </div>\n <!-- result interval -->\n <div class=\"layout-col place-center-center\">\n <div class=\"date-interval mat-caption pt-xs\">\n @if (presenter.startDateTimeAsJSDate()) {\n {{ presenter.startDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.startDateNotSet' | translate }}\n }\n <span> - </span>\n @if (presenter.endDateTimeAsJSDate()) {\n {{ presenter.endDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.endDateNotSet' | translate }}\n }\n </div>\n <div>\n <span class=\"mat-caption\">{{ presenter.deltaHumanReadable() || '&nbsp;' }}</span>\n </div>\n </div>\n <div class=\"layout-row gap-lg\">\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"controller.clearInterval()\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n {{ 'intervalPicker.clear' | translate }}\n </button>\n\n @if (!this.autoEmitMode()) {\n <button type=\"button\" color=\"primary\" mat-flat-button (click)=\"controller.manualEmit()\">\n {{ 'actions.ok' | translate }}\n </button>\n }\n </div>\n</div>\n", styles: [".interval-picker-component{min-width:840px;max-width:100%}.fixed-shifts-container{max-width:160px}.input-control-container{width:192px;max-width:100%}.input-control-container-short{width:140px;max-width:100%}.select-buttons-container button{white-space:nowrap;text-align:left;justify-content:flex-start}::ng-deep .interval-picker-component .mat-calendar-body-cell.elder-custom-anchor-date .mat-calendar-body-cell-content{border-radius:50%;background-color:#def;background-color:#b4d2ebbf}\n"], dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$e.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2$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", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$f.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
32234
32260
  }
32235
32261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderIntervalPickerComponent, decorators: [{
32236
32262
  type: Component,
@@ -32243,7 +32269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
32243
32269
  FormsModule,
32244
32270
  MatButtonModule,
32245
32271
  MatCalendar,
32246
- TranslateModule,
32272
+ ElderTranslatePipe,
32247
32273
  MatMenuModule,
32248
32274
  DatePipe,
32249
32275
  ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: DateAdapter, useClass: CustomDateAdapter }], template: "<div class=\"interval-picker-component p-md layout-col gap-xxl\">\n <div class=\"layout-row gap-xxl place-between-start\" style=\"gap: 5%\">\n <div class=\"layout-col gap-md pt-xs\">\n <div class=\"layout-col\">\n <div class=\"layout-row select-buttons-container gap-sm\">\n <div class=\"layout-col gap-xs place-start-stretch\">\n <button mat-button type=\"button\" (click)=\"controller.select.selectCurrentDay()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.anchorDay' | translate }}\n } @else {\n {{ 'intervalPicker.today' | translate }}\n }\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectYesterday()\">\n @if (presenter.isFixedAnchorDateSet()) {\n {{ 'intervalPicker.last' | translate }} 1 {{ 'intervalPicker.day' | translate }}\n } @else {\n {{ 'intervalPicker.yesterday' | translate }}\n }\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastSevenDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 7\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLastThirtyDaysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 30\n {{ 'intervalPicker.days' | translate }}\n </button>\n <button\n mat-button\n type=\"button\"\n (click)=\"controller.select.selectLast365daysIncludingToday()\"\n >\n {{ 'intervalPicker.last' | translate }} 365\n {{ 'intervalPicker.days' | translate }}\n </button>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"pt-sm\"></div>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastFiveMinutes()\">\n {{ 'intervalPicker.last' | translate }} 5\n {{ 'intervalPicker.minutes' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLastHour()\">\n {{ 'intervalPicker.last' | translate }} {{ 'intervalPicker.hour' | translate }}\n </button>\n <button mat-button type=\"button\" (click)=\"controller.select.selectLast24Hours()\">\n {{ 'intervalPicker.last' | translate }} 24\n {{ 'intervalPicker.hours' | translate }}\n </button>\n }\n </div>\n </div>\n </div>\n </div>\n <div class=\"layout-col\">\n <!-- smart shift -->\n <div class=\"layout-row place-around-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ presenter.smartShiftMessage() }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.smartShift(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- calendars and input controls -->\n <div\n class=\"layout-row place-around-center\"\n style=\"align-items: flex-start; min-height: 280px\"\n >\n <mat-calendar\n #rangeCalendarStart\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setStartDateFromJSDate($event)\"\n [maxDate]=\"presenter.endDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n <mat-calendar\n #rangeCalendarEnd\n style=\"width: 210px; max-width: 100%\"\n [selected]=\"presenter.dateRangeForCalendar()\"\n (selectedChange)=\"controller.calendar.setEndDateFromJSDate($event)\"\n [minDate]=\"presenter.startDateTimeAsJSDate()\"\n [dateClass]=\"presenter.calendarAnchorDateCssClassFn\"\n >\n </mat-calendar>\n </div>\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"startDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.startDateHtmlString()\"\n (ngModelChange)=\"controller.form.setStartDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n <div class=\"layout-row place-around-center\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endDate' | translate }}</mat-label>\n <input\n #endDateInput\n name=\"endDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.endDateHtmlString()\"\n (ngModelChange)=\"controller.form.setEndDateFromString($event)\"\n />\n </mat-form-field>\n </div>\n </div>\n @if (intervalInputMode() === 'date-time-range') {\n <div class=\"layout-row place-around-center gap-xl pt-sm\">\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.startTime' | translate }}</mat-label>\n <input\n name=\"startTimeInput\"\n matInput\n type=\"time\"\n #startTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.startTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setStartTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearStartTime()\"\n [disabled]=\"!presenter.isStartTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.endTime' | translate }}</mat-label>\n <input\n name=\"endTimeInput\"\n matInput\n type=\"time\"\n #endTimeControl=\"ngModel\"\n step=\"1\"\n [ngModel]=\"presenter.endTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setEndTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.clearEndTime()\"\n [disabled]=\"!presenter.isEndTimeSetAndNotMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n }\n <br />\n </div>\n <div class=\"pt-xs\" style=\"width: 25%\">\n <div class=\"layout-col gap-lg\">\n <div class=\"layout-col gap-xs place-start-start\">\n <!-- select current -->\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentWeek()\">\n {{ 'intervalPicker.currentPeriod.week' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentMonth()\">\n {{ 'intervalPicker.currentPeriod.month' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentQuarter()\">\n {{ 'intervalPicker.currentPeriod.quarter' | translate }}\n </button>\n <button type=\"button\" mat-button (click)=\"controller.select.selectCurrentYear()\">\n {{ 'intervalPicker.currentPeriod.year' | translate }}\n </button>\n </div>\n <div class=\"fixed-shifts-container\">\n <div class=\"layout-col place-start-stretch\">\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.day' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftDay(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.month' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMonth(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.year' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftYear(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n\n @if (true) {\n <!-- shift minute -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.minute' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftMinute(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n <!-- shift hour -->\n <div class=\"layout-row place-between-center\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(-1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_left</mat-icon>\n </button>\n <span>{{ 'intervalPicker.hour' | translate }}</span>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"controller.shift.shiftHour(1)\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n <mat-icon>keyboard_double_arrow_right</mat-icon>\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"layout-row place-between-center gap-xxl pt-sm\">\n <div>\n @if (showAnchor()) {\n <div class=\"layout-row flex-none gap-md\">\n <mat-menu #anchorMenu=\"matMenu\">\n @if (presenter.startDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToEndDateTime()\"\n [disabled]=\"!presenter.startDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">login</mat-icon>\n <span>{{ 'intervalPicker.endDate' | translate }}</span>\n </button>\n }\n @if (presenter.endDateHtmlString()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.setFixedAnchorPointToStartDateTime()\"\n [disabled]=\"!presenter.endDateHtmlString()\"\n >\n <mat-icon class=\"material-symbols-outlined\">logout</mat-icon>\n <span>{{ 'intervalPicker.startDate' | translate }}</span>\n </button>\n }\n @if (presenter.isFixedAnchorDateSet()) {\n <button\n type=\"button\"\n mat-menu-item\n (click)=\"controller.anchor.resetAnchor()\"\n [disabled]=\"!presenter.isFixedAnchorDateSet() || anchorReadOnly()\"\n >\n <mat-icon>close</mat-icon>\n <span>{{ 'intervalPicker.clear' | translate }}</span>\n </button>\n }\n </mat-menu>\n\n <mat-form-field class=\"input-control-container\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorDate' | translate }}</mat-label>\n <input\n #startDateInput\n name=\"anchorDateInput\"\n matInput\n type=\"date\"\n [ngModel]=\"presenter.anchorDateHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorDateFromString($event)\"\n [readonly]=\"anchorReadOnly()\"\n />\n @if (!anchorReadOnly()) {\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n [matMenuTriggerFor]=\"anchorMenu\"\n [disabled]=\"presenter.isAnchorMenuDisabled()\"\n >\n <mat-icon class=\"material-symbols-outlined\">more_horiz</mat-icon>\n </button>\n }\n </mat-form-field>\n @if (intervalInputMode() === 'date-time-range') {\n <mat-form-field class=\"input-control-container-short\" [subscriptSizing]=\"'dynamic'\">\n <mat-label>{{ 'intervalPicker.anchorTime' | translate }}</mat-label>\n <input\n matInput\n name=\"anchorTimeInput\"\n type=\"time\"\n #anchorTimeControl=\"ngModel\"\n step=\"1\"\n [readonly]=\"anchorReadOnly()\"\n [ngModel]=\"presenter.anchorTimeHtmlString()\"\n (ngModelChange)=\"controller.form.setAnchorTimeFromString($event)\"\n />\n <button\n type=\"button\"\n mat-icon-button\n matSuffix\n (click)=\"controller.anchor.resetAnchorTime()\"\n [disabled]=\"anchorReadOnly() || presenter.isAnchorTimeMidnight()\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n }\n </div>\n }\n </div>\n <!-- result interval -->\n <div class=\"layout-col place-center-center\">\n <div class=\"date-interval mat-caption pt-xs\">\n @if (presenter.startDateTimeAsJSDate()) {\n {{ presenter.startDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.startDateNotSet' | translate }}\n }\n <span> - </span>\n @if (presenter.endDateTimeAsJSDate()) {\n {{ presenter.endDateTimeAsJSDate() | date: 'dd.MM. y, HH:mm:ss' }}\n } @else {\n {{ 'intervalPicker.endDateNotSet' | translate }}\n }\n </div>\n <div>\n <span class=\"mat-caption\">{{ presenter.deltaHumanReadable() || '&nbsp;' }}</span>\n </div>\n </div>\n <div class=\"layout-row gap-lg\">\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"controller.clearInterval()\"\n [disabled]=\"!presenter.isValidIntervalSet()\"\n >\n {{ 'intervalPicker.clear' | translate }}\n </button>\n\n @if (!this.autoEmitMode()) {\n <button type=\"button\" color=\"primary\" mat-flat-button (click)=\"controller.manualEmit()\">\n {{ 'actions.ok' | translate }}\n </button>\n }\n </div>\n</div>\n", styles: [".interval-picker-component{min-width:840px;max-width:100%}.fixed-shifts-container{max-width:160px}.input-control-container{width:192px;max-width:100%}.input-control-container-short{width:140px;max-width:100%}.select-buttons-container button{white-space:nowrap;text-align:left;justify-content:flex-start}::ng-deep .interval-picker-component .mat-calendar-body-cell.elder-custom-anchor-date .mat-calendar-body-cell-content{border-radius:50%;background-color:#def;background-color:#b4d2ebbf}\n"] }]
@@ -32745,9 +32771,6 @@ class ElderTimeModule {
32745
32771
  MatIconModule,
32746
32772
  // popups & modals
32747
32773
  MatTooltipModule,
32748
- // data matTable
32749
- // translations
32750
- TranslateModule,
32751
32774
  ElderFormsDirectivesModule,
32752
32775
  ElderDateSwitcherComponent,
32753
32776
  ElderIntervalInputComponent,
@@ -32784,9 +32807,6 @@ class ElderTimeModule {
32784
32807
  MatIconModule,
32785
32808
  // popups & modals
32786
32809
  MatTooltipModule,
32787
- // data matTable
32788
- // translations
32789
- TranslateModule,
32790
32810
  ElderFormsDirectivesModule,
32791
32811
  ElderDateSwitcherComponent,
32792
32812
  ElderIntervalInputComponent,
@@ -32815,9 +32835,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
32815
32835
  MatIconModule,
32816
32836
  // popups & modals
32817
32837
  MatTooltipModule,
32818
- // data matTable
32819
- // translations
32820
- TranslateModule,
32821
32838
  ElderFormsDirectivesModule,
32822
32839
  ElderDateSwitcherComponent,
32823
32840
  ElderIntervalInputComponent,
@@ -32945,7 +32962,7 @@ class ElderLocalizedInputTableComponent extends FormFieldBaseComponent {
32945
32962
  this.defaultLanguageTags$ = new BehaviorSubject([]);
32946
32963
  this.dense = false;
32947
32964
  this.destroy$ = new Subject();
32948
- this.defaultLanguageTags = languageService.languages;
32965
+ this.defaultLanguageTags = languageService.langs();
32949
32966
  this.dataSource = LocalListDataSource.from([], 'locale', SortUtil.sortData, FilterUtil.filterData);
32950
32967
  const localizables$ = combineLatest([
32951
32968
  this.value$.pipe(map((value) => value ?? [])),
@@ -33027,7 +33044,7 @@ class ElderLocalizedInputTableComponent extends FormFieldBaseComponent {
33027
33044
  return localizables;
33028
33045
  }
33029
33046
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputTableComponent, deps: [{ token: ElderToastService }, { token: ElderLanguageService }], target: i0.ɵɵFactoryTarget.Component }); }
33030
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalizedInputTableComponent, isStandalone: true, selector: "elder-localized-input-table", inputs: { dense: "dense", 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\n matSort\n class=\"flex\"\n [data]=\"data\"\n [selectionVisible]=\"true\"\n [selectionMultiEnabled]=\"true\"\n [dense]=\"dense\"\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 <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 </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\n ><mat-chip highlighted>{{ localized.locale }}</mat-chip></mat-chip-set\n >\n </td>\n </ng-container>\n\n @for (textColumn of textColumns$ | async; track textColumn) {\n <ng-container matColumnDef=\"{{ textColumn.name }}\">\n <th mat-header-cell *matHeaderCellDef>{{ textColumn.title | translate }}</th>\n <td mat-cell *matCellDef=\"let localized\">\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]\"\n [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 </td>\n </ng-container>\n }\n </elder-table>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ElderTableComponent, selector: "elder-table", inputs: ["id", "idField", "removingField", "hiddenField", "keepSelection", "showFooterRow", "denseHorizontal", "hideHeaderRow", "data", "displayedColumns", "selectionVisible"], exportAs: ["elderTable"] }, { kind: "directive", type: MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { 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: "directive", type: ElderCardSubtitleDirective, selector: "elder-card-subtitle, [elder-card-subtitle], [elderCardSubtitle]" }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33047
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalizedInputTableComponent, isStandalone: true, selector: "elder-localized-input-table", inputs: { dense: "dense", 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\n matSort\n class=\"flex\"\n [data]=\"data\"\n [selectionVisible]=\"true\"\n [selectionMultiEnabled]=\"true\"\n [dense]=\"dense\"\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 <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 </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\n ><mat-chip highlighted>{{ localized.locale }}</mat-chip></mat-chip-set\n >\n </td>\n </ng-container>\n\n @for (textColumn of textColumns$ | async; track textColumn) {\n <ng-container matColumnDef=\"{{ textColumn.name }}\">\n <th mat-header-cell *matHeaderCellDef>{{ textColumn.title | translate }}</th>\n <td mat-cell *matCellDef=\"let localized\">\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]\"\n [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 </td>\n </ng-container>\n }\n </elder-table>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: ElderTableComponent, selector: "elder-table", inputs: ["id", "idField", "removingField", "hiddenField", "keepSelection", "showFooterRow", "denseHorizontal", "hideHeaderRow", "data", "displayedColumns", "selectionVisible"], exportAs: ["elderTable"] }, { kind: "directive", type: MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { 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: "directive", type: ElderCardSubtitleDirective, selector: "elder-card-subtitle, [elder-card-subtitle], [elderCardSubtitle]" }, { kind: "directive", type: MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "component", type: MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "component", type: MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33031
33048
  }
33032
33049
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputTableComponent, decorators: [{
33033
33050
  type: Component,
@@ -33051,7 +33068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33051
33068
  MatInput,
33052
33069
  FormsModule,
33053
33070
  AsyncPipe,
33054
- TranslateModule,
33071
+ ElderTranslatePipe,
33055
33072
  ], template: "<div class=\"layout-col full\">\n <elder-table\n matSort\n class=\"flex\"\n [data]=\"data\"\n [selectionVisible]=\"true\"\n [selectionMultiEnabled]=\"true\"\n [dense]=\"dense\"\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 <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 </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\n ><mat-chip highlighted>{{ localized.locale }}</mat-chip></mat-chip-set\n >\n </td>\n </ng-container>\n\n @for (textColumn of textColumns$ | async; track textColumn) {\n <ng-container matColumnDef=\"{{ textColumn.name }}\">\n <th mat-header-cell *matHeaderCellDef>{{ textColumn.title | translate }}</th>\n <td mat-cell *matCellDef=\"let localized\">\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]\"\n [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 </td>\n </ng-container>\n }\n </elder-table>\n</div>\n" }]
33056
33073
  }], ctorParameters: () => [{ type: ElderToastService }, { type: ElderLanguageService }], propDecorators: { textColumnsQuery: [{
33057
33074
  type: ContentChildren,
@@ -33070,8 +33087,8 @@ class ElderLocalizedInputDialogComponent {
33070
33087
  this.data = data;
33071
33088
  }
33072
33089
  ngOnInit() { }
33073
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
33074
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalizedInputDialogComponent, isStandalone: true, selector: "elder-localized-input-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\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 @if (data.explicitSave) {\n <button\n mat-icon-button\n type=\"submit\"\n [disabled]=\"data.readonly\"\n [mat-dialog-close]=\"data.localizables\"\n >\n <mat-icon>save</mat-icon>\n </button>\n }\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-sm\">\n <elder-localized-input-table\n 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", styles: [""], dependencies: [{ kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "directive", type: MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: ElderLocalizedInputTableComponent, selector: "elder-localized-input-table", inputs: ["dense", "textColumns", "defaultLanguageTags"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33090
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogComponent, deps: [{ token: i1$6.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
33091
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalizedInputDialogComponent, isStandalone: true, selector: "elder-localized-input-dialog", ngImport: i0, template: "<div class=\"layout-col full\">\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\">{{ data.title | translate }}</h2>\n <span class=\"flex\"></span>\n @if (data.explicitSave) {\n <button\n mat-icon-button\n type=\"submit\"\n [disabled]=\"data.readonly\"\n [mat-dialog-close]=\"data.localizables\"\n >\n <mat-icon>save</mat-icon>\n </button>\n }\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-sm\">\n <elder-localized-input-table\n 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", styles: [""], dependencies: [{ kind: "component", type: MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: ElderThemeDirective, selector: "[elderTheme]" }, { kind: "directive", type: MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: ElderLocalizedInputTableComponent, selector: "elder-localized-input-table", inputs: ["dense", "textColumns", "defaultLanguageTags"] }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33075
33092
  }
33076
33093
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogComponent, decorators: [{
33077
33094
  type: Component,
@@ -33080,12 +33097,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33080
33097
  ElderThemeDirective,
33081
33098
  MatToolbarRow,
33082
33099
  MatIcon,
33083
- TranslateModule,
33100
+ ElderTranslatePipe,
33084
33101
  MatIconButton,
33085
33102
  MatDialogClose,
33086
33103
  ElderLocalizedInputTableComponent,
33087
- ], template: "<div class=\"layout-col full\">\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 @if (data.explicitSave) {\n <button\n mat-icon-button\n type=\"submit\"\n [disabled]=\"data.readonly\"\n [mat-dialog-close]=\"data.localizables\"\n >\n <mat-icon>save</mat-icon>\n </button>\n }\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-sm\">\n <elder-localized-input-table\n 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" }]
33088
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
33104
+ ], template: "<div class=\"layout-col full\">\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\">{{ data.title | translate }}</h2>\n <span class=\"flex\"></span>\n @if (data.explicitSave) {\n <button\n mat-icon-button\n type=\"submit\"\n [disabled]=\"data.readonly\"\n [mat-dialog-close]=\"data.localizables\"\n >\n <mat-icon>save</mat-icon>\n </button>\n }\n </mat-toolbar-row>\n </mat-toolbar>\n\n <div class=\"layout-col flex p-sm\">\n <elder-localized-input-table\n 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" }]
33105
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
33089
33106
  type: Inject,
33090
33107
  args: [MAT_DIALOG_DATA]
33091
33108
  }] }] });
@@ -33106,7 +33123,7 @@ class ElderLocalizedInputDialogService {
33106
33123
  data: options,
33107
33124
  });
33108
33125
  }
33109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogService, deps: [{ token: i1$7.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
33126
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogService, deps: [{ token: i1$6.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }
33110
33127
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogService, providedIn: 'root' }); }
33111
33128
  }
33112
33129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogService, decorators: [{
@@ -33114,7 +33131,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33114
33131
  args: [{
33115
33132
  providedIn: 'root',
33116
33133
  }]
33117
- }], ctorParameters: () => [{ type: i1$7.MatDialog }] });
33134
+ }], ctorParameters: () => [{ type: i1$6.MatDialog }] });
33118
33135
 
33119
33136
  class LocalisationPickerService {
33120
33137
  /***************************************************************************
@@ -33137,7 +33154,7 @@ class LocalisationPickerService {
33137
33154
  * *
33138
33155
  **************************************************************************/
33139
33156
  pick(choices, desired) {
33140
- return this.picker.findBest(choices, desired ?? this.languageService.currentLanguage);
33157
+ return this.picker.findBest(choices, desired ?? this.languageService.currentLang());
33141
33158
  }
33142
33159
  pickCurrent(choices) {
33143
33160
  return this.languageService.currentLanguage$.pipe(map((current) => this.pick(choices, current)));
@@ -33290,7 +33307,7 @@ class ElderLocalizedInputComponent extends FormFieldBaseComponent {
33290
33307
  }
33291
33308
  }
33292
33309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputComponent, deps: [{ token: ElderLocalizedInputDialogService }, { token: LocalisationPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
33293
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalizedInputComponent, isStandalone: true, 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\" [color]=\"color\">\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n @if (icon) {\n <mat-icon matPrefix [color]=\"color\">\n {{ icon }}\n </mat-icon>\n }\n\n <button\n matSuffix\n mat-icon-button\n (click)=\"openTranslationPopup($event)\"\n aria-label=\"Search\"\n type=\"button\"\n >\n <mat-icon>translate</mat-icon>\n </button>\n\n <!-- A dynamic input -->\n <input\n matInput\n type=\"text\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n readonly\n [name]=\"name + '-localized'\"\n [ngModel]=\"inputText$ | async\"\n [ngModelOptions]=\"{ standalone: true }\"\n />\n\n <mat-hint>{{ hintText$ | async }}</mat-hint>\n</mat-form-field>\n", styles: [".prefix-padding{padding-right:4px}.leading-icon{font-size:16px;width:16px;height:16px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderLocalizedInputComponent, isStandalone: true, 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\" [color]=\"color\">\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n @if (icon) {\n <mat-icon matPrefix [color]=\"color\">\n {{ icon }}\n </mat-icon>\n }\n\n <button\n matSuffix\n mat-icon-button\n (click)=\"openTranslationPopup($event)\"\n aria-label=\"Search\"\n type=\"button\"\n >\n <mat-icon>translate</mat-icon>\n </button>\n\n <!-- A dynamic input -->\n <input\n matInput\n type=\"text\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n readonly\n [name]=\"name + '-localized'\"\n [ngModel]=\"inputText$ | async\"\n [ngModelOptions]=\"{ standalone: true }\"\n />\n\n <mat-hint>{{ hintText$ | async }}</mat-hint>\n</mat-form-field>\n", styles: [".prefix-padding{padding-right:4px}.leading-icon{font-size:16px;width:16px;height:16px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33294
33311
  }
33295
33312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputComponent, decorators: [{
33296
33313
  type: Component,
@@ -33305,7 +33322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33305
33322
  FormsModule,
33306
33323
  MatHint,
33307
33324
  AsyncPipe,
33308
- TranslateModule,
33325
+ ElderTranslatePipe,
33309
33326
  ], template: "<mat-form-field [appearance]=\"appearance\" [color]=\"color\">\n @if (label) {\n <mat-label>{{ label | translate }}</mat-label>\n }\n\n @if (icon) {\n <mat-icon matPrefix [color]=\"color\">\n {{ icon }}\n </mat-icon>\n }\n\n <button\n matSuffix\n mat-icon-button\n (click)=\"openTranslationPopup($event)\"\n aria-label=\"Search\"\n type=\"button\"\n >\n <mat-icon>translate</mat-icon>\n </button>\n\n <!-- A dynamic input -->\n <input\n matInput\n type=\"text\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n readonly\n [name]=\"name + '-localized'\"\n [ngModel]=\"inputText$ | async\"\n [ngModelOptions]=\"{ standalone: true }\"\n />\n\n <mat-hint>{{ hintText$ | async }}</mat-hint>\n</mat-form-field>\n", styles: [".prefix-padding{padding-right:4px}.leading-icon{font-size:16px;width:16px;height:16px}\n"] }]
33310
33327
  }], ctorParameters: () => [{ type: ElderLocalizedInputDialogService }, { type: LocalisationPickerService }], propDecorators: { textColumnsQuery: [{
33311
33328
  type: ContentChildren,
@@ -33365,7 +33382,7 @@ class ElderInitialValueDirective {
33365
33382
  }
33366
33383
  this.initialValue$.next(value);
33367
33384
  }
33368
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInitialValueDirective, deps: [{ token: i1$4.NgModel, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
33385
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInitialValueDirective, deps: [{ token: i1$3.NgModel, host: true }], target: i0.ɵɵFactoryTarget.Directive }); }
33369
33386
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderInitialValueDirective, isStandalone: true, selector: "[elderInitialValue]", exportAs: ["elderInitialValue"], ngImport: i0 }); }
33370
33387
  }
33371
33388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInitialValueDirective, decorators: [{
@@ -33374,7 +33391,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33374
33391
  selector: '[elderInitialValue]',
33375
33392
  exportAs: 'elderInitialValue',
33376
33393
  }]
33377
- }], ctorParameters: () => [{ type: i1$4.NgModel, decorators: [{
33394
+ }], ctorParameters: () => [{ type: i1$3.NgModel, decorators: [{
33378
33395
  type: Host
33379
33396
  }] }] });
33380
33397
 
@@ -33640,7 +33657,7 @@ class ElderSearchInputDirective {
33640
33657
  });
33641
33658
  return CollectionUtil.flatten(arrays);
33642
33659
  }
33643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchInputDirective, deps: [{ token: ElderSearchContextDirective }, { token: i1$4.NgModel, host: true }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }
33660
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchInputDirective, deps: [{ token: ElderSearchContextDirective }, { token: i1$3.NgModel, host: true }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Directive }); }
33644
33661
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderSearchInputDirective, isStandalone: true, selector: "[elderSearchInput]", inputs: { valueTransform: ["elderSearchInputTransform", "valueTransform"], resolvePath: ["elderSearchInput", "resolvePath"], fallbackValue: ["elderSearchInputFallback", "fallbackValue"], valueAsId: "valueAsId", queryKey: ["elderSearchInputKey", "queryKey"] }, exportAs: ["elderSearchInput"], ngImport: i0 }); }
33645
33662
  }
33646
33663
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchInputDirective, decorators: [{
@@ -33649,7 +33666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33649
33666
  selector: '[elderSearchInput]',
33650
33667
  exportAs: 'elderSearchInput',
33651
33668
  }]
33652
- }], ctorParameters: () => [{ type: ElderSearchContextDirective }, { type: i1$4.NgModel, decorators: [{
33669
+ }], ctorParameters: () => [{ type: ElderSearchContextDirective }, { type: i1$3.NgModel, decorators: [{
33653
33670
  type: Host
33654
33671
  }] }, { type: i0.DestroyRef }], propDecorators: { valueTransform: [{
33655
33672
  type: Input,
@@ -33742,7 +33759,7 @@ class ElderSearchBoxComponent {
33742
33759
  this.searchContextDirective.reset();
33743
33760
  }
33744
33761
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchBoxComponent, deps: [{ token: ElderSearchContextDirective }], target: i0.ɵɵFactoryTarget.Component }); }
33745
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderSearchBoxComponent, isStandalone: true, 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: "customSearchPanel", first: true, predicate: ElderSearchPanelComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true, isSignal: true }, { propertyName: "overlayComponent", first: true, predicate: ElderOverlayComponent, descendants: true, isSignal: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\">\n <mat-form-field\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto my-xs\"\n [class]=\"'elder-round-form-field'\"\n subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\"\n >\n <button\n matPrefix\n mat-icon-button\n type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\"\n (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input\n matInput\n type=\"text\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n #search\n cdkFocusInitial\n ngModel\n elderSearchInput\n [elderSearchInputKey]=\"queryKey\"\n #searchInput=\"elderSearchInput\"\n [autocomplete]=\"autoPanel && customSearchPanel() ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"\n autoPanel && customSearchPanel() && (searchInput?.state$ | async)?.pristine\n \"\n />\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <div class=\"layout-row\" matSuffix>\n @if (touchedSearchInputs$ | async; as touchedInputs) {\n @if (touchedInputs.length > 0) {\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"clearSearch($event)\"\n name=\"clear\"\n aria-label=\"Clear\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (customSearchPanel()) {\n <button\n mat-icon-button\n type=\"button\"\n name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n (click)=\"blurFocus($event)\"\n >\n <mat-icon\n [matBadge]=\"touchedInputs.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"touchedInputs.length === 0\"\n matBadgeColor=\"accent\"\n [color]=\"touchedInputs.length > 0 ? 'accent' : undefined\"\n aria-hidden=\"false\"\n >\n filter_list\n </mat-icon>\n </button>\n }\n }\n </div>\n </mat-form-field>\n</div>\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n <!-- Project the users custom search panel here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-button type=\"button\" name=\"clear\" (click)=\"clearSearch($event)\">\n {{ 'context.reset' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n name=\"ok\"\n color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\"\n >\n Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-panel-container{min-width:250px;border-radius:var(--elder-pane-border-radius)}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputTransform", "elderSearchInput", "elderSearchInputFallback", "valueAsId", "elderSearchInputKey"], exportAs: ["elderSearchInput"] }, { kind: "directive", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "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: "component", type: ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33762
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderSearchBoxComponent, isStandalone: true, 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: "customSearchPanel", first: true, predicate: ElderSearchPanelComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "search", first: true, predicate: ["search"], descendants: true, isSignal: true }, { propertyName: "overlayComponent", first: true, predicate: ElderOverlayComponent, descendants: true, isSignal: true }], exportAs: ["elderSearchBox"], ngImport: i0, template: "<div class=\"layout-row place-stretch-center full flex\">\n <mat-form-field\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto my-xs\"\n [class]=\"'elder-round-form-field'\"\n subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\"\n >\n <button\n matPrefix\n mat-icon-button\n type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\"\n (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input\n matInput\n type=\"text\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n #search\n cdkFocusInitial\n ngModel\n elderSearchInput\n [elderSearchInputKey]=\"queryKey\"\n #searchInput=\"elderSearchInput\"\n [autocomplete]=\"autoPanel && customSearchPanel() ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"\n autoPanel && customSearchPanel() && (searchInput?.state$ | async)?.pristine\n \"\n />\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <div class=\"layout-row\" matSuffix>\n @if (touchedSearchInputs$ | async; as touchedInputs) {\n @if (touchedInputs.length > 0) {\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"clearSearch($event)\"\n name=\"clear\"\n aria-label=\"Clear\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (customSearchPanel()) {\n <button\n mat-icon-button\n type=\"button\"\n name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n (click)=\"blurFocus($event)\"\n >\n <mat-icon\n [matBadge]=\"touchedInputs.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"touchedInputs.length === 0\"\n matBadgeColor=\"accent\"\n [color]=\"touchedInputs.length > 0 ? 'accent' : undefined\"\n aria-hidden=\"false\"\n >\n filter_list\n </mat-icon>\n </button>\n }\n }\n </div>\n </mat-form-field>\n</div>\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n <!-- Project the users custom search panel here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-button type=\"button\" name=\"clear\" (click)=\"clearSearch($event)\">\n {{ 'context.reset' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n name=\"ok\"\n color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\"\n >\n Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-panel-container{min-width:250px;border-radius:var(--elder-pane-border-radius)}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: ElderFormFieldDenseDirective, selector: "mat-form-field[elderDense]", inputs: ["elderDense", "subscriptSizing", "floatLabel"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: ElderOverlayTriggerDirective, selector: "[elderOverlayTrigger]", inputs: ["elderOverlayTrigger", "elderOverlayTriggerType", "elderOverlayTriggerEnabled"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.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: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderSearchInputDirective, selector: "[elderSearchInput]", inputs: ["elderSearchInputTransform", "elderSearchInput", "elderSearchInputFallback", "valueAsId", "elderSearchInputKey"], exportAs: ["elderSearchInput"] }, { kind: "directive", type: ElderOverlayOriginDirective, selector: "[elderOverlayOrigin]", inputs: ["elderOverlayOrigin"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "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: "component", type: ElderDialogPanelComponent, selector: "elder-dialog-panel" }, { kind: "component", type: MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33746
33763
  }
33747
33764
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchBoxComponent, decorators: [{
33748
33765
  type: Component,
@@ -33764,7 +33781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33764
33781
  ElderDialogPanelComponent,
33765
33782
  MatButton,
33766
33783
  AsyncPipe,
33767
- TranslateModule,
33784
+ ElderTranslatePipe,
33768
33785
  ], template: "<div class=\"layout-row place-stretch-center full flex\">\n <mat-form-field\n [appearance]=\"appearance\"\n class=\"elder-search-box-field flex-auto my-xs\"\n [class]=\"'elder-round-form-field'\"\n subscriptSizing=\"dynamic\"\n [elderDense]=\"dense\"\n >\n <button\n matPrefix\n mat-icon-button\n type=\"button\"\n [elderOverlayTrigger]=\"searchPanel\"\n (click)=\"blurFocus($event)\"\n >\n <mat-icon>search</mat-icon>\n </button>\n\n <input\n matInput\n type=\"text\"\n [name]=\"name\"\n [placeholder]=\"placeholder\"\n #search\n cdkFocusInitial\n ngModel\n elderSearchInput\n [elderSearchInputKey]=\"queryKey\"\n #searchInput=\"elderSearchInput\"\n [autocomplete]=\"autoPanel && customSearchPanel() ? 'off' : autocomplete\"\n [elderOverlayOrigin]=\"searchPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n [elderOverlayTriggerType]=\"'focus'\"\n [elderOverlayTriggerEnabled]=\"\n autoPanel && customSearchPanel() && (searchInput?.state$ | async)?.pristine\n \"\n />\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <div class=\"layout-row\" matSuffix>\n @if (touchedSearchInputs$ | async; as touchedInputs) {\n @if (touchedInputs.length > 0) {\n <button\n mat-icon-button\n type=\"button\"\n (click)=\"clearSearch($event)\"\n name=\"clear\"\n aria-label=\"Clear\"\n >\n <mat-icon>close</mat-icon>\n </button>\n }\n\n @if (customSearchPanel()) {\n <button\n mat-icon-button\n type=\"button\"\n name=\"openPanel\"\n [elderOverlayTrigger]=\"searchPanel\"\n (click)=\"blurFocus($event)\"\n >\n <mat-icon\n [matBadge]=\"touchedInputs.length\"\n matBadgeSize=\"small\"\n [matBadgeOverlap]=\"true\"\n [matBadgeHidden]=\"touchedInputs.length === 0\"\n matBadgeColor=\"accent\"\n [color]=\"touchedInputs.length > 0 ? 'accent' : undefined\"\n aria-hidden=\"false\"\n >\n filter_list\n </mat-icon>\n </button>\n }\n }\n </div>\n </mat-form-field>\n</div>\n\n<!-- Overlay Panel for advanced search -->\n<elder-overlay #searchPanel=\"elderOverlay\">\n <elder-dialog-panel class=\"elder-search-panel-container\">\n <!-- Project the users custom search panel here -->\n <ng-content select=\"elder-search-panel\"></ng-content>\n\n <div class=\"layout-row place-between-center\">\n <button mat-button type=\"button\" name=\"clear\" (click)=\"clearSearch($event)\">\n {{ 'context.reset' | translate }}\n </button>\n\n <button\n mat-flat-button\n type=\"button\"\n name=\"ok\"\n color=\"primary\"\n (click)=\"searchPanel.closeOverlay()\"\n >\n Ok\n </button>\n </div>\n </elder-dialog-panel>\n</elder-overlay>\n", styles: [".elder-search-panel-container{min-width:250px;border-radius:var(--elder-pane-border-radius)}\n"] }]
33769
33786
  }], ctorParameters: () => [{ type: ElderSearchContextDirective }], propDecorators: { search: [{ type: i0.ViewChild, args: ['search', { isSignal: true }] }], overlayComponent: [{ type: i0.ViewChild, args: [i0.forwardRef(() => ElderOverlayComponent), { isSignal: true }] }], customSearchPanel: [{ type: i0.ContentChild, args: [i0.forwardRef(() => ElderSearchPanelComponent), { isSignal: true }] }], autoPanel: [{
33770
33787
  type: Input
@@ -34031,7 +34048,7 @@ class ElderSearchUrlService {
34031
34048
  convertValueToArrayOrSingleValue(value) {
34032
34049
  return Array.isArray(value) ? `(${value.toString()})` : value;
34033
34050
  }
34034
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchUrlService, deps: [{ token: i1$3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
34051
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchUrlService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
34035
34052
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchUrlService, providedIn: 'root' }); }
34036
34053
  }
34037
34054
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchUrlService, decorators: [{
@@ -34039,7 +34056,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34039
34056
  args: [{
34040
34057
  providedIn: 'root',
34041
34058
  }]
34042
- }], ctorParameters: () => [{ type: i1$3.Router }] });
34059
+ }], ctorParameters: () => [{ type: i1$2.Router }] });
34043
34060
 
34044
34061
  class ContextWithUrlFilters {
34045
34062
  constructor(context, urlFilters) {
@@ -34143,7 +34160,6 @@ class ElderSearchModule {
34143
34160
  ElderOverlayModule,
34144
34161
  ElderPanelModule,
34145
34162
  ElderFormsDirectivesModule,
34146
- TranslateModule,
34147
34163
  ElderSearchContextDirective,
34148
34164
  ElderSearchUrlDirective,
34149
34165
  ElderSearchInputDirective,
@@ -34171,7 +34187,6 @@ class ElderSearchModule {
34171
34187
  ElderOverlayModule,
34172
34188
  ElderPanelModule,
34173
34189
  ElderFormsDirectivesModule,
34174
- TranslateModule,
34175
34190
  ElderSearchBoxComponent] }); }
34176
34191
  }
34177
34192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchModule, decorators: [{
@@ -34196,7 +34211,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34196
34211
  ElderOverlayModule,
34197
34212
  ElderPanelModule,
34198
34213
  ElderFormsDirectivesModule,
34199
- TranslateModule,
34200
34214
  ElderSearchContextDirective,
34201
34215
  ElderSearchUrlDirective,
34202
34216
  ElderSearchInputDirective,
@@ -34344,7 +34358,6 @@ class ElderI18nEntitiesModule {
34344
34358
  MatTableModule,
34345
34359
  MatSortModule,
34346
34360
  MatInputModule,
34347
- TranslateModule,
34348
34361
  FormsModule,
34349
34362
  ElderTableModule,
34350
34363
  MatChipsModule,
@@ -34373,7 +34386,6 @@ class ElderI18nEntitiesModule {
34373
34386
  MatTableModule,
34374
34387
  MatSortModule,
34375
34388
  MatInputModule,
34376
- TranslateModule,
34377
34389
  FormsModule,
34378
34390
  ElderTableModule,
34379
34391
  MatChipsModule,
@@ -34406,7 +34418,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34406
34418
  MatTableModule,
34407
34419
  MatSortModule,
34408
34420
  MatInputModule,
34409
- TranslateModule,
34410
34421
  FormsModule,
34411
34422
  ElderTableModule,
34412
34423
  MatChipsModule,
@@ -34432,6 +34443,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34432
34443
  class ElderLanguageConfig {
34433
34444
  }
34434
34445
 
34446
+ /**
34447
+ * This service updates the HTML lang attribute based on the current language.
34448
+ * (Manipulates the DOM directly)
34449
+ */
34450
+ class ElderHtmlLangAttributeService {
34451
+ /***************************************************************************
34452
+ * *
34453
+ * Constructor *
34454
+ * *
34455
+ **************************************************************************/
34456
+ constructor() {
34457
+ this.languageService = inject(ElderLanguageService);
34458
+ this.htmlDocument = inject(DOCUMENT);
34459
+ this.languageService.currentLanguage$.subscribe((lang) => {
34460
+ if (lang) {
34461
+ this.htmlDocument.documentElement.setAttribute('lang', lang);
34462
+ }
34463
+ });
34464
+ }
34465
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHtmlLangAttributeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34466
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHtmlLangAttributeService, providedIn: 'root' }); }
34467
+ }
34468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHtmlLangAttributeService, decorators: [{
34469
+ type: Injectable,
34470
+ args: [{
34471
+ providedIn: 'root',
34472
+ }]
34473
+ }], ctorParameters: () => [] });
34474
+
34435
34475
  /**
34436
34476
  * This interceptor injects the current locale
34437
34477
  * so the backend know what the current desired locale is of a request.
@@ -34455,10 +34495,10 @@ class ElderLanguageInterceptor {
34455
34495
  intercept(req, next) {
34456
34496
  const config = this.languageConfig;
34457
34497
  const skipInterceptor = config && config.interceptor && config.interceptor.disable;
34458
- if (!skipInterceptor && this.translate.currentLang) {
34498
+ if (!skipInterceptor && this.translate.currentLang()) {
34459
34499
  // Keeps the original request params. as a new HttpParams
34460
34500
  let newParams = new HttpParams({ fromString: req.params.toString() });
34461
- newParams = newParams.set(this._queryParam, this.translate.currentLang);
34501
+ newParams = newParams.set(this._queryParam, this.translate.currentLang());
34462
34502
  // Clone the request with params instead of setParams
34463
34503
  // Workaround for https://github.com/angular/angular/issues/18812
34464
34504
  const requestClone = req.clone({
@@ -34485,10 +34525,10 @@ class ElderLanguageInterceptor {
34485
34525
  return this._config;
34486
34526
  }
34487
34527
  get translate() {
34488
- if (!this._translate) {
34489
- this._translate = this.inj.get(TranslateService); // Workaround for cyclic dependency
34528
+ if (!this._languageService) {
34529
+ this._languageService = this.inj.get(ElderLanguageService); // Workaround for cyclic dependency
34490
34530
  }
34491
- return this._translate;
34531
+ return this._languageService;
34492
34532
  }
34493
34533
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
34494
34534
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageInterceptor }); }
@@ -34497,13 +34537,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34497
34537
  type: Injectable
34498
34538
  }], ctorParameters: () => [{ type: i0.Injector }] });
34499
34539
 
34500
- function provideElderLanguage(config) {
34540
+ function provideElderLanguage(options, config) {
34501
34541
  return makeEnvironmentProviders([
34542
+ {
34543
+ provide: ELDER_LANGUAGE_OPTIONS,
34544
+ useValue: options,
34545
+ },
34502
34546
  {
34503
34547
  provide: ElderLanguageConfig,
34504
34548
  useValue: config,
34505
34549
  },
34506
34550
  { provide: HTTP_INTERCEPTORS, useClass: ElderLanguageInterceptor, multi: true },
34551
+ provideEnvironmentInitializer(() => {
34552
+ inject(ElderLanguageService).init();
34553
+ inject(ElderHtmlLangAttributeService);
34554
+ }),
34555
+ ]);
34556
+ }
34557
+
34558
+ function provideElderTranslate() {
34559
+ return makeEnvironmentProviders([
34560
+ provideTranslateService({
34561
+ loader: {
34562
+ provide: TranslateLoader,
34563
+ useFactory: createElderDefaultTranslateLoader,
34564
+ deps: [HttpBackend],
34565
+ },
34566
+ }),
34567
+ provideEnvironmentInitializer(() => {
34568
+ inject(ElderTranslateService);
34569
+ }),
34507
34570
  ]);
34508
34571
  }
34509
34572
 
@@ -34673,8 +34736,6 @@ class ElderChipListSelectModule {
34673
34736
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderChipListSelectModule, imports: [
34674
34737
  // Angular
34675
34738
  CommonModule,
34676
- // Third Party
34677
- TranslateModule,
34678
34739
  // Material
34679
34740
  MatChipsModule,
34680
34741
  A11yModule,
@@ -34682,8 +34743,6 @@ class ElderChipListSelectModule {
34682
34743
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderChipListSelectModule, imports: [
34683
34744
  // Angular
34684
34745
  CommonModule,
34685
- // Third Party
34686
- TranslateModule,
34687
34746
  // Material
34688
34747
  MatChipsModule,
34689
34748
  A11yModule,
@@ -34695,8 +34754,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34695
34754
  imports: [
34696
34755
  // Angular
34697
34756
  CommonModule,
34698
- // Third Party
34699
- TranslateModule,
34700
34757
  // Material
34701
34758
  MatChipsModule,
34702
34759
  A11yModule,
@@ -34981,7 +35038,6 @@ class ElderDataTransferModule {
34981
35038
  MatButtonModule,
34982
35039
  MatBadgeModule,
34983
35040
  MatProgressSpinnerModule,
34984
- TranslateModule,
34985
35041
  ElderPipesModule,
34986
35042
  ElderOverlayModule,
34987
35043
  MatCardModule,
@@ -35000,7 +35056,6 @@ class ElderDataTransferModule {
35000
35056
  MatButtonModule,
35001
35057
  MatBadgeModule,
35002
35058
  MatProgressSpinnerModule,
35003
- TranslateModule,
35004
35059
  ElderPipesModule,
35005
35060
  ElderOverlayModule,
35006
35061
  MatCardModule,
@@ -35021,7 +35076,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
35021
35076
  MatButtonModule,
35022
35077
  MatBadgeModule,
35023
35078
  MatProgressSpinnerModule,
35024
- TranslateModule,
35025
35079
  ElderPipesModule,
35026
35080
  ElderOverlayModule,
35027
35081
  MatCardModule,
@@ -35275,8 +35329,6 @@ class ElderConnectivityModule {
35275
35329
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderConnectivityModule, imports: [
35276
35330
  // Angular
35277
35331
  CommonModule,
35278
- // Third Party
35279
- TranslateModule,
35280
35332
  // Angular Material
35281
35333
  MatIconModule,
35282
35334
  MatTooltipModule,
@@ -35287,8 +35339,6 @@ class ElderConnectivityModule {
35287
35339
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderConnectivityModule, imports: [
35288
35340
  // Angular
35289
35341
  CommonModule,
35290
- // Third Party
35291
- TranslateModule,
35292
35342
  // Angular Material
35293
35343
  MatIconModule,
35294
35344
  MatTooltipModule,
@@ -35303,8 +35353,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
35303
35353
  imports: [
35304
35354
  // Angular
35305
35355
  CommonModule,
35306
- // Third Party
35307
- TranslateModule,
35308
35356
  // Angular Material
35309
35357
  MatIconModule,
35310
35358
  MatTooltipModule,
@@ -36332,7 +36380,7 @@ class CsvStreamExporterBuilderService {
36332
36380
  start(dataSource, csvSpec) {
36333
36381
  return new CsvStreamExporterBuilder(this.translateService, dataSource, csvSpec);
36334
36382
  }
36335
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CsvStreamExporterBuilderService, deps: [{ token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
36383
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CsvStreamExporterBuilderService, deps: [{ token: ElderTranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
36336
36384
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CsvStreamExporterBuilderService, providedIn: 'root' }); }
36337
36385
  }
36338
36386
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CsvStreamExporterBuilderService, decorators: [{
@@ -36340,7 +36388,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
36340
36388
  args: [{
36341
36389
  providedIn: 'root',
36342
36390
  }]
36343
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
36391
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
36344
36392
 
36345
36393
  class ElderCsvExportBtnComponent {
36346
36394
  set dataSource(dataSource) {
@@ -36731,7 +36779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
36731
36779
  class ElderLockWarningService {
36732
36780
  constructor() {
36733
36781
  this.dialogService = inject(ElderDialogService);
36734
- this.translateService = inject(TranslateService);
36782
+ this.translateService = inject(ElderTranslateService);
36735
36783
  }
36736
36784
  /***************************************************************************
36737
36785
  * *
@@ -36975,13 +37023,13 @@ class IframeDialogComponent {
36975
37023
  close(data) {
36976
37024
  this.dialogRef.close(data);
36977
37025
  }
36978
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
37026
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeDialogComponent, deps: [{ token: i1$6.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
36979
37027
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: IframeDialogComponent, isStandalone: true, selector: "elder-i-frame-dialog", viewQueries: [{ propertyName: "iframeHost", first: true, predicate: IframeHostComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (iframeParams$ | async; as iFrameParams) {\n <div class=\"full\">\n <elder-i-frame-host class=\"full\" [iframeParams]=\"iFrameParams\" (closeRequested)=\"close($event)\">\n </elder-i-frame-host>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: IframeHostComponent, selector: "elder-i-frame-host", inputs: ["iframeParams"], outputs: ["messageReceived", "closeRequested", "message", "close"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36980
37028
  }
36981
37029
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeDialogComponent, decorators: [{
36982
37030
  type: Component,
36983
37031
  args: [{ selector: 'elder-i-frame-dialog', changeDetection: ChangeDetectionStrategy.OnPush, imports: [IframeHostComponent, AsyncPipe], template: "@if (iframeParams$ | async; as iFrameParams) {\n <div class=\"full\">\n <elder-i-frame-host class=\"full\" [iframeParams]=\"iFrameParams\" (closeRequested)=\"close($event)\">\n </elder-i-frame-host>\n </div>\n}\n" }]
36984
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
37032
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
36985
37033
  type: Inject,
36986
37034
  args: [MAT_DIALOG_DATA]
36987
37035
  }] }], propDecorators: { iframeHost: [{ type: i0.ViewChild, args: [i0.forwardRef(() => IframeHostComponent), { isSignal: true }] }] } });
@@ -37049,13 +37097,13 @@ class IframeSideContentComponent {
37049
37097
  queryParamsHandling: 'merge',
37050
37098
  });
37051
37099
  }
37052
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeSideContentComponent, deps: [{ token: i1$3.Router }, { token: i1$3.ActivatedRoute }, { token: ElderShellService }], target: i0.ɵɵFactoryTarget.Component }); }
37100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeSideContentComponent, deps: [{ token: i1$2.Router }, { token: i1$2.ActivatedRoute }, { token: ElderShellService }], target: i0.ɵɵFactoryTarget.Component }); }
37053
37101
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: IframeSideContentComponent, isStandalone: true, selector: "elder-i-frame-side-host", ngImport: i0, template: "@if (iframeParams$ | async; as iFrameParams) {\n <div [style.width]=\"iFrameParams.width\" class=\"full\">\n <elder-i-frame-host class=\"full\" [iframeParams]=\"iFrameParams\" (closeRequested)=\"close($event)\">\n </elder-i-frame-host>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "component", type: IframeHostComponent, selector: "elder-i-frame-host", inputs: ["iframeParams"], outputs: ["messageReceived", "closeRequested", "message", "close"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37054
37102
  }
37055
37103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeSideContentComponent, decorators: [{
37056
37104
  type: Component,
37057
37105
  args: [{ selector: 'elder-i-frame-side-host', changeDetection: ChangeDetectionStrategy.OnPush, imports: [IframeHostComponent, AsyncPipe], template: "@if (iframeParams$ | async; as iFrameParams) {\n <div [style.width]=\"iFrameParams.width\" class=\"full\">\n <elder-i-frame-host class=\"full\" [iframeParams]=\"iFrameParams\" (closeRequested)=\"close($event)\">\n </elder-i-frame-host>\n </div>\n}\n" }]
37058
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }, { type: ElderShellService }] });
37106
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: ElderShellService }] });
37059
37107
 
37060
37108
  class IframeService {
37061
37109
  constructor() {
@@ -37437,8 +37485,6 @@ class ElderIFrameModule {
37437
37485
  CommonModule,
37438
37486
  RouterModule,
37439
37487
  FormsModule,
37440
- // Third Party
37441
- TranslateModule,
37442
37488
  // Angular Material
37443
37489
  MatIconModule,
37444
37490
  MatButtonModule,
@@ -37462,8 +37508,6 @@ class ElderIFrameModule {
37462
37508
  CommonModule,
37463
37509
  RouterModule,
37464
37510
  FormsModule,
37465
- // Third Party
37466
- TranslateModule,
37467
37511
  // Angular Material
37468
37512
  MatIconModule,
37469
37513
  MatButtonModule,
@@ -37484,8 +37528,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37484
37528
  CommonModule,
37485
37529
  RouterModule,
37486
37530
  FormsModule,
37487
- // Third Party
37488
- TranslateModule,
37489
37531
  // Angular Material
37490
37532
  MatIconModule,
37491
37533
  MatButtonModule,
@@ -37625,7 +37667,7 @@ class ElderAuditedEntityComponent {
37625
37667
  this.auditedCtx$.next(new AuditedEntityCtx(audited));
37626
37668
  }
37627
37669
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditedEntityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37628
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderAuditedEntityComponent, isStandalone: true, selector: "elder-audited-entity", inputs: { appearance: "appearance", dateFormat: "dateFormat", audited: "audited" }, ngImport: i0, template: "@if (auditedCtx$ | async; as ctx) {\n <section class=\"layout-row wrap gap-sm\">\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\" [value]=\"ctx.audited?.createdAt | date: dateFormat\" readonly />\n <mat-hint>{{ ctx.audited?.createdBy }}</mat-hint>\n </mat-form-field>\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\n matInput\n name=\"modified\"\n [value]=\"ctx.audited?.modifiedAt | date: dateFormat\"\n readonly\n />\n <mat-hint>{{ ctx.audited?.modifiedBy }}</mat-hint>\n </mat-form-field>\n </section>\n}\n", styles: [".decent{opacity:.5}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37670
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ElderAuditedEntityComponent, isStandalone: true, selector: "elder-audited-entity", inputs: { appearance: "appearance", dateFormat: "dateFormat", audited: "audited" }, ngImport: i0, template: "@if (auditedCtx$ | async; as ctx) {\n <section class=\"layout-row wrap gap-sm\">\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\" [value]=\"ctx.audited?.createdAt | date: dateFormat\" readonly />\n <mat-hint>{{ ctx.audited?.createdBy }}</mat-hint>\n </mat-form-field>\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\n matInput\n name=\"modified\"\n [value]=\"ctx.audited?.modifiedAt | date: dateFormat\"\n readonly\n />\n <mat-hint>{{ ctx.audited?.modifiedBy }}</mat-hint>\n </mat-form-field>\n </section>\n}\n", styles: [".decent{opacity:.5}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: ElderTranslatePipe, name: "translate" }, { kind: "pipe", type: TimeAgoPipe, name: "timeAgo" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37629
37671
  }
37630
37672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditedEntityComponent, decorators: [{
37631
37673
  type: Component,
@@ -37637,7 +37679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37637
37679
  MatHint,
37638
37680
  AsyncPipe,
37639
37681
  DatePipe,
37640
- TranslateModule,
37682
+ ElderTranslatePipe,
37641
37683
  TimeAgoPipe,
37642
37684
  ], template: "@if (auditedCtx$ | async; as ctx) {\n <section class=\"layout-row wrap gap-sm\">\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\" [value]=\"ctx.audited?.createdAt | date: dateFormat\" readonly />\n <mat-hint>{{ ctx.audited?.createdBy }}</mat-hint>\n </mat-form-field>\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\n matInput\n name=\"modified\"\n [value]=\"ctx.audited?.modifiedAt | date: dateFormat\"\n readonly\n />\n <mat-hint>{{ ctx.audited?.modifiedBy }}</mat-hint>\n </mat-form-field>\n </section>\n}\n", styles: [".decent{opacity:.5}\n"] }]
37643
37685
  }], ctorParameters: () => [], propDecorators: { appearance: [{
@@ -37655,13 +37697,11 @@ class ElderAuditModule {
37655
37697
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
37656
37698
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditModule, imports: [CommonModule,
37657
37699
  MatInputModule,
37658
- TranslateModule,
37659
37700
  ElderPipesModule,
37660
37701
  MatIconModule,
37661
37702
  ElderAuditedEntityComponent], exports: [ElderAuditedEntityComponent] }); }
37662
37703
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditModule, imports: [CommonModule,
37663
37704
  MatInputModule,
37664
- TranslateModule,
37665
37705
  ElderPipesModule,
37666
37706
  MatIconModule,
37667
37707
  ElderAuditedEntityComponent] }); }
@@ -37673,7 +37713,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37673
37713
  imports: [
37674
37714
  CommonModule,
37675
37715
  MatInputModule,
37676
- TranslateModule,
37677
37716
  ElderPipesModule,
37678
37717
  MatIconModule,
37679
37718
  ElderAuditedEntityComponent,
@@ -39424,5 +39463,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
39424
39463
  * Generated bundle index. Do not edit.
39425
39464
  */
39426
39465
 
39427
- export { ActivationEventSource, ActivationModel, Arrays, AuditedEntity, AutoStartSpec, Batcher, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, CommonValidationMessageStrategy, ComparatorBuilder, CompositeSort, ConfirmDialogConfig, ContinuableListing, CountryPhoneFormatService, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, CuratedDataSource, CuratedListDataSource, CuratedPagedDataSource, Currency, CurrencyCode, CurrencyFormatUtil, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, CustomMatcherSpec, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextRange, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSelectionController, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceEntityPatch, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewActivationController, DataViewDndControllerService, DataViewDndGroupControllerService, DataViewDndModelUtil, DataViewDragEnteredEvent, DataViewDragExitedEvent, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewInteractionControllerDirective, DataViewItemDropEvent, DataViewMessage, DataViewMessageTypeValues, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DomUtil, DrawerOutletBinding, DurationBucket, DurationFormat, DurationFormatUtil, DynamicValidationMessageStrategy, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAppearanceSettingsComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutoSelectSuggestFirstDirective, ElderAutocompleteDirective, ElderAutocompleteManyDirective, ElderAutocompleteModule, ElderBadgeDirective, ElderBasicPaneLayoutComponent, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCenterCellDirective, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsIncludeExcludeDirective, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderCompositeSortComponent, ElderCompositeSortDcDirective, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderContinuatorComponent, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataActivationDirective, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewDndDirective, ElderDataViewDndGroupDirective, ElderDataViewItemDragDirective, ElderDataViewOptions, ElderDataViewOptionsProvider, ElderDateSwitcherComponent, ElderDateTimeInputComponent, ElderDelayedFocusDirective, ElderDeleteActiveDirective, ElderDetailDialogComponent, ElderDetailDirective, ElderDialogConfig, ElderDialogModule, ElderDialogPanelComponent, ElderDialogService, ElderDimensionsInputComponent, ElderDropZoneComponent, ElderDurationInputComponent, ElderEntityValueAccessorUtil, ElderEnumTranslationService, ElderErrorModule, ElderEventSourceService, ElderExceptionDetailComponent, ElderExpandToggleButtonComponent, ElderExpandToggleButtonModule, ElderFileDropZoneDirective, ElderFileModule, ElderFileSelectComponent, ElderFileSelectDirective, ElderFileUploadComponent, ElderFilterChipTemplateComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGenericResizableLayoutComponent, ElderGridActivationDirective, ElderGridComponent, ElderGridModule, ElderGridNavigationBarDirective, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderIntervalPickerBindingDirective, ElderIntervalPickerComponent, ElderIntervalPickerToggleComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalDndSupportDirective, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderLock, ElderLockContext, ElderLockContextDirective, ElderLockManagerService, ElderLockWarningService, ElderMasterActivationDirective, ElderMasterDetailComponent, ElderMasterDetailModule, ElderMasterDetailService, ElderMasterDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectAllInitialDirective, ElderMultiSelectBase, ElderMultiSelectChipOptionsComponent, ElderMultiSelectChipsComponent, ElderMultiSelectChipsOptionsDirective, ElderMultiSelectFormField, ElderMultiTranslateHttpLoader, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayRef, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPaneActionsComponent, ElderPaneComponent, ElderPaneContentComponent, ElderPaneHeaderComponent, ElderPaneSubtitleComponent, ElderPaneTitleComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderPopoverComponent, ElderPopoverTriggerDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRailNavDirective, ElderRepeatPipe, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderResizableDirective, ElderResizablePaneLayoutComponent, ElderResizeBehaviorDirective, ElderResizeContainerComponent, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarDirective, ElderScrollbarModule, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchIncludeExcludeDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSearchUrlDirective, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectOptionComponent, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderShellStaticNavSlotDirective, ElderSinglePaneWrapperComponent, ElderSingleStateCheckboxDirective, ElderStackCardDirective, ElderStaticNavToggleComponent, ElderStopEventPropagationDirective, ElderSuggestionPanelComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableDropListConnectorDirective, ElderTableExtensionDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableNavigationBarDirective, ElderTableProviders, ElderTableRootDirective, ElderTableSelectionCellComponent, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTileComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToggleTextInputDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, EntitiesChangeEvent, EntityDelta, EntityIdUtil, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FallbackValidationMessageStrategy, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FocusUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IncludeExcludeSelectionModel, IncludeExcludeState, IncludeExcludeValue, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalFormatUtil, IsoIntervalParsePipe, IsoIntervalPipe, ItemActivationEvent, ItemActivationOptions, ItemModel, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleTags, LocalDataFilter, LocalListDataSource, LocalPagedDataSource, Locale, LocalisationPickerService, MasterDetailActivationEvent, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, ModifierKeyService, ModifierKeyState, MultiModelBaseComponent, NamedColorDirective, NamedColorSelectDirective, NamedColorSelectValueComponent, NextNumberUtil, ObjectFieldMatcher, ObjectPathResolver, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, PhoneFormatService, PhonePipe, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveEventSourceState, ReactiveFetchEventSource, ReactiveFetchEventSourceService, ReactiveMap, ReactiveSSeMessage, RefreshingEntity, ResizeObserverDirective, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, RoutedTabActivationFailed, SearchInputState, SelectChipSpecUtil, SelectOptionChipSpecUtil, SelectionChangedEvent, SelectionEventSource, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, SimpleSearchInput, Sort, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TargetValue, TemplateCompositeControl, TemplatedSelectionDialogComponent, TemporalPlainDateInterval, TemporalUtil, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, Translated, TranslatedConverter, TranslatedEnumValue, TranslatedText, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UnreachableCaseError, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueChangeEvent, ValueWrapper, ViewDropModelUpdateInstruction, ViewProviders, WebLocalStorage, WebSessionStorage, WebappDomainFragmentSpec, WebappDomainSpec, WebappDomainSpecService, WebappDomainSwitcherDirective, WebappUrlFragmentSwitcherConfig, WeightPipe, alphaNumStringComparator, booleanTransformFn, buildFormIntegrationProviders, coerceInterval, coerceIntervalIsoStr, createDataOptionsProvider, createSelectionModel, elderChipColorLevels, elderChipColorStates, elderNamedColorRoles, elderNamedColorToken, elderNamedColors, existingOrNewElderTableModel, initSearchUrlService, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isDataViewMessageType, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isLocalListDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, provideElderBrandAssets, provideElderDefaults, provideElderLanguage, proxyControlContainer, registerLocale, runInZone, someSignal, themeInit };
39466
+ export { ActivationEventSource, ActivationModel, Arrays, AuditedEntity, AutoStartSpec, Batcher, BlobUrl, BytesFormat, BytesPerSecondFormat, BytesPipe, CardDropEvent, CardOrganizerData, CardStack, CollectionUtil, CommonValidationMessageStrategy, ComparatorBuilder, CompositeSort, ConfirmDialogConfig, ContinuableListing, CountryPhoneFormatService, CsvColumnSpec, CsvSerializer, CsvSpec, CsvStreamExporter, CsvStreamExporterBuilder, CsvStreamExporterBuilderService, CuratedDataSource, CuratedListDataSource, CuratedPagedDataSource, Currency, CurrencyCode, CurrencyFormatUtil, CurrencyUnit, CurrencyUnitRegistry, CustomDateAdapter, CustomMatcherSpec, DataContextActivePage, DataContextAutoStarter, DataContextBase, DataContextBuilder, DataContextContinuableBase, DataContextContinuablePaged, DataContextContinuableToken, DataContextLifeCycleBinding, DataContextRange, DataContextSelectionDirective, DataContextSimple, DataContextSnapshot, DataContextSourceEventBinding, DataContextStateIndicatorComponent, DataContextStatus, DataSelectionController, DataSourceAdapter, DataSourceBase, DataSourceChangeEvent, DataSourceEntityPatch, DataSourceProcessor, DataTransferFactory, DataTransferProgress, DataTransferProgressAggregate, DataTransferState, DataTransferStatus, DataViewActivationController, DataViewDndControllerService, DataViewDndGroupControllerService, DataViewDndModelUtil, DataViewDragEnteredEvent, DataViewDragExitedEvent, DataViewIframeAdapterDirective, DataViewIframeComponent, DataViewInteractionControllerDirective, DataViewItemDropEvent, DataViewMessage, DataViewMessageTypeValues, DataViewOptionsProviderBinding, DataViewSelection, DataViewSelectionInit, DateUtil, DelegateContinuableDataSource, DelegateDataSource, DelegateListDataSource, DelegatePagedDataSource, Dimensions, DomUtil, DrawerOutletBinding, DurationBucket, DurationFormat, DurationFormatUtil, DynamicValidationMessageStrategy, ELDER_DATA_VIEW, ELDER_SELECT_BASE, ElderAccessDeniedComponent, ElderAccessDeniedModule, ElderAppHeaderComponent, ElderAppearanceSettingsComponent, ElderAuditModule, ElderAuditedEntityComponent, ElderAutoSelectFirstDirective, ElderAutoSelectSuggestFirstDirective, ElderAutocompleteDirective, ElderAutocompleteManyDirective, ElderAutocompleteModule, ElderBadgeDirective, ElderBasicPaneLayoutComponent, ElderBlobViewerComponent, ElderBreadCrumbsComponent, ElderBreadCrumbsModule, ElderButtonGroupComponent, ElderButtonGroupModule, ElderCardComponent, ElderCardContentDirective, ElderCardHeaderActionsDirective, ElderCardHeaderComponent, ElderCardModule, ElderCardOrganizerComponent, ElderCardOrganizerModule, ElderCardPanelComponent, ElderCardStackComponent, ElderCardSubtitleDirective, ElderCardTitleDirective, ElderCenterCellDirective, ElderChipLabelDirective, ElderChipListSelectComponent, ElderChipListSelectModule, ElderChipsIncludeExcludeDirective, ElderChipsModule, ElderClearSelectDirective, ElderClipboardPutDirective, ElderClipboardService, ElderCompositeSortComponent, ElderCompositeSortDcDirective, ElderConfirmDialogComponent, ElderConnectivityModule, ElderConnectivityService, ElderContainersModule, ElderContinuatorComponent, ElderCsvExportBtnComponent, ElderCsvModule, ElderCurrencyModule, ElderCurrencyPipe, ElderDataActivationDirective, ElderDataCommonModule, ElderDataToolbarComponent, ElderDataTransferModule, ElderDataTransferService, ElderDataViewBaseComponent, ElderDataViewDndDirective, ElderDataViewDndGroupDirective, ElderDataViewItemDragDirective, ElderDataViewOptions, ElderDataViewOptionsProvider, ElderDateSwitcherComponent, ElderDateTimeInputComponent, ElderDelayedFocusDirective, ElderDeleteActiveDirective, ElderDetailDialogComponent, ElderDetailDirective, ElderDialogConfig, ElderDialogModule, ElderDialogPanelComponent, ElderDialogService, ElderDimensionsInputComponent, ElderDropZoneComponent, ElderDurationInputComponent, ElderEntityValueAccessorUtil, ElderEnumTranslationService, ElderErrorModule, ElderEventSourceService, ElderExceptionDetailComponent, ElderExpandToggleButtonComponent, ElderExpandToggleButtonModule, ElderFileDropZoneDirective, ElderFileModule, ElderFileSelectComponent, ElderFileSelectDirective, ElderFileUploadComponent, ElderFilterChipTemplateComponent, ElderFormFieldControlBase, ElderFormFieldDenseDirective, ElderFormFieldLabelDirective, ElderFormFieldNoHintDirective, ElderFormFieldNoSpinnerDirective, ElderFormsDirectivesModule, ElderFormsModule, ElderFromFieldBase, ElderFromFieldEntityBase, ElderFromFieldMultiEntityBase, ElderGenericResizableLayoutComponent, ElderGridActivationDirective, ElderGridComponent, ElderGridModule, ElderGridNavigationBarDirective, ElderGridTileDirective, ElderGridToolbarDirective, ElderHeaderComponent, ElderHeaderModule, ElderI18nEntitiesModule, ElderIFrameModule, ElderInfiniteAutocompleteDirective, ElderInfiniteScrollDirective, ElderInfiniteScrollModule, ElderInputPatternDirective, ElderIntervalInputComponent, ElderIntervalPickerBindingDirective, ElderIntervalPickerComponent, ElderIntervalPickerToggleComponent, ElderKeyEventDirective, ElderLabelInputComponent, ElderLabelsModule, ElderLanguageConfig, ElderLanguageInterceptor, ElderLanguageService, ElderLanguageSwitcherComponent, ElderLocalDateInputComponent, ElderLocalDndSupportDirective, ElderLocalTimeInputComponent, ElderLocalesDeChModule, ElderLocalizedInputComponent, ElderLocalizedInputDialogComponent, ElderLocalizedInputDialogService, ElderLocalizedInputTableComponent, ElderLocalizedTextColumnDirective, ElderLocalizedTextsDirective, ElderLock, ElderLockContext, ElderLockContextDirective, ElderLockManagerService, ElderLockWarningService, ElderMasterActivationDirective, ElderMasterDetailComponent, ElderMasterDetailModule, ElderMasterDetailService, ElderMasterDirective, ElderMaxValidator, ElderMeasuresModule, ElderMinValidator, ElderMultiEntityValueAccessorUtil, ElderMultiSelectAllInitialDirective, ElderMultiSelectBase, ElderMultiSelectChipOptionsComponent, ElderMultiSelectChipsComponent, ElderMultiSelectChipsOptionsDirective, ElderMultiSelectFormField, ElderMultiTranslateHttpLoader, ElderMultipleOfUtil, ElderMultipleOfValidator, ElderNavGroupComponent, ElderNavLinkComponent, ElderNavListComponent, ElderNavModule, ElderNextFocusableDirective, ElderNumberCellDirective, ElderOfflineIndicatorComponent, ElderOverlayComponent, ElderOverlayModule, ElderOverlayOriginDirective, ElderOverlayRef, ElderOverlayTriggerDirective, ElderPaddingDirective, ElderPaneActionsComponent, ElderPaneComponent, ElderPaneContentComponent, ElderPaneHeaderComponent, ElderPaneSubtitleComponent, ElderPaneTitleComponent, ElderPanelModule, ElderPeriodInputComponent, ElderPipesModule, ElderPlugParentFormDirective, ElderPopoverComponent, ElderPopoverTriggerDirective, ElderProgressBarComponent, ElderProgressBarModule, ElderQuantityFormFieldComponent, ElderQuantityInputControlComponent, ElderQuantityPipe, ElderQuantityRangeValidator, ElderQuantityService, ElderQuantityTransformPipe, ElderQuestionDialogComponent, ElderRailNavDirective, ElderRepeatPipe, ElderRequiredDimensionsValidator, ElderRequiredIgnoreZeroValidator, ElderRequiredQuantityValidator, ElderResizableDirective, ElderResizablePaneLayoutComponent, ElderResizeBehaviorDirective, ElderResizeContainerComponent, ElderRoundPipe, ElderRouteOutletDrawerService, ElderRouterOutletService, ElderRouterService, ElderSafeUrlPipe, ElderScrollContainerComponent, ElderScrollbarDirective, ElderScrollbarModule, ElderSearchBoxComponent, ElderSearchContextDirective, ElderSearchIncludeExcludeDirective, ElderSearchInputDirective, ElderSearchModule, ElderSearchPanelComponent, ElderSearchUrlDirective, ElderSelectBase, ElderSelectChipAvatarDirective, ElderSelectChipDirective, ElderSelectComponent, ElderSelectComponentState, ElderSelectCustomInputDirective, ElderSelectFormField, ElderSelectModule, ElderSelectOnTabDirective, ElderSelectOptionComponent, ElderSelectValueDirective, ElderSelectionDialogComponent, ElderSelectionDialogDirective, ElderSelectionMasterCheckboxComponent, ElderSelectionPopupTriggerAdapterDirective, ElderShellCenterDirective, ElderShellComponent, ElderShellModule, ElderShellNavigationToggleComponent, ElderShellService, ElderShellSideLeftDirective, ElderShellSideRightDirective, ElderShellSlotDirective, ElderShellStaticNavSlotDirective, ElderSinglePaneWrapperComponent, ElderSingleStateCheckboxDirective, ElderStackCardDirective, ElderStaticNavToggleComponent, ElderStopEventPropagationDirective, ElderSuggestionPanelComponent, ElderTabDirective, ElderTabFocusTrapDirective, ElderTabGroupRoutingDirective, ElderTabModule, ElderTableActivationDirective, ElderTableComponent, ElderTableDropListConnectorDirective, ElderTableExtensionDirective, ElderTableGroup, ElderTableModel, ElderTableModelCdkTableBinding, ElderTableModelQueryGroup, ElderTableModule, ElderTableNavigationBarDirective, ElderTableProviders, ElderTableRootDirective, ElderTableSelectionCellComponent, ElderTableSortDirective, ElderTableToolbarDirective, ElderThemeApplierDirective, ElderThemeDirective, ElderThemeModule, ElderThemePreferenceService, ElderThemeService, ElderThemeToggleComponent, ElderTileComponent, ElderTimeModule, ElderToastModule, ElderToastService, ElderTogglePanelComponent, ElderTogglePanelPrimaryDirective, ElderTogglePanelSecondaryDirective, ElderTogglePanelTriggerDirective, ElderToggleTextInputDirective, ElderToolbarColumnDirective, ElderToolbarComponent, ElderToolbarContentDirective, ElderToolbarModule, ElderToolbarService, ElderToolbarTitleComponent, ElderToolbarTitleService, ElderTouchedDirective, ElderTranslatePipe, ElderTranslateService, ElderTripleStateCheckboxDirective, ElderTruncatePipe, ElderUnitSelectDirective, ElderUnitService, ElderUrlFragment, ElderUrlFragmentModule, ElderUrlFragmentParamsService, ElderUrlFragmentSwitcherComponent, ElderValidationErrorDirective, EntitiesChangeEvent, EntityDelta, EntityIdUtil, EntitySetPatch, ErrorUtil, ExceptionDetailCtx, FallbackValidationMessageStrategy, FileEntry, FileListingRx, FileUploadClient, Filter, FilterContext, FilterUtil, FocusUtil, FormFieldBaseComponent, GlobalDragDropService, HttpClientPristine, HttpDataTransfer, HttpDataTransferAggregateComponent, HttpDataTransferComponent, HttpDataTransferIndicatorComponent, HttpDataTransferOverviewComponent, HttpParamsBuilder, I18nBase, I18nPickAsyncPipe, I18nPickPipe, I18nText, IFrameState, IframeCloseDirective, IframeDialogComponent, IframeHostComponent, IframeService, IframeSideContentComponent, IncludeExcludeSelectionModel, IncludeExcludeState, IncludeExcludeValue, IndexedEntities, InternalRestClientConfig, Interval, IsoDurationPipe, IsoIntervalFormatUtil, IsoIntervalParsePipe, IsoIntervalPipe, ItemActivationEvent, ItemActivationOptions, ItemModel, JsonMapUtil, KafentConfig, KafentEvent, KafentEventService, KafentEventStream, KafentEventStreamDisabled, KafentEventStreamSse, KafentEventTransport, KafentModule, KafentSseEventChannel, KafentTokenProvider, KafentTokenProviderSessionStorage, KafentTopicSse, KnownElderThemes, KnownLocaleTags, LocalDataFilter, LocalListDataSource, LocalPagedDataSource, Locale, LocalisationPickerService, MasterDetailActivationEvent, MasterSelectionState, MatTableDataContextBinding, MatTableDataContextBindingBuilder, ModifierKeyService, ModifierKeyState, MultiModelBaseComponent, NamedColorDirective, NamedColorSelectDirective, NamedColorSelectValueComponent, NextNumberUtil, ObjectFieldMatcher, ObjectPathResolver, Objects, OnlineStatus, Page, PageRequest, Pageable, ParseUtil, Path, PathNode, PeriodBucket, PeriodDuration, PeriodFormat, PhoneFormatService, PhonePipe, ProcessIterationContext, ProcessState, PropertyPathUtil, Quantity, QueryListBinding, QuestionDialogConfig, ReactiveEventSource, ReactiveEventSourceState, ReactiveFetchEventSource, ReactiveFetchEventSourceService, ReactiveMap, ReactiveSSeMessage, RefreshingEntity, ResizeObserverDirective, RestClient, RestClientConfig, RestClientContinuable, RestClientList, RestClientPaged, RoutedTabActivationFailed, SearchInputState, SelectChipSpecUtil, SelectOptionChipSpecUtil, SelectionChangedEvent, SelectionEventSource, SelectionModel, SelectionModelPopupDirective, Sets, SimpleLocalisationPicker, SimpleSearchInput, Sort, SortUtil, StandardToastComponent, SubBar, SuggestionProvider, TargetValue, TemplateCompositeControl, TemplatedSelectionDialogComponent, TemporalPlainDateInterval, TemporalUtil, ThemeSpec, TimeAgoPipe, TimeDurationPipe, TimeUtil, ToIsoDateStringPipe, ToastType, TokenChunkRequest, ToolbarHeader, Translated, TranslatedConverter, TranslatedEnumValue, TranslatedText, TypedEventMessage, Unit, UnitDimension, UnitDimensionInfo, UnitInfo, UnitRegistry, UnreachableCaseError, UrlBuilder, UrlQueryParams, UuidUtil, ValueAccessorBase, ValueChangeEvent, ValueWrapper, ViewDropModelUpdateInstruction, ViewProviders, WebLocalStorage, WebSessionStorage, WebappDomainFragmentSpec, WebappDomainSpec, WebappDomainSpecService, WebappDomainSwitcherDirective, WebappUrlFragmentSwitcherConfig, WeightPipe, alphaNumStringComparator, booleanTransformFn, buildFormIntegrationProviders, coerceInterval, coerceIntervalIsoStr, createDataOptionsProvider, createElderDefaultTranslateLoader, createSelectionModel, elderChipColorLevels, elderChipColorStates, elderNamedColorRoles, elderNamedColorToken, elderNamedColors, existingOrNewElderTableModel, initSearchUrlService, isActivePagedDataContext, isContinuableDataContext, isContinuableDataSource, isDataContext, isDataSource, isDataViewMessageType, isElderEntityValueAccessor, isElderMultiEntityValueAccessor, isListDataSource, isLocalListDataSource, isPagedDataSource, lazySample, lazySampleTime, naturalValueComparator, newElderTableModel, provideElderBrandAssets, provideElderDefaults, provideElderLanguage, provideElderTranslate, proxyControlContainer, registerLocale, runInZone, someSignal, themeInit };
39428
39467
  //# sourceMappingURL=elderbyte-ngx-starter.mjs.map