@sumaris-net/ngx-components 0.13.14 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,12 @@
1
- import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, ɵɵdefineInjectable, ɵɵinject, Pipe, Injectable, Directive, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, INJECTOR, Injector, Inject, Renderer2 } from '@angular/core';
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, Pipe, Injectable, Directive, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Inject, Renderer2 } from '@angular/core';
3
+ import * as i1$3 from '@angular/common';
2
4
  import { CommonModule, DOCUMENT, Location } from '@angular/common';
3
5
  import { CdkTableModule } from '@angular/cdk/table';
4
6
  import { A11yModule } from '@angular/cdk/a11y';
5
7
  import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
6
8
  import { ScrollingModule } from '@angular/cdk/scrolling';
9
+ import * as i1$2 from '@angular/material/core';
7
10
  import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
8
11
  import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
9
12
  import { MatSortModule, MatSort } from '@angular/material/sort';
@@ -27,16 +30,21 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
27
30
  import { MatRadioModule } from '@angular/material/radio';
28
31
  import { MatBadgeModule } from '@angular/material/badge';
29
32
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
33
+ import * as i2$1 from '@angular/material/dialog';
30
34
  import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
31
35
  import { MatAutocompleteModule, MatAutocompleteTrigger, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
32
36
  import { __awaiter, __decorate } from 'tslib';
37
+ import * as i1$6 from '@angular/forms';
33
38
  import { NG_VALUE_ACCESSOR, FormGroupDirective, ReactiveFormsModule, AbstractControl, Validators, FormBuilder, FormControl, FormGroup, FormArray } from '@angular/forms';
34
39
  import { fromEvent, Subscription, BehaviorSubject, Subject, isObservable, merge, of, timer, noop as noop$8, Observable, defer, concat, combineLatest, EMPTY } from 'rxjs';
35
40
  import { filter, first, startWith, debounceTime, takeWhile, switchMap, tap, map, distinctUntilChanged, mergeMap, takeUntil, catchError, throttleTime } from 'rxjs/operators';
41
+ import * as i1$1 from '@ngx-translate/core';
36
42
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
43
+ import * as i1$4 from '@ionic/angular';
37
44
  import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, IonicRouteStrategy, NavParams, AlertController, MenuController, IonContent } from '@ionic/angular';
38
45
  import * as momentImported from 'moment';
39
46
  import { isMoment } from 'moment';
47
+ import * as i1 from '@angular/material-moment-adapter';
40
48
  import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
41
49
  import { Keyboard } from '@ionic-native/keyboard/ngx';
42
50
  import { TextMaskModule } from 'angular2-text-mask';
@@ -46,32 +54,38 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
46
54
  import { MatDividerModule } from '@angular/material/divider';
47
55
  import { MatTooltipModule } from '@angular/material/tooltip';
48
56
  import { MatChipsModule } from '@angular/material/chips';
57
+ import * as i3$3 from '@angular/router';
49
58
  import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
59
+ import * as i1$5 from '@angular/platform-browser';
50
60
  import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
61
+ import * as i2$2 from '@angular/common/http';
51
62
  import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
52
63
  import { ColorPickerModule } from 'ngx-color-picker';
53
- import { NativeAudio as NativeAudio$1 } from '@ionic-native/native-audio/ngx';
54
- import { Vibration as Vibration$1 } from '@ionic-native/vibration/ngx';
64
+ import { NativeAudio } from '@ionic-native/native-audio/ngx';
65
+ import { Vibration } from '@ionic-native/vibration/ngx';
55
66
  import { AudioManagement } from '@ionic-native/audio-management/ngx';
56
- import { NativeAudio } from '@ionic-native/native-audio/ngx/index';
57
- import { Vibration } from '@ionic-native/vibration/ngx/index';
58
- import { AudioManagement as AudioManagement$1 } from '@ionic-native/audio-management/ngx/index';
67
+ import * as i2 from '@ionic-native/native-audio/ngx/index';
68
+ import * as i3 from '@ionic-native/vibration/ngx/index';
69
+ import * as i4 from '@ionic-native/audio-management/ngx/index';
59
70
  import * as uuidv4Imported from 'uuid/v4';
60
71
  import { DragDropModule } from '@angular/cdk/drag-drop';
61
72
  import { MarkdownModule } from 'ngx-markdown';
62
73
  import { sign, box, hash, verify } from 'tweetnacl';
74
+ import * as i3$1 from '@ionic/storage';
63
75
  import { Storage, IonicStorageModule } from '@ionic/storage';
64
76
  import 'zone.js/dist/zone-error';
65
- import { SplashScreen as SplashScreen$1 } from '@ionic-native/splash-screen/ngx';
66
- import { Connection, Network as Network$1 } from '@ionic-native/network/ngx';
67
- import { CacheService as CacheService$1, CacheModule } from 'ionic-cache';
68
- import { CacheService } from 'ionic-cache/dist/cache.service';
69
- import { Network } from '@ionic-native/network/ngx/index';
70
- import { SplashScreen } from '@ionic-native/splash-screen/ngx/index';
71
- import { StatusBar as StatusBar$1 } from '@ionic-native/status-bar/ngx';
77
+ import { SplashScreen } from '@ionic-native/splash-screen/ngx';
78
+ import { Connection, Network } from '@ionic-native/network/ngx';
79
+ import { CacheService, CacheModule } from 'ionic-cache';
80
+ import * as i6 from 'ionic-cache/dist/cache.service';
81
+ import * as i9 from '@ionic-native/network/ngx/index';
82
+ import * as i10 from '@ionic-native/splash-screen/ngx/index';
83
+ import { StatusBar } from '@ionic-native/status-bar/ngx';
84
+ import * as i2$4 from '@angular/cdk/platform';
72
85
  import { Platform as Platform$1 } from '@angular/cdk/platform';
73
- import { InAppBrowser as InAppBrowser$1 } from '@ionic-native/in-app-browser/ngx';
86
+ import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
74
87
  import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
88
+ import * as i2$3 from 'apollo-angular';
75
89
  import { Apollo } from 'apollo-angular';
76
90
  import { WebSocketLink } from '@apollo/client/link/ws';
77
91
  import { getMainDefinition } from '@apollo/client/utilities';
@@ -79,11 +93,12 @@ import { RetryLink } from '@apollo/client/link/retry';
79
93
  import QueueLink from 'apollo-link-queue';
80
94
  import SerializingLink from 'apollo-link-serialize';
81
95
  import loggerLink from 'apollo-link-logger';
96
+ import * as i3$2 from 'apollo-angular/http';
82
97
  import { HttpLink } from 'apollo-angular/http';
83
98
  import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
84
- import { StatusBar } from '@ionic-native/status-bar/ngx/index';
85
- import { Keyboard as Keyboard$1 } from '@ionic-native/keyboard/ngx/index';
86
- import { InAppBrowser } from '@ionic-native/in-app-browser/ngx/index';
99
+ import * as i14 from '@ionic-native/status-bar/ngx/index';
100
+ import * as i15 from '@ionic-native/keyboard/ngx/index';
101
+ import * as i17 from '@ionic-native/in-app-browser/ngx/index';
87
102
  import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
88
103
  import { SelectionModel } from '@angular/cdk/collections';
89
104
  import { NgxJdenticonModule } from 'ngx-jdenticon';
@@ -850,22 +865,23 @@ class MatAutocompleteConfigHolder {
850
865
  return this.fields[fieldName] || this.add(fieldName);
851
866
  }
852
867
  }
853
- const DEFAULT_VALUE_ACCESSOR = {
868
+ const DEFAULT_VALUE_ACCESSOR$6 = {
854
869
  provide: NG_VALUE_ACCESSOR,
855
870
  useExisting: forwardRef(() => MatAutocompleteField),
856
871
  multi: true
857
872
  };
858
- const noop = () => { };
859
- const ɵ0 = noop;
873
+ const noop$7 = () => { };
874
+ const ɵ0$a = noop$7;
860
875
  class MatAutocompleteField {
861
876
  constructor(cd, formGroupDir) {
862
877
  this.cd = cd;
863
878
  this.formGroupDir = formGroupDir;
864
- this._onChangeCallback = noop;
865
- this._onTouchedCallback = noop;
879
+ this._onChangeCallback = noop$7;
880
+ this._onTouchedCallback = noop$7;
866
881
  this._subscription = new Subscription();
867
882
  this._filter$ = new BehaviorSubject(undefined);
868
883
  this._reload$ = new Subject();
884
+ this._readonly = false;
869
885
  this.$inputItems = new BehaviorSubject(undefined);
870
886
  this.$filteredItems = new BehaviorSubject(undefined);
871
887
  this.displayValue = '';
@@ -873,7 +889,6 @@ class MatAutocompleteField {
873
889
  this.logPrefix = '[mat-autocomplete] ';
874
890
  this.formControlName = null;
875
891
  this.required = false;
876
- this.readonly = false;
877
892
  this.clearable = false;
878
893
  this.debounceTime = null;
879
894
  this.highlightAccent = false;
@@ -908,6 +923,13 @@ class MatAutocompleteField {
908
923
  get filter() {
909
924
  return this._filter$.value;
910
925
  }
926
+ set readonly(value) {
927
+ this._readonly = value;
928
+ this.markForCheck();
929
+ }
930
+ get readonly() {
931
+ return this._readonly;
932
+ }
911
933
  set tabindex(value) {
912
934
  this._tabindex = value;
913
935
  this.markForCheck();
@@ -1176,6 +1198,7 @@ class MatAutocompleteField {
1176
1198
  this._onTouchedCallback = fn;
1177
1199
  }
1178
1200
  setDisabledState(isDisabled) {
1201
+ this.enabled;
1179
1202
  this.cd.markForCheck();
1180
1203
  }
1181
1204
  focus() {
@@ -1377,8 +1400,8 @@ MatAutocompleteField.decorators = [
1377
1400
  { type: Component, args: [{
1378
1401
  // eslint-disable-next-line @angular-eslint/component-selector
1379
1402
  selector: 'mat-autocomplete-field',
1380
- template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <!-- readonly -->\n <ng-container *ngIf=\"readonly; else writable\">\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n readonly>\n <ion-label>{{ displayWith(value) }}&nbsp;</ion-label>\n </ng-container>\n\n <ng-template #writable>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <a class=\"ion-padding mat-option \"\n *ngIf=\"_moreItemsCount\"\n (click)=\"_fetchMore$.emit($event)\" >\n <ion-label color=\"primary\" style=\"width: 100%;\">\n <span translate>COMMON.BTN_SHOW_MORE</span>\n <mat-icon class=\"ion-color-primary\">expand_more</mat-icon>\n </ion-label>\n </a>\n </ng-container>\n </mat-select>\n </ng-template>\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autoComplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keyup.arrowdown)=\"!autoComplete.showPanel && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autoComplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\" >\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content matSuffix select=\"[matSuffix]\"></ng-content>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n",
1381
- providers: [DEFAULT_VALUE_ACCESSOR],
1403
+ template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <!-- readonly -->\n <ng-container *ngIf=\"_readonly; else writable\">\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n </ng-container>\n\n <ng-template #writable>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <a class=\"ion-padding mat-option \"\n *ngIf=\"_moreItemsCount\"\n (click)=\"_fetchMore$.emit($event)\" >\n <ion-label color=\"primary\" style=\"width: 100%;\">\n <span translate>COMMON.BTN_SHOW_MORE</span>\n <mat-icon class=\"ion-color-primary\">expand_more</mat-icon>\n </ion-label>\n </a>\n </ng-container>\n </mat-select>\n </ng-template>\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autoComplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keyup.arrowdown)=\"!autoComplete.showPanel && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autoComplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\" >\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content matSuffix select=\"[matSuffix]\"></ng-content>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n",
1404
+ providers: [DEFAULT_VALUE_ACCESSOR$6],
1382
1405
  changeDetection: ChangeDetectionStrategy.OnPush,
1383
1406
  styles: [":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}.fact-scroll-viewport{height:100%;width:100%}.fact-item{height:54px;display:flex}.fact-item .fact-date{min-width:100px;text-align:center;font-size:24pt}.fact-item .fact-date,.fact-item .fact-text{height:100%;align-items:center;justify-content:center;display:flex}.fact-item .fact-text{border-radius:10px}cdk-virtual-scroll-viewport{border:1px solid #000}cdk-virtual-scroll-viewport li{list-style:none}"]
1384
1407
  },] }
@@ -1397,7 +1420,6 @@ MatAutocompleteField.propDecorators = {
1397
1420
  suggestFn: [{ type: Input }],
1398
1421
  required: [{ type: Input }],
1399
1422
  mobile: [{ type: Input }],
1400
- readonly: [{ type: Input }],
1401
1423
  clearable: [{ type: Input }],
1402
1424
  debounceTime: [{ type: Input }],
1403
1425
  displayWith: [{ type: Input }],
@@ -1421,6 +1443,7 @@ MatAutocompleteField.propDecorators = {
1421
1443
  showLoadingSpinner: [{ type: Input }],
1422
1444
  animationsDisabled: [{ type: HostBinding, args: ['@.disabled',] }],
1423
1445
  filter: [{ type: Input }],
1446
+ readonly: [{ type: Input }],
1424
1447
  tabindex: [{ type: Input }],
1425
1448
  items: [{ type: Input }],
1426
1449
  onClick: [{ type: Output, args: ['click',] }],
@@ -1452,7 +1475,7 @@ class DateFormatPipe {
1452
1475
  return this.dateAdapter.format(date, displayFormat);
1453
1476
  }
1454
1477
  }
1455
- DateFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(ɵɵinject(MomentDateAdapter), ɵɵinject(TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1478
+ DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1456
1479
  DateFormatPipe.decorators = [
1457
1480
  { type: Pipe, args: [{
1458
1481
  name: 'dateFormat'
@@ -1464,7 +1487,7 @@ DateFormatPipe.ctorParameters = () => [
1464
1487
  { type: TranslateService }
1465
1488
  ];
1466
1489
 
1467
- const moment = momentImported;
1490
+ const moment$6 = momentImported;
1468
1491
  class DateDiffDurationPipe {
1469
1492
  constructor(dateAdapter, translate) {
1470
1493
  this.dateAdapter = dateAdapter;
@@ -1480,17 +1503,17 @@ class DateDiffDurationPipe {
1480
1503
  return this.format(startDate, endDate);
1481
1504
  }
1482
1505
  format(startDate, endDate) {
1483
- const duration = moment.duration(endDate.diff(startDate));
1506
+ const duration = moment$6.duration(endDate.diff(startDate));
1484
1507
  if (duration.asMinutes() < 0)
1485
1508
  return '';
1486
- const timeDuration = moment(0)
1509
+ const timeDuration = moment$6(0)
1487
1510
  .hour(duration.hours())
1488
1511
  .minute(duration.minutes());
1489
1512
  const days = Math.floor(duration.asDays());
1490
1513
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
1491
1514
  }
1492
1515
  }
1493
- DateDiffDurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(ɵɵinject(DateAdapter), ɵɵinject(TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1516
+ DateDiffDurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(i0.ɵɵinject(i1$2.DateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1494
1517
  DateDiffDurationPipe.decorators = [
1495
1518
  { type: Pipe, args: [{
1496
1519
  name: 'dateDiffDuration'
@@ -1511,7 +1534,7 @@ class DateFromNowPipe {
1511
1534
  return date ? date.fromNow(args && args.withoutSuffix) : '';
1512
1535
  }
1513
1536
  }
1514
- DateFromNowPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(ɵɵinject(MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1537
+ DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1515
1538
  DateFromNowPipe.decorators = [
1516
1539
  { type: Pipe, args: [{
1517
1540
  name: 'dateFromNow'
@@ -1580,7 +1603,7 @@ function formatToDD(value, opts) {
1580
1603
  value *= -1;
1581
1604
  }
1582
1605
  }
1583
- let degrees = roundFloat(value, opts.maxDecimals).toString();
1606
+ let degrees = roundFloat$1(value, opts.maxDecimals).toString();
1584
1607
  // Add sign
1585
1608
  let sign = negative ? '-' : '+';
1586
1609
  if (opts.placeholderChar) {
@@ -1631,7 +1654,7 @@ function formatToDDMMSS(value, opts) {
1631
1654
  }
1632
1655
  let degrees = Math.trunc(value);
1633
1656
  let minutes = Math.trunc((value - degrees) * 60);
1634
- let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1657
+ let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1635
1658
  while (seconds >= 60) {
1636
1659
  seconds -= 60;
1637
1660
  minutes += 1;
@@ -1699,7 +1722,7 @@ function formatToDDMM(value, opts) {
1699
1722
  }
1700
1723
  }
1701
1724
  let degrees = Math.trunc(value);
1702
- let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
1725
+ let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
1703
1726
  while (minutes >= 60) {
1704
1727
  minutes -= 60;
1705
1728
  degrees += 1;
@@ -1750,15 +1773,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
1750
1773
  return NaN;
1751
1774
  }
1752
1775
  if (pattern === 'DD')
1753
- return roundFloat(degrees, maxDecimals);
1776
+ return roundFloat$1(degrees, maxDecimals);
1754
1777
  const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
1755
1778
  const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
1756
1779
  const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
1757
1780
  const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
1758
1781
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
1759
- return roundFloat(degrees, maxDecimals);
1782
+ return roundFloat$1(degrees, maxDecimals);
1760
1783
  }
1761
- function roundFloat(input, maxDecimals) {
1784
+ function roundFloat$1(input, maxDecimals) {
1762
1785
  if (maxDecimals > 0) {
1763
1786
  const powDecimal = Math.pow(10, maxDecimals);
1764
1787
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -1778,7 +1801,7 @@ class LatLongFormatPipe {
1778
1801
  return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
1779
1802
  }
1780
1803
  }
1781
- LatLongFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1804
+ LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1782
1805
  LatLongFormatPipe.decorators = [
1783
1806
  { type: Pipe, args: [{
1784
1807
  name: 'latLongFormat'
@@ -1790,7 +1813,7 @@ class LatitudeFormatPipe {
1790
1813
  this.transform = formatLatitude;
1791
1814
  }
1792
1815
  }
1793
- LatitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1816
+ LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1794
1817
  LatitudeFormatPipe.decorators = [
1795
1818
  { type: Pipe, args: [{
1796
1819
  name: 'latitudeFormat'
@@ -1802,7 +1825,7 @@ class LongitudeFormatPipe {
1802
1825
  this.transform = formatLongitude;
1803
1826
  }
1804
1827
  }
1805
- LongitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1828
+ LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1806
1829
  LongitudeFormatPipe.decorators = [
1807
1830
  { type: Pipe, args: [{
1808
1831
  name: 'longitudeFormat'
@@ -1822,7 +1845,7 @@ class NumberFormatPipe {
1822
1845
  }
1823
1846
  }
1824
1847
  }
1825
- NumberFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1848
+ NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1826
1849
  NumberFormatPipe.decorators = [
1827
1850
  { type: Pipe, args: [{
1828
1851
  name: 'numberFormat'
@@ -1862,7 +1885,7 @@ class HighlightPipe {
1862
1885
  }
1863
1886
  }
1864
1887
  }
1865
- HighlightPipe.ɵprov = ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1888
+ HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1866
1889
  HighlightPipe.decorators = [
1867
1890
  { type: Pipe, args: [{
1868
1891
  name: 'highlight'
@@ -1927,7 +1950,7 @@ FileSizePipe.decorators = [
1927
1950
  { type: Pipe, args: [{ name: 'fileSize' },] }
1928
1951
  ];
1929
1952
 
1930
- const moment$1 = momentImported;
1953
+ const moment$5 = momentImported;
1931
1954
  const DATE_UNIX_TIMESTAMP = 'X';
1932
1955
  const DATE_UNIX_MS_TIMESTAMP = 'x';
1933
1956
  class DateUtils {
@@ -1961,32 +1984,32 @@ function fromDateISOString(value) {
1961
1984
  if (!value || isMoment(value))
1962
1985
  return value;
1963
1986
  // Parse the input value, as a ISO date time
1964
- const date = moment$1(value, DATE_ISO_PATTERN);
1987
+ const date = moment$5(value, DATE_ISO_PATTERN);
1965
1988
  if (date.isValid())
1966
1989
  return date;
1967
1990
  // Not valid: trying to convert from unix timestamp
1968
1991
  if (typeof value === 'string') {
1969
1992
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
1970
1993
  if (value.length === 10) {
1971
- return moment$1(value, DATE_UNIX_TIMESTAMP);
1994
+ return moment$5(value, DATE_UNIX_TIMESTAMP);
1972
1995
  }
1973
1996
  else if (value.length === 13) {
1974
- return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
1997
+ return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
1975
1998
  }
1976
1999
  }
1977
2000
  console.warn('Unable to parse date: ' + value);
1978
2001
  return undefined;
1979
2002
  }
1980
2003
  function fromUnixTimestamp(timeInSec) {
1981
- return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2004
+ return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
1982
2005
  }
1983
2006
  function fromUnixMsTimestamp(timeInMs) {
1984
- return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2007
+ return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
1985
2008
  }
1986
2009
  function toDuration(value, unit) {
1987
2010
  if (!value)
1988
2011
  return undefined;
1989
- const duration = moment$1.duration(value, unit);
2012
+ const duration = moment$5.duration(value, unit);
1990
2013
  // fix 990+ ms
1991
2014
  if (duration.milliseconds() >= 990) {
1992
2015
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2015,7 +2038,7 @@ class DurationPipe {
2015
2038
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
2016
2039
  }
2017
2040
  }
2018
- DurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(ɵɵinject(TranslateService)); }, token: DurationPipe, providedIn: "root" });
2041
+ DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2019
2042
  DurationPipe.decorators = [
2020
2043
  { type: Pipe, args: [{
2021
2044
  name: 'duration'
@@ -2036,7 +2059,7 @@ class MathAbsPipe {
2036
2059
  }
2037
2060
  }
2038
2061
  }
2039
- MathAbsPipe.ɵprov = ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2062
+ MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2040
2063
  MathAbsPipe.decorators = [
2041
2064
  { type: Pipe, args: [{
2042
2065
  name: 'mathAbs'
@@ -2048,7 +2071,7 @@ class EvenPipe {
2048
2071
  return val % 2 === 0;
2049
2072
  }
2050
2073
  }
2051
- EvenPipe.ɵprov = ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2074
+ EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2052
2075
  EvenPipe.decorators = [
2053
2076
  { type: Pipe, args: [{
2054
2077
  name: 'even'
@@ -2060,7 +2083,7 @@ class OddPipe {
2060
2083
  return val % 2 !== 0;
2061
2084
  }
2062
2085
  }
2063
- OddPipe.ɵprov = ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2086
+ OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2064
2087
  OddPipe.decorators = [
2065
2088
  { type: Pipe, args: [{
2066
2089
  name: 'odd'
@@ -2168,7 +2191,7 @@ class MapGetPipe {
2168
2191
  return val[key];
2169
2192
  }
2170
2193
  }
2171
- MapGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2194
+ MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2172
2195
  MapGetPipe.decorators = [
2173
2196
  { type: Pipe, args: [{
2174
2197
  name: 'mapGet'
@@ -2182,7 +2205,7 @@ class MapKeysPipe {
2182
2205
  return Object.keys(map);
2183
2206
  }
2184
2207
  }
2185
- MapKeysPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2208
+ MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2186
2209
  MapKeysPipe.decorators = [
2187
2210
  { type: Pipe, args: [{
2188
2211
  name: 'mapKeys'
@@ -2196,7 +2219,7 @@ class MapValuesPipe {
2196
2219
  return Object.values(map);
2197
2220
  }
2198
2221
  }
2199
- MapValuesPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2222
+ MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2200
2223
  MapValuesPipe.decorators = [
2201
2224
  { type: Pipe, args: [{
2202
2225
  name: 'mapValues'
@@ -2209,7 +2232,7 @@ class IsNotNilOrBlankPipe {
2209
2232
  return isNotNilOrBlank(value);
2210
2233
  }
2211
2234
  }
2212
- IsNotNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2235
+ IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2213
2236
  IsNotNilOrBlankPipe.decorators = [
2214
2237
  { type: Pipe, args: [{
2215
2238
  name: 'isNotNilOrBlank'
@@ -2221,7 +2244,7 @@ class IsNilOrBlankPipe {
2221
2244
  return isNilOrBlank(value);
2222
2245
  }
2223
2246
  }
2224
- IsNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2247
+ IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2225
2248
  IsNilOrBlankPipe.decorators = [
2226
2249
  { type: Pipe, args: [{
2227
2250
  name: 'isNilOrBlank'
@@ -2233,7 +2256,7 @@ class ToStringPipe {
2233
2256
  return (value !== null && value !== undefined) ? value.toString() : '';
2234
2257
  }
2235
2258
  }
2236
- ToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2259
+ ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2237
2260
  ToStringPipe.decorators = [
2238
2261
  { type: Pipe, args: [{
2239
2262
  name: 'toString'
@@ -2245,7 +2268,7 @@ class StrLengthPipe {
2245
2268
  return value && value.length || 0;
2246
2269
  }
2247
2270
  }
2248
- StrLengthPipe.ɵprov = ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2271
+ StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2249
2272
  StrLengthPipe.decorators = [
2250
2273
  { type: Pipe, args: [{
2251
2274
  name: 'strLength'
@@ -2296,7 +2319,7 @@ class TranslateContextService {
2296
2319
  : parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
2297
2320
  }
2298
2321
  }
2299
- TranslateContextService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(ɵɵinject(TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2322
+ TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2300
2323
  TranslateContextService.decorators = [
2301
2324
  { type: Injectable, args: [{ providedIn: 'root' },] }
2302
2325
  ];
@@ -2312,7 +2335,7 @@ class TranslateContextPipe {
2312
2335
  return this.translateContext.instant(key, context);
2313
2336
  }
2314
2337
  }
2315
- TranslateContextPipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2338
+ TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2316
2339
  TranslateContextPipe.decorators = [
2317
2340
  { type: Pipe, args: [{
2318
2341
  name: 'translateContext'
@@ -2329,7 +2352,7 @@ class TranslatablePipe {
2329
2352
  return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
2330
2353
  }
2331
2354
  }
2332
- TranslatablePipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2355
+ TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2333
2356
  TranslatablePipe.decorators = [
2334
2357
  { type: Pipe, args: [{
2335
2358
  name: 'translatable'
@@ -2346,7 +2369,7 @@ class PropertyGetPipe {
2346
2369
  args && args.defaultValue);
2347
2370
  }
2348
2371
  }
2349
- PropertyGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2372
+ PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2350
2373
  PropertyGetPipe.decorators = [
2351
2374
  { type: Pipe, args: [{
2352
2375
  name: 'propertyGet'
@@ -2590,12 +2613,12 @@ SharedMatAutocompleteModule.decorators = [
2590
2613
  },] }
2591
2614
  ];
2592
2615
 
2593
- const moment$2 = momentImported;
2616
+ const moment$4 = momentImported;
2594
2617
  // @dynamic
2595
2618
  class SharedValidators {
2596
2619
  static validDate(control) {
2597
2620
  const value = control.value;
2598
- const date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
2621
+ const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
2599
2622
  if (date && (!date.isValid() || date.year() < 1970)) {
2600
2623
  return { validDate: true };
2601
2624
  }
@@ -2889,6 +2912,16 @@ class SharedFormGroupValidators {
2889
2912
  return null;
2890
2913
  };
2891
2914
  }
2915
+ /**
2916
+ * Same as compose, but keep only the first errors (instead of the union)
2917
+ * @param validators
2918
+ */
2919
+ first(validators) {
2920
+ return (control) => validators
2921
+ .filter(isNotNil)
2922
+ .map(validator => validator(control))
2923
+ .find(isNotNil) || null;
2924
+ }
2892
2925
  }
2893
2926
  // @dynamic
2894
2927
  class SharedFormArrayValidators {
@@ -2998,9 +3031,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
2998
3031
  const hour = parseInt(durationParts[0] || '0');
2999
3032
  const minute = parseInt(durationParts[1] || '0');
3000
3033
  const value = hour + (minute + 0.5) / 60;
3001
- return roundFloat$1(value, maxDecimals);
3034
+ return roundFloat(value, maxDecimals);
3002
3035
  }
3003
- function roundFloat$1(input, maxDecimals) {
3036
+ function roundFloat(input, maxDecimals) {
3004
3037
  if (maxDecimals > 0) {
3005
3038
  const powDecimal = Math.pow(10, maxDecimals);
3006
3039
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -3024,9 +3057,9 @@ const MASKS = {
3024
3057
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
3025
3058
  }
3026
3059
  };
3027
- const noop$1 = () => {
3060
+ const noop$6 = () => {
3028
3061
  };
3029
- const ɵ0$1 = noop$1;
3062
+ const ɵ0$9 = noop$6;
3030
3063
  class MatLatLongField {
3031
3064
  constructor(platform, translate, formBuilder, cd, formGroupDir) {
3032
3065
  this.platform = platform;
@@ -3034,8 +3067,8 @@ class MatLatLongField {
3034
3067
  this.formBuilder = formBuilder;
3035
3068
  this.cd = cd;
3036
3069
  this.formGroupDir = formGroupDir;
3037
- this._onChangeCallback = noop$1;
3038
- this._onTouchedCallback = noop$1;
3070
+ this._onChangeCallback = noop$6;
3071
+ this._onTouchedCallback = noop$6;
3039
3072
  this._subscription = new Subscription();
3040
3073
  this.disabling = false;
3041
3074
  this.writing = false;
@@ -3376,14 +3409,14 @@ SharedMatLatLongModule.decorators = [
3376
3409
  },] }
3377
3410
  ];
3378
3411
 
3379
- const DEFAULT_VALUE_ACCESSOR$1 = {
3412
+ const DEFAULT_VALUE_ACCESSOR$5 = {
3380
3413
  provide: NG_VALUE_ACCESSOR,
3381
3414
  useExisting: forwardRef(() => MatDate),
3382
3415
  multi: true
3383
3416
  };
3384
- const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3385
- const noop$2 = () => { };
3386
- const ɵ0$2 = noop$2;
3417
+ const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3418
+ const noop$5 = () => { };
3419
+ const ɵ0$8 = noop$5;
3387
3420
  class MatDate {
3388
3421
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
3389
3422
  this.dateAdapter = dateAdapter;
@@ -3392,12 +3425,12 @@ class MatDate {
3392
3425
  this.cd = cd;
3393
3426
  this.keyboard = keyboard;
3394
3427
  this.formGroupDir = formGroupDir;
3395
- this._onChangeCallback = noop$2;
3396
- this._onTouchedCallback = noop$2;
3428
+ this._onChangeCallback = noop$5;
3429
+ this._onTouchedCallback = noop$5;
3397
3430
  this._subscription = new Subscription();
3398
3431
  this.writing = true;
3399
3432
  this.disabling = false;
3400
- this.dayMask = DAY_MASK;
3433
+ this.dayMask = DAY_MASK$2;
3401
3434
  this.disabled = false;
3402
3435
  this.floatLabel = 'auto';
3403
3436
  this.readonly = false;
@@ -3632,9 +3665,9 @@ class MatDate {
3632
3665
  MatDate.decorators = [
3633
3666
  { type: Component, args: [{
3634
3667
  selector: 'mat-date-field',
3635
- template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors['msg']}}</mat-error>\n </mat-form-field>\n\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n\n",
3668
+ template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n </mat-form-field>\n\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n\n",
3636
3669
  providers: [
3637
- DEFAULT_VALUE_ACCESSOR$1,
3670
+ DEFAULT_VALUE_ACCESSOR$5,
3638
3671
  ],
3639
3672
  changeDetection: ChangeDetectionStrategy.OnPush,
3640
3673
  styles: [":host{display:inline-block;width:100%;position:relative}:host [no-padding]{--ion-grid-column-padding:0}:host [nowrap]{flex-wrap:nowrap}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md,mat-form-field ion-datetime{padding:0!important}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]
@@ -3667,17 +3700,17 @@ MatDate.propDecorators = {
3667
3700
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
3668
3701
  };
3669
3702
 
3670
- const DEFAULT_VALUE_ACCESSOR$2 = {
3703
+ const DEFAULT_VALUE_ACCESSOR$4 = {
3671
3704
  provide: NG_VALUE_ACCESSOR,
3672
3705
  useExisting: forwardRef(() => MatDateTime),
3673
3706
  multi: true
3674
3707
  };
3675
3708
  const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3676
3709
  const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
3677
- const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
3678
- const noop$3 = () => {
3710
+ const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
3711
+ const noop$4 = () => {
3679
3712
  };
3680
- const ɵ0$3 = noop$3;
3713
+ const ɵ0$7 = noop$4;
3681
3714
  class MatDateTime {
3682
3715
  constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
3683
3716
  this.platform = platform;
@@ -3687,14 +3720,14 @@ class MatDateTime {
3687
3720
  this.keyboard = keyboard;
3688
3721
  this.cd = cd;
3689
3722
  this.formGroupDir = formGroupDir;
3690
- this._onChangeCallback = noop$3;
3691
- this._onTouchedCallback = noop$3;
3723
+ this._onChangeCallback = noop$4;
3724
+ this._onTouchedCallback = noop$4;
3692
3725
  this._subscription = new Subscription();
3693
3726
  this.writing = true;
3694
3727
  this.disabling = false;
3695
3728
  this._onDestroy = new EventEmitter();
3696
3729
  this.dayMask = DAY_MASK$1;
3697
- this.hourMask = HOUR_MASK;
3730
+ this.hourMask = HOUR_MASK$1;
3698
3731
  this.floatLabel = 'auto';
3699
3732
  this.readonly = false;
3700
3733
  this.compact = false;
@@ -3998,9 +4031,9 @@ class MatDateTime {
3998
4031
  MatDateTime.decorators = [
3999
4032
  { type: Component, args: [{
4000
4033
  selector: 'mat-date-time-field',
4001
- template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{formControl.errors.msg}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n",
4034
+ template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{(formControl.errors.msg?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n",
4002
4035
  providers: [
4003
- DEFAULT_VALUE_ACCESSOR$2,
4036
+ DEFAULT_VALUE_ACCESSOR$4,
4004
4037
  ],
4005
4038
  changeDetection: ChangeDetectionStrategy.OnPush,
4006
4039
  styles: [":host{display:inline-block;width:100%;position:relative;--ion-grid-column-padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md{padding:0!important}ion-row.no-wrap{flex-wrap:nowrap}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]
@@ -4039,10 +4072,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
4039
4072
  useExisting: forwardRef(() => MatDateShort),
4040
4073
  multi: true
4041
4074
  };
4042
- const DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
4043
- const noop$4 = () => {
4075
+ const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
4076
+ const noop$3 = () => {
4044
4077
  };
4045
- const ɵ0$4 = noop$4;
4078
+ const ɵ0$6 = noop$3;
4046
4079
  class MatDateShort {
4047
4080
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4048
4081
  this.dateAdapter = dateAdapter;
@@ -4051,11 +4084,11 @@ class MatDateShort {
4051
4084
  this.cd = cd;
4052
4085
  this.keyboard = keyboard;
4053
4086
  this.formGroupDir = formGroupDir;
4054
- this._onChangeCallback = noop$4;
4055
- this._onTouchedCallback = noop$4;
4087
+ this._onChangeCallback = noop$3;
4088
+ this._onTouchedCallback = noop$3;
4056
4089
  this.writing = true;
4057
4090
  this.disabling = false;
4058
- this.dayMask = DAY_MASK$2;
4091
+ this.dayMask = DAY_MASK;
4059
4092
  this.disabled = false;
4060
4093
  this.floatLabel = 'auto';
4061
4094
  this.readonly = false;
@@ -4298,7 +4331,7 @@ class MatDateShort {
4298
4331
  MatDateShort.decorators = [
4299
4332
  { type: Component, args: [{
4300
4333
  selector: 'mat-date-short-field',
4301
- template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_YEAR_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker1)\"\n (keyup.escape)=\"preventEvent($event)\"\n (click)=\"matInput.select()\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker1)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker1\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker1)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors['msg']}}</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n <mat-datepicker #datePicker1\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n (yearSelected)=\"closeDatePicker($event, datePicker1)\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n",
4334
+ template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_YEAR_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker1)\"\n (keyup.escape)=\"preventEvent($event)\"\n (click)=\"matInput.select()\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker1)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker1\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker1)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n <mat-datepicker #datePicker1\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n (yearSelected)=\"closeDatePicker($event, datePicker1)\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n",
4302
4335
  providers: [
4303
4336
  DEFAULT_VALUE_ACCESSOR$3,
4304
4337
  ],
@@ -4368,16 +4401,16 @@ SharedMatDateTimeModule.decorators = [
4368
4401
  },] }
4369
4402
  ];
4370
4403
 
4371
- const DEFAULT_VALUE_ACCESSOR$4 = {
4404
+ const DEFAULT_VALUE_ACCESSOR$2 = {
4372
4405
  provide: NG_VALUE_ACCESSOR,
4373
4406
  useExisting: forwardRef(() => MatDuration),
4374
4407
  multi: true
4375
4408
  };
4376
4409
  const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
4377
- const HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
4378
- const noop$5 = () => {
4410
+ const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
4411
+ const noop$2 = () => {
4379
4412
  };
4380
- const ɵ0$5 = noop$5;
4413
+ const ɵ0$5 = noop$2;
4381
4414
  class MatDuration {
4382
4415
  constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
4383
4416
  this.dateAdapter = dateAdapter;
@@ -4386,11 +4419,11 @@ class MatDuration {
4386
4419
  this.cd = cd;
4387
4420
  this.formGroupDir = formGroupDir;
4388
4421
  this._subscription = new Subscription();
4389
- this._onChangeCallback = noop$5;
4390
- this._onTouchedCallback = noop$5;
4422
+ this._onChangeCallback = noop$2;
4423
+ this._onTouchedCallback = noop$2;
4391
4424
  this.writing = true;
4392
4425
  this.disabling = false;
4393
- this.hourMask = HOUR_MASK$1;
4426
+ this.hourMask = HOUR_MASK;
4394
4427
  this.disabled = false;
4395
4428
  this.floatLabel = 'auto';
4396
4429
  this.readonly = false;
@@ -4570,7 +4603,7 @@ MatDuration.decorators = [
4570
4603
  selector: 'mat-duration-field',
4571
4604
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{ formControl.value|duration }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput type=\"text\"\n autocomplete=\"off\"\n [formControl]=\"textControl\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.DURATION_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n\n <!-- errors -->\n <mat-error *ngIf=\"!formControl.hasError('required') && textControl.hasError('pattern')\" translate>ERROR.FIELD_NOT_VALID_PATTERN</mat-error>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors.min }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors.max }}</mat-error>\n\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n</ng-template>\n\n",
4572
4605
  providers: [
4573
- DEFAULT_VALUE_ACCESSOR$4,
4606
+ DEFAULT_VALUE_ACCESSOR$2,
4574
4607
  ],
4575
4608
  changeDetection: ChangeDetectionStrategy.OnPush,
4576
4609
  styles: [":host{display:inline-block;min-width:140px;position:relative;--ion-grid-column-padding:0}:host,mat-form-field{width:100%}mat-form-field .mat-form-field-subscript-wrapper{overflow:visible;top:100%}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}mat-form-field .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}mat-error{text-align:right;width:100%}"]
@@ -4627,22 +4660,22 @@ SharedMatDurationModule.decorators = [
4627
4660
  },] }
4628
4661
  ];
4629
4662
 
4630
- const DEFAULT_VALUE_ACCESSOR$5 = {
4663
+ const DEFAULT_VALUE_ACCESSOR$1 = {
4631
4664
  provide: NG_VALUE_ACCESSOR,
4632
4665
  useExisting: forwardRef(() => MatBooleanField),
4633
4666
  multi: true
4634
4667
  };
4635
- const noop$6 = () => {
4668
+ const noop$1 = () => {
4636
4669
  };
4637
- const ɵ0$6 = noop$6;
4670
+ const ɵ0$4 = noop$1;
4638
4671
  class MatBooleanField {
4639
4672
  constructor(translate, formBuilder, cd, formGroupDir) {
4640
4673
  this.translate = translate;
4641
4674
  this.formBuilder = formBuilder;
4642
4675
  this.cd = cd;
4643
4676
  this.formGroupDir = formGroupDir;
4644
- this._onChangeCallback = noop$6;
4645
- this._onTouchedCallback = noop$6;
4677
+ this._onChangeCallback = noop$1;
4678
+ this._onTouchedCallback = noop$1;
4646
4679
  this._writing = false;
4647
4680
  this.showRadio = false;
4648
4681
  this.disabled = false;
@@ -4806,7 +4839,7 @@ MatBooleanField.decorators = [
4806
4839
  selector: 'mat-boolean-field',
4807
4840
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value ? 'COMMON.YES' : 'COMMON.NO') | translate }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{'COMMON.YES'|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span translate>COMMON.YES</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span translate>COMMON.NO</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label>&nbsp;</ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <ion-grid class=\"ion-no-padding\" *ngIf=\"!formControl.disabled; else disabledLabel\">\n <ion-row class=\"ion-no-padding\">\n <!-- Yes button -->\n <ion-col>\n <ion-button style=\"width: 100%;\"\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'danger' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon slot=\"start\" name=\"checkmark\"></ion-icon>\n {{'COMMON.YES'|translate}}\n </ion-button>\n </ion-col>\n <!-- No button -->\n <ion-col>\n <ion-button style=\"width: 100%;\"\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'danger' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon slot=\"start\" name=\"close\"></ion-icon>\n {{'COMMON.NO'|translate}}\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n",
4808
4841
  providers: [
4809
- DEFAULT_VALUE_ACCESSOR$5
4842
+ DEFAULT_VALUE_ACCESSOR$1
4810
4843
  ],
4811
4844
  changeDetection: ChangeDetectionStrategy.OnPush,
4812
4845
  styles: [":host{width:100%}"]
@@ -5047,7 +5080,7 @@ class MatNumpadDomService {
5047
5080
  this.appRef.detachView(this.componentRef.hostView);
5048
5081
  }
5049
5082
  }
5050
- MatNumpadDomService.ɵprov = ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
5083
+ MatNumpadDomService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1$3.DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
5051
5084
  MatNumpadDomService.decorators = [
5052
5085
  { type: Injectable, args: [{
5053
5086
  providedIn: 'root'
@@ -5411,7 +5444,7 @@ SharedMatNumpadModule.decorators = [
5411
5444
  },] }
5412
5445
  ];
5413
5446
 
5414
- const DEFAULT_VALUE_ACCESSOR$6 = {
5447
+ const DEFAULT_VALUE_ACCESSOR = {
5415
5448
  provide: NG_VALUE_ACCESSOR,
5416
5449
  useExisting: forwardRef(() => MatSwipeField),
5417
5450
  multi: true
@@ -5674,7 +5707,7 @@ MatSwipeField.decorators = [
5674
5707
  { type: Component, args: [{
5675
5708
  selector: 'mat-swipe-field',
5676
5709
  template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n",
5677
- providers: [DEFAULT_VALUE_ACCESSOR$6],
5710
+ providers: [DEFAULT_VALUE_ACCESSOR],
5678
5711
  changeDetection: ChangeDetectionStrategy.OnPush,
5679
5712
  styles: [":host{display:inline-block;width:100%;position:relative}input.hidden{display:none}.slides-container .swiper-slide{font-size:16px!important}.slides-container.hidden{visibility:hidden;height:0!important}.button-next,.button-prev{position:absolute;top:calc(50% - 20px);z-index:10}.button-prev{left:0;right:auto}.button-next{left:auto;right:0}"]
5680
5713
  },] }
@@ -6169,7 +6202,7 @@ class ProgressBarService {
6169
6202
  }
6170
6203
  }
6171
6204
  }
6172
- ProgressBarService.ɵprov = ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
6205
+ ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
6173
6206
  ProgressBarService.decorators = [
6174
6207
  { type: Injectable, args: [{ providedIn: 'root' },] }
6175
6208
  ];
@@ -6213,7 +6246,7 @@ class AppGestureConfig extends HammerGestureConfig {
6213
6246
  return mc;
6214
6247
  }
6215
6248
  }
6216
- AppGestureConfig.ɵprov = ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
6249
+ AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
6217
6250
  AppGestureConfig.decorators = [
6218
6251
  { type: Injectable, args: [{ providedIn: 'root' },] }
6219
6252
  ];
@@ -6436,7 +6469,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
6436
6469
  this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
6437
6470
  }
6438
6471
  }
6439
- MatPaginatorI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(ɵɵinject(TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
6472
+ MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
6440
6473
  MatPaginatorI18n.decorators = [
6441
6474
  { type: Injectable, args: [{ providedIn: 'root' },] }
6442
6475
  ];
@@ -6526,17 +6559,17 @@ function getColorContrast(color, bw) {
6526
6559
  return rgbArrayToHex(rgb.map(v => 255 - v));
6527
6560
  }
6528
6561
 
6529
- const noop$7 = () => {
6562
+ const noop = () => {
6530
6563
  };
6531
- const ɵ0$7 = noop$7;
6564
+ const ɵ0$3 = noop;
6532
6565
  class AppFormField {
6533
6566
  constructor(translate, cd, injector, formGroupDir) {
6534
6567
  this.translate = translate;
6535
6568
  this.cd = cd;
6536
6569
  this.injector = injector;
6537
6570
  this.formGroupDir = formGroupDir;
6538
- this._onChangeCallback = noop$7;
6539
- this._onTouchedCallback = noop$7;
6571
+ this._onChangeCallback = noop;
6572
+ this._onTouchedCallback = noop;
6540
6573
  this.readonly = false;
6541
6574
  this.compact = false;
6542
6575
  this.floatLabel = 'auto';
@@ -6907,14 +6940,14 @@ class AudioProvider {
6907
6940
  });
6908
6941
  }
6909
6942
  }
6910
- AudioProvider.ɵprov = ɵɵdefineInjectable({ factory: function AudioProvider_Factory() { return new AudioProvider(ɵɵinject(Platform), ɵɵinject(NativeAudio, 8), ɵɵinject(Vibration, 8), ɵɵinject(AudioManagement$1, 8)); }, token: AudioProvider, providedIn: "root" });
6943
+ AudioProvider.ɵprov = i0.ɵɵdefineInjectable({ factory: function AudioProvider_Factory() { return new AudioProvider(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2.NativeAudio, 8), i0.ɵɵinject(i3.Vibration, 8), i0.ɵɵinject(i4.AudioManagement, 8)); }, token: AudioProvider, providedIn: "root" });
6911
6944
  AudioProvider.decorators = [
6912
6945
  { type: Injectable, args: [{ providedIn: 'root' },] }
6913
6946
  ];
6914
6947
  AudioProvider.ctorParameters = () => [
6915
6948
  { type: Platform },
6916
- { type: NativeAudio$1, decorators: [{ type: Optional }] },
6917
- { type: Vibration$1, decorators: [{ type: Optional }] },
6949
+ { type: NativeAudio, decorators: [{ type: Optional }] },
6950
+ { type: Vibration, decorators: [{ type: Optional }] },
6918
6951
  { type: AudioManagement, decorators: [{ type: Optional }] }
6919
6952
  ];
6920
6953
 
@@ -6996,7 +7029,7 @@ class Hotkeys {
6996
7029
  });
6997
7030
  }
6998
7031
  }
6999
- Hotkeys.ɵprov = ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(ɵɵinject(EventManager), ɵɵinject(MatDialog), ɵɵinject(DOCUMENT), ɵɵinject(ModalController)); }, token: Hotkeys, providedIn: "root" });
7032
+ Hotkeys.ɵprov = i0.ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(i0.ɵɵinject(i1$5.EventManager), i0.ɵɵinject(i2$1.MatDialog), i0.ɵɵinject(i1$3.DOCUMENT), i0.ɵɵinject(i1$4.ModalController)); }, token: Hotkeys, providedIn: "root" });
7000
7033
  Hotkeys.decorators = [
7001
7034
  { type: Injectable, args: [{
7002
7035
  providedIn: 'root'
@@ -7170,7 +7203,7 @@ class Base64ImageReader {
7170
7203
  }
7171
7204
  }
7172
7205
 
7173
- const uuidv4 = uuidv4Imported;
7206
+ const uuidv4$1 = uuidv4Imported;
7174
7207
  class FileService {
7175
7208
  constructor(platform,
7176
7209
  //private transfer: FileTransfer,
@@ -7207,7 +7240,7 @@ class FileService {
7207
7240
  const lastSlashIndex = source.lastIndexOf('/');
7208
7241
  if (lastSlashIndex === -1)
7209
7242
  throw new Error('Invalid URL: ' + source);
7210
- const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
7243
+ const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
7211
7244
  // Download into the file system
7212
7245
  if (responseType === 'file' && this.canUseFileSystem) {
7213
7246
  console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
@@ -7263,7 +7296,7 @@ class FileService {
7263
7296
  this._started = true;
7264
7297
  }
7265
7298
  }
7266
- FileService.ɵprov = ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(ɵɵinject(Platform), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
7299
+ FileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$2.HttpClient), i0.ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
7267
7300
  FileService.decorators = [
7268
7301
  { type: Injectable, args: [{
7269
7302
  providedIn: 'root',
@@ -7425,7 +7458,7 @@ class Base58 {
7425
7458
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
7426
7459
 
7427
7460
  const scrypt = require('scrypt-async');
7428
- const sha256 = require('hash.js/lib/hash/sha/256');
7461
+ const sha256$1 = require('hash.js/lib/hash/sha/256');
7429
7462
  const sha512 = require('hash.js/lib/hash/sha/512');
7430
7463
  const nacl = {
7431
7464
  sign,
@@ -7529,7 +7562,7 @@ class CryptoService {
7529
7562
  * Hash (using SHA256) a message
7530
7563
  */
7531
7564
  sha256(message) {
7532
- return sha256().update(message).digest('hex');
7565
+ return sha256$1().update(message).digest('hex');
7533
7566
  }
7534
7567
  /**
7535
7568
  * Hash (using SHA512) a message
@@ -7542,7 +7575,7 @@ class CryptoService {
7542
7575
  return nacl.util.encodeBase64(m);
7543
7576
  }
7544
7577
  }
7545
- CryptoService.ɵprov = ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
7578
+ CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
7546
7579
  CryptoService.decorators = [
7547
7580
  { type: Injectable, args: [{ providedIn: 'root' },] }
7548
7581
  ];
@@ -7823,6 +7856,13 @@ const environment = Object.freeze({
7823
7856
  // About
7824
7857
  sourceUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components',
7825
7858
  reportIssueUrl: 'https://gitlab.ifremer.fr/sih-public/sumaris/ngx-sumaris-components/-/issues',
7859
+ // Development
7860
+ defaultAuthValues: {
7861
+ // Basic auth (using Person.username)
7862
+ // username: 'admq2', password: 'q22006'
7863
+ // Token auth (using Person.pubkey)
7864
+ username: 'admin@sumaris.net', password: 'admin',
7865
+ }
7826
7866
  });
7827
7867
 
7828
7868
  class EntityClasses {
@@ -8749,7 +8789,7 @@ class LocalSettingsService {
8749
8789
  return page;
8750
8790
  }
8751
8791
  }
8752
- LocalSettingsService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsService_Factory() { return new LocalSettingsService(ɵɵinject(TranslateService), ɵɵinject(Platform), ɵɵinject(Storage), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_LOCAL_SETTINGS, 8), ɵɵinject(APP_LOCAL_SETTINGS_OPTIONS, 8)); }, token: LocalSettingsService, providedIn: "root" });
8792
+ LocalSettingsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsService_Factory() { return new LocalSettingsService(i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_SETTINGS, 8), i0.ɵɵinject(APP_LOCAL_SETTINGS_OPTIONS, 8)); }, token: LocalSettingsService, providedIn: "root" });
8753
8793
  LocalSettingsService.decorators = [
8754
8794
  { type: Injectable, args: [{
8755
8795
  providedIn: 'root',
@@ -9445,7 +9485,7 @@ class NetworkService {
9445
9485
  });
9446
9486
  }
9447
9487
  }
9448
- NetworkService.ɵprov = ɵɵdefineInjectable({ factory: function NetworkService_Factory() { return new NetworkService(ɵɵinject(DOCUMENT), ɵɵinject(Platform), ɵɵinject(ModalController), ɵɵinject(CryptoService), ɵɵinject(Storage), ɵɵinject(LocalSettingsService), ɵɵinject(CacheService), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT), ɵɵinject(Network, 8), ɵɵinject(SplashScreen, 8), ɵɵinject(TranslateService, 8), ɵɵinject(ToastController, 8)); }, token: NetworkService, providedIn: "root" });
9488
+ NetworkService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NetworkService_Factory() { return new NetworkService(i0.ɵɵinject(i1$3.DOCUMENT), i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i1$4.ModalController), i0.ɵɵinject(CryptoService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i2$2.HttpClient), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i9.Network, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i1$1.TranslateService, 8), i0.ɵɵinject(i1$4.ToastController, 8)); }, token: NetworkService, providedIn: "root" });
9449
9489
  NetworkService.decorators = [
9450
9490
  { type: Injectable, args: [{ providedIn: 'root' },] }
9451
9491
  ];
@@ -9456,16 +9496,16 @@ NetworkService.ctorParameters = () => [
9456
9496
  { type: CryptoService },
9457
9497
  { type: Storage },
9458
9498
  { type: LocalSettingsService },
9459
- { type: CacheService$1 },
9499
+ { type: CacheService },
9460
9500
  { type: HttpClient },
9461
9501
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
9462
- { type: Network$1, decorators: [{ type: Optional }] },
9463
- { type: SplashScreen$1, decorators: [{ type: Optional }] },
9502
+ { type: Network, decorators: [{ type: Optional }] },
9503
+ { type: SplashScreen, decorators: [{ type: Optional }] },
9464
9504
  { type: TranslateService, decorators: [{ type: Optional }] },
9465
9505
  { type: ToastController, decorators: [{ type: Optional }] }
9466
9506
  ];
9467
9507
 
9468
- const ErrorCodes = {
9508
+ const ErrorCodes$2 = {
9469
9509
  UNKNOWN_ERROR: 0,
9470
9510
  LOAD_ACCOUNT_ERROR: 1,
9471
9511
  BAD_PASSWORD: 2,
@@ -9812,7 +9852,7 @@ class EntityStore {
9812
9852
  }
9813
9853
  catch (err) {
9814
9854
  console.error(err);
9815
- throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
9855
+ throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
9816
9856
  }
9817
9857
  }
9818
9858
  // Emit update event
@@ -10389,7 +10429,7 @@ class EntitiesStorage {
10389
10429
  }
10390
10430
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
10391
10431
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
10392
- EntitiesStorage.ɵprov = ɵɵdefineInjectable({ factory: function EntitiesStorage_Factory() { return new EntitiesStorage(ɵɵinject(Platform), ɵɵinject(ProgressBarService), ɵɵinject(Storage), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_LOCAL_STORAGE_TYPE_POLICIES, 8)); }, token: EntitiesStorage, providedIn: "root" });
10432
+ EntitiesStorage.ɵprov = i0.ɵɵdefineInjectable({ factory: function EntitiesStorage_Factory() { return new EntitiesStorage(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(ProgressBarService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_STORAGE_TYPE_POLICIES, 8)); }, token: EntitiesStorage, providedIn: "root" });
10393
10433
  EntitiesStorage.decorators = [
10394
10434
  { type: Injectable, args: [{ providedIn: 'root' },] }
10395
10435
  ];
@@ -10486,10 +10526,10 @@ function referentialToString(obj, properties) {
10486
10526
  function referentialsToString(values, properties, separator) {
10487
10527
  return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
10488
10528
  }
10489
- const ɵ0$8 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
10529
+ const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
10490
10530
  const StatusList = Object.freeze([
10491
10531
  {
10492
- id: ɵ0$8,
10532
+ id: ɵ0$2,
10493
10533
  icon: 'checkmark',
10494
10534
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
10495
10535
  },
@@ -10760,7 +10800,7 @@ function accountToString(data) {
10760
10800
  (data.lastName || '')) || '';
10761
10801
  }
10762
10802
 
10763
- const uuidv4$1 = uuidv4Imported;
10803
+ const uuidv4 = uuidv4Imported;
10764
10804
  const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
10765
10805
  const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
10766
10806
  /**
@@ -10804,7 +10844,7 @@ function createTrackerLink(opts) {
10804
10844
  // Skip if not tracked
10805
10845
  if (!context || !context.tracked)
10806
10846
  return forward(operation);
10807
- const id = context.serializationKey || uuidv4$1();
10847
+ const id = context.serializationKey || uuidv4();
10808
10848
  console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
10809
10849
  // Clean context, before calling JSON.stringify (remove unused attributes)
10810
10850
  const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -11512,7 +11552,7 @@ class GraphqlService {
11512
11552
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
11513
11553
  || this.toAppError(err.networkError)
11514
11554
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
11515
- || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
11555
+ || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
11516
11556
  // If graphQL: try to convert the first error found
11517
11557
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
11518
11558
  || this.toAppError(err)
@@ -11520,7 +11560,7 @@ class GraphqlService {
11520
11560
  || (err.graphQLErrors && err.graphQLErrors[0])
11521
11561
  || err;
11522
11562
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
11523
- if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
11563
+ if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
11524
11564
  console.error('[graphql] original error: ' + err.networkError.message);
11525
11565
  this.onNetworkError.next(error);
11526
11566
  }
@@ -11556,7 +11596,7 @@ class GraphqlService {
11556
11596
  return 'ERROR.UNAUTHORIZED';
11557
11597
  case ServerErrorCodes.FORBIDDEN:
11558
11598
  return 'ERROR.FORBIDDEN';
11559
- case ErrorCodes.UNKNOWN_NETWORK_ERROR:
11599
+ case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
11560
11600
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
11561
11601
  case ServerErrorCodes.BAD_UPDATE_DATE:
11562
11602
  return 'ERROR.BAD_UPDATE_DATE';
@@ -11593,7 +11633,7 @@ class GraphqlService {
11593
11633
  });
11594
11634
  }
11595
11635
  }
11596
- GraphqlService.ɵprov = ɵɵdefineInjectable({ factory: function GraphqlService_Factory() { return new GraphqlService(ɵɵinject(Platform), ɵɵinject(Apollo), ɵɵinject(HttpLink), ɵɵinject(NetworkService), ɵɵinject(Storage), ɵɵinject(CryptoService), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_GRAPHQL_TYPE_POLICIES, 8)); }, token: GraphqlService, providedIn: "root" });
11636
+ GraphqlService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GraphqlService_Factory() { return new GraphqlService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$3.Apollo), i0.ɵɵinject(i3$2.HttpLink), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(CryptoService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_GRAPHQL_TYPE_POLICIES, 8)); }, token: GraphqlService, providedIn: "root" });
11597
11637
  GraphqlService.decorators = [
11598
11638
  { type: Injectable, args: [{
11599
11639
  providedIn: 'root'
@@ -11610,7 +11650,7 @@ GraphqlService.ctorParameters = () => [
11610
11650
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
11611
11651
  ];
11612
11652
 
11613
- const sha256$1 = require('hash.js/lib/hash/sha/256');
11653
+ const sha256 = require('hash.js/lib/hash/sha/256');
11614
11654
  class BaseGraphqlServiceOptions {
11615
11655
  }
11616
11656
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
@@ -11760,8 +11800,8 @@ class BaseGraphqlService {
11760
11800
  }
11761
11801
  /* -- protected methods -- */
11762
11802
  computeMutableWatchQueryId(opts) {
11763
- const queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
11764
- const variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
11803
+ const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
11804
+ const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
11765
11805
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
11766
11806
  }
11767
11807
  findMutableWatchQueries(opts) {
@@ -11824,7 +11864,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
11824
11864
  /* ------------------------------------
11825
11865
  * GraphQL queries
11826
11866
  * ------------------------------------*/
11827
- const Fragments = {
11867
+ const Fragments$1 = {
11828
11868
  account: gql `
11829
11869
  fragment AccountFragment on AccountVO {
11830
11870
  id
@@ -11857,13 +11897,13 @@ const Fragments = {
11857
11897
  `
11858
11898
  };
11859
11899
  // Load account query
11860
- const LoadQuery = gql `
11900
+ const LoadQuery$1 = gql `
11861
11901
  query Account {
11862
11902
  account {
11863
11903
  ...AccountFragment
11864
11904
  }
11865
11905
  }
11866
- ${Fragments.account}
11906
+ ${Fragments$1.account}
11867
11907
  `;
11868
11908
  // Check email query
11869
11909
  const IsEmailExistsQuery = gql `
@@ -11872,13 +11912,13 @@ const IsEmailExistsQuery = gql `
11872
11912
  }
11873
11913
  `;
11874
11914
  // Save (create or update) account mutation
11875
- const SaveMutation = gql `
11915
+ const SaveMutation$1 = gql `
11876
11916
  mutation SaveAccount($account:AccountVOInput){
11877
11917
  saveAccount(account: $account){
11878
11918
  ...AccountFragment
11879
11919
  }
11880
11920
  }
11881
- ${Fragments.account}
11921
+ ${Fragments$1.account}
11882
11922
  `;
11883
11923
  // Create account mutation
11884
11924
  const CreateMutation = gql `
@@ -11887,7 +11927,7 @@ const CreateMutation = gql `
11887
11927
  ...AccountFragment
11888
11928
  }
11889
11929
  }
11890
- ${Fragments.account}
11930
+ ${Fragments$1.account}
11891
11931
  `;
11892
11932
  // Sent confirmation email
11893
11933
  const SendConfirmEmailMutation = gql `
@@ -12226,7 +12266,7 @@ class AccountService extends BaseGraphqlService {
12226
12266
  catch (error) {
12227
12267
  console.error(error);
12228
12268
  this.resetData();
12229
- throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
12269
+ throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
12230
12270
  }
12231
12271
  // Store pubkey+keypair
12232
12272
  this.data.pubkey = Base58.encode(keypair.publicKey);
@@ -12260,7 +12300,7 @@ class AccountService extends BaseGraphqlService {
12260
12300
  }
12261
12301
  catch (err) {
12262
12302
  // If account not found, check if email is valid
12263
- if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
12303
+ if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
12264
12304
  // Check email exists
12265
12305
  if (data.username.indexOf('@') !== -1) {
12266
12306
  let isEmailExists;
@@ -12272,11 +12312,11 @@ class AccountService extends BaseGraphqlService {
12272
12312
  }
12273
12313
  // Email not exists (no account)
12274
12314
  if (!isEmailExists) {
12275
- throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
12315
+ throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
12276
12316
  }
12277
12317
  }
12278
12318
  // Email exists, so error = 'bad password'
12279
- throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
12319
+ throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
12280
12320
  }
12281
12321
  throw err; // resend the first error
12282
12322
  }
@@ -12337,7 +12377,7 @@ class AccountService extends BaseGraphqlService {
12337
12377
  throw error;
12338
12378
  console.error(error);
12339
12379
  throw {
12340
- code: ErrorCodes.LOAD_ACCOUNT_ERROR,
12380
+ code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
12341
12381
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
12342
12382
  };
12343
12383
  }
@@ -12549,8 +12589,8 @@ class AccountService extends BaseGraphqlService {
12549
12589
  }
12550
12590
  else {
12551
12591
  const res = yield this.graphql.query({
12552
- query: LoadQuery,
12553
- error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
12592
+ query: LoadQuery$1,
12593
+ error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
12554
12594
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
12555
12595
  });
12556
12596
  accountJson = res && res.account;
@@ -12584,7 +12624,7 @@ class AccountService extends BaseGraphqlService {
12584
12624
  if (!isNew) {
12585
12625
  const existingAccount = yield this.loadAccount({ fetchPolicy: 'network-only' });
12586
12626
  if (!existingAccount || !existingAccount.updateDate) {
12587
- throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
12627
+ throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
12588
12628
  }
12589
12629
  account.updateDate = existingAccount.updateDate || account.updateDate;
12590
12630
  if (account.settings && existingAccount.settings) {
@@ -12597,12 +12637,12 @@ class AccountService extends BaseGraphqlService {
12597
12637
  delete json.mainProfile; // Not known on server
12598
12638
  // Execute mutation
12599
12639
  const res = yield this.graphql.mutate({
12600
- mutation: isNew ? CreateMutation : SaveMutation,
12640
+ mutation: isNew ? CreateMutation : SaveMutation$1,
12601
12641
  variables: {
12602
12642
  account: json
12603
12643
  },
12604
12644
  error: {
12605
- code: ErrorCodes.SAVE_ACCOUNT_ERROR,
12645
+ code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
12606
12646
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
12607
12647
  }
12608
12648
  });
@@ -12627,7 +12667,7 @@ class AccountService extends BaseGraphqlService {
12627
12667
  return __awaiter(this, void 0, void 0, function* () {
12628
12668
  const isEmailExists = yield this.isEmailExists(email);
12629
12669
  if (isEmailExists) {
12630
- throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
12670
+ throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
12631
12671
  }
12632
12672
  });
12633
12673
  }
@@ -12663,7 +12703,7 @@ class AccountService extends BaseGraphqlService {
12663
12703
  locale
12664
12704
  },
12665
12705
  error: {
12666
- code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
12706
+ code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
12667
12707
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
12668
12708
  }
12669
12709
  });
@@ -12679,7 +12719,7 @@ class AccountService extends BaseGraphqlService {
12679
12719
  code
12680
12720
  },
12681
12721
  error: {
12682
- code: ErrorCodes.CONFIRM_EMAIL_FAILED,
12722
+ code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
12683
12723
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
12684
12724
  }
12685
12725
  });
@@ -12697,7 +12737,7 @@ class AccountService extends BaseGraphqlService {
12697
12737
  interval: 10
12698
12738
  },
12699
12739
  error: {
12700
- code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
12740
+ code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
12701
12741
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
12702
12742
  }
12703
12743
  }).subscribe({
@@ -12776,7 +12816,7 @@ class AccountService extends BaseGraphqlService {
12776
12816
  if (counter > 4) {
12777
12817
  if (this._debug)
12778
12818
  console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
12779
- throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
12819
+ throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
12780
12820
  }
12781
12821
  // Check if valid
12782
12822
  if (token) {
@@ -12786,7 +12826,7 @@ class AccountService extends BaseGraphqlService {
12786
12826
  token
12787
12827
  },
12788
12828
  error: {
12789
- code: ErrorCodes.UNAUTHORIZED,
12829
+ code: ErrorCodes$2.UNAUTHORIZED,
12790
12830
  message: 'ERROR.UNAUTHORIZED'
12791
12831
  },
12792
12832
  fetchPolicy: 'no-cache'
@@ -12802,7 +12842,7 @@ class AccountService extends BaseGraphqlService {
12802
12842
  }
12803
12843
  // Generate a new token
12804
12844
  const challengeError = {
12805
- code: ErrorCodes.AUTH_CHALLENGE_ERROR,
12845
+ code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
12806
12846
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
12807
12847
  };
12808
12848
  const data = yield this.graphql.query({
@@ -12828,7 +12868,7 @@ class AccountService extends BaseGraphqlService {
12828
12868
  });
12829
12869
  }
12830
12870
  }
12831
- AccountService.ɵprov = ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(ɵɵinject(CryptoService), ɵɵinject(NetworkService), ɵɵinject(GraphqlService), ɵɵinject(LocalSettingsService), ɵɵinject(Storage), ɵɵinject(FileService), ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
12871
+ AccountService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(i0.ɵɵinject(CryptoService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(FileService), i0.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
12832
12872
  AccountService.decorators = [
12833
12873
  { type: Injectable, args: [{ providedIn: 'root' },] }
12834
12874
  ];
@@ -13078,7 +13118,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
13078
13118
  /* ------------------------------------
13079
13119
  * GraphQL queries
13080
13120
  * ------------------------------------*/
13081
- const Fragments$1 = {
13121
+ const Fragments = {
13082
13122
  config: gql `
13083
13123
  fragment ConfigFragment on ConfigurationVO {
13084
13124
  id
@@ -13105,22 +13145,22 @@ const Fragments$1 = {
13105
13145
  }
13106
13146
  `
13107
13147
  };
13108
- const LoadQuery$1 = gql `
13148
+ const LoadQuery = gql `
13109
13149
  query Configuration{
13110
13150
  data: configuration{
13111
13151
  ...ConfigFragment
13112
13152
  }
13113
13153
  }
13114
- ${Fragments$1.config}
13154
+ ${Fragments.config}
13115
13155
  `;
13116
13156
  // Save (create or update) account mutation
13117
- const SaveMutation$1 = gql `
13157
+ const SaveMutation = gql `
13118
13158
  mutation SaveConfiguration($data: ConfigurationVOInput){
13119
13159
  data: saveConfiguration(config: $data){
13120
13160
  ...ConfigFragment
13121
13161
  }
13122
13162
  }
13123
- ${Fragments$1.config}
13163
+ ${Fragments.config}
13124
13164
  `;
13125
13165
  const ClearCache = gql `
13126
13166
  query ClearCache($name: String) {
@@ -13208,12 +13248,12 @@ class ConfigService extends BaseGraphqlService {
13208
13248
  return __awaiter(this, void 0, void 0, function* () {
13209
13249
  const now = Date.now();
13210
13250
  console.debug('[config] Loading Pod configuration...');
13211
- const query = opts && opts.query || LoadQuery$1;
13251
+ const query = opts && opts.query || LoadQuery;
13212
13252
  const variables = opts && opts.variables || undefined;
13213
13253
  const res = yield this.graphql.query({
13214
13254
  query,
13215
13255
  variables,
13216
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13256
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13217
13257
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
13218
13258
  });
13219
13259
  const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
@@ -13238,12 +13278,12 @@ class ConfigService extends BaseGraphqlService {
13238
13278
  const json = config.asObject();
13239
13279
  // Execute mutation
13240
13280
  const res = yield this.graphql.mutate({
13241
- mutation: SaveMutation$1,
13281
+ mutation: SaveMutation,
13242
13282
  variables: {
13243
13283
  data: json
13244
13284
  },
13245
13285
  error: {
13246
- code: ErrorCodes.SAVE_CONFIG_ERROR,
13286
+ code: ErrorCodes$2.SAVE_CONFIG_ERROR,
13247
13287
  message: 'ERROR.SAVE_CONFIG_ERROR'
13248
13288
  }
13249
13289
  });
@@ -13269,7 +13309,7 @@ class ConfigService extends BaseGraphqlService {
13269
13309
  const res = yield this.graphql.query({
13270
13310
  query: CacheStatistics,
13271
13311
  variables: null,
13272
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13312
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13273
13313
  fetchPolicy: 'network-only'
13274
13314
  });
13275
13315
  const data = res && res.cacheStatistics || undefined;
@@ -13285,7 +13325,7 @@ class ConfigService extends BaseGraphqlService {
13285
13325
  const res = yield this.graphql.query({
13286
13326
  query: ClearCache,
13287
13327
  variables,
13288
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13328
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13289
13329
  fetchPolicy: 'network-only'
13290
13330
  });
13291
13331
  const data = res && res.clearCache || undefined;
@@ -13444,7 +13484,7 @@ class ConfigService extends BaseGraphqlService {
13444
13484
  });
13445
13485
  }
13446
13486
  }
13447
- ConfigService.ɵprov = ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(ɵɵinject(Platform), ɵɵinject(GraphqlService), ɵɵinject(Storage), ɵɵinject(NetworkService), ɵɵinject(FileService), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
13487
+ ConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(NetworkService), i0.ɵɵinject(FileService), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
13448
13488
  ConfigService.decorators = [
13449
13489
  { type: Injectable, args: [{
13450
13490
  providedIn: 'root',
@@ -13463,7 +13503,7 @@ ConfigService.ctorParameters = () => [
13463
13503
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
13464
13504
  ];
13465
13505
 
13466
- const moment$4 = momentImported;
13506
+ const moment$2 = momentImported;
13467
13507
  class PlatformService {
13468
13508
  constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser) {
13469
13509
  this.platform = platform;
@@ -13628,16 +13668,16 @@ class PlatformService {
13628
13668
  }
13629
13669
  // config moment lib
13630
13670
  try {
13631
- moment$4.locale(event.lang);
13671
+ moment$2.locale(event.lang);
13632
13672
  console.debug('[platform] Use locale {' + event.lang + '}');
13633
13673
  }
13634
13674
  // If error, fallback to en
13635
13675
  catch (err) {
13636
- moment$4.locale('en');
13676
+ moment$2.locale('en');
13637
13677
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
13638
13678
  }
13639
13679
  // Config date adapter
13640
- this.dateAdapter.setLocale(moment$4.locale());
13680
+ this.dateAdapter.setLocale(moment$2.locale());
13641
13681
  }
13642
13682
  });
13643
13683
  this.settings.onChange.subscribe(data => {
@@ -13774,7 +13814,7 @@ class PlatformService {
13774
13814
  });
13775
13815
  }
13776
13816
  }
13777
- PlatformService.ɵprov = ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(ɵɵinject(Platform), ɵɵinject(Platform$1), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(MomentDateAdapter), ɵɵinject(EntitiesStorage), ɵɵinject(LocalSettingsService), ɵɵinject(NetworkService), ɵɵinject(AccountService), ɵɵinject(ConfigService), ɵɵinject(CacheService), ɵɵinject(Storage), ɵɵinject(AudioProvider), ɵɵinject(ENVIRONMENT), ɵɵinject(StatusBar, 8), ɵɵinject(Keyboard$1, 8), ɵɵinject(SplashScreen, 8), ɵɵinject(InAppBrowser, 8)); }, token: PlatformService, providedIn: "root" });
13817
+ PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$4.Platform), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(EntitiesStorage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ConfigService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(AudioProvider), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i14.StatusBar, 8), i0.ɵɵinject(i15.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i17.InAppBrowser, 8)); }, token: PlatformService, providedIn: "root" });
13778
13818
  PlatformService.decorators = [
13779
13819
  { type: Injectable, args: [{ providedIn: 'root' },] }
13780
13820
  ];
@@ -13789,14 +13829,14 @@ PlatformService.ctorParameters = () => [
13789
13829
  { type: NetworkService },
13790
13830
  { type: AccountService },
13791
13831
  { type: ConfigService },
13792
- { type: CacheService$1 },
13832
+ { type: CacheService },
13793
13833
  { type: Storage },
13794
13834
  { type: AudioProvider },
13795
13835
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
13796
- { type: StatusBar$1, decorators: [{ type: Optional }] },
13836
+ { type: StatusBar, decorators: [{ type: Optional }] },
13797
13837
  { type: Keyboard, decorators: [{ type: Optional }] },
13798
- { type: SplashScreen$1, decorators: [{ type: Optional }] },
13799
- { type: InAppBrowser$1, decorators: [{ type: Optional }] }
13838
+ { type: SplashScreen, decorators: [{ type: Optional }] },
13839
+ { type: InAppBrowser, decorators: [{ type: Optional }] }
13800
13840
  ];
13801
13841
 
13802
13842
  class AppHelpModal {
@@ -13860,7 +13900,7 @@ class MatStepperI18n extends MatStepperIntl {
13860
13900
  this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
13861
13901
  }
13862
13902
  }
13863
- MatStepperI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(ɵɵinject(TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
13903
+ MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
13864
13904
  MatStepperI18n.decorators = [
13865
13905
  { type: Injectable, args: [{ providedIn: 'root' },] }
13866
13906
  ];
@@ -14768,7 +14808,7 @@ function state2side(state) {
14768
14808
  return 1;
14769
14809
  }
14770
14810
  }
14771
- const ɵ0$9 = (defaultStateSize) => [
14811
+ const ɵ0$1 = (defaultStateSize) => [
14772
14812
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
14773
14813
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
14774
14814
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -14776,7 +14816,7 @@ const ɵ0$9 = (defaultStateSize) => [
14776
14816
  const SCALE_OPTIONS_DEFAULT = {
14777
14817
  startColor: rgbArrayMap.red,
14778
14818
  startStates: [0, 2, 3],
14779
- startStepsFn: ɵ0$9
14819
+ startStepsFn: ɵ0$1
14780
14820
  };
14781
14821
  /**
14782
14822
  * Internal function, that create a colors scale, using iteration
@@ -14868,21 +14908,21 @@ function linearColorGradient(count, options) {
14868
14908
  return result;
14869
14909
  }
14870
14910
 
14871
- class EntityTestClass {
14911
+ class EntityTestClass$1 {
14872
14912
  }
14873
- const FAKE_ENTITIES = [
14913
+ const FAKE_ENTITIES$1 = [
14874
14914
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
14875
14915
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
14876
14916
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
14877
14917
  ];
14878
- function deepCopy(values, size) {
14918
+ function deepCopy$1(values, size) {
14879
14919
  if (isNil(size)) {
14880
- return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
14920
+ return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
14881
14921
  }
14882
14922
  let result = [];
14883
14923
  let i = 1;
14884
14924
  while (result.length < size) {
14885
- result = result.concat((values || FAKE_ENTITIES).map(entity => {
14925
+ result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
14886
14926
  const name = entity.name + ' #' + i;
14887
14927
  return Object.assign(Object.assign({}, entity), { id: i++, name });
14888
14928
  }));
@@ -14892,7 +14932,7 @@ function deepCopy(values, size) {
14892
14932
  class AutocompleteTestPage {
14893
14933
  constructor(formBuilder) {
14894
14934
  this.formBuilder = formBuilder;
14895
- this._items = deepCopy(FAKE_ENTITIES, 100);
14935
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
14896
14936
  this.$items = new BehaviorSubject(undefined);
14897
14937
  this.autocompleteFields = new MatAutocompleteConfigHolder();
14898
14938
  this.memoryHide = false;
@@ -14936,7 +14976,7 @@ class AutocompleteTestPage {
14936
14976
  });
14937
14977
  // From items
14938
14978
  this.autocompleteFields.add('entity-items-large', {
14939
- items: FAKE_ENTITIES.slice(),
14979
+ items: FAKE_ENTITIES$1.slice(),
14940
14980
  attributes: ['label', 'name', 'description', 'comments'],
14941
14981
  displayWith: this.entityToString
14942
14982
  });
@@ -14946,12 +14986,12 @@ class AutocompleteTestPage {
14946
14986
  loadData() {
14947
14987
  return __awaiter(this, void 0, void 0, function* () {
14948
14988
  const data = {
14949
- entity: deepCopy(FAKE_ENTITIES)[1],
14989
+ entity: deepCopy$1(FAKE_ENTITIES$1)[1],
14950
14990
  // This item is NOT in the items list => i should be displayed anyway
14951
14991
  missingEntity: {
14952
14992
  id: -1, label: '??', name: 'Missing item'
14953
14993
  },
14954
- disableEntity: deepCopy(FAKE_ENTITIES)[2]
14994
+ disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
14955
14995
  };
14956
14996
  this.form.setValue(data);
14957
14997
  // Load observables
@@ -15121,13 +15161,13 @@ MaterialTestingPage.ctorParameters = () => [
15121
15161
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
15122
15162
  ];
15123
15163
 
15124
- const moment$5 = momentImported;
15164
+ const moment$1 = momentImported;
15125
15165
  class SwipeTestPage {
15126
15166
  constructor(formBuilder, dateFormatPipe) {
15127
15167
  this.formBuilder = formBuilder;
15128
15168
  this.dateFormatPipe = dateFormatPipe;
15129
15169
  this.$dates = new BehaviorSubject(undefined);
15130
- this._today = moment$5().startOf('day');
15170
+ this._today = moment$1().startOf('day');
15131
15171
  this.form = formBuilder.group({
15132
15172
  empty: [null, Validators.required],
15133
15173
  date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
@@ -15140,7 +15180,7 @@ class SwipeTestPage {
15140
15180
  ngOnInit() {
15141
15181
  const dates = [];
15142
15182
  for (let d = 0; d < 7; d++) {
15143
- dates[d] = moment$5(this._today).add(d - 3, 'day');
15183
+ dates[d] = moment$1(this._today).add(d - 3, 'day');
15144
15184
  }
15145
15185
  this.$dates.next(dates);
15146
15186
  this.loadData();
@@ -15741,7 +15781,7 @@ class FormArrayHelper {
15741
15781
  }
15742
15782
  }
15743
15783
 
15744
- const moment$6 = momentImported;
15784
+ const moment = momentImported;
15745
15785
  class DateTimeTestPage {
15746
15786
  constructor(platform, formBuilder, cd) {
15747
15787
  this.platform = platform;
@@ -15772,7 +15812,7 @@ class DateTimeTestPage {
15772
15812
  // Load the form with data
15773
15813
  loadData() {
15774
15814
  return __awaiter(this, void 0, void 0, function* () {
15775
- const now = moment$6();
15815
+ const now = moment();
15776
15816
  const data = {
15777
15817
  empty: toDateISOString(now.clone().add(2, 'hours')),
15778
15818
  enable: toDateISOString(now),
@@ -15832,20 +15872,20 @@ DateTimeTestPage.ctorParameters = () => [
15832
15872
  { type: ChangeDetectorRef }
15833
15873
  ];
15834
15874
 
15835
- class EntityTestClass$1 {
15875
+ class EntityTestClass {
15836
15876
  }
15837
- const FAKE_ENTITIES$1 = [
15877
+ const FAKE_ENTITIES = [
15838
15878
  { id: 1, label: 'AAA', name: 'Item A' },
15839
15879
  { id: 2, label: 'BBB', name: 'Item B' },
15840
15880
  { id: 3, label: 'CCC', name: 'Item C' }
15841
15881
  ];
15842
- function deepCopy$1(values) {
15843
- return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
15882
+ function deepCopy(values) {
15883
+ return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
15844
15884
  }
15845
15885
  class ChipsTestPage {
15846
15886
  constructor(formBuilder) {
15847
15887
  this.formBuilder = formBuilder;
15848
- this._items = deepCopy$1(FAKE_ENTITIES$1);
15888
+ this._items = deepCopy(FAKE_ENTITIES);
15849
15889
  this._$items = new BehaviorSubject(undefined);
15850
15890
  this.autocompleteFields = new MatAutocompleteConfigHolder();
15851
15891
  this.form = formBuilder.group({
@@ -15864,7 +15904,7 @@ class ChipsTestPage {
15864
15904
  });
15865
15905
  // From items
15866
15906
  this.autocompleteFields.add('entity-items', {
15867
- items: FAKE_ENTITIES$1.slice(),
15907
+ items: FAKE_ENTITIES.slice(),
15868
15908
  attributes: ['label', 'name'],
15869
15909
  displayWith: this.entityToString
15870
15910
  });
@@ -15885,15 +15925,15 @@ class ChipsTestPage {
15885
15925
  const data = {
15886
15926
  entity: [],
15887
15927
  // THis item is NOT in the items list => i should be displayed anyway
15888
- entityInitial: FAKE_ENTITIES$1.slice(1, 2),
15889
- disableEntity: FAKE_ENTITIES$1.slice(1, 2)
15928
+ entityInitial: FAKE_ENTITIES.slice(1, 2),
15929
+ disableEntity: FAKE_ENTITIES.slice(1, 2)
15890
15930
  };
15891
15931
  this.form.setValue(data);
15892
15932
  });
15893
15933
  }
15894
15934
  loadItems() {
15895
15935
  return __awaiter(this, void 0, void 0, function* () {
15896
- this._$items.next(deepCopy$1(FAKE_ENTITIES$1));
15936
+ this._$items.next(deepCopy(FAKE_ENTITIES));
15897
15937
  });
15898
15938
  }
15899
15939
  entityToString(item) {
@@ -15925,7 +15965,7 @@ ChipsTestPage.ctorParameters = () => [
15925
15965
  { type: FormBuilder }
15926
15966
  ];
15927
15967
 
15928
- const routes = [
15968
+ const routes$1 = [
15929
15969
  {
15930
15970
  path: '',
15931
15971
  pathMatch: 'full',
@@ -15972,7 +16012,7 @@ MaterialTestingModule.decorators = [
15972
16012
  ReactiveFormsModule,
15973
16013
  SharedMaterialModule,
15974
16014
  TranslateModule.forChild(),
15975
- RouterModule.forChild(routes)
16015
+ RouterModule.forChild(routes$1)
15976
16016
  ],
15977
16017
  declarations: [
15978
16018
  MaterialTestingPage,
@@ -16284,15 +16324,10 @@ class AuthForm extends AppForm {
16284
16324
  this.markForCheck();
16285
16325
  }));
16286
16326
  // For DEV only
16287
- if (this.environment && this.environment.production === false) {
16327
+ if (this.environment && this.environment.production === false && this.environment.defaultAuthValues) {
16288
16328
  // Set the default user, for testing.
16289
- // (see values in the test database - XML files in the module 'sumaris-core-test-shared')
16290
- this.form.patchValue({
16291
- // Basic auth (using Person.username)
16292
- // username: 'admq2', password: 'q22006'
16293
- // Token auth (using Person.pubkey)
16294
- username: 'admin@sumaris.net', password: 'admin'
16295
- });
16329
+ // Override using environment, if any
16330
+ this.form.patchValue(this.environment.defaultAuthValues);
16296
16331
  }
16297
16332
  }
16298
16333
  cancel() {
@@ -16873,7 +16908,7 @@ class UserSettingsValidatorService extends AppValidatorService {
16873
16908
  });
16874
16909
  }
16875
16910
  }
16876
- UserSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(ɵɵinject(FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
16911
+ UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
16877
16912
  UserSettingsValidatorService.decorators = [
16878
16913
  { type: Injectable, args: [{ providedIn: 'root' },] }
16879
16914
  ];
@@ -16917,7 +16952,7 @@ class AccountValidatorService extends AppValidatorService {
16917
16952
  return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
16918
16953
  }
16919
16954
  }
16920
- AccountValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
16955
+ AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
16921
16956
  AccountValidatorService.decorators = [
16922
16957
  { type: Injectable, args: [{ providedIn: 'root' },] }
16923
16958
  ];
@@ -17446,7 +17481,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
17446
17481
  });
17447
17482
  }
17448
17483
  }
17449
- LocalSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(ɵɵinject(FormBuilder), ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
17484
+ LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
17450
17485
  LocalSettingsValidatorService.decorators = [
17451
17486
  { type: Injectable, args: [{ providedIn: 'root' },] }
17452
17487
  ];
@@ -18054,7 +18089,7 @@ class IsOnFieldModePipe {
18054
18089
  return value === 'FIELD';
18055
18090
  }
18056
18091
  }
18057
- IsOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18092
+ IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18058
18093
  IsOnFieldModePipe.decorators = [
18059
18094
  { type: Pipe, args: [{
18060
18095
  name: 'isOnField'
@@ -18066,7 +18101,7 @@ class IsNotOnFieldModePipe {
18066
18101
  return value !== 'FIELD';
18067
18102
  }
18068
18103
  }
18069
- IsNotOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18104
+ IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18070
18105
  IsNotOnFieldModePipe.decorators = [
18071
18106
  { type: Pipe, args: [{
18072
18107
  name: 'isNotOnField'
@@ -18081,7 +18116,7 @@ class PersonToStringPipe {
18081
18116
  return PersonUtils.personToString(value);
18082
18117
  }
18083
18118
  }
18084
- PersonToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18119
+ PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18085
18120
  PersonToStringPipe.decorators = [
18086
18121
  { type: Pipe, args: [{
18087
18122
  name: 'personToString'
@@ -18298,7 +18333,7 @@ class IsLoginAccountPipe {
18298
18333
  return value && value.pubkey && true;
18299
18334
  }
18300
18335
  }
18301
- IsLoginAccountPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
18336
+ IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
18302
18337
  IsLoginAccountPipe.decorators = [
18303
18338
  { type: Pipe, args: [{
18304
18339
  name: 'isLogin'
@@ -18310,7 +18345,7 @@ class AccountToStringPipe {
18310
18345
  return accountToString(value);
18311
18346
  }
18312
18347
  }
18313
- AccountToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
18348
+ AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
18314
18349
  AccountToStringPipe.decorators = [
18315
18350
  { type: Pipe, args: [{
18316
18351
  name: 'accountToString'
@@ -18325,7 +18360,7 @@ class DepartmentToStringPipe {
18325
18360
  return departmentToString(value);
18326
18361
  }
18327
18362
  }
18328
- DepartmentToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
18363
+ DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
18329
18364
  DepartmentToStringPipe.decorators = [
18330
18365
  { type: Pipe, args: [{
18331
18366
  name: 'departmentToString'
@@ -18351,7 +18386,7 @@ class MenuService {
18351
18386
  this._visibleSubject.next(value);
18352
18387
  }
18353
18388
  }
18354
- MenuService.ɵprov = ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
18389
+ MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
18355
18390
  MenuService.decorators = [
18356
18391
  { type: Injectable, args: [{
18357
18392
  providedIn: 'root'
@@ -18845,7 +18880,7 @@ class AuthGuardService {
18845
18880
  }));
18846
18881
  }
18847
18882
  }
18848
- AuthGuardService.ɵprov = ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(ɵɵinject(AccountService), ɵɵinject(ModalController), ɵɵinject(Router), ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
18883
+ AuthGuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(i0.ɵɵinject(AccountService), i0.ɵɵinject(i1$4.ModalController), i0.ɵɵinject(i3$3.Router), i0.ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
18849
18884
  AuthGuardService.decorators = [
18850
18885
  { type: Injectable, args: [{ providedIn: 'root' },] }
18851
18886
  ];
@@ -18893,7 +18928,7 @@ class BaseEntityService extends BaseGraphqlService {
18893
18928
  query,
18894
18929
  variables: { id },
18895
18930
  fetchPolicy: opts && opts.fetchPolicy || undefined,
18896
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18931
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18897
18932
  })
18898
18933
  .pipe(map(({ data }) => (!opts || opts.toEntity !== false)
18899
18934
  ? (data && this.fromObject(data))
@@ -18908,7 +18943,7 @@ class BaseEntityService extends BaseGraphqlService {
18908
18943
  query,
18909
18944
  variables: { id },
18910
18945
  fetchPolicy: opts && opts.fetchPolicy || undefined,
18911
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18946
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18912
18947
  });
18913
18948
  // Convert to entity
18914
18949
  return (!opts || opts.toEntity !== false)
@@ -18939,7 +18974,7 @@ class BaseEntityService extends BaseGraphqlService {
18939
18974
  totalFieldName: withTotal ? 'total' : undefined,
18940
18975
  insertFilterFn: filter && filter.asFilterFn(),
18941
18976
  variables,
18942
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
18977
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
18943
18978
  fetchPolicy: opts && opts.fetchPolicy || undefined
18944
18979
  })
18945
18980
  .pipe(map(({ data, total }) => {
@@ -18975,7 +19010,7 @@ class BaseEntityService extends BaseGraphqlService {
18975
19010
  const { data, total } = yield this.graphql.query({
18976
19011
  query,
18977
19012
  variables,
18978
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
19013
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
18979
19014
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
18980
19015
  });
18981
19016
  const entities = (!opts || opts.toEntity !== false) ?
@@ -19014,7 +19049,7 @@ class BaseEntityService extends BaseGraphqlService {
19014
19049
  variables: {
19015
19050
  filter: filter && filter.asPodObject()
19016
19051
  },
19017
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
19052
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
19018
19053
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
19019
19054
  });
19020
19055
  return res.total;
@@ -19047,7 +19082,7 @@ class BaseEntityService extends BaseGraphqlService {
19047
19082
  variables: {
19048
19083
  data: json
19049
19084
  },
19050
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19085
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19051
19086
  update: (proxy, { data }) => {
19052
19087
  const savedEntities = data && data.data;
19053
19088
  if (savedEntities) {
@@ -19103,7 +19138,7 @@ class BaseEntityService extends BaseGraphqlService {
19103
19138
  variables: {
19104
19139
  data: json
19105
19140
  },
19106
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19141
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19107
19142
  update: (cache, { data }) => {
19108
19143
  // Update entity
19109
19144
  const savedEntity = data && data.data;
@@ -19151,7 +19186,7 @@ class BaseEntityService extends BaseGraphqlService {
19151
19186
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19152
19187
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19153
19188
  variables: { ids },
19154
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19189
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19155
19190
  update: (cache, res) => {
19156
19191
  // Remove from cache
19157
19192
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19192,7 +19227,7 @@ class BaseEntityService extends BaseGraphqlService {
19192
19227
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19193
19228
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19194
19229
  variables: { id },
19195
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19230
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19196
19231
  update: (proxy, res) => {
19197
19232
  // Remove from cache
19198
19233
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19225,7 +19260,7 @@ class BaseEntityService extends BaseGraphqlService {
19225
19260
  query: opts && opts.query || this.subscriptions.listenChanges,
19226
19261
  variables,
19227
19262
  error: {
19228
- code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
19263
+ code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
19229
19264
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
19230
19265
  }
19231
19266
  })
@@ -19387,7 +19422,7 @@ class EntitiesTableDataSource extends TableDataSource {
19387
19422
  if (this._debug)
19388
19423
  invalidRows.forEach(this.logRowErrors);
19389
19424
  // Stop with an error
19390
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
19425
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
19391
19426
  }
19392
19427
  this._editingRowCount = 0;
19393
19428
  let data;
@@ -20204,13 +20239,13 @@ class AppTable {
20204
20239
  return __awaiter(this, void 0, void 0, function* () {
20205
20240
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
20206
20241
  if (this.readOnly) {
20207
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20242
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20208
20243
  }
20209
20244
  this.resetError();
20210
20245
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
20211
20246
  this.previouslySavedEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
20212
20247
  if (!this.confirmEditCreate()) {
20213
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20248
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20214
20249
  }
20215
20250
  try {
20216
20251
  // Mark as saving
@@ -20335,7 +20370,7 @@ class AppTable {
20335
20370
  deleteRows(event, rows, opts) {
20336
20371
  return __awaiter(this, void 0, void 0, function* () {
20337
20372
  if (this.readOnly) {
20338
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20373
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20339
20374
  }
20340
20375
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
20341
20376
  return 0; // SKip
@@ -21734,7 +21769,7 @@ class AppEntityEditor extends AppTabEditor {
21734
21769
  try {
21735
21770
  const data = yield this.dataService.load(id, opts);
21736
21771
  if (!data)
21737
- throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
21772
+ throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
21738
21773
  this._usageMode = this.computeUsageMode(data);
21739
21774
  yield this.onEntityLoaded(data, opts);
21740
21775
  yield this.updateView(data, opts);
@@ -22635,7 +22670,7 @@ class UserEventService extends BaseGraphqlService {
22635
22670
  EntityUtils.copyIdAndUpdateDate(source, target);
22636
22671
  }
22637
22672
  }
22638
- UserEventService.ɵprov = ɵɵdefineInjectable({ factory: function UserEventService_Factory() { return new UserEventService(ɵɵinject(GraphqlService), ɵɵinject(AccountService), ɵɵinject(NetworkService), ɵɵinject(TranslateService), ɵɵinject(ToastController), ɵɵinject(ENVIRONMENT)); }, token: UserEventService, providedIn: "root" });
22673
+ UserEventService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserEventService_Factory() { return new UserEventService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(AccountService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(ENVIRONMENT)); }, token: UserEventService, providedIn: "root" });
22639
22674
  UserEventService.decorators = [
22640
22675
  { type: Injectable, args: [{ providedIn: 'root' },] }
22641
22676
  ];
@@ -23017,7 +23052,7 @@ class PersonService extends BaseEntityService {
23017
23052
  return target;
23018
23053
  }
23019
23054
  }
23020
- PersonService.ɵprov = ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(ɵɵinject(GraphqlService), ɵɵinject(PlatformService), ɵɵinject(NetworkService), ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
23055
+ PersonService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(PlatformService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
23021
23056
  PersonService.decorators = [
23022
23057
  { type: Injectable, args: [{ providedIn: 'root' },] }
23023
23058
  ];
@@ -23048,7 +23083,7 @@ class PersonValidatorService {
23048
23083
  return this.formBuilder.group(formConfig);
23049
23084
  }
23050
23085
  }
23051
- PersonValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
23086
+ PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
23052
23087
  PersonValidatorService.decorators = [
23053
23088
  { type: Injectable, args: [{ providedIn: 'root' },] }
23054
23089
  ];
@@ -23204,7 +23239,7 @@ UsersPage.decorators = [
23204
23239
  ],
23205
23240
  animations: [slideUpDownAnimation],
23206
23241
  changeDetection: ChangeDetectionStrategy.OnPush,
23207
- styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:100%}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
23242
+ styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:calc(100%)}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
23208
23243
  },] }
23209
23244
  ];
23210
23245
  UsersPage.ctorParameters = () => [
@@ -23252,16 +23287,16 @@ AdminModule.decorators = [
23252
23287
  ];
23253
23288
  AdminModule.ctorParameters = () => [];
23254
23289
 
23255
- const ɵ0$a = {
23290
+ const ɵ0 = {
23256
23291
  profile: 'ADMIN'
23257
23292
  };
23258
- const routes$1 = [
23293
+ const routes = [
23259
23294
  {
23260
23295
  path: 'users',
23261
23296
  pathMatch: 'full',
23262
23297
  component: UsersPage,
23263
23298
  canActivate: [AuthGuardService],
23264
- data: ɵ0$a
23299
+ data: ɵ0
23265
23300
  }
23266
23301
  ];
23267
23302
  class AdminRoutingModule {
@@ -23271,13 +23306,13 @@ AdminRoutingModule.decorators = [
23271
23306
  imports: [
23272
23307
  SharedRoutingModule,
23273
23308
  AdminModule,
23274
- RouterModule.forChild(routes$1)
23309
+ RouterModule.forChild(routes)
23275
23310
  ],
23276
23311
  exports: [RouterModule]
23277
23312
  },] }
23278
23313
  ];
23279
23314
 
23280
- const ErrorCodes$2 = {
23315
+ const ErrorCodes = {
23281
23316
  LOAD_PERSONS_ERROR: 100,
23282
23317
  SAVE_PERSONS_ERROR: 101,
23283
23318
  DELETE_PERSONS_ERROR: 102,
@@ -23289,5 +23324,5 @@ const ErrorCodes$2 = {
23289
23324
  * Generated bundle index. Do not edit.
23290
23325
  */
23291
23326
 
23292
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormHolder, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes$2 as ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormFieldValuesHolder, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, copyForm2Entity, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
23327
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormHolder, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, copyForm2Entity, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
23293
23328
  //# sourceMappingURL=ngx-sumaris-components.js.map