@elderbyte/ngx-starter 21.8.0-beta.0 → 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
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';
@@ -12,42 +12,42 @@ import { Temporal } from '@js-temporal/polyfill';
12
12
  import * as i1$1 from '@angular/common/http';
13
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, provideTranslateService, TranslateLoader, TranslatePipe } 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';
@@ -9485,6 +9485,307 @@ function createElderDefaultTranslateLoader(_httpBackend) {
9485
9485
  ]);
9486
9486
  }
9487
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: () => [] });
9788
+
9488
9789
  class TranslatedEnumValue {
9489
9790
  constructor(value, displayValue) {
9490
9791
  this.value = value;
@@ -9585,7 +9886,7 @@ class ElderEnumTranslationService {
9585
9886
  stringArrayDataSource(values, translationPrefix, sort = true, asc = true) {
9586
9887
  return DelegateListDataSource.listFetcher(() => this.translateStrings(values, translationPrefix, sort, asc), 'value', (id) => this.translateOne(translationPrefix, id));
9587
9888
  }
9588
- 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 }); }
9589
9890
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderEnumTranslationService, providedIn: 'root' }); }
9590
9891
  }
9591
9892
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderEnumTranslationService, decorators: [{
@@ -9593,7 +9894,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
9593
9894
  args: [{
9594
9895
  providedIn: 'root',
9595
9896
  }]
9596
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
9897
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
9597
9898
 
9598
9899
  class CsvSerializer {
9599
9900
  constructor(csvSpec, translateService) {
@@ -9933,7 +10234,7 @@ class ElderUrlFragmentParamsService {
9933
10234
  return new UrlQueryParams();
9934
10235
  }
9935
10236
  }
9936
- 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 }); }
9937
10238
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderUrlFragmentParamsService, providedIn: 'root' }); }
9938
10239
  }
9939
10240
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderUrlFragmentParamsService, decorators: [{
@@ -9941,7 +10242,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
9941
10242
  args: [{
9942
10243
  providedIn: 'root',
9943
10244
  }]
9944
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }] });
10245
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }] });
9945
10246
 
9946
10247
  /**
9947
10248
  * Provides advanced router navigation support for Angular.
@@ -9983,7 +10284,7 @@ class ElderRouterService {
9983
10284
  const url = this.router.serializeUrl(urlTree);
9984
10285
  return this.location.prepareExternalUrl(url);
9985
10286
  }
9986
- 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 }); }
9987
10288
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterService, providedIn: 'root' }); }
9988
10289
  }
9989
10290
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterService, decorators: [{
@@ -9991,7 +10292,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
9991
10292
  args: [{
9992
10293
  providedIn: 'root',
9993
10294
  }]
9994
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i2.Location }] });
10295
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i2.Location }] });
9995
10296
 
9996
10297
  class DomUtil {
9997
10298
  /**
@@ -10068,91 +10369,6 @@ class DomUtil {
10068
10369
  }
10069
10370
  }
10070
10371
 
10071
- class MemoryStorage {
10072
- constructor() {
10073
- this.data = new Map();
10074
- }
10075
- getItem(key) {
10076
- return this.data.get(key);
10077
- }
10078
- setItem(key, value) {
10079
- this.data.set(key, value);
10080
- }
10081
- removeItem(key) {
10082
- this.data.delete(key);
10083
- }
10084
- clear() {
10085
- this.data.clear();
10086
- }
10087
- get length() {
10088
- return this.data.size;
10089
- }
10090
- key(index) {
10091
- throw new Error('Method not supported in Memory Storage.');
10092
- }
10093
- }
10094
- class WebStorageService {
10095
- constructor(storage) {
10096
- this.storage = storage;
10097
- this.logger = LoggerFactory.getLogger(this.constructor.name);
10098
- if (!this.isStorageAvailable()) {
10099
- this.logger.warn('No web storage available. Using in-memory storage fallback.');
10100
- this.storage = new MemoryStorage();
10101
- }
10102
- }
10103
- getItem(key) {
10104
- return this.storage.getItem(key);
10105
- }
10106
- setItem(key, value) {
10107
- this.storage.setItem(key, value);
10108
- }
10109
- removeItem(key) {
10110
- this.storage.removeItem(key);
10111
- }
10112
- clear() {
10113
- this.storage.clear();
10114
- }
10115
- isStorageAvailable() {
10116
- try {
10117
- // The best way to test if functionality is available
10118
- // is just to try and check if it worked or not.
10119
- this.setItem('testKey', 'hi');
10120
- this.getItem('testKey');
10121
- this.removeItem('testKey');
10122
- return true;
10123
- }
10124
- catch (error) {
10125
- return false;
10126
- }
10127
- }
10128
- }
10129
- class WebLocalStorage extends WebStorageService {
10130
- constructor() {
10131
- super(localStorage);
10132
- }
10133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10134
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, providedIn: 'root' }); }
10135
- }
10136
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebLocalStorage, decorators: [{
10137
- type: Injectable,
10138
- args: [{
10139
- providedIn: 'root',
10140
- }]
10141
- }], ctorParameters: () => [] });
10142
- class WebSessionStorage extends WebStorageService {
10143
- constructor() {
10144
- super(sessionStorage);
10145
- }
10146
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10147
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, providedIn: 'root' }); }
10148
- }
10149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: WebSessionStorage, decorators: [{
10150
- type: Injectable,
10151
- args: [{
10152
- providedIn: 'root',
10153
- }]
10154
- }], ctorParameters: () => [] });
10155
-
10156
10372
  const defaultIconSets = [
10157
10373
  { url: 'assets/brand/dist/svg-bundle/elder-svg-icon-set.svg' },
10158
10374
  { url: 'assets/brand/dist/svg-bundle/country-flags.svg', namespace: 'country-flags' },
@@ -10576,7 +10792,7 @@ class ElderThemeToggleComponent {
10576
10792
  }
10577
10793
  }
10578
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 }); }
10579
- 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 }); }
10580
10796
  }
10581
10797
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderThemeToggleComponent, decorators: [{
10582
10798
  type: Component,
@@ -10628,7 +10844,7 @@ class ElderThemeDirective {
10628
10844
  this.matToolbar.color = theme.heroBackground;
10629
10845
  }
10630
10846
  }
10631
- 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 }); }
10632
10848
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderThemeDirective, isStandalone: true, selector: "[elderTheme]", ngImport: i0 }); }
10633
10849
  }
10634
10850
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderThemeDirective, decorators: [{
@@ -10636,7 +10852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
10636
10852
  args: [{
10637
10853
  selector: '[elderTheme]',
10638
10854
  }]
10639
- }], ctorParameters: () => [{ type: i1$5.MatToolbar, decorators: [{
10855
+ }], ctorParameters: () => [{ type: i1$4.MatToolbar, decorators: [{
10640
10856
  type: Optional
10641
10857
  }, {
10642
10858
  type: Host
@@ -10793,6 +11009,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
10793
11009
  }]
10794
11010
  }] });
10795
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
+
10796
11024
  class ElderLabelInputComponent extends FormFieldBaseComponent {
10797
11025
  /***************************************************************************
10798
11026
  * *
@@ -10969,7 +11197,7 @@ class ElderLabelInputComponent extends FormFieldBaseComponent {
10969
11197
  return this._compareWith ? this._compareWith(a, b) : a === b;
10970
11198
  }
10971
11199
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10972
- 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 }); }
10973
11201
  }
10974
11202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelInputComponent, decorators: [{
10975
11203
  type: Component,
@@ -10988,7 +11216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
10988
11216
  MatAutocomplete,
10989
11217
  MatOption,
10990
11218
  AsyncPipe,
10991
- TranslateModule,
11219
+ ElderTranslatePipe,
10992
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" }]
10993
11221
  }], ctorParameters: () => [], propDecorators: { inputControl: [{
10994
11222
  type: ViewChild,
@@ -11020,7 +11248,6 @@ class ElderLabelsModule {
11020
11248
  MatInputModule,
11021
11249
  MatChipsModule,
11022
11250
  MatAutocompleteModule,
11023
- TranslateModule,
11024
11251
  ElderLabelInputComponent], exports: [ElderLabelInputComponent] }); }
11025
11252
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelsModule, imports: [CommonModule,
11026
11253
  FormsModule,
@@ -11029,7 +11256,6 @@ class ElderLabelsModule {
11029
11256
  MatInputModule,
11030
11257
  MatChipsModule,
11031
11258
  MatAutocompleteModule,
11032
- TranslateModule,
11033
11259
  ElderLabelInputComponent] }); }
11034
11260
  }
11035
11261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLabelsModule, decorators: [{
@@ -11043,7 +11269,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
11043
11269
  MatInputModule,
11044
11270
  MatChipsModule,
11045
11271
  MatAutocompleteModule,
11046
- TranslateModule,
11047
11272
  ElderLabelInputComponent,
11048
11273
  ],
11049
11274
  exports: [ElderLabelInputComponent],
@@ -12219,13 +12444,13 @@ class StandardToastComponent {
12219
12444
  return text;
12220
12445
  }
12221
12446
  }
12222
- 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 }); }
12223
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 }); }
12224
12449
  }
12225
12450
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: StandardToastComponent, decorators: [{
12226
12451
  type: Component,
12227
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"] }]
12228
- }], ctorParameters: () => [{ type: i1$6.MatSnackBarRef }, { type: undefined, decorators: [{
12453
+ }], ctorParameters: () => [{ type: i1$5.MatSnackBarRef }, { type: undefined, decorators: [{
12229
12454
  type: Inject,
12230
12455
  args: [MAT_SNACK_BAR_DATA]
12231
12456
  }] }] });
@@ -12441,7 +12666,7 @@ class ElderToastService {
12441
12666
  return this.translate.get(options.msg, options.interpolateParams).pipe(catchError((err) => options.msg) // // no translation found, we use the translation key
12442
12667
  );
12443
12668
  }
12444
- 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 }); }
12445
12670
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToastService, providedIn: 'root' }); }
12446
12671
  }
12447
12672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToastService, decorators: [{
@@ -12449,7 +12674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
12449
12674
  args: [{
12450
12675
  providedIn: 'root',
12451
12676
  }]
12452
- }], ctorParameters: () => [{ type: i1$2.TranslateService }, { type: i1$6.MatSnackBar }] });
12677
+ }], ctorParameters: () => [{ type: ElderTranslateService }, { type: i1$5.MatSnackBar }] });
12453
12678
 
12454
12679
  class BlobContext {
12455
12680
  static textBlob(text, mimeType) {
@@ -12682,11 +12907,11 @@ class ElderDropZoneComponent {
12682
12907
  this.prompt = 'Drop Files here.';
12683
12908
  }
12684
12909
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDropZoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12685
- 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 }); }
12686
12911
  }
12687
12912
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDropZoneComponent, decorators: [{
12688
12913
  type: Component,
12689
- 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"] }]
12690
12915
  }], ctorParameters: () => [], propDecorators: { filesDropped: [{
12691
12916
  type: Output
12692
12917
  }], dragOver: [{
@@ -12787,7 +13012,6 @@ class ElderFileModule {
12787
13012
  MatIconModule,
12788
13013
  MatProgressBarModule,
12789
13014
  ElderPipesModule,
12790
- TranslateModule,
12791
13015
  ElderFileSelectComponent,
12792
13016
  ElderFileUploadComponent,
12793
13017
  ElderFileSelectDirective,
@@ -12805,7 +13029,6 @@ class ElderFileModule {
12805
13029
  MatIconModule,
12806
13030
  MatProgressBarModule,
12807
13031
  ElderPipesModule,
12808
- TranslateModule,
12809
13032
  ElderFileSelectComponent,
12810
13033
  ElderFileUploadComponent,
12811
13034
  ElderDropZoneComponent] }); }
@@ -12820,7 +13043,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
12820
13043
  MatIconModule,
12821
13044
  MatProgressBarModule,
12822
13045
  ElderPipesModule,
12823
- TranslateModule,
12824
13046
  ElderFileSelectComponent,
12825
13047
  ElderFileUploadComponent,
12826
13048
  ElderFileSelectDirective,
@@ -13339,7 +13561,7 @@ class ElderCardStackComponent {
13339
13561
  }
13340
13562
  }
13341
13563
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCardStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13342
- 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 }); }
13343
13565
  }
13344
13566
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCardStackComponent, decorators: [{
13345
13567
  type: Component,
@@ -13353,7 +13575,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
13353
13575
  NgClass,
13354
13576
  NgTemplateOutlet,
13355
13577
  AsyncPipe,
13356
- TranslateModule,
13578
+ ElderTranslatePipe,
13357
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"] }]
13358
13580
  }], ctorParameters: () => [], propDecorators: { stackId: [{
13359
13581
  type: Input
@@ -13528,8 +13750,6 @@ class ElderCardModule {
13528
13750
  // Angular
13529
13751
  CommonModule,
13530
13752
  RouterModule,
13531
- // Third Party
13532
- TranslateModule,
13533
13753
  MatCardModule,
13534
13754
  ElderCardComponent,
13535
13755
  ElderCardTitleDirective,
@@ -13548,8 +13768,6 @@ class ElderCardModule {
13548
13768
  // Angular
13549
13769
  CommonModule,
13550
13770
  RouterModule,
13551
- // Third Party
13552
- TranslateModule,
13553
13771
  MatCardModule,
13554
13772
  ElderCardComponent] }); }
13555
13773
  }
@@ -13560,8 +13778,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
13560
13778
  // Angular
13561
13779
  CommonModule,
13562
13780
  RouterModule,
13563
- // Third Party
13564
- TranslateModule,
13565
13781
  MatCardModule,
13566
13782
  ElderCardComponent,
13567
13783
  ElderCardTitleDirective,
@@ -13681,7 +13897,6 @@ class ElderCardOrganizerModule {
13681
13897
  MatDividerModule,
13682
13898
  MatRippleModule,
13683
13899
  DragDropModule,
13684
- TranslateModule,
13685
13900
  ElderCardModule,
13686
13901
  ElderCardOrganizerComponent,
13687
13902
  ElderCardStackComponent,
@@ -13692,7 +13907,6 @@ class ElderCardOrganizerModule {
13692
13907
  MatDividerModule,
13693
13908
  MatRippleModule,
13694
13909
  DragDropModule,
13695
- TranslateModule,
13696
13910
  ElderCardModule,
13697
13911
  ElderCardOrganizerComponent,
13698
13912
  ElderCardStackComponent] }); }
@@ -13707,7 +13921,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
13707
13921
  MatDividerModule,
13708
13922
  MatRippleModule,
13709
13923
  DragDropModule,
13710
- TranslateModule,
13711
13924
  ElderCardModule,
13712
13925
  ElderCardOrganizerComponent,
13713
13926
  ElderCardStackComponent,
@@ -14707,7 +14920,7 @@ class ElderCompositeSortComponent {
14707
14920
  }
14708
14921
  }
14709
14922
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCompositeSortComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14710
- 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 }); }
14711
14924
  }
14712
14925
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderCompositeSortComponent, decorators: [{
14713
14926
  type: Component,
@@ -14717,7 +14930,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14717
14930
  MatIconButton,
14718
14931
  MatMenu,
14719
14932
  MatMenuItem,
14720
- TranslateModule,
14933
+ ElderTranslatePipe,
14721
14934
  MatMenuTrigger,
14722
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" }]
14723
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 }] }] } });
@@ -14779,8 +14992,8 @@ class ElderConfirmDialogComponent {
14779
14992
  this.dialogRef = dialogRef;
14780
14993
  this.yesNo = false;
14781
14994
  }
14782
- 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 }); }
14783
- 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 }); }
14784
14997
  }
14785
14998
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderConfirmDialogComponent, decorators: [{
14786
14999
  type: Component,
@@ -14791,11 +15004,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14791
15004
  MatIconButton,
14792
15005
  MatDialogClose,
14793
15006
  MatIcon,
14794
- TranslateModule,
15007
+ ElderTranslatePipe,
14795
15008
  CdkTrapFocus,
14796
15009
  MatButton,
14797
- ], 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" }]
14798
- }], 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 }] });
14799
15012
 
14800
15013
  class QuestionDialogConfig extends ElderDialogConfig {
14801
15014
  }
@@ -14814,8 +15027,8 @@ class ElderQuestionDialogComponent {
14814
15027
  get isValid() {
14815
15028
  return !!this.answer;
14816
15029
  }
14817
- 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 }); }
14818
- 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 }); }
14819
15032
  }
14820
15033
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuestionDialogComponent, decorators: [{
14821
15034
  type: Component,
@@ -14831,9 +15044,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14831
15044
  MatFormField,
14832
15045
  MatInput,
14833
15046
  MatButton,
14834
- TranslateModule,
15047
+ ElderTranslatePipe,
14835
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" }]
14836
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
15049
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
14837
15050
  type: Inject,
14838
15051
  args: [MAT_DIALOG_DATA]
14839
15052
  }] }] });
@@ -14856,13 +15069,13 @@ class ElderSelectionDialogComponent {
14856
15069
  confirmSelection() {
14857
15070
  this.dialogRef.close();
14858
15071
  }
14859
- 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 }); }
14860
- 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 }); }
14861
15074
  }
14862
15075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogComponent, decorators: [{
14863
15076
  type: Component,
14864
- 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" }]
14865
- }], 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: [{
14866
15079
  type: Inject,
14867
15080
  args: [MAT_DIALOG_DATA]
14868
15081
  }] }], propDecorators: { title: [{
@@ -14896,7 +15109,7 @@ class ElderSelectionDialogDirective {
14896
15109
  });
14897
15110
  dialogRef.afterClosed().subscribe((result) => this.close.emit(result));
14898
15111
  }
14899
- 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 }); }
14900
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 }); }
14901
15114
  }
14902
15115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectionDialogDirective, decorators: [{
@@ -14905,7 +15118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14905
15118
  selector: '[elderDialog]',
14906
15119
  exportAs: 'elderSelection',
14907
15120
  }]
14908
- }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i1$7.MatDialog }], propDecorators: { selectionModel: [{
15121
+ }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i1$6.MatDialog }], propDecorators: { selectionModel: [{
14909
15122
  type: Input
14910
15123
  }], close: [{
14911
15124
  type: Output
@@ -14934,11 +15147,11 @@ class ElderHeaderComponent {
14934
15147
  **************************************************************************/
14935
15148
  ngOnInit() { }
14936
15149
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14937
- 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 }); }
14938
15151
  }
14939
15152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderComponent, decorators: [{
14940
15153
  type: Component,
14941
- 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"] }]
14942
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 }] }] } });
14943
15156
 
14944
15157
  class ElderHeaderModule {
@@ -14947,18 +15160,12 @@ class ElderHeaderModule {
14947
15160
  // Angular
14948
15161
  CommonModule,
14949
15162
  RouterModule,
14950
- // Third Party
14951
- TranslateModule,
14952
15163
  // Angular Material
14953
15164
  ElderHeaderComponent], exports: [ElderHeaderComponent] }); }
14954
15165
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderModule, imports: [
14955
15166
  // Angular
14956
15167
  CommonModule,
14957
- RouterModule,
14958
- // Third Party
14959
- TranslateModule,
14960
- // Angular Material
14961
- ElderHeaderComponent] }); }
15168
+ RouterModule] }); }
14962
15169
  }
14963
15170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderHeaderModule, decorators: [{
14964
15171
  type: NgModule,
@@ -14967,8 +15174,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
14967
15174
  // Angular
14968
15175
  CommonModule,
14969
15176
  RouterModule,
14970
- // Third Party
14971
- TranslateModule,
14972
15177
  // Angular Material
14973
15178
  ElderHeaderComponent,
14974
15179
  ],
@@ -15120,7 +15325,7 @@ class ElderDialogService {
15120
15325
  matConfig.height = '40vh';
15121
15326
  return matConfig;
15122
15327
  }
15123
- 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 }); }
15124
15329
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogService, providedIn: 'root' }); }
15125
15330
  }
15126
15331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogService, decorators: [{
@@ -15128,7 +15333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
15128
15333
  args: [{
15129
15334
  providedIn: 'root',
15130
15335
  }]
15131
- }], ctorParameters: () => [{ type: i1$7.MatDialog }, { type: i1$2.TranslateService }] });
15336
+ }], ctorParameters: () => [{ type: i1$6.MatDialog }, { type: ElderTranslateService }] });
15132
15337
 
15133
15338
  class ElderDialogModule {
15134
15339
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -15140,7 +15345,6 @@ class ElderDialogModule {
15140
15345
  MatToolbarModule,
15141
15346
  MatInputModule,
15142
15347
  A11yModule,
15143
- TranslateModule,
15144
15348
  ElderThemeModule,
15145
15349
  ElderHeaderModule,
15146
15350
  ElderConfirmDialogComponent,
@@ -15158,7 +15362,6 @@ class ElderDialogModule {
15158
15362
  MatToolbarModule,
15159
15363
  MatInputModule,
15160
15364
  A11yModule,
15161
- TranslateModule,
15162
15365
  ElderThemeModule,
15163
15366
  ElderHeaderModule,
15164
15367
  ElderConfirmDialogComponent,
@@ -15177,7 +15380,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
15177
15380
  MatToolbarModule,
15178
15381
  MatInputModule,
15179
15382
  A11yModule,
15180
- TranslateModule,
15181
15383
  ElderThemeModule,
15182
15384
  ElderHeaderModule,
15183
15385
  ElderConfirmDialogComponent,
@@ -15577,11 +15779,11 @@ class DataContextStateIndicatorComponent {
15577
15779
  this.dataContext$.next(dataContext);
15578
15780
  }
15579
15781
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DataContextStateIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15580
- 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 }); }
15581
15783
  }
15582
15784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DataContextStateIndicatorComponent, decorators: [{
15583
15785
  type: Component,
15584
- 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"] }]
15585
15787
  }], ctorParameters: () => [], propDecorators: { dataContext: [{
15586
15788
  type: Input
15587
15789
  }] } });
@@ -16632,8 +16834,6 @@ class ElderDataCommonModule {
16632
16834
  MatProgressBarModule,
16633
16835
  MatDialogModule,
16634
16836
  MatTooltipModule,
16635
- // translations
16636
- TranslateModule,
16637
16837
  DragDropModule,
16638
16838
  ElderDataToolbarComponent,
16639
16839
  ElderToolbarContentDirective,
@@ -16668,8 +16868,6 @@ class ElderDataCommonModule {
16668
16868
  MatProgressBarModule,
16669
16869
  MatDialogModule,
16670
16870
  MatTooltipModule,
16671
- // translations
16672
- TranslateModule,
16673
16871
  DragDropModule,
16674
16872
  ElderDataToolbarComponent,
16675
16873
  ElderCompositeSortComponent,
@@ -16692,8 +16890,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
16692
16890
  MatProgressBarModule,
16693
16891
  MatDialogModule,
16694
16892
  MatTooltipModule,
16695
- // translations
16696
- TranslateModule,
16697
16893
  DragDropModule,
16698
16894
  ElderDataToolbarComponent,
16699
16895
  ElderToolbarContentDirective,
@@ -17338,7 +17534,7 @@ class ElderTableColumnDirective {
17338
17534
  constructor(cdkColumn) {
17339
17535
  this.cdkColumn = cdkColumn;
17340
17536
  }
17341
- 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 }); }
17342
17538
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderTableColumnDirective, isStandalone: true, selector: "th[elderColumnDef]", ngImport: i0 }); }
17343
17539
  }
17344
17540
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTableColumnDirective, decorators: [{
@@ -17346,7 +17542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
17346
17542
  args: [{
17347
17543
  selector: 'th[elderColumnDef]',
17348
17544
  }]
17349
- }], ctorParameters: () => [{ type: i1$8.CdkColumnDef }] });
17545
+ }], ctorParameters: () => [{ type: i1$7.CdkColumnDef }] });
17350
17546
 
17351
17547
  class ElderTableModelQueryGroup {
17352
17548
  /***************************************************************************
@@ -18212,7 +18408,7 @@ class ElderInfiniteAutocompleteDirective {
18212
18408
  this.unsubscribe$.next();
18213
18409
  this.unsubscribe$.complete();
18214
18410
  }
18215
- 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 }); }
18216
18412
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderInfiniteAutocompleteDirective, isStandalone: true, selector: "mat-autocomplete[elderElderInfiniteAutocomplete]", ngImport: i0 }); }
18217
18413
  }
18218
18414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInfiniteAutocompleteDirective, decorators: [{
@@ -18220,7 +18416,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
18220
18416
  args: [{
18221
18417
  selector: 'mat-autocomplete[elderElderInfiniteAutocomplete]',
18222
18418
  }]
18223
- }], ctorParameters: () => [{ type: i1$9.MatAutocomplete, decorators: [{
18419
+ }], ctorParameters: () => [{ type: i1$8.MatAutocomplete, decorators: [{
18224
18420
  type: Host
18225
18421
  }] }, { type: ElderInfiniteScrollDirective, decorators: [{
18226
18422
  type: Host
@@ -18300,12 +18496,12 @@ class ElderPaginatorIntl extends MatPaginatorIntl {
18300
18496
  previousPageLabel !== this._previousPageKey ? previousPageLabel : 'Previous page';
18301
18497
  this.changes.next();
18302
18498
  }
18303
- 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 }); }
18304
18500
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPaginatorIntl }); }
18305
18501
  }
18306
18502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPaginatorIntl, decorators: [{
18307
18503
  type: Injectable
18308
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
18504
+ }], ctorParameters: () => [{ type: i1$9.TranslateService }] });
18309
18505
 
18310
18506
  class ElderDelayedFocusDirective {
18311
18507
  constructor(el) {
@@ -18361,7 +18557,7 @@ class ElderTouchedDirective {
18361
18557
  control.markAsTouched();
18362
18558
  }
18363
18559
  }
18364
- 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 }); }
18365
18561
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderTouchedDirective, isStandalone: true, selector: "[elderTouched]", ngImport: i0 }); }
18366
18562
  }
18367
18563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTouchedDirective, decorators: [{
@@ -18369,7 +18565,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
18369
18565
  args: [{
18370
18566
  selector: '[elderTouched]',
18371
18567
  }]
18372
- }], ctorParameters: () => [{ type: i1$4.NgControl }] });
18568
+ }], ctorParameters: () => [{ type: i1$3.NgControl }] });
18373
18569
 
18374
18570
  /**
18375
18571
  * This directive provides a parent form to any kind of nested control
@@ -19334,7 +19530,7 @@ class ElderTripleStateCheckboxDirective {
19334
19530
  toggleNextState() {
19335
19531
  this.controller.toggleNextState();
19336
19532
  }
19337
- 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 }); }
19338
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 }); }
19339
19535
  }
19340
19536
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTripleStateCheckboxDirective, decorators: [{
@@ -19342,7 +19538,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19342
19538
  args: [{
19343
19539
  selector: 'mat-checkbox[elderTripleStateCheckbox]',
19344
19540
  }]
19345
- }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$4.NgModel, decorators: [{
19541
+ }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$3.NgModel, decorators: [{
19346
19542
  type: Optional
19347
19543
  }] }], propDecorators: { valueChange: [{
19348
19544
  type: Output
@@ -19648,7 +19844,7 @@ class CommonValidationMessageStrategy {
19648
19844
  }
19649
19845
  return undefined;
19650
19846
  }
19651
- 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 }); }
19652
19848
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonValidationMessageStrategy, providedIn: 'root' }); }
19653
19849
  }
19654
19850
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CommonValidationMessageStrategy, decorators: [{
@@ -19656,7 +19852,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19656
19852
  args: [{
19657
19853
  providedIn: 'root',
19658
19854
  }]
19659
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
19855
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
19660
19856
 
19661
19857
  class DynamicValidationMessageStrategy {
19662
19858
  /***************************************************************************
@@ -19693,7 +19889,7 @@ class DynamicValidationMessageStrategy {
19693
19889
  renderDynamicMessage(message) {
19694
19890
  return this.translateService.instant(message.message, message.messageParams);
19695
19891
  }
19696
- 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 }); }
19697
19893
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DynamicValidationMessageStrategy, providedIn: 'root' }); }
19698
19894
  }
19699
19895
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DynamicValidationMessageStrategy, decorators: [{
@@ -19701,7 +19897,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19701
19897
  args: [{
19702
19898
  providedIn: 'root',
19703
19899
  }]
19704
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
19900
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
19705
19901
 
19706
19902
  class ValidationMessageRendererService {
19707
19903
  /***************************************************************************
@@ -19956,7 +20152,7 @@ class ElderSingleStateCheckboxDirective {
19956
20152
  toggleNextState() {
19957
20153
  this.controller.toggleNextState();
19958
20154
  }
19959
- 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 }); }
19960
20156
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderSingleStateCheckboxDirective, isStandalone: true, selector: "mat-checkbox[elderSingleStateCheckbox]", ngImport: i0 }); }
19961
20157
  }
19962
20158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSingleStateCheckboxDirective, decorators: [{
@@ -19964,7 +20160,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
19964
20160
  args: [{
19965
20161
  selector: 'mat-checkbox[elderSingleStateCheckbox]',
19966
20162
  }]
19967
- }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$4.NgModel }] });
20163
+ }], ctorParameters: () => [{ type: i1$b.MatCheckbox }, { type: i1$3.NgModel }] });
19968
20164
 
19969
20165
  class ElderFormsDirectivesModule {
19970
20166
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderFormsDirectivesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -21079,7 +21275,6 @@ class ElderGridModule {
21079
21275
  MatSelectModule,
21080
21276
  DragDropModule,
21081
21277
  ScrollingModule,
21082
- TranslateModule,
21083
21278
  ElderDataCommonModule,
21084
21279
  ElderInfiniteScrollModule,
21085
21280
  ElderFormsDirectivesModule,
@@ -21106,7 +21301,6 @@ class ElderGridModule {
21106
21301
  MatSelectModule,
21107
21302
  DragDropModule,
21108
21303
  ScrollingModule,
21109
- TranslateModule,
21110
21304
  ElderDataCommonModule,
21111
21305
  ElderInfiniteScrollModule,
21112
21306
  ElderFormsDirectivesModule,
@@ -21129,7 +21323,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21129
21323
  MatSelectModule,
21130
21324
  DragDropModule,
21131
21325
  ScrollingModule,
21132
- TranslateModule,
21133
21326
  ElderDataCommonModule,
21134
21327
  ElderInfiniteScrollModule,
21135
21328
  ElderFormsDirectivesModule,
@@ -21554,143 +21747,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21554
21747
  type: Input
21555
21748
  }] } });
21556
21749
 
21557
- const ELDER_LANGUAGE_OPTIONS = new InjectionToken('ELDER_LANGUAGE_OPTIONS');
21558
-
21559
- const LANGUAGE_STORAGE_KEY = 'language';
21560
- const DEFAULT_LANGS = ['de', 'en'];
21561
- const DEFAULT_FALLBACK_LANG = 'de';
21562
- class ElderLanguageService {
21563
- /***************************************************************************
21564
- * *
21565
- * Legacy Compatiblity *
21566
- * *
21567
- **************************************************************************/
21568
- get currentLanguage$() {
21569
- return toObservable(this.currentLang);
21570
- }
21571
- /***************************************************************************
21572
- * *
21573
- * Constructor *
21574
- * *
21575
- **************************************************************************/
21576
- constructor() {
21577
- this.webStorage = inject(WebLocalStorage);
21578
- this.config = inject(ELDER_LANGUAGE_OPTIONS);
21579
- this.logger = LoggerFactory.getLogger(this.constructor.name);
21580
- /***************************************************************************
21581
- * *
21582
- * State *
21583
- * *
21584
- **************************************************************************/
21585
- this._langs = signal(null, ...(ngDevMode ? [{ debugName: "_langs" }] : /* istanbul ignore next */ []));
21586
- this._defaultLang = signal(null, ...(ngDevMode ? [{ debugName: "_defaultLang" }] : /* istanbul ignore next */ []));
21587
- this._currentLang = signal(null, ...(ngDevMode ? [{ debugName: "_currentLang" }] : /* istanbul ignore next */ []));
21588
- this._browserLang = getBrowserPreferredLang();
21589
- this._storedPreferredLang = this.getStoredPreferredLang();
21590
- /***************************************************************************
21591
- * *
21592
- * Computed *
21593
- * *
21594
- **************************************************************************/
21595
- this.currentLang = this._currentLang.asReadonly();
21596
- this.defaultLang = this._defaultLang.asReadonly();
21597
- this.langs = this._langs.asReadonly();
21598
- }
21599
- /***************************************************************************
21600
- * *
21601
- * Public API *
21602
- * *
21603
- **************************************************************************/
21604
- setCurrentLang(lang) {
21605
- if (!this.isSupported(lang)) {
21606
- this.logger.warn('cannot set lang', lang, 'since it is not in supported langs', this._langs());
21607
- return;
21608
- }
21609
- this.logger.warn('setting lang', lang);
21610
- this.webStorage.setItem(LANGUAGE_STORAGE_KEY, lang);
21611
- this._currentLang.set(lang);
21612
- }
21613
- init() {
21614
- this.logger.warn('initializing elder language service...');
21615
- if (this._currentLang()) {
21616
- this.logger.warn('elder language service already initialized, skipping...');
21617
- return;
21618
- }
21619
- this.setLangs(this.config?.langs);
21620
- this.setDefaultLang(this.config?.defaultLang);
21621
- this.setInitialLang();
21622
- }
21623
- /***************************************************************************
21624
- * *
21625
- * Private Methods *
21626
- * *
21627
- **************************************************************************/
21628
- setLangs(langs) {
21629
- if (!langs?.length) {
21630
- throw new Error('Cannot set langs since it is not an array or empty');
21631
- }
21632
- this._langs.set(langs);
21633
- }
21634
- setDefaultLang(lang) {
21635
- if (!this._langs().includes(lang)) {
21636
- throw new Error(`Cannot set default lang ${lang} since it is not in supported langs ${this._langs()}`);
21637
- }
21638
- this._defaultLang.set(lang);
21639
- }
21640
- setInitialLang() {
21641
- if (this._storedPreferredLang && this.isSupported(this._storedPreferredLang)) {
21642
- this._currentLang.set(this._storedPreferredLang);
21643
- return;
21644
- }
21645
- if (this._browserLang && this.isSupported(this._browserLang)) {
21646
- this._currentLang.set(this._browserLang);
21647
- return;
21648
- }
21649
- this._currentLang.set(this._defaultLang());
21650
- }
21651
- isSupported(lang) {
21652
- return this._langs().includes(lang);
21653
- }
21654
- getStoredPreferredLang() {
21655
- return this.webStorage.getItem(LANGUAGE_STORAGE_KEY);
21656
- }
21657
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21658
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, providedIn: 'root' }); }
21659
- }
21660
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageService, decorators: [{
21661
- type: Injectable,
21662
- args: [{
21663
- providedIn: 'root',
21664
- }]
21665
- }], ctorParameters: () => [] });
21666
- /***************************************************************************
21667
- * *
21668
- * Helper Functions *
21669
- * *
21670
- **************************************************************************/
21671
- /**
21672
- * Browser Language code: "de", "fr", "en", etc.
21673
- */
21674
- function getBrowserPreferredLang() {
21675
- if (typeof window === 'undefined' || !window.navigator) {
21676
- return undefined;
21677
- }
21678
- const cultureLang = getBrowserCultureLang();
21679
- if (!cultureLang || typeof cultureLang !== 'string') {
21680
- return undefined;
21681
- }
21682
- return cultureLang.split(/[-_]/)[0];
21683
- }
21684
- /**
21685
- * Browser Culture language code: "ch-DE", "fr-FR", "en-US", etc.
21686
- */
21687
- function getBrowserCultureLang() {
21688
- if (typeof window === 'undefined' || !window.navigator) {
21689
- return undefined;
21690
- }
21691
- return window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
21692
- }
21693
-
21694
21750
  class ElderLanguageSwitcherComponent {
21695
21751
  /***************************************************************************
21696
21752
  * *
@@ -21733,7 +21789,7 @@ class ElderLanguageSwitcherComponent {
21733
21789
  return this.language.currentLang() === lang;
21734
21790
  }
21735
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 }); }
21736
- 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 }); }
21737
21793
  }
21738
21794
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageSwitcherComponent, decorators: [{
21739
21795
  type: Component,
@@ -21747,7 +21803,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21747
21803
  MatSelect,
21748
21804
  FormsModule,
21749
21805
  MatOption,
21750
- TranslateModule,
21806
+ ElderTranslatePipe,
21751
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"] }]
21752
21808
  }], ctorParameters: () => [{ type: ElderLanguageService }], propDecorators: { slimMode: [{
21753
21809
  type: Input
@@ -21821,7 +21877,7 @@ class ElderToolbarTitleService {
21821
21877
  }
21822
21878
  return resolvedTitle;
21823
21879
  }
21824
- 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 }); }
21825
21881
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleService, providedIn: 'root' }); }
21826
21882
  }
21827
21883
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleService, decorators: [{
@@ -21829,7 +21885,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21829
21885
  args: [{
21830
21886
  providedIn: 'root',
21831
21887
  }]
21832
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }] });
21888
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }] });
21833
21889
 
21834
21890
  class ElderToolbarTitleComponent {
21835
21891
  /***************************************************************************
@@ -21854,13 +21910,13 @@ class ElderToolbarTitleComponent {
21854
21910
  this.toolbarService.updateTitle(this.activatedRoute);
21855
21911
  }, 10);
21856
21912
  }
21857
- 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 }); }
21858
- 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 }); }
21859
21915
  }
21860
21916
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarTitleComponent, decorators: [{
21861
21917
  type: Component,
21862
- args: [{ selector: 'elder-toolbar-title', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AsyncPipe, TranslateModule], template: "<h3 class=\"mat-headline-6\">{{ title$ | async | translate }}</h3>\n" }]
21863
- }], 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 }] });
21864
21920
 
21865
21921
  class ElderToolbarComponent {
21866
21922
  /***************************************************************************
@@ -21946,7 +22002,7 @@ class ElderDetailDialogComponent {
21946
22002
  close() {
21947
22003
  this.dialogRef.close(this.entity$.getValue());
21948
22004
  }
21949
- 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 }); }
21950
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 }); }
21951
22007
  }
21952
22008
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDetailDialogComponent, decorators: [{
@@ -21959,7 +22015,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
21959
22015
  NgTemplateOutlet,
21960
22016
  AsyncPipe,
21961
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" }]
21962
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef, decorators: [{
22018
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef, decorators: [{
21963
22019
  type: Optional
21964
22020
  }] }, { type: undefined, decorators: [{
21965
22021
  type: Optional
@@ -22077,7 +22133,7 @@ class ElderMasterDetailComponent {
22077
22133
  this.dialogRef.close();
22078
22134
  }
22079
22135
  }
22080
- 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 }); }
22081
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 }); }
22082
22138
  }
22083
22139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderMasterDetailComponent, decorators: [{
@@ -22085,7 +22141,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
22085
22141
  args: [{ selector: 'elder-master-detail', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ElderMasterDetailProvider.ExistingOrNewMasterDetailService], imports: [NgTemplateOutlet, ElderBasicPaneLayoutComponent], host: {
22086
22142
  class: 'layout-col flex p-pane',
22087
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" }]
22088
- }], 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: [{
22089
22145
  type: ContentChild,
22090
22146
  args: [ElderMasterDirective, { read: TemplateRef, static: false }]
22091
22147
  }], detail: [{
@@ -22235,7 +22291,7 @@ class ElderQuantityFormFieldComponent extends ElderFromFieldCustomizableBase {
22235
22291
  this.floatLabel = 'auto';
22236
22292
  }
22237
22293
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuantityFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
22238
- 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 }); }
22239
22295
  }
22240
22296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuantityFormFieldComponent, decorators: [{
22241
22297
  type: Component,
@@ -22247,7 +22303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
22247
22303
  MatHint,
22248
22304
  MatError,
22249
22305
  ElderValidationErrorDirective,
22250
- TranslateModule,
22306
+ ElderTranslatePipe,
22251
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" }]
22252
22308
  }], ctorParameters: () => [] });
22253
22309
 
@@ -23057,8 +23113,8 @@ class TemplatedSelectionDialogComponent {
23057
23113
  **************************************************************************/
23058
23114
  this.log = LoggerFactory.getLogger(this.constructor.name);
23059
23115
  }
23060
- 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 }); }
23061
- 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 }); }
23062
23118
  }
23063
23119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: TemplatedSelectionDialogComponent, decorators: [{
23064
23120
  type: Component,
@@ -23071,9 +23127,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
23071
23127
  MatButton,
23072
23128
  NgTemplateOutlet,
23073
23129
  AsyncPipe,
23074
- TranslateModule,
23130
+ ElderTranslatePipe,
23075
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" }]
23076
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
23132
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
23077
23133
  type: Inject,
23078
23134
  args: [MAT_DIALOG_DATA]
23079
23135
  }] }, { type: SelectionModel }] });
@@ -23160,7 +23216,7 @@ class SelectionModelPopupDirective {
23160
23216
  viewContainerRef: this.viewContainer,
23161
23217
  });
23162
23218
  }
23163
- 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 }); }
23164
23220
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: SelectionModelPopupDirective, isStandalone: true, selector: "[elderSelectionModelPopup]", inputs: { elderSelectionModelPopupTransform: "elderSelectionModelPopupTransform" }, providers: [
23165
23221
  {
23166
23222
  provide: SelectionModel,
@@ -23190,7 +23246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
23190
23246
  ElderTableProviders.ClearTableModel, // Since this popup is frequently used inside an elder-table search box
23191
23247
  ],
23192
23248
  }]
23193
- }], 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: [{
23194
23250
  type: Input
23195
23251
  }] } });
23196
23252
 
@@ -23619,7 +23675,7 @@ class ElderAutocompleteDirective {
23619
23675
  this.logger.warn('No DataContext available to update suggestions!');
23620
23676
  }
23621
23677
  }
23622
- 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 }); }
23623
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 }); }
23624
23680
  }
23625
23681
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteDirective, decorators: [{
@@ -23627,7 +23683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
23627
23683
  args: [{
23628
23684
  selector: '[elderAutocomplete]',
23629
23685
  }]
23630
- }], ctorParameters: () => [{ type: i1$9.MatAutocompleteTrigger }], propDecorators: { queryFilter: [{
23686
+ }], ctorParameters: () => [{ type: i1$8.MatAutocompleteTrigger }], propDecorators: { queryFilter: [{
23631
23687
  type: Input
23632
23688
  }], filters: [{
23633
23689
  type: Input
@@ -24430,7 +24486,7 @@ class ElderSelectComponent extends ElderSelectBase {
24430
24486
  provide: ELDER_SELECT_BASE,
24431
24487
  useExisting: forwardRef(() => ElderSelectComponent),
24432
24488
  },
24433
- ], 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 }); }
24434
24490
  }
24435
24491
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSelectComponent, decorators: [{
24436
24492
  type: Component,
@@ -24451,7 +24507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
24451
24507
  ElderSuggestionPanelComponent,
24452
24508
  MatIconButton,
24453
24509
  ElderStopEventPropagationDirective,
24454
- TranslateModule,
24510
+ ElderTranslatePipe,
24455
24511
  ElderAutoSelectSuggestFirstDirective,
24456
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"] }]
24457
24513
  }], ctorParameters: () => [], propDecorators: { inputRef: [{
@@ -24675,11 +24731,11 @@ class ElderQuantityInputControlComponent extends ElderFormFieldControlBase {
24675
24731
  return a?.value === b?.value && a?.unit === b?.unit;
24676
24732
  }
24677
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 }); }
24678
- 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 }); }
24679
24735
  }
24680
24736
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderQuantityInputControlComponent, decorators: [{
24681
24737
  type: Component,
24682
- 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"] }]
24683
24739
  }], ctorParameters: () => [{ type: ElderUnitService }], propDecorators: { inputRef: [{
24684
24740
  type: ViewChild,
24685
24741
  args: ['input']
@@ -24910,11 +24966,11 @@ class ElderDimensionsInputComponent extends ElderFormFieldControlBase {
24910
24966
  return Dimensions.from(this.unit, this.lengthValue, this.widthValue, value);
24911
24967
  }
24912
24968
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDimensionsInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24913
- 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 }); }
24914
24970
  }
24915
24971
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDimensionsInputComponent, decorators: [{
24916
24972
  type: Component,
24917
- 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" }]
24918
24974
  }], ctorParameters: () => [], propDecorators: { name: [{
24919
24975
  type: Input
24920
24976
  }], appearance: [{
@@ -25196,8 +25252,6 @@ class ElderMeasuresModule {
25196
25252
  CommonModule,
25197
25253
  RouterModule,
25198
25254
  FormsModule,
25199
- // Third Party
25200
- TranslateModule,
25201
25255
  // Angular Material
25202
25256
  MatIconModule,
25203
25257
  MatInputModule,
@@ -25225,8 +25279,6 @@ class ElderMeasuresModule {
25225
25279
  CommonModule,
25226
25280
  RouterModule,
25227
25281
  FormsModule,
25228
- // Third Party
25229
- TranslateModule,
25230
25282
  // Angular Material
25231
25283
  MatIconModule,
25232
25284
  MatInputModule,
@@ -25244,8 +25296,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
25244
25296
  CommonModule,
25245
25297
  RouterModule,
25246
25298
  FormsModule,
25247
- // Third Party
25248
- TranslateModule,
25249
25299
  // Angular Material
25250
25300
  MatIconModule,
25251
25301
  MatInputModule,
@@ -25501,7 +25551,7 @@ class ElderAutocompleteManyDirective {
25501
25551
  // The wordAtCursor might not be the full autocompleted phrase (if there are multiple words)
25502
25552
  this.cursorPosition = wordAtCursor.start + autocompletedPhrase.length;
25503
25553
  }
25504
- 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 }); }
25505
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 }); }
25506
25556
  }
25507
25557
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAutocompleteManyDirective, decorators: [{
@@ -25509,7 +25559,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
25509
25559
  args: [{
25510
25560
  selector: '[elderAutocompleteMany]',
25511
25561
  }]
25512
- }], ctorParameters: () => [{ type: i1$9.MatAutocompleteTrigger }, { type: i0.ElementRef }], propDecorators: { queryFilter: [{
25562
+ }], ctorParameters: () => [{ type: i1$8.MatAutocompleteTrigger }, { type: i0.ElementRef }], propDecorators: { queryFilter: [{
25513
25563
  type: Input
25514
25564
  }], filters: [{
25515
25565
  type: Input
@@ -26711,8 +26761,6 @@ class ElderChipsModule {
26711
26761
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderChipsModule, imports: [
26712
26762
  // Angular
26713
26763
  CommonModule,
26714
- // Third Party
26715
- TranslateModule,
26716
26764
  // Material
26717
26765
  MatChipsModule,
26718
26766
  A11yModule,
@@ -26720,8 +26768,6 @@ class ElderChipsModule {
26720
26768
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderChipsModule, imports: [
26721
26769
  // Angular
26722
26770
  CommonModule,
26723
- // Third Party
26724
- TranslateModule,
26725
26771
  // Material
26726
26772
  MatChipsModule,
26727
26773
  A11yModule] }); }
@@ -26732,8 +26778,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
26732
26778
  imports: [
26733
26779
  // Angular
26734
26780
  CommonModule,
26735
- // Third Party
26736
- TranslateModule,
26737
26781
  // Material
26738
26782
  MatChipsModule,
26739
26783
  A11yModule,
@@ -28167,7 +28211,7 @@ class ElderSearchIncludeExcludeDirective {
28167
28211
  extractName() {
28168
28212
  return this.ngModel?.name;
28169
28213
  }
28170
- 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 }); }
28171
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 }); }
28172
28216
  }
28173
28217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchIncludeExcludeDirective, decorators: [{
@@ -28176,7 +28220,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28176
28220
  selector: '[elderSearchIncludeExclude]',
28177
28221
  exportAs: 'elderSearchInput',
28178
28222
  }]
28179
- }], 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: [{
28180
28224
  type: Optional
28181
28225
  }, {
28182
28226
  type: Host
@@ -28208,7 +28252,6 @@ class ElderSelectModule {
28208
28252
  MatTooltipModule,
28209
28253
  CdkDropList,
28210
28254
  CdkDrag,
28211
- TranslateModule,
28212
28255
  ElderFormsDirectivesModule,
28213
28256
  ElderTableModule,
28214
28257
  ElderInfiniteScrollModule,
@@ -28268,7 +28311,6 @@ class ElderSelectModule {
28268
28311
  MatProgressSpinnerModule,
28269
28312
  MatChipsModule,
28270
28313
  MatTooltipModule,
28271
- TranslateModule,
28272
28314
  ElderFormsDirectivesModule,
28273
28315
  ElderTableModule,
28274
28316
  ElderInfiniteScrollModule,
@@ -28303,7 +28345,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28303
28345
  MatTooltipModule,
28304
28346
  CdkDropList,
28305
28347
  CdkDrag,
28306
- TranslateModule,
28307
28348
  ElderFormsDirectivesModule,
28308
28349
  ElderTableModule,
28309
28350
  ElderInfiniteScrollModule,
@@ -28369,8 +28410,6 @@ class ElderToolbarModule {
28369
28410
  MatButtonModule,
28370
28411
  MatIconModule,
28371
28412
  MatBadgeModule,
28372
- // translations
28373
- TranslateModule,
28374
28413
  ElderToolbarComponent,
28375
28414
  ElderToolbarColumnDirective,
28376
28415
  ElderToolbarTitleComponent], exports: [ElderToolbarComponent, ElderToolbarColumnDirective, ElderToolbarTitleComponent] }); }
@@ -28386,10 +28425,7 @@ class ElderToolbarModule {
28386
28425
  MatButtonModule,
28387
28426
  MatIconModule,
28388
28427
  MatBadgeModule,
28389
- // translations
28390
- TranslateModule,
28391
- ElderToolbarComponent,
28392
- ElderToolbarTitleComponent] }); }
28428
+ ElderToolbarComponent] }); }
28393
28429
  }
28394
28430
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderToolbarModule, decorators: [{
28395
28431
  type: NgModule,
@@ -28406,8 +28442,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28406
28442
  MatButtonModule,
28407
28443
  MatIconModule,
28408
28444
  MatBadgeModule,
28409
- // translations
28410
- TranslateModule,
28411
28445
  ElderToolbarComponent,
28412
28446
  ElderToolbarColumnDirective,
28413
28447
  ElderToolbarTitleComponent,
@@ -28707,7 +28741,7 @@ class ElderNavLinkComponent {
28707
28741
  }
28708
28742
  }
28709
28743
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderNavLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28710
- 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 }); }
28711
28745
  }
28712
28746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderNavLinkComponent, decorators: [{
28713
28747
  type: Component,
@@ -28718,7 +28752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28718
28752
  RouterLinkActive,
28719
28753
  RouterLink,
28720
28754
  MatIcon,
28721
- TranslateModule,
28755
+ ElderTranslatePipe,
28722
28756
  NgTemplateOutlet,
28723
28757
  NgClass,
28724
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"] }]
@@ -28867,7 +28901,6 @@ class ElderNavModule {
28867
28901
  MatIconModule,
28868
28902
  MatButtonModule,
28869
28903
  A11yModule,
28870
- TranslateModule,
28871
28904
  MatListModule,
28872
28905
  MatRippleModule,
28873
28906
  ElderNavListComponent,
@@ -28878,7 +28911,6 @@ class ElderNavModule {
28878
28911
  MatIconModule,
28879
28912
  MatButtonModule,
28880
28913
  A11yModule,
28881
- TranslateModule,
28882
28914
  MatListModule,
28883
28915
  MatRippleModule,
28884
28916
  ElderNavLinkComponent,
@@ -28894,7 +28926,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
28894
28926
  MatIconModule,
28895
28927
  MatButtonModule,
28896
28928
  A11yModule,
28897
- TranslateModule,
28898
28929
  MatListModule,
28899
28930
  MatRippleModule,
28900
28931
  ElderNavListComponent,
@@ -29064,7 +29095,7 @@ class ElderBreadCrumbsComponent {
29064
29095
  return nodes;
29065
29096
  }
29066
29097
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
29067
- 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 }); }
29068
29099
  }
29069
29100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsComponent, decorators: [{
29070
29101
  type: Component,
@@ -29109,7 +29140,6 @@ class ElderBreadCrumbsModule {
29109
29140
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule,
29110
29141
  FormsModule,
29111
29142
  ReactiveFormsModule,
29112
- TranslateModule,
29113
29143
  MatFormFieldModule,
29114
29144
  MatIconModule,
29115
29145
  MatButtonModule,
@@ -29120,7 +29150,6 @@ class ElderBreadCrumbsModule {
29120
29150
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderBreadCrumbsModule, imports: [CommonModule,
29121
29151
  FormsModule,
29122
29152
  ReactiveFormsModule,
29123
- TranslateModule,
29124
29153
  MatFormFieldModule,
29125
29154
  MatIconModule,
29126
29155
  MatButtonModule,
@@ -29136,7 +29165,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
29136
29165
  CommonModule,
29137
29166
  FormsModule,
29138
29167
  ReactiveFormsModule,
29139
- TranslateModule,
29140
29168
  MatFormFieldModule,
29141
29169
  MatIconModule,
29142
29170
  MatButtonModule,
@@ -29305,7 +29333,7 @@ class ElderRouterOutletService {
29305
29333
  this.collectActiveOutletsRecursive(c, outlets);
29306
29334
  }
29307
29335
  }
29308
- 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 }); }
29309
29337
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterOutletService, providedIn: 'root' }); }
29310
29338
  }
29311
29339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderRouterOutletService, decorators: [{
@@ -29313,7 +29341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
29313
29341
  args: [{
29314
29342
  providedIn: 'root',
29315
29343
  }]
29316
- }], ctorParameters: () => [{ type: i1$3.Router }] });
29344
+ }], ctorParameters: () => [{ type: i1$2.Router }] });
29317
29345
 
29318
29346
  /**
29319
29347
  * This service manages the side content.
@@ -29484,7 +29512,7 @@ class ElderShellService {
29484
29512
  this.clickOutsideToClose = clickOutsideToClose;
29485
29513
  return this.routerOutletService.activate(this.detailContentOutlet, args, extras);
29486
29514
  }
29487
- 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 }); }
29488
29516
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellService, providedIn: 'root' }); }
29489
29517
  }
29490
29518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellService, decorators: [{
@@ -29492,7 +29520,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
29492
29520
  args: [{
29493
29521
  providedIn: 'root',
29494
29522
  }]
29495
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: ElderRouterOutletService }] });
29523
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: ElderRouterOutletService }] });
29496
29524
 
29497
29525
  class ElderRouteOutletDrawerService {
29498
29526
  /***************************************************************************
@@ -29922,13 +29950,13 @@ class ElderShellNavigationToggleComponent {
29922
29950
  parts.splice(parts.length - 1, 1);
29923
29951
  return parts.join('/');
29924
29952
  }
29925
- 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 }); }
29926
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 }); }
29927
29955
  }
29928
29956
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderShellNavigationToggleComponent, decorators: [{
29929
29957
  type: Component,
29930
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" }]
29931
- }], 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 }] }] } });
29932
29960
 
29933
29961
  class ElderShellSlotDirective {
29934
29962
  /***************************************************************************
@@ -30003,11 +30031,11 @@ class ElderStaticNavToggleComponent {
30003
30031
  this.shellService.toggleStaticNav();
30004
30032
  }
30005
30033
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderStaticNavToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30006
- 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 }); }
30007
30035
  }
30008
30036
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderStaticNavToggleComponent, decorators: [{
30009
30037
  type: Component,
30010
- 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" }]
30011
30039
  }] });
30012
30040
 
30013
30041
  class ElderAppearanceSettingsComponent {
@@ -30095,7 +30123,6 @@ class ElderShellModule {
30095
30123
  ElderToolbarModule,
30096
30124
  ElderPanelModule,
30097
30125
  ElderThemeModule,
30098
- TranslateModule,
30099
30126
  ElderShellComponent,
30100
30127
  ElderShellSideLeftDirective,
30101
30128
  ElderShellSideRightDirective,
@@ -30123,7 +30150,6 @@ class ElderShellModule {
30123
30150
  ElderToolbarModule,
30124
30151
  ElderPanelModule,
30125
30152
  ElderThemeModule,
30126
- TranslateModule,
30127
30153
  ElderShellComponent,
30128
30154
  ElderShellNavigationToggleComponent,
30129
30155
  ElderAppHeaderComponent,
@@ -30144,7 +30170,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30144
30170
  ElderToolbarModule,
30145
30171
  ElderPanelModule,
30146
30172
  ElderThemeModule,
30147
- TranslateModule,
30148
30173
  ElderShellComponent,
30149
30174
  ElderShellSideLeftDirective,
30150
30175
  ElderShellSideRightDirective,
@@ -30637,7 +30662,7 @@ class ElderLocalDateInputComponent extends ElderFormFieldControlBase {
30637
30662
  return a && b ? a.equals(b) : a === b;
30638
30663
  }
30639
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 }); }
30640
- 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 }); }
30641
30666
  }
30642
30667
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalDateInputComponent, decorators: [{
30643
30668
  type: Component,
@@ -30654,7 +30679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30654
30679
  MatDatepicker,
30655
30680
  AsyncPipe,
30656
30681
  DatePipe,
30657
- TranslateModule,
30682
+ ElderTranslatePipe,
30658
30683
  ElderToggleTextInputDirective,
30659
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"] }]
30660
30685
  }], ctorParameters: () => [{ type: SmartLocalDateParserService }], propDecorators: { zone: [{
@@ -30753,7 +30778,7 @@ class ElderDateSwitcherComponent extends FormFieldBaseComponent {
30753
30778
  return a && b ? a.equals(b) : a === b;
30754
30779
  }
30755
30780
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30756
- 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 }); }
30757
30782
  }
30758
30783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateSwitcherComponent, decorators: [{
30759
30784
  type: Component,
@@ -30763,7 +30788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30763
30788
  MatLabel,
30764
30789
  ElderLocalDateInputComponent,
30765
30790
  AsyncPipe,
30766
- TranslateModule,
30791
+ ElderTranslatePipe,
30767
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" }]
30768
30793
  }], ctorParameters: () => [], propDecorators: { datePickerEnabled: [{
30769
30794
  type: Input
@@ -30835,11 +30860,11 @@ class ElderLocalTimeInputComponent extends ElderFormFieldControlBase {
30835
30860
  return a && b ? a.equals(b) : a === b;
30836
30861
  }
30837
30862
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalTimeInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30838
- 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 }); }
30839
30864
  }
30840
30865
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalTimeInputComponent, decorators: [{
30841
30866
  type: Component,
30842
- 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" }]
30843
30868
  }], ctorParameters: () => [], propDecorators: { inputRef: [{
30844
30869
  type: ViewChild,
30845
30870
  args: ['input']
@@ -30915,7 +30940,7 @@ class ElderDateTimeInputComponent extends ElderFormFieldControlBase {
30915
30940
  return a && b ? a.equals(b) : a === b;
30916
30941
  }
30917
30942
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateTimeInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30918
- 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 }); }
30919
30944
  }
30920
30945
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDateTimeInputComponent, decorators: [{
30921
30946
  type: Component,
@@ -30924,7 +30949,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
30924
30949
  FormsModule,
30925
30950
  AsyncPipe,
30926
30951
  DatePipe,
30927
- TranslateModule,
30952
+ ElderTranslatePipe,
30928
30953
  ElderToggleTextInputDirective,
30929
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"] }]
30930
30955
  }], ctorParameters: () => [], propDecorators: { inputRef: [{
@@ -31092,13 +31117,13 @@ class ElderIntervalInputComponent extends ElderFormFieldControlBase {
31092
31117
  }
31093
31118
  }
31094
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 }); }
31095
- 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 }); }
31096
31121
  }
31097
31122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderIntervalInputComponent, decorators: [{
31098
31123
  type: Component,
31099
31124
  args: [{ selector: 'elder-interval-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderIntervalInputComponent }], imports: [
31100
31125
  AsyncPipe,
31101
- TranslateModule,
31126
+ ElderTranslatePipe,
31102
31127
  FormsModule,
31103
31128
  ElderDateTimeInputComponent,
31104
31129
  ElderLocalTimeInputComponent,
@@ -31208,7 +31233,7 @@ class ElderDurationInputComponent extends ElderFormFieldControlBase {
31208
31233
  return a && b ? a.equals(b) : a === b;
31209
31234
  }
31210
31235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDurationInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31211
- 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 }); }
31212
31237
  }
31213
31238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderDurationInputComponent, decorators: [{
31214
31239
  type: Component,
@@ -31312,7 +31337,7 @@ class ElderPeriodInputComponent extends ElderFormFieldControlBase {
31312
31337
  return a && b ? a.equals(b) : a === b;
31313
31338
  }
31314
31339
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPeriodInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31315
- 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 }); }
31316
31341
  }
31317
31342
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderPeriodInputComponent, decorators: [{
31318
31343
  type: Component,
@@ -32231,7 +32256,7 @@ class ElderIntervalPickerComponent {
32231
32256
  }
32232
32257
  }
32233
32258
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderIntervalPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32234
- 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 }); }
32235
32260
  }
32236
32261
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderIntervalPickerComponent, decorators: [{
32237
32262
  type: Component,
@@ -32244,7 +32269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
32244
32269
  FormsModule,
32245
32270
  MatButtonModule,
32246
32271
  MatCalendar,
32247
- TranslateModule,
32272
+ ElderTranslatePipe,
32248
32273
  MatMenuModule,
32249
32274
  DatePipe,
32250
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"] }]
@@ -32746,9 +32771,6 @@ class ElderTimeModule {
32746
32771
  MatIconModule,
32747
32772
  // popups & modals
32748
32773
  MatTooltipModule,
32749
- // data matTable
32750
- // translations
32751
- TranslateModule,
32752
32774
  ElderFormsDirectivesModule,
32753
32775
  ElderDateSwitcherComponent,
32754
32776
  ElderIntervalInputComponent,
@@ -32785,9 +32807,6 @@ class ElderTimeModule {
32785
32807
  MatIconModule,
32786
32808
  // popups & modals
32787
32809
  MatTooltipModule,
32788
- // data matTable
32789
- // translations
32790
- TranslateModule,
32791
32810
  ElderFormsDirectivesModule,
32792
32811
  ElderDateSwitcherComponent,
32793
32812
  ElderIntervalInputComponent,
@@ -32816,9 +32835,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
32816
32835
  MatIconModule,
32817
32836
  // popups & modals
32818
32837
  MatTooltipModule,
32819
- // data matTable
32820
- // translations
32821
- TranslateModule,
32822
32838
  ElderFormsDirectivesModule,
32823
32839
  ElderDateSwitcherComponent,
32824
32840
  ElderIntervalInputComponent,
@@ -33028,7 +33044,7 @@ class ElderLocalizedInputTableComponent extends FormFieldBaseComponent {
33028
33044
  return localizables;
33029
33045
  }
33030
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 }); }
33031
- 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 }); }
33032
33048
  }
33033
33049
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputTableComponent, decorators: [{
33034
33050
  type: Component,
@@ -33052,7 +33068,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33052
33068
  MatInput,
33053
33069
  FormsModule,
33054
33070
  AsyncPipe,
33055
- TranslateModule,
33071
+ ElderTranslatePipe,
33056
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" }]
33057
33073
  }], ctorParameters: () => [{ type: ElderToastService }, { type: ElderLanguageService }], propDecorators: { textColumnsQuery: [{
33058
33074
  type: ContentChildren,
@@ -33071,8 +33087,8 @@ class ElderLocalizedInputDialogComponent {
33071
33087
  this.data = data;
33072
33088
  }
33073
33089
  ngOnInit() { }
33074
- 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 }); }
33075
- 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 }); }
33076
33092
  }
33077
33093
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogComponent, decorators: [{
33078
33094
  type: Component,
@@ -33081,12 +33097,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33081
33097
  ElderThemeDirective,
33082
33098
  MatToolbarRow,
33083
33099
  MatIcon,
33084
- TranslateModule,
33100
+ ElderTranslatePipe,
33085
33101
  MatIconButton,
33086
33102
  MatDialogClose,
33087
33103
  ElderLocalizedInputTableComponent,
33088
- ], 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" }]
33089
- }], 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: [{
33090
33106
  type: Inject,
33091
33107
  args: [MAT_DIALOG_DATA]
33092
33108
  }] }] });
@@ -33107,7 +33123,7 @@ class ElderLocalizedInputDialogService {
33107
33123
  data: options,
33108
33124
  });
33109
33125
  }
33110
- 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 }); }
33111
33127
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogService, providedIn: 'root' }); }
33112
33128
  }
33113
33129
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputDialogService, decorators: [{
@@ -33115,7 +33131,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33115
33131
  args: [{
33116
33132
  providedIn: 'root',
33117
33133
  }]
33118
- }], ctorParameters: () => [{ type: i1$7.MatDialog }] });
33134
+ }], ctorParameters: () => [{ type: i1$6.MatDialog }] });
33119
33135
 
33120
33136
  class LocalisationPickerService {
33121
33137
  /***************************************************************************
@@ -33291,7 +33307,7 @@ class ElderLocalizedInputComponent extends FormFieldBaseComponent {
33291
33307
  }
33292
33308
  }
33293
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 }); }
33294
- 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 }); }
33295
33311
  }
33296
33312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLocalizedInputComponent, decorators: [{
33297
33313
  type: Component,
@@ -33306,7 +33322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33306
33322
  FormsModule,
33307
33323
  MatHint,
33308
33324
  AsyncPipe,
33309
- TranslateModule,
33325
+ ElderTranslatePipe,
33310
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"] }]
33311
33327
  }], ctorParameters: () => [{ type: ElderLocalizedInputDialogService }, { type: LocalisationPickerService }], propDecorators: { textColumnsQuery: [{
33312
33328
  type: ContentChildren,
@@ -33366,7 +33382,7 @@ class ElderInitialValueDirective {
33366
33382
  }
33367
33383
  this.initialValue$.next(value);
33368
33384
  }
33369
- 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 }); }
33370
33386
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ElderInitialValueDirective, isStandalone: true, selector: "[elderInitialValue]", exportAs: ["elderInitialValue"], ngImport: i0 }); }
33371
33387
  }
33372
33388
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderInitialValueDirective, decorators: [{
@@ -33375,7 +33391,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33375
33391
  selector: '[elderInitialValue]',
33376
33392
  exportAs: 'elderInitialValue',
33377
33393
  }]
33378
- }], ctorParameters: () => [{ type: i1$4.NgModel, decorators: [{
33394
+ }], ctorParameters: () => [{ type: i1$3.NgModel, decorators: [{
33379
33395
  type: Host
33380
33396
  }] }] });
33381
33397
 
@@ -33641,7 +33657,7 @@ class ElderSearchInputDirective {
33641
33657
  });
33642
33658
  return CollectionUtil.flatten(arrays);
33643
33659
  }
33644
- 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 }); }
33645
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 }); }
33646
33662
  }
33647
33663
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchInputDirective, decorators: [{
@@ -33650,7 +33666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33650
33666
  selector: '[elderSearchInput]',
33651
33667
  exportAs: 'elderSearchInput',
33652
33668
  }]
33653
- }], ctorParameters: () => [{ type: ElderSearchContextDirective }, { type: i1$4.NgModel, decorators: [{
33669
+ }], ctorParameters: () => [{ type: ElderSearchContextDirective }, { type: i1$3.NgModel, decorators: [{
33654
33670
  type: Host
33655
33671
  }] }, { type: i0.DestroyRef }], propDecorators: { valueTransform: [{
33656
33672
  type: Input,
@@ -33743,7 +33759,7 @@ class ElderSearchBoxComponent {
33743
33759
  this.searchContextDirective.reset();
33744
33760
  }
33745
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 }); }
33746
- 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 }); }
33747
33763
  }
33748
33764
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchBoxComponent, decorators: [{
33749
33765
  type: Component,
@@ -33765,7 +33781,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
33765
33781
  ElderDialogPanelComponent,
33766
33782
  MatButton,
33767
33783
  AsyncPipe,
33768
- TranslateModule,
33784
+ ElderTranslatePipe,
33769
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"] }]
33770
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: [{
33771
33787
  type: Input
@@ -34032,7 +34048,7 @@ class ElderSearchUrlService {
34032
34048
  convertValueToArrayOrSingleValue(value) {
34033
34049
  return Array.isArray(value) ? `(${value.toString()})` : value;
34034
34050
  }
34035
- 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 }); }
34036
34052
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchUrlService, providedIn: 'root' }); }
34037
34053
  }
34038
34054
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchUrlService, decorators: [{
@@ -34040,7 +34056,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34040
34056
  args: [{
34041
34057
  providedIn: 'root',
34042
34058
  }]
34043
- }], ctorParameters: () => [{ type: i1$3.Router }] });
34059
+ }], ctorParameters: () => [{ type: i1$2.Router }] });
34044
34060
 
34045
34061
  class ContextWithUrlFilters {
34046
34062
  constructor(context, urlFilters) {
@@ -34144,7 +34160,6 @@ class ElderSearchModule {
34144
34160
  ElderOverlayModule,
34145
34161
  ElderPanelModule,
34146
34162
  ElderFormsDirectivesModule,
34147
- TranslateModule,
34148
34163
  ElderSearchContextDirective,
34149
34164
  ElderSearchUrlDirective,
34150
34165
  ElderSearchInputDirective,
@@ -34172,7 +34187,6 @@ class ElderSearchModule {
34172
34187
  ElderOverlayModule,
34173
34188
  ElderPanelModule,
34174
34189
  ElderFormsDirectivesModule,
34175
- TranslateModule,
34176
34190
  ElderSearchBoxComponent] }); }
34177
34191
  }
34178
34192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderSearchModule, decorators: [{
@@ -34197,7 +34211,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34197
34211
  ElderOverlayModule,
34198
34212
  ElderPanelModule,
34199
34213
  ElderFormsDirectivesModule,
34200
- TranslateModule,
34201
34214
  ElderSearchContextDirective,
34202
34215
  ElderSearchUrlDirective,
34203
34216
  ElderSearchInputDirective,
@@ -34345,7 +34358,6 @@ class ElderI18nEntitiesModule {
34345
34358
  MatTableModule,
34346
34359
  MatSortModule,
34347
34360
  MatInputModule,
34348
- TranslateModule,
34349
34361
  FormsModule,
34350
34362
  ElderTableModule,
34351
34363
  MatChipsModule,
@@ -34374,7 +34386,6 @@ class ElderI18nEntitiesModule {
34374
34386
  MatTableModule,
34375
34387
  MatSortModule,
34376
34388
  MatInputModule,
34377
- TranslateModule,
34378
34389
  FormsModule,
34379
34390
  ElderTableModule,
34380
34391
  MatChipsModule,
@@ -34407,7 +34418,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34407
34418
  MatTableModule,
34408
34419
  MatSortModule,
34409
34420
  MatInputModule,
34410
- TranslateModule,
34411
34421
  FormsModule,
34412
34422
  ElderTableModule,
34413
34423
  MatChipsModule,
@@ -34485,10 +34495,10 @@ class ElderLanguageInterceptor {
34485
34495
  intercept(req, next) {
34486
34496
  const config = this.languageConfig;
34487
34497
  const skipInterceptor = config && config.interceptor && config.interceptor.disable;
34488
- if (!skipInterceptor && this.translate.currentLang) {
34498
+ if (!skipInterceptor && this.translate.currentLang()) {
34489
34499
  // Keeps the original request params. as a new HttpParams
34490
34500
  let newParams = new HttpParams({ fromString: req.params.toString() });
34491
- newParams = newParams.set(this._queryParam, this.translate.currentLang);
34501
+ newParams = newParams.set(this._queryParam, this.translate.currentLang());
34492
34502
  // Clone the request with params instead of setParams
34493
34503
  // Workaround for https://github.com/angular/angular/issues/18812
34494
34504
  const requestClone = req.clone({
@@ -34515,10 +34525,10 @@ class ElderLanguageInterceptor {
34515
34525
  return this._config;
34516
34526
  }
34517
34527
  get translate() {
34518
- if (!this._translate) {
34519
- 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
34520
34530
  }
34521
- return this._translate;
34531
+ return this._languageService;
34522
34532
  }
34523
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 }); }
34524
34534
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderLanguageInterceptor }); }
@@ -34545,85 +34555,6 @@ function provideElderLanguage(options, config) {
34545
34555
  ]);
34546
34556
  }
34547
34557
 
34548
- class ElderTranslateService {
34549
- /***************************************************************************
34550
- * *
34551
- * Constructor *
34552
- * *
34553
- **************************************************************************/
34554
- constructor() {
34555
- this.logger = LoggerFactory.getLogger(this.constructor.name);
34556
- this.languageService = inject(ElderLanguageService);
34557
- this.ngxTranslate = inject(TranslateService);
34558
- effect(() => {
34559
- const langs = this.languageService.langs();
34560
- untracked(() => {
34561
- this.setLangs(langs);
34562
- });
34563
- });
34564
- effect(() => {
34565
- const defaultLang = this.languageService.defaultLang();
34566
- untracked(() => {
34567
- this.setDefaultLang(defaultLang);
34568
- });
34569
- });
34570
- effect(() => {
34571
- const currentLang = this.languageService.currentLang();
34572
- untracked(() => {
34573
- this.setCurrentLang(currentLang);
34574
- });
34575
- });
34576
- }
34577
- /***************************************************************************
34578
- * *
34579
- * Private Methods *
34580
- * *
34581
- **************************************************************************/
34582
- setLangs(langs) {
34583
- if (langs?.length) {
34584
- this.logger.warn('setting translate langs', langs);
34585
- this.ngxTranslate.addLangs(langs);
34586
- }
34587
- }
34588
- setDefaultLang(defaultLang) {
34589
- if (defaultLang) {
34590
- this.logger.warn('setting translate default lang', defaultLang);
34591
- this.ngxTranslate.setFallbackLang(defaultLang);
34592
- }
34593
- }
34594
- setCurrentLang(currentLang) {
34595
- if (currentLang) {
34596
- this.logger.warn('setting translate current lang', currentLang);
34597
- this.ngxTranslate.use(currentLang);
34598
- }
34599
- }
34600
- /***************************************************************************
34601
- * *
34602
- * Public API *
34603
- * *
34604
- **************************************************************************/
34605
- get(key, interpolateParams) {
34606
- return this.ngxTranslate.get(key, interpolateParams);
34607
- }
34608
- instant(key, interpolateParams) {
34609
- return this.ngxTranslate.instant(key, interpolateParams);
34610
- }
34611
- stream(key, interpolateParams) {
34612
- return this.ngxTranslate.stream(key, interpolateParams);
34613
- }
34614
- get onLangChange() {
34615
- return this.ngxTranslate.onLangChange;
34616
- }
34617
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34618
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslateService, providedIn: 'root' }); }
34619
- }
34620
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslateService, decorators: [{
34621
- type: Injectable,
34622
- args: [{
34623
- providedIn: 'root',
34624
- }]
34625
- }], ctorParameters: () => [] });
34626
-
34627
34558
  function provideElderTranslate() {
34628
34559
  return makeEnvironmentProviders([
34629
34560
  provideTranslateService({
@@ -34639,18 +34570,6 @@ function provideElderTranslate() {
34639
34570
  ]);
34640
34571
  }
34641
34572
 
34642
- class ElderTranslatePipe extends TranslatePipe {
34643
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslatePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
34644
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslatePipe, isStandalone: true, name: "translate", pure: false }); }
34645
- }
34646
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderTranslatePipe, decorators: [{
34647
- type: Pipe,
34648
- args: [{
34649
- name: 'translate',
34650
- pure: false,
34651
- }]
34652
- }] });
34653
-
34654
34573
  class ElderChipListSelectComponent {
34655
34574
  /***************************************************************************
34656
34575
  * *
@@ -34817,8 +34736,6 @@ class ElderChipListSelectModule {
34817
34736
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderChipListSelectModule, imports: [
34818
34737
  // Angular
34819
34738
  CommonModule,
34820
- // Third Party
34821
- TranslateModule,
34822
34739
  // Material
34823
34740
  MatChipsModule,
34824
34741
  A11yModule,
@@ -34826,8 +34743,6 @@ class ElderChipListSelectModule {
34826
34743
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderChipListSelectModule, imports: [
34827
34744
  // Angular
34828
34745
  CommonModule,
34829
- // Third Party
34830
- TranslateModule,
34831
34746
  // Material
34832
34747
  MatChipsModule,
34833
34748
  A11yModule,
@@ -34839,8 +34754,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
34839
34754
  imports: [
34840
34755
  // Angular
34841
34756
  CommonModule,
34842
- // Third Party
34843
- TranslateModule,
34844
34757
  // Material
34845
34758
  MatChipsModule,
34846
34759
  A11yModule,
@@ -35125,7 +35038,6 @@ class ElderDataTransferModule {
35125
35038
  MatButtonModule,
35126
35039
  MatBadgeModule,
35127
35040
  MatProgressSpinnerModule,
35128
- TranslateModule,
35129
35041
  ElderPipesModule,
35130
35042
  ElderOverlayModule,
35131
35043
  MatCardModule,
@@ -35144,7 +35056,6 @@ class ElderDataTransferModule {
35144
35056
  MatButtonModule,
35145
35057
  MatBadgeModule,
35146
35058
  MatProgressSpinnerModule,
35147
- TranslateModule,
35148
35059
  ElderPipesModule,
35149
35060
  ElderOverlayModule,
35150
35061
  MatCardModule,
@@ -35165,7 +35076,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
35165
35076
  MatButtonModule,
35166
35077
  MatBadgeModule,
35167
35078
  MatProgressSpinnerModule,
35168
- TranslateModule,
35169
35079
  ElderPipesModule,
35170
35080
  ElderOverlayModule,
35171
35081
  MatCardModule,
@@ -35419,8 +35329,6 @@ class ElderConnectivityModule {
35419
35329
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderConnectivityModule, imports: [
35420
35330
  // Angular
35421
35331
  CommonModule,
35422
- // Third Party
35423
- TranslateModule,
35424
35332
  // Angular Material
35425
35333
  MatIconModule,
35426
35334
  MatTooltipModule,
@@ -35431,8 +35339,6 @@ class ElderConnectivityModule {
35431
35339
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderConnectivityModule, imports: [
35432
35340
  // Angular
35433
35341
  CommonModule,
35434
- // Third Party
35435
- TranslateModule,
35436
35342
  // Angular Material
35437
35343
  MatIconModule,
35438
35344
  MatTooltipModule,
@@ -35447,8 +35353,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
35447
35353
  imports: [
35448
35354
  // Angular
35449
35355
  CommonModule,
35450
- // Third Party
35451
- TranslateModule,
35452
35356
  // Angular Material
35453
35357
  MatIconModule,
35454
35358
  MatTooltipModule,
@@ -36476,7 +36380,7 @@ class CsvStreamExporterBuilderService {
36476
36380
  start(dataSource, csvSpec) {
36477
36381
  return new CsvStreamExporterBuilder(this.translateService, dataSource, csvSpec);
36478
36382
  }
36479
- 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 }); }
36480
36384
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CsvStreamExporterBuilderService, providedIn: 'root' }); }
36481
36385
  }
36482
36386
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: CsvStreamExporterBuilderService, decorators: [{
@@ -36484,7 +36388,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
36484
36388
  args: [{
36485
36389
  providedIn: 'root',
36486
36390
  }]
36487
- }], ctorParameters: () => [{ type: i1$2.TranslateService }] });
36391
+ }], ctorParameters: () => [{ type: ElderTranslateService }] });
36488
36392
 
36489
36393
  class ElderCsvExportBtnComponent {
36490
36394
  set dataSource(dataSource) {
@@ -36875,7 +36779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
36875
36779
  class ElderLockWarningService {
36876
36780
  constructor() {
36877
36781
  this.dialogService = inject(ElderDialogService);
36878
- this.translateService = inject(TranslateService);
36782
+ this.translateService = inject(ElderTranslateService);
36879
36783
  }
36880
36784
  /***************************************************************************
36881
36785
  * *
@@ -37119,13 +37023,13 @@ class IframeDialogComponent {
37119
37023
  close(data) {
37120
37024
  this.dialogRef.close(data);
37121
37025
  }
37122
- 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 }); }
37123
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 }); }
37124
37028
  }
37125
37029
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeDialogComponent, decorators: [{
37126
37030
  type: Component,
37127
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" }]
37128
- }], ctorParameters: () => [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
37032
+ }], ctorParameters: () => [{ type: i1$6.MatDialogRef }, { type: undefined, decorators: [{
37129
37033
  type: Inject,
37130
37034
  args: [MAT_DIALOG_DATA]
37131
37035
  }] }], propDecorators: { iframeHost: [{ type: i0.ViewChild, args: [i0.forwardRef(() => IframeHostComponent), { isSignal: true }] }] } });
@@ -37193,13 +37097,13 @@ class IframeSideContentComponent {
37193
37097
  queryParamsHandling: 'merge',
37194
37098
  });
37195
37099
  }
37196
- 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 }); }
37197
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 }); }
37198
37102
  }
37199
37103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: IframeSideContentComponent, decorators: [{
37200
37104
  type: Component,
37201
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" }]
37202
- }], ctorParameters: () => [{ type: i1$3.Router }, { type: i1$3.ActivatedRoute }, { type: ElderShellService }] });
37106
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: i1$2.ActivatedRoute }, { type: ElderShellService }] });
37203
37107
 
37204
37108
  class IframeService {
37205
37109
  constructor() {
@@ -37581,8 +37485,6 @@ class ElderIFrameModule {
37581
37485
  CommonModule,
37582
37486
  RouterModule,
37583
37487
  FormsModule,
37584
- // Third Party
37585
- TranslateModule,
37586
37488
  // Angular Material
37587
37489
  MatIconModule,
37588
37490
  MatButtonModule,
@@ -37606,8 +37508,6 @@ class ElderIFrameModule {
37606
37508
  CommonModule,
37607
37509
  RouterModule,
37608
37510
  FormsModule,
37609
- // Third Party
37610
- TranslateModule,
37611
37511
  // Angular Material
37612
37512
  MatIconModule,
37613
37513
  MatButtonModule,
@@ -37628,8 +37528,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37628
37528
  CommonModule,
37629
37529
  RouterModule,
37630
37530
  FormsModule,
37631
- // Third Party
37632
- TranslateModule,
37633
37531
  // Angular Material
37634
37532
  MatIconModule,
37635
37533
  MatButtonModule,
@@ -37769,7 +37667,7 @@ class ElderAuditedEntityComponent {
37769
37667
  this.auditedCtx$.next(new AuditedEntityCtx(audited));
37770
37668
  }
37771
37669
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditedEntityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37772
- 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 }); }
37773
37671
  }
37774
37672
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditedEntityComponent, decorators: [{
37775
37673
  type: Component,
@@ -37781,7 +37679,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37781
37679
  MatHint,
37782
37680
  AsyncPipe,
37783
37681
  DatePipe,
37784
- TranslateModule,
37682
+ ElderTranslatePipe,
37785
37683
  TimeAgoPipe,
37786
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"] }]
37787
37685
  }], ctorParameters: () => [], propDecorators: { appearance: [{
@@ -37799,13 +37697,11 @@ class ElderAuditModule {
37799
37697
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
37800
37698
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditModule, imports: [CommonModule,
37801
37699
  MatInputModule,
37802
- TranslateModule,
37803
37700
  ElderPipesModule,
37804
37701
  MatIconModule,
37805
37702
  ElderAuditedEntityComponent], exports: [ElderAuditedEntityComponent] }); }
37806
37703
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ElderAuditModule, imports: [CommonModule,
37807
37704
  MatInputModule,
37808
- TranslateModule,
37809
37705
  ElderPipesModule,
37810
37706
  MatIconModule,
37811
37707
  ElderAuditedEntityComponent] }); }
@@ -37817,7 +37713,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
37817
37713
  imports: [
37818
37714
  CommonModule,
37819
37715
  MatInputModule,
37820
- TranslateModule,
37821
37716
  ElderPipesModule,
37822
37717
  MatIconModule,
37823
37718
  ElderAuditedEntityComponent,