@sumaris-net/ngx-components 0.26.6 → 0.27.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,9 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Renderer2 } from '@angular/core';
3
- import * as i1$3 from '@angular/common';
1
+ import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, ɵɵdefineInjectable, ɵɵinject, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, INJECTOR, Injector, Renderer2 } from '@angular/core';
4
2
  import { CommonModule, DOCUMENT, Location } from '@angular/common';
5
3
  import { CdkTableModule } from '@angular/cdk/table';
6
4
  import { A11yModule } from '@angular/cdk/a11y';
7
5
  import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
8
6
  import { ScrollingModule } from '@angular/cdk/scrolling';
9
- import * as i1$2 from '@angular/material/core';
10
7
  import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
11
8
  import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
12
9
  import { MatSortModule, MatSort } from '@angular/material/sort';
@@ -30,21 +27,16 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
30
27
  import { MatRadioModule } from '@angular/material/radio';
31
28
  import { MatBadgeModule } from '@angular/material/badge';
32
29
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
33
- import * as i2$1 from '@angular/material/dialog';
34
30
  import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
35
31
  import { MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteModule, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
36
32
  import { __awaiter, __decorate } from 'tslib';
37
- import * as i1$6 from '@angular/forms';
38
33
  import { NG_VALUE_ACCESSOR, FormGroupDirective, AbstractControl, FormGroup, FormArray, FormControl, ReactiveFormsModule, Validators, FormBuilder } from '@angular/forms';
39
34
  import { timer, merge, fromEvent, Subscription, BehaviorSubject, Subject, isObservable, of, noop as noop$8, Observable, defer, from, combineLatest, EMPTY } from 'rxjs';
40
- import { filter, first, map, takeUntil, startWith, debounceTime, takeWhile, switchMap, tap, distinctUntilChanged, mergeMap, catchError, throttleTime } from 'rxjs/operators';
41
- import * as i1$1 from '@ngx-translate/core';
35
+ import { filter, first, map, takeUntil, startWith, debounceTime, takeWhile, switchMap, tap, distinctUntilChanged, mergeMap, catchError, throttleTime, skip } from 'rxjs/operators';
42
36
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
43
- import * as i1$4 from '@ionic/angular';
44
37
  import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, AlertController, IonicRouteStrategy, NavParams, MenuController, IonContent } from '@ionic/angular';
45
38
  import * as momentImported from 'moment';
46
39
  import { isMoment } from 'moment';
47
- import * as i1 from '@angular/material-moment-adapter';
48
40
  import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
49
41
  import { Keyboard } from '@ionic-native/keyboard/ngx';
50
42
  import { TextMaskModule } from 'angular2-text-mask';
@@ -54,38 +46,32 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
54
46
  import { MatDividerModule } from '@angular/material/divider';
55
47
  import { MatTooltipModule } from '@angular/material/tooltip';
56
48
  import { MatChipsModule } from '@angular/material/chips';
57
- import * as i3$3 from '@angular/router';
58
49
  import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
59
- import * as i1$5 from '@angular/platform-browser';
60
50
  import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
61
- import * as i2$2 from '@angular/common/http';
62
51
  import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
63
52
  import { ColorPickerModule } from 'ngx-color-picker';
64
- import { NativeAudio } from '@ionic-native/native-audio/ngx';
65
- import { Vibration } from '@ionic-native/vibration/ngx';
53
+ import { NativeAudio as NativeAudio$1 } from '@ionic-native/native-audio/ngx';
54
+ import { Vibration as Vibration$1 } from '@ionic-native/vibration/ngx';
66
55
  import { AudioManagement } from '@ionic-native/audio-management/ngx';
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';
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';
70
59
  import * as uuidv4Imported from 'uuid/v4';
71
60
  import { DragDropModule } from '@angular/cdk/drag-drop';
72
61
  import { MarkdownModule } from 'ngx-markdown';
73
62
  import { sign, box, hash, verify } from 'tweetnacl';
74
- import * as i3$1 from '@ionic/storage';
75
63
  import { Storage, IonicStorageModule } from '@ionic/storage';
76
64
  import 'zone.js/dist/zone-error';
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';
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';
85
72
  import { Platform as Platform$1 } from '@angular/cdk/platform';
86
- import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
73
+ import { InAppBrowser as InAppBrowser$1 } from '@ionic-native/in-app-browser/ngx';
87
74
  import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
88
- import * as i2$3 from 'apollo-angular';
89
75
  import { Apollo } from 'apollo-angular';
90
76
  import { WebSocketLink } from '@apollo/client/link/ws';
91
77
  import { getMainDefinition } from '@apollo/client/utilities';
@@ -93,14 +79,13 @@ import { RetryLink } from '@apollo/client/link/retry';
93
79
  import QueueLink from 'apollo-link-queue';
94
80
  import SerializingLink from 'apollo-link-serialize';
95
81
  import loggerLink from 'apollo-link-logger';
96
- import * as i3$2 from 'apollo-angular/http';
97
82
  import { HttpLink } from 'apollo-angular/http';
98
83
  import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
99
- import { NotificationVisibility, Downloader } from '@ionic-native/downloader/ngx';
100
- import * as i14 from '@ionic-native/status-bar/ngx/index';
101
- import * as i15 from '@ionic-native/keyboard/ngx/index';
102
- import * as i17 from '@ionic-native/in-app-browser/ngx/index';
103
- import * as i18 from '@ionic-native/downloader/ngx/index';
84
+ import { NotificationVisibility, Downloader as Downloader$1 } from '@ionic-native/downloader/ngx';
85
+ import { StatusBar } from '@ionic-native/status-bar/ngx/index';
86
+ import { Keyboard as Keyboard$1 } from '@ionic-native/keyboard/ngx/index';
87
+ import { InAppBrowser } from '@ionic-native/in-app-browser/ngx/index';
88
+ import { Downloader } from '@ionic-native/downloader/ngx/index';
104
89
  import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
105
90
  import { SelectionModel } from '@angular/cdk/collections';
106
91
  import { NgxJdenticonModule } from 'ngx-jdenticon';
@@ -885,19 +870,19 @@ class MatAutocompleteConfigHolder {
885
870
  return this.fields[fieldName] || this.add(fieldName);
886
871
  }
887
872
  }
888
- const DEFAULT_VALUE_ACCESSOR$6 = {
873
+ const DEFAULT_VALUE_ACCESSOR = {
889
874
  provide: NG_VALUE_ACCESSOR,
890
875
  useExisting: forwardRef(() => MatAutocompleteField),
891
876
  multi: true
892
877
  };
893
- const noop$7 = () => { };
894
- const ɵ0$a = noop$7;
878
+ const noop = () => { };
879
+ const ɵ0 = noop;
895
880
  class MatAutocompleteField {
896
881
  constructor(cd, formGroupDir) {
897
882
  this.cd = cd;
898
883
  this.formGroupDir = formGroupDir;
899
- this._onChangeCallback = noop$7;
900
- this._onTouchedCallback = noop$7;
884
+ this._onChangeCallback = noop;
885
+ this._onTouchedCallback = noop;
901
886
  this._subscription = new Subscription();
902
887
  this._filter$ = new BehaviorSubject(undefined);
903
888
  this._reload$ = new Subject();
@@ -927,7 +912,6 @@ class MatAutocompleteField {
927
912
  this.onDropButtonClick = new EventEmitter(true);
928
913
  this.onKeydownEscape = new EventEmitter();
929
914
  this.onKeyupEnter = new EventEmitter();
930
- this.onKeydownTab = new EventEmitter();
931
915
  }
932
916
  get itemCount() {
933
917
  return this._itemCount;
@@ -1491,8 +1475,8 @@ MatAutocompleteField.decorators = [
1491
1475
  { type: Component, args: [{
1492
1476
  // eslint-disable-next-line @angular-eslint/component-selector
1493
1477
  selector: 'mat-autocomplete-field',
1494
- template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- readonly -->\n <ng-container>\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 <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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 (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keydown.tab)=\"onKeydownTab.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\"\n [required]=\"required\">\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 <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n </mat-select>\n\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 (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keydown.tab)=\"onKeydownTab.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && 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)=\"_initAutocompleteInfiniteScroll()\"\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 <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\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 </ng-template>\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\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\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 select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
1495
- providers: [DEFAULT_VALUE_ACCESSOR$6],
1478
+ template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- readonly -->\n <ng-container>\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 <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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 (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\"\n [required]=\"required\">\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 <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n </mat-select>\n\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 (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && 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)=\"_initAutocompleteInfiniteScroll()\"\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 <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\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 </ng-template>\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\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\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 select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
1479
+ providers: [DEFAULT_VALUE_ACCESSOR],
1496
1480
  changeDetection: ChangeDetectionStrategy.OnPush,
1497
1481
  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}"]
1498
1482
  },] }
@@ -1543,7 +1527,6 @@ MatAutocompleteField.propDecorators = {
1543
1527
  onDropButtonClick: [{ type: Output, args: ['dropButtonClick',] }],
1544
1528
  onKeydownEscape: [{ type: Output, args: ['keydown.escape',] }],
1545
1529
  onKeyupEnter: [{ type: Output, args: ['keyup.enter',] }],
1546
- onKeydownTab: [{ type: Output, args: ['keydown.tab',] }],
1547
1530
  matSelect: [{ type: ViewChild, args: ['matSelect',] }],
1548
1531
  matInputText: [{ type: ViewChild, args: ['matInputText',] }],
1549
1532
  matAutocomplete: [{ type: ViewChild, args: [MatAutocomplete,] }],
@@ -1570,7 +1553,7 @@ class DateFormatPipe {
1570
1553
  return this.dateAdapter.format(date, displayFormat);
1571
1554
  }
1572
1555
  }
1573
- DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1556
+ DateFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(ɵɵinject(MomentDateAdapter), ɵɵinject(TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1574
1557
  DateFormatPipe.decorators = [
1575
1558
  { type: Pipe, args: [{
1576
1559
  name: 'dateFormat'
@@ -1582,7 +1565,7 @@ DateFormatPipe.ctorParameters = () => [
1582
1565
  { type: TranslateService }
1583
1566
  ];
1584
1567
 
1585
- const moment$6 = momentImported;
1568
+ const moment = momentImported;
1586
1569
  class DateDiffDurationPipe {
1587
1570
  constructor(dateAdapter, translate) {
1588
1571
  this.dateAdapter = dateAdapter;
@@ -1598,17 +1581,17 @@ class DateDiffDurationPipe {
1598
1581
  return this.format(startDate, endDate);
1599
1582
  }
1600
1583
  format(startDate, endDate) {
1601
- const duration = moment$6.duration(endDate.diff(startDate));
1584
+ const duration = moment.duration(endDate.diff(startDate));
1602
1585
  if (duration.asMinutes() < 0)
1603
1586
  return '';
1604
- const timeDuration = moment$6(0)
1587
+ const timeDuration = moment(0)
1605
1588
  .hour(duration.hours())
1606
1589
  .minute(duration.minutes());
1607
1590
  const days = Math.floor(duration.asDays());
1608
1591
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
1609
1592
  }
1610
1593
  }
1611
- 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" });
1594
+ DateDiffDurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(ɵɵinject(DateAdapter), ɵɵinject(TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1612
1595
  DateDiffDurationPipe.decorators = [
1613
1596
  { type: Pipe, args: [{
1614
1597
  name: 'dateDiffDuration'
@@ -1629,7 +1612,7 @@ class DateFromNowPipe {
1629
1612
  return date ? date.fromNow(args && args.withoutSuffix) : '';
1630
1613
  }
1631
1614
  }
1632
- DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1615
+ DateFromNowPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(ɵɵinject(MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1633
1616
  DateFromNowPipe.decorators = [
1634
1617
  { type: Pipe, args: [{
1635
1618
  name: 'dateFromNow'
@@ -1698,7 +1681,7 @@ function formatToDD(value, opts) {
1698
1681
  value *= -1;
1699
1682
  }
1700
1683
  }
1701
- let degrees = roundFloat$1(value, opts.maxDecimals).toString();
1684
+ let degrees = roundFloat(value, opts.maxDecimals).toString();
1702
1685
  // Add sign
1703
1686
  let sign = negative ? '-' : '+';
1704
1687
  if (opts.placeholderChar) {
@@ -1749,7 +1732,7 @@ function formatToDDMMSS(value, opts) {
1749
1732
  }
1750
1733
  let degrees = Math.trunc(value);
1751
1734
  let minutes = Math.trunc((value - degrees) * 60);
1752
- let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1735
+ let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1753
1736
  while (seconds >= 60) {
1754
1737
  seconds -= 60;
1755
1738
  minutes += 1;
@@ -1817,7 +1800,7 @@ function formatToDDMM(value, opts) {
1817
1800
  }
1818
1801
  }
1819
1802
  let degrees = Math.trunc(value);
1820
- let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
1803
+ let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
1821
1804
  while (minutes >= 60) {
1822
1805
  minutes -= 60;
1823
1806
  degrees += 1;
@@ -1868,15 +1851,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
1868
1851
  return NaN;
1869
1852
  }
1870
1853
  if (pattern === 'DD')
1871
- return roundFloat$1(degrees, maxDecimals);
1854
+ return roundFloat(degrees, maxDecimals);
1872
1855
  const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
1873
1856
  const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
1874
1857
  const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
1875
1858
  const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
1876
1859
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
1877
- return roundFloat$1(degrees, maxDecimals);
1860
+ return roundFloat(degrees, maxDecimals);
1878
1861
  }
1879
- function roundFloat$1(input, maxDecimals) {
1862
+ function roundFloat(input, maxDecimals) {
1880
1863
  if (maxDecimals > 0) {
1881
1864
  const powDecimal = Math.pow(10, maxDecimals);
1882
1865
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -1896,7 +1879,7 @@ class LatLongFormatPipe {
1896
1879
  return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
1897
1880
  }
1898
1881
  }
1899
- LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1882
+ LatLongFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1900
1883
  LatLongFormatPipe.decorators = [
1901
1884
  { type: Pipe, args: [{
1902
1885
  name: 'latLongFormat'
@@ -1908,7 +1891,7 @@ class LatitudeFormatPipe {
1908
1891
  this.transform = formatLatitude;
1909
1892
  }
1910
1893
  }
1911
- LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1894
+ LatitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1912
1895
  LatitudeFormatPipe.decorators = [
1913
1896
  { type: Pipe, args: [{
1914
1897
  name: 'latitudeFormat'
@@ -1920,7 +1903,7 @@ class LongitudeFormatPipe {
1920
1903
  this.transform = formatLongitude;
1921
1904
  }
1922
1905
  }
1923
- LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1906
+ LongitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1924
1907
  LongitudeFormatPipe.decorators = [
1925
1908
  { type: Pipe, args: [{
1926
1909
  name: 'longitudeFormat'
@@ -1929,18 +1912,18 @@ LongitudeFormatPipe.decorators = [
1929
1912
  ];
1930
1913
 
1931
1914
  class NumberFormatPipe {
1932
- transform(val) {
1915
+ transform(val, numberFormatOptions) {
1933
1916
  // Format the output to display any way you want here.
1934
1917
  // For instance:
1935
1918
  if (val !== undefined && val !== null) {
1936
- return val.toLocaleString( /*arguments you need*/);
1919
+ return val.toLocaleString(undefined, numberFormatOptions);
1937
1920
  }
1938
1921
  else {
1939
1922
  return '';
1940
1923
  }
1941
1924
  }
1942
1925
  }
1943
- NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1926
+ NumberFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1944
1927
  NumberFormatPipe.decorators = [
1945
1928
  { type: Pipe, args: [{
1946
1929
  name: 'numberFormat'
@@ -1980,7 +1963,7 @@ class HighlightPipe {
1980
1963
  }
1981
1964
  }
1982
1965
  }
1983
- HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1966
+ HighlightPipe.ɵprov = ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1984
1967
  HighlightPipe.decorators = [
1985
1968
  { type: Pipe, args: [{
1986
1969
  name: 'highlight'
@@ -2045,7 +2028,7 @@ FileSizePipe.decorators = [
2045
2028
  { type: Pipe, args: [{ name: 'fileSize' },] }
2046
2029
  ];
2047
2030
 
2048
- const moment$5 = momentImported;
2031
+ const moment$1 = momentImported;
2049
2032
  const DATE_UNIX_TIMESTAMP = 'X';
2050
2033
  const DATE_UNIX_MS_TIMESTAMP = 'x';
2051
2034
  class DateUtils {
@@ -2079,32 +2062,32 @@ function fromDateISOString(value) {
2079
2062
  if (!value || isMoment(value))
2080
2063
  return value;
2081
2064
  // Parse the input value, as a ISO date time
2082
- const date = moment$5(value, DATE_ISO_PATTERN);
2065
+ const date = moment$1(value, DATE_ISO_PATTERN);
2083
2066
  if (date.isValid())
2084
2067
  return date;
2085
2068
  // Not valid: trying to convert from unix timestamp
2086
2069
  if (typeof value === 'string') {
2087
2070
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2088
2071
  if (value.length === 10) {
2089
- return moment$5(value, DATE_UNIX_TIMESTAMP);
2072
+ return moment$1(value, DATE_UNIX_TIMESTAMP);
2090
2073
  }
2091
2074
  else if (value.length === 13) {
2092
- return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
2075
+ return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2093
2076
  }
2094
2077
  }
2095
2078
  console.warn('Unable to parse date: ' + value);
2096
2079
  return undefined;
2097
2080
  }
2098
2081
  function fromUnixTimestamp(timeInSec) {
2099
- return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
2082
+ return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2100
2083
  }
2101
2084
  function fromUnixMsTimestamp(timeInMs) {
2102
- return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2085
+ return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2103
2086
  }
2104
2087
  function toDuration(value, unit) {
2105
2088
  if (!value)
2106
2089
  return undefined;
2107
- const duration = moment$5.duration(value, unit);
2090
+ const duration = moment$1.duration(value, unit);
2108
2091
  // fix 990+ ms
2109
2092
  if (duration.milliseconds() >= 990) {
2110
2093
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2133,7 +2116,7 @@ class DurationPipe {
2133
2116
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
2134
2117
  }
2135
2118
  }
2136
- DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2119
+ DurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(ɵɵinject(TranslateService)); }, token: DurationPipe, providedIn: "root" });
2137
2120
  DurationPipe.decorators = [
2138
2121
  { type: Pipe, args: [{
2139
2122
  name: 'duration'
@@ -2154,7 +2137,7 @@ class MathAbsPipe {
2154
2137
  }
2155
2138
  }
2156
2139
  }
2157
- MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2140
+ MathAbsPipe.ɵprov = ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2158
2141
  MathAbsPipe.decorators = [
2159
2142
  { type: Pipe, args: [{
2160
2143
  name: 'mathAbs'
@@ -2166,7 +2149,7 @@ class EvenPipe {
2166
2149
  return val % 2 === 0;
2167
2150
  }
2168
2151
  }
2169
- EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2152
+ EvenPipe.ɵprov = ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2170
2153
  EvenPipe.decorators = [
2171
2154
  { type: Pipe, args: [{
2172
2155
  name: 'even'
@@ -2178,7 +2161,7 @@ class OddPipe {
2178
2161
  return val % 2 !== 0;
2179
2162
  }
2180
2163
  }
2181
- OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2164
+ OddPipe.ɵprov = ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2182
2165
  OddPipe.decorators = [
2183
2166
  { type: Pipe, args: [{
2184
2167
  name: 'odd'
@@ -2286,7 +2269,7 @@ class MapGetPipe {
2286
2269
  return val[key];
2287
2270
  }
2288
2271
  }
2289
- MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2272
+ MapGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2290
2273
  MapGetPipe.decorators = [
2291
2274
  { type: Pipe, args: [{
2292
2275
  name: 'mapGet'
@@ -2300,7 +2283,7 @@ class MapKeysPipe {
2300
2283
  return Object.keys(map);
2301
2284
  }
2302
2285
  }
2303
- MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2286
+ MapKeysPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2304
2287
  MapKeysPipe.decorators = [
2305
2288
  { type: Pipe, args: [{
2306
2289
  name: 'mapKeys'
@@ -2314,7 +2297,7 @@ class MapValuesPipe {
2314
2297
  return Object.values(map);
2315
2298
  }
2316
2299
  }
2317
- MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2300
+ MapValuesPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2318
2301
  MapValuesPipe.decorators = [
2319
2302
  { type: Pipe, args: [{
2320
2303
  name: 'mapValues'
@@ -2327,7 +2310,7 @@ class IsNotNilOrBlankPipe {
2327
2310
  return isNotNilOrBlank(value);
2328
2311
  }
2329
2312
  }
2330
- IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2313
+ IsNotNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2331
2314
  IsNotNilOrBlankPipe.decorators = [
2332
2315
  { type: Pipe, args: [{
2333
2316
  name: 'isNotNilOrBlank'
@@ -2339,7 +2322,7 @@ class IsNilOrBlankPipe {
2339
2322
  return isNilOrBlank(value);
2340
2323
  }
2341
2324
  }
2342
- IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2325
+ IsNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2343
2326
  IsNilOrBlankPipe.decorators = [
2344
2327
  { type: Pipe, args: [{
2345
2328
  name: 'isNilOrBlank'
@@ -2351,7 +2334,7 @@ class ToStringPipe {
2351
2334
  return (value !== null && value !== undefined) ? value.toString() : '';
2352
2335
  }
2353
2336
  }
2354
- ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2337
+ ToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2355
2338
  ToStringPipe.decorators = [
2356
2339
  { type: Pipe, args: [{
2357
2340
  name: 'toString'
@@ -2363,7 +2346,7 @@ class StrLengthPipe {
2363
2346
  return value && value.length || 0;
2364
2347
  }
2365
2348
  }
2366
- StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2349
+ StrLengthPipe.ɵprov = ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2367
2350
  StrLengthPipe.decorators = [
2368
2351
  { type: Pipe, args: [{
2369
2352
  name: 'strLength'
@@ -2414,7 +2397,7 @@ class TranslateContextService {
2414
2397
  : parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
2415
2398
  }
2416
2399
  }
2417
- TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2400
+ TranslateContextService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(ɵɵinject(TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2418
2401
  TranslateContextService.decorators = [
2419
2402
  { type: Injectable, args: [{ providedIn: 'root' },] }
2420
2403
  ];
@@ -2430,7 +2413,7 @@ class TranslateContextPipe {
2430
2413
  return this.translateContext.instant(key, context);
2431
2414
  }
2432
2415
  }
2433
- TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2416
+ TranslateContextPipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2434
2417
  TranslateContextPipe.decorators = [
2435
2418
  { type: Pipe, args: [{
2436
2419
  name: 'translateContext'
@@ -2447,7 +2430,7 @@ class TranslatablePipe {
2447
2430
  return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
2448
2431
  }
2449
2432
  }
2450
- TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2433
+ TranslatablePipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2451
2434
  TranslatablePipe.decorators = [
2452
2435
  { type: Pipe, args: [{
2453
2436
  name: 'translatable'
@@ -2464,7 +2447,7 @@ class PropertyGetPipe {
2464
2447
  args && args.defaultValue);
2465
2448
  }
2466
2449
  }
2467
- PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2450
+ PropertyGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2468
2451
  PropertyGetPipe.decorators = [
2469
2452
  { type: Pipe, args: [{
2470
2453
  name: 'propertyGet'
@@ -2489,12 +2472,12 @@ NgInitDirective.propDecorators = {
2489
2472
  ngInit: [{ type: Output }]
2490
2473
  };
2491
2474
 
2492
- const moment$4 = momentImported;
2475
+ const moment$2 = momentImported;
2493
2476
  // @dynamic
2494
2477
  class SharedValidators {
2495
2478
  static validDate(control) {
2496
2479
  const value = control.value;
2497
- const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
2480
+ const date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
2498
2481
  if (date && (!date.isValid() || date.year() < 1970)) {
2499
2482
  return { validDate: true };
2500
2483
  }
@@ -3529,7 +3512,7 @@ class FormErrorTranslator {
3529
3512
  return errorKey;
3530
3513
  }
3531
3514
  }
3532
- FormErrorTranslator.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormErrorTranslator_Factory() { return new FormErrorTranslator(i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorTranslator, providedIn: "root" });
3515
+ FormErrorTranslator.ɵprov = ɵɵdefineInjectable({ factory: function FormErrorTranslator_Factory() { return new FormErrorTranslator(ɵɵinject(TranslateService), ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorTranslator, providedIn: "root" });
3533
3516
  FormErrorTranslator.decorators = [
3534
3517
  { type: Injectable, args: [{ providedIn: 'root' },] }
3535
3518
  ];
@@ -3798,9 +3781,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
3798
3781
  const hour = parseInt(durationParts[0] || '0');
3799
3782
  const minute = parseInt(durationParts[1] || '0');
3800
3783
  const value = hour + (minute + 0.5) / 60;
3801
- return roundFloat(value, maxDecimals);
3784
+ return roundFloat$1(value, maxDecimals);
3802
3785
  }
3803
- function roundFloat(input, maxDecimals) {
3786
+ function roundFloat$1(input, maxDecimals) {
3804
3787
  if (maxDecimals > 0) {
3805
3788
  const powDecimal = Math.pow(10, maxDecimals);
3806
3789
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -3824,9 +3807,9 @@ const MASKS = {
3824
3807
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
3825
3808
  }
3826
3809
  };
3827
- const noop$6 = () => {
3810
+ const noop$1 = () => {
3828
3811
  };
3829
- const ɵ0$9 = noop$6;
3812
+ const ɵ0$1 = noop$1;
3830
3813
  class MatLatLongField {
3831
3814
  constructor(platform, translate, formBuilder, cd, formGroupDir) {
3832
3815
  this.platform = platform;
@@ -3834,8 +3817,8 @@ class MatLatLongField {
3834
3817
  this.formBuilder = formBuilder;
3835
3818
  this.cd = cd;
3836
3819
  this.formGroupDir = formGroupDir;
3837
- this._onChangeCallback = noop$6;
3838
- this._onTouchedCallback = noop$6;
3820
+ this._onChangeCallback = noop$1;
3821
+ this._onTouchedCallback = noop$1;
3839
3822
  this._subscription = new Subscription();
3840
3823
  this.disabling = false;
3841
3824
  this.writing = false;
@@ -4171,14 +4154,14 @@ SharedMatLatLongModule.decorators = [
4171
4154
  },] }
4172
4155
  ];
4173
4156
 
4174
- const DEFAULT_VALUE_ACCESSOR$5 = {
4157
+ const DEFAULT_VALUE_ACCESSOR$1 = {
4175
4158
  provide: NG_VALUE_ACCESSOR,
4176
4159
  useExisting: forwardRef(() => MatDate),
4177
4160
  multi: true
4178
4161
  };
4179
- const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4180
- const noop$5 = () => { };
4181
- const ɵ0$8 = noop$5;
4162
+ const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4163
+ const noop$2 = () => { };
4164
+ const ɵ0$2 = noop$2;
4182
4165
  class MatDate {
4183
4166
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4184
4167
  this.dateAdapter = dateAdapter;
@@ -4187,12 +4170,12 @@ class MatDate {
4187
4170
  this.cd = cd;
4188
4171
  this.keyboard = keyboard;
4189
4172
  this.formGroupDir = formGroupDir;
4190
- this._onChangeCallback = noop$5;
4191
- this._onTouchedCallback = noop$5;
4173
+ this._onChangeCallback = noop$2;
4174
+ this._onTouchedCallback = noop$2;
4192
4175
  this._subscription = new Subscription();
4193
4176
  this.writing = true;
4194
4177
  this.disabling = false;
4195
- this.dayMask = DAY_MASK$2;
4178
+ this.dayMask = DAY_MASK;
4196
4179
  this.disabled = false;
4197
4180
  this.floatLabel = 'auto';
4198
4181
  this.readonly = false;
@@ -4429,7 +4412,7 @@ MatDate.decorators = [
4429
4412
  selector: 'mat-date-field',
4430
4413
  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",
4431
4414
  providers: [
4432
- DEFAULT_VALUE_ACCESSOR$5,
4415
+ DEFAULT_VALUE_ACCESSOR$1,
4433
4416
  ],
4434
4417
  changeDetection: ChangeDetectionStrategy.OnPush,
4435
4418
  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%}"]
@@ -4462,17 +4445,17 @@ MatDate.propDecorators = {
4462
4445
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
4463
4446
  };
4464
4447
 
4465
- const DEFAULT_VALUE_ACCESSOR$4 = {
4448
+ const DEFAULT_VALUE_ACCESSOR$2 = {
4466
4449
  provide: NG_VALUE_ACCESSOR,
4467
4450
  useExisting: forwardRef(() => MatDateTime),
4468
4451
  multi: true
4469
4452
  };
4470
4453
  const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4471
4454
  const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
4472
- const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4473
- const noop$4 = () => {
4455
+ const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4456
+ const noop$3 = () => {
4474
4457
  };
4475
- const ɵ0$7 = noop$4;
4458
+ const ɵ0$3 = noop$3;
4476
4459
  class MatDateTime {
4477
4460
  constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
4478
4461
  this.platform = platform;
@@ -4482,14 +4465,14 @@ class MatDateTime {
4482
4465
  this.keyboard = keyboard;
4483
4466
  this.cd = cd;
4484
4467
  this.formGroupDir = formGroupDir;
4485
- this._onChangeCallback = noop$4;
4486
- this._onTouchedCallback = noop$4;
4468
+ this._onChangeCallback = noop$3;
4469
+ this._onTouchedCallback = noop$3;
4487
4470
  this._subscription = new Subscription();
4488
4471
  this.writing = true;
4489
4472
  this.disabling = false;
4490
4473
  this._readonly = false;
4491
4474
  this.dayMask = DAY_MASK$1;
4492
- this.hourMask = HOUR_MASK$1;
4475
+ this.hourMask = HOUR_MASK;
4493
4476
  this.floatLabel = 'auto';
4494
4477
  this.compact = false;
4495
4478
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -4800,7 +4783,7 @@ MatDateTime.decorators = [
4800
4783
  selector: 'mat-date-time-field',
4801
4784
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\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>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </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\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n",
4802
4785
  providers: [
4803
- DEFAULT_VALUE_ACCESSOR$4,
4786
+ DEFAULT_VALUE_ACCESSOR$2,
4804
4787
  ],
4805
4788
  changeDetection: ChangeDetectionStrategy.OnPush,
4806
4789
  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%}"]
@@ -4839,10 +4822,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
4839
4822
  useExisting: forwardRef(() => MatDateShort),
4840
4823
  multi: true
4841
4824
  };
4842
- const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
4843
- const noop$3 = () => {
4825
+ const DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
4826
+ const noop$4 = () => {
4844
4827
  };
4845
- const ɵ0$6 = noop$3;
4828
+ const ɵ0$4 = noop$4;
4846
4829
  class MatDateShort {
4847
4830
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4848
4831
  this.dateAdapter = dateAdapter;
@@ -4851,11 +4834,11 @@ class MatDateShort {
4851
4834
  this.cd = cd;
4852
4835
  this.keyboard = keyboard;
4853
4836
  this.formGroupDir = formGroupDir;
4854
- this._onChangeCallback = noop$3;
4855
- this._onTouchedCallback = noop$3;
4837
+ this._onChangeCallback = noop$4;
4838
+ this._onTouchedCallback = noop$4;
4856
4839
  this.writing = true;
4857
4840
  this.disabling = false;
4858
- this.dayMask = DAY_MASK;
4841
+ this.dayMask = DAY_MASK$2;
4859
4842
  this.disabled = false;
4860
4843
  this.floatLabel = 'auto';
4861
4844
  this.readonly = false;
@@ -5168,16 +5151,16 @@ SharedMatDateTimeModule.decorators = [
5168
5151
  },] }
5169
5152
  ];
5170
5153
 
5171
- const DEFAULT_VALUE_ACCESSOR$2 = {
5154
+ const DEFAULT_VALUE_ACCESSOR$4 = {
5172
5155
  provide: NG_VALUE_ACCESSOR,
5173
5156
  useExisting: forwardRef(() => MatDuration),
5174
5157
  multi: true
5175
5158
  };
5176
5159
  const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
5177
- const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5178
- const noop$2 = () => {
5160
+ const HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5161
+ const noop$5 = () => {
5179
5162
  };
5180
- const ɵ0$5 = noop$2;
5163
+ const ɵ0$5 = noop$5;
5181
5164
  class MatDuration {
5182
5165
  constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
5183
5166
  this.dateAdapter = dateAdapter;
@@ -5186,11 +5169,11 @@ class MatDuration {
5186
5169
  this.cd = cd;
5187
5170
  this.formGroupDir = formGroupDir;
5188
5171
  this._subscription = new Subscription();
5189
- this._onChangeCallback = noop$2;
5190
- this._onTouchedCallback = noop$2;
5172
+ this._onChangeCallback = noop$5;
5173
+ this._onTouchedCallback = noop$5;
5191
5174
  this.writing = true;
5192
5175
  this.disabling = false;
5193
- this.hourMask = HOUR_MASK;
5176
+ this.hourMask = HOUR_MASK$1;
5194
5177
  this.disabled = false;
5195
5178
  this.floatLabel = 'auto';
5196
5179
  this.readonly = false;
@@ -5370,7 +5353,7 @@ MatDuration.decorators = [
5370
5353
  selector: 'mat-duration-field',
5371
5354
  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",
5372
5355
  providers: [
5373
- DEFAULT_VALUE_ACCESSOR$2,
5356
+ DEFAULT_VALUE_ACCESSOR$4,
5374
5357
  ],
5375
5358
  changeDetection: ChangeDetectionStrategy.OnPush,
5376
5359
  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%}"]
@@ -5427,22 +5410,22 @@ SharedMatDurationModule.decorators = [
5427
5410
  },] }
5428
5411
  ];
5429
5412
 
5430
- const DEFAULT_VALUE_ACCESSOR$1 = {
5413
+ const DEFAULT_VALUE_ACCESSOR$5 = {
5431
5414
  provide: NG_VALUE_ACCESSOR,
5432
5415
  useExisting: forwardRef(() => MatBooleanField),
5433
5416
  multi: true
5434
5417
  };
5435
- const noop$1 = () => {
5418
+ const noop$6 = () => {
5436
5419
  };
5437
- const ɵ0$4 = noop$1;
5420
+ const ɵ0$6 = noop$6;
5438
5421
  class MatBooleanField {
5439
5422
  constructor(translate, formBuilder, cd, formGroupDir) {
5440
5423
  this.translate = translate;
5441
5424
  this.formBuilder = formBuilder;
5442
5425
  this.cd = cd;
5443
5426
  this.formGroupDir = formGroupDir;
5444
- this._onChangeCallback = noop$1;
5445
- this._onTouchedCallback = noop$1;
5427
+ this._onChangeCallback = noop$6;
5428
+ this._onTouchedCallback = noop$6;
5446
5429
  this._writing = false;
5447
5430
  this.showRadio = false;
5448
5431
  this.disabled = false;
@@ -5615,7 +5598,7 @@ MatBooleanField.decorators = [
5615
5598
  selector: 'mat-boolean-field',
5616
5599
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | 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 {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|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>{{yesLabel|translate}}</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</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 {{classList}}\">\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 {{classList}}\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button 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 ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\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",
5617
5600
  providers: [
5618
- DEFAULT_VALUE_ACCESSOR$1
5601
+ DEFAULT_VALUE_ACCESSOR$5
5619
5602
  ],
5620
5603
  changeDetection: ChangeDetectionStrategy.OnPush,
5621
5604
  styles: [":host{width:100%}.mat-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-form-field.mat-boolean-field-button{margin-top:-4px}.mat-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis:calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}"]
@@ -5863,7 +5846,7 @@ class MatNumpadDomService {
5863
5846
  this.appRef.detachView(this.componentRef.hostView);
5864
5847
  }
5865
5848
  }
5866
- 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" });
5849
+ MatNumpadDomService.ɵprov = ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
5867
5850
  MatNumpadDomService.decorators = [
5868
5851
  { type: Injectable, args: [{
5869
5852
  providedIn: 'root'
@@ -6227,7 +6210,7 @@ SharedMatNumpadModule.decorators = [
6227
6210
  },] }
6228
6211
  ];
6229
6212
 
6230
- const DEFAULT_VALUE_ACCESSOR = {
6213
+ const DEFAULT_VALUE_ACCESSOR$6 = {
6231
6214
  provide: NG_VALUE_ACCESSOR,
6232
6215
  useExisting: forwardRef(() => MatSwipeField),
6233
6216
  multi: true
@@ -6490,7 +6473,7 @@ MatSwipeField.decorators = [
6490
6473
  { type: Component, args: [{
6491
6474
  selector: 'mat-swipe-field',
6492
6475
  template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class]=\"classList\"\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",
6493
- providers: [DEFAULT_VALUE_ACCESSOR],
6476
+ providers: [DEFAULT_VALUE_ACCESSOR$6],
6494
6477
  changeDetection: ChangeDetectionStrategy.OnPush,
6495
6478
  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}"]
6496
6479
  },] }
@@ -7065,7 +7048,7 @@ class ProgressBarService {
7065
7048
  }
7066
7049
  }
7067
7050
  }
7068
- ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7051
+ ProgressBarService.ɵprov = ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7069
7052
  ProgressBarService.decorators = [
7070
7053
  { type: Injectable, args: [{ providedIn: 'root' },] }
7071
7054
  ];
@@ -7109,7 +7092,7 @@ class AppGestureConfig extends HammerGestureConfig {
7109
7092
  return mc;
7110
7093
  }
7111
7094
  }
7112
- AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7095
+ AppGestureConfig.ɵprov = ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7113
7096
  AppGestureConfig.decorators = [
7114
7097
  { type: Injectable, args: [{ providedIn: 'root' },] }
7115
7098
  ];
@@ -7332,7 +7315,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
7332
7315
  this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
7333
7316
  }
7334
7317
  }
7335
- MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7318
+ MatPaginatorI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(ɵɵinject(TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7336
7319
  MatPaginatorI18n.decorators = [
7337
7320
  { type: Injectable, args: [{ providedIn: 'root' },] }
7338
7321
  ];
@@ -7422,17 +7405,17 @@ function getColorContrast(color, bw) {
7422
7405
  return rgbArrayToHex(rgb.map(v => 255 - v));
7423
7406
  }
7424
7407
 
7425
- const noop = () => {
7408
+ const noop$7 = () => {
7426
7409
  };
7427
- const ɵ0$3 = noop;
7410
+ const ɵ0$7 = noop$7;
7428
7411
  class AppFormField {
7429
7412
  constructor(translate, cd, injector, formGroupDir) {
7430
7413
  this.translate = translate;
7431
7414
  this.cd = cd;
7432
7415
  this.injector = injector;
7433
7416
  this.formGroupDir = formGroupDir;
7434
- this._onChangeCallback = noop;
7435
- this._onTouchedCallback = noop;
7417
+ this._onChangeCallback = noop$7;
7418
+ this._onTouchedCallback = noop$7;
7436
7419
  this.readonly = false;
7437
7420
  this.compact = false;
7438
7421
  this.floatLabel = 'auto';
@@ -7621,13 +7604,14 @@ AppFormField.propDecorators = {
7621
7604
  };
7622
7605
 
7623
7606
  class StartableService {
7624
- constructor(platform) {
7607
+ constructor(prerequisiteService) {
7625
7608
  this.onStart = new Subject();
7626
7609
  this._debug = false;
7610
+ this._startByReadyFunction = true; // should start when calling ready() ?
7627
7611
  this._data = null;
7628
7612
  this._started = false;
7629
- this._startPrerequisite = platform
7630
- ? () => platform.ready()
7613
+ this._startPrerequisite = prerequisiteService
7614
+ ? () => prerequisiteService.ready()
7631
7615
  : () => Promise.resolve();
7632
7616
  }
7633
7617
  start() {
@@ -7682,7 +7666,12 @@ class StartableService {
7682
7666
  ready() {
7683
7667
  if (this._started)
7684
7668
  return Promise.resolve(this._data);
7685
- return this.start();
7669
+ if (this._startPromise)
7670
+ return this._startPromise;
7671
+ if (this._startByReadyFunction)
7672
+ return this.start();
7673
+ return waitFor(() => this._started)
7674
+ .then(() => this._data);
7686
7675
  }
7687
7676
  ngOnStop() {
7688
7677
  return __awaiter(this, void 0, void 0, function* () {
@@ -7848,14 +7837,14 @@ class AudioProvider extends StartableService {
7848
7837
  });
7849
7838
  }
7850
7839
  }
7851
- 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" });
7840
+ 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" });
7852
7841
  AudioProvider.decorators = [
7853
7842
  { type: Injectable, args: [{ providedIn: 'root' },] }
7854
7843
  ];
7855
7844
  AudioProvider.ctorParameters = () => [
7856
7845
  { type: Platform },
7857
- { type: NativeAudio, decorators: [{ type: Optional }] },
7858
- { type: Vibration, decorators: [{ type: Optional }] },
7846
+ { type: NativeAudio$1, decorators: [{ type: Optional }] },
7847
+ { type: Vibration$1, decorators: [{ type: Optional }] },
7859
7848
  { type: AudioManagement, decorators: [{ type: Optional }] }
7860
7849
  ];
7861
7850
 
@@ -7937,7 +7926,7 @@ class Hotkeys {
7937
7926
  });
7938
7927
  }
7939
7928
  }
7940
- 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" });
7929
+ Hotkeys.ɵprov = ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(ɵɵinject(EventManager), ɵɵinject(MatDialog), ɵɵinject(DOCUMENT), ɵɵinject(ModalController)); }, token: Hotkeys, providedIn: "root" });
7941
7930
  Hotkeys.decorators = [
7942
7931
  { type: Injectable, args: [{
7943
7932
  providedIn: 'root'
@@ -8111,7 +8100,7 @@ class Base64ImageReader {
8111
8100
  }
8112
8101
  }
8113
8102
 
8114
- const uuidv4$1 = uuidv4Imported;
8103
+ const uuidv4 = uuidv4Imported;
8115
8104
  class FileService {
8116
8105
  constructor(platform,
8117
8106
  //private transfer: FileTransfer,
@@ -8148,7 +8137,7 @@ class FileService {
8148
8137
  const lastSlashIndex = source.lastIndexOf('/');
8149
8138
  if (lastSlashIndex === -1)
8150
8139
  throw new Error('Invalid URL: ' + source);
8151
- const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
8140
+ const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
8152
8141
  // Download into the file system
8153
8142
  if (responseType === 'file' && this.canUseFileSystem) {
8154
8143
  console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
@@ -8204,7 +8193,7 @@ class FileService {
8204
8193
  this._started = true;
8205
8194
  }
8206
8195
  }
8207
- 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" });
8196
+ FileService.ɵprov = ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(ɵɵinject(Platform), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
8208
8197
  FileService.decorators = [
8209
8198
  { type: Injectable, args: [{
8210
8199
  providedIn: 'root',
@@ -8370,7 +8359,7 @@ class Base58 {
8370
8359
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
8371
8360
 
8372
8361
  const scrypt = require('scrypt-async');
8373
- const sha256$1 = require('hash.js/lib/hash/sha/256');
8362
+ const sha256 = require('hash.js/lib/hash/sha/256');
8374
8363
  const sha512 = require('hash.js/lib/hash/sha/512');
8375
8364
  const nacl = {
8376
8365
  sign,
@@ -8474,7 +8463,7 @@ class CryptoService {
8474
8463
  * Hash (using SHA256) a message
8475
8464
  */
8476
8465
  sha256(message) {
8477
- return sha256$1().update(message).digest('hex');
8466
+ return sha256().update(message).digest('hex');
8478
8467
  }
8479
8468
  /**
8480
8469
  * Hash (using SHA512) a message
@@ -8487,7 +8476,7 @@ class CryptoService {
8487
8476
  return nacl.util.encodeBase64(m);
8488
8477
  }
8489
8478
  }
8490
- CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8479
+ CryptoService.ɵprov = ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8491
8480
  CryptoService.decorators = [
8492
8481
  { type: Injectable, args: [{ providedIn: 'root' },] }
8493
8482
  ];
@@ -9708,7 +9697,7 @@ class LocalSettingsService extends StartableService {
9708
9697
  return page;
9709
9698
  }
9710
9699
  }
9711
- 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" });
9700
+ 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" });
9712
9701
  LocalSettingsService.decorators = [
9713
9702
  { type: Injectable, args: [{
9714
9703
  providedIn: 'root',
@@ -10368,7 +10357,7 @@ class NetworkService extends StartableService {
10368
10357
  });
10369
10358
  }
10370
10359
  }
10371
- 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" });
10360
+ 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" });
10372
10361
  NetworkService.decorators = [
10373
10362
  { type: Injectable, args: [{ providedIn: 'root' },] }
10374
10363
  ];
@@ -10379,16 +10368,16 @@ NetworkService.ctorParameters = () => [
10379
10368
  { type: CryptoService },
10380
10369
  { type: Storage },
10381
10370
  { type: LocalSettingsService },
10382
- { type: CacheService },
10371
+ { type: CacheService$1 },
10383
10372
  { type: HttpClient },
10384
10373
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
10385
- { type: Network, decorators: [{ type: Optional }] },
10386
- { type: SplashScreen, decorators: [{ type: Optional }] },
10374
+ { type: Network$1, decorators: [{ type: Optional }] },
10375
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
10387
10376
  { type: TranslateService, decorators: [{ type: Optional }] },
10388
10377
  { type: ToastController, decorators: [{ type: Optional }] }
10389
10378
  ];
10390
10379
 
10391
- const ErrorCodes$2 = {
10380
+ const ErrorCodes = {
10392
10381
  UNKNOWN_ERROR: 0,
10393
10382
  LOAD_ACCOUNT_ERROR: 1,
10394
10383
  BAD_PASSWORD: 2,
@@ -10735,7 +10724,7 @@ class EntityStore {
10735
10724
  }
10736
10725
  catch (err) {
10737
10726
  console.error(err);
10738
- throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
10727
+ throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
10739
10728
  }
10740
10729
  }
10741
10730
  // Emit update event
@@ -11306,7 +11295,7 @@ class EntitiesStorage extends StartableService {
11306
11295
  }
11307
11296
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
11308
11297
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
11309
- 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" });
11298
+ 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" });
11310
11299
  EntitiesStorage.decorators = [
11311
11300
  { type: Injectable, args: [{ providedIn: 'root' },] }
11312
11301
  ];
@@ -11406,10 +11395,10 @@ function referentialToString(obj, properties) {
11406
11395
  function referentialsToString(values, properties, separator) {
11407
11396
  return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
11408
11397
  }
11409
- const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
11398
+ const ɵ0$8 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
11410
11399
  const StatusList = Object.freeze([
11411
11400
  {
11412
- id: ɵ0$2,
11401
+ id: ɵ0$8,
11413
11402
  icon: 'checkmark',
11414
11403
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
11415
11404
  },
@@ -11684,7 +11673,7 @@ function accountToString(data) {
11684
11673
  (data.lastName || '')) || '';
11685
11674
  }
11686
11675
 
11687
- const uuidv4 = uuidv4Imported;
11676
+ const uuidv4$1 = uuidv4Imported;
11688
11677
  const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
11689
11678
  const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
11690
11679
  /**
@@ -11728,7 +11717,7 @@ function createTrackerLink(opts) {
11728
11717
  // Skip if not tracked
11729
11718
  if (!context || !context.tracked)
11730
11719
  return forward(operation);
11731
- const id = context.serializationKey || uuidv4();
11720
+ const id = context.serializationKey || uuidv4$1();
11732
11721
  console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
11733
11722
  // Clean context, before calling JSON.stringify (remove unused attributes)
11734
11723
  const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -12262,7 +12251,6 @@ class GraphqlService extends StartableService {
12262
12251
  .append('Authorization', authorization);
12263
12252
  //.append('X-App-Name', environment.name)
12264
12253
  //.append('X-App-Version', environment.version)
12265
- ;
12266
12254
  // Use the setContext method to set the HTTP headers.
12267
12255
  operation.setContext(Object.assign(Object.assign({}, operation.getContext()), { headers }));
12268
12256
  // Call the next link in the middleware chain.
@@ -12397,7 +12385,7 @@ class GraphqlService extends StartableService {
12397
12385
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
12398
12386
  || this.toAppError(err.networkError)
12399
12387
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
12400
- || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
12388
+ || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
12401
12389
  // If graphQL: try to convert the first error found
12402
12390
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
12403
12391
  || this.toAppError(err)
@@ -12405,7 +12393,7 @@ class GraphqlService extends StartableService {
12405
12393
  || (err.graphQLErrors && err.graphQLErrors[0])
12406
12394
  || err;
12407
12395
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
12408
- if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
12396
+ if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
12409
12397
  console.error('[graphql] original error: ' + err.networkError.message);
12410
12398
  this.onNetworkError.next(error);
12411
12399
  }
@@ -12441,7 +12429,7 @@ class GraphqlService extends StartableService {
12441
12429
  return 'ERROR.UNAUTHORIZED';
12442
12430
  case ServerErrorCodes.FORBIDDEN:
12443
12431
  return 'ERROR.FORBIDDEN';
12444
- case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
12432
+ case ErrorCodes.UNKNOWN_NETWORK_ERROR:
12445
12433
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
12446
12434
  case ServerErrorCodes.BAD_UPDATE_DATE:
12447
12435
  return 'ERROR.BAD_UPDATE_DATE';
@@ -12469,7 +12457,7 @@ class GraphqlService extends StartableService {
12469
12457
  return undefined;
12470
12458
  }
12471
12459
  }
12472
- 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" });
12460
+ 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" });
12473
12461
  GraphqlService.decorators = [
12474
12462
  { type: Injectable, args: [{
12475
12463
  providedIn: 'root'
@@ -12486,7 +12474,7 @@ GraphqlService.ctorParameters = () => [
12486
12474
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
12487
12475
  ];
12488
12476
 
12489
- const sha256 = require('hash.js/lib/hash/sha/256');
12477
+ const sha256$1 = require('hash.js/lib/hash/sha/256');
12490
12478
  class BaseGraphqlServiceOptions {
12491
12479
  }
12492
12480
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
@@ -12636,8 +12624,8 @@ class BaseGraphqlService {
12636
12624
  }
12637
12625
  /* -- protected methods -- */
12638
12626
  computeMutableWatchQueryId(opts) {
12639
- const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
12640
- const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
12627
+ const queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
12628
+ const variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
12641
12629
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
12642
12630
  }
12643
12631
  findMutableWatchQueries(opts) {
@@ -12700,7 +12688,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
12700
12688
  /* ------------------------------------
12701
12689
  * GraphQL queries
12702
12690
  * ------------------------------------*/
12703
- const Fragments$1 = {
12691
+ const Fragments = {
12704
12692
  account: gql `
12705
12693
  fragment AccountFragment on AccountVO {
12706
12694
  id
@@ -12733,13 +12721,13 @@ const Fragments$1 = {
12733
12721
  `
12734
12722
  };
12735
12723
  // Load account query
12736
- const LoadQuery$1 = gql `
12724
+ const LoadQuery = gql `
12737
12725
  query Account {
12738
12726
  data: account {
12739
12727
  ...AccountFragment
12740
12728
  }
12741
12729
  }
12742
- ${Fragments$1.account}
12730
+ ${Fragments.account}
12743
12731
  `;
12744
12732
  // Check email query
12745
12733
  const IsEmailExistsQuery = gql `
@@ -12748,13 +12736,13 @@ const IsEmailExistsQuery = gql `
12748
12736
  }
12749
12737
  `;
12750
12738
  // Save (create or update) account mutation
12751
- const SaveMutation$1 = gql `
12739
+ const SaveMutation = gql `
12752
12740
  mutation SaveAccount($data:AccountVOInput){
12753
12741
  data: saveAccount(account: $data){
12754
12742
  ...AccountFragment
12755
12743
  }
12756
12744
  }
12757
- ${Fragments$1.account}
12745
+ ${Fragments.account}
12758
12746
  `;
12759
12747
  // Create account mutation
12760
12748
  const CreateMutation = gql `
@@ -12763,7 +12751,7 @@ const CreateMutation = gql `
12763
12751
  ...AccountFragment
12764
12752
  }
12765
12753
  }
12766
- ${Fragments$1.account}
12754
+ ${Fragments.account}
12767
12755
  `;
12768
12756
  // Sent confirmation email
12769
12757
  const SendConfirmEmailMutation = gql `
@@ -13101,7 +13089,7 @@ class AccountService extends BaseGraphqlService {
13101
13089
  catch (error) {
13102
13090
  console.error(error);
13103
13091
  this.resetData();
13104
- throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13092
+ throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13105
13093
  }
13106
13094
  // Store pubkey+keypair
13107
13095
  this._data.pubkey = Base58.encode(keypair.publicKey);
@@ -13135,7 +13123,7 @@ class AccountService extends BaseGraphqlService {
13135
13123
  }
13136
13124
  catch (err) {
13137
13125
  // If account not found, check if email is valid
13138
- if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
13126
+ if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
13139
13127
  // Check email exists
13140
13128
  if (data.username.indexOf('@') !== -1) {
13141
13129
  let isEmailExists;
@@ -13147,11 +13135,11 @@ class AccountService extends BaseGraphqlService {
13147
13135
  }
13148
13136
  // Email not exists (no account)
13149
13137
  if (!isEmailExists) {
13150
- throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13138
+ throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13151
13139
  }
13152
13140
  }
13153
13141
  // Email exists, so error = 'bad password'
13154
- throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13142
+ throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13155
13143
  }
13156
13144
  throw err; // resend the first error
13157
13145
  }
@@ -13276,8 +13264,8 @@ class AccountService extends BaseGraphqlService {
13276
13264
  // Load remotely
13277
13265
  else {
13278
13266
  const { data } = yield this.graphql.query({
13279
- query: LoadQuery$1,
13280
- error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
13267
+ query: LoadQuery,
13268
+ error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
13281
13269
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
13282
13270
  });
13283
13271
  json = data;
@@ -13304,7 +13292,7 @@ class AccountService extends BaseGraphqlService {
13304
13292
  return __awaiter(this, void 0, void 0, function* () {
13305
13293
  const isEmailExists = yield this.isEmailExists(email);
13306
13294
  if (isEmailExists) {
13307
- throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
13295
+ throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
13308
13296
  }
13309
13297
  });
13310
13298
  }
@@ -13340,7 +13328,7 @@ class AccountService extends BaseGraphqlService {
13340
13328
  locale
13341
13329
  },
13342
13330
  error: {
13343
- code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
13331
+ code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
13344
13332
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
13345
13333
  }
13346
13334
  });
@@ -13356,7 +13344,7 @@ class AccountService extends BaseGraphqlService {
13356
13344
  code
13357
13345
  },
13358
13346
  error: {
13359
- code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
13347
+ code: ErrorCodes.CONFIRM_EMAIL_FAILED,
13360
13348
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
13361
13349
  }
13362
13350
  });
@@ -13374,7 +13362,7 @@ class AccountService extends BaseGraphqlService {
13374
13362
  interval: 10
13375
13363
  },
13376
13364
  error: {
13377
- code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
13365
+ code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
13378
13366
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
13379
13367
  }
13380
13368
  }).subscribe({
@@ -13483,7 +13471,7 @@ class AccountService extends BaseGraphqlService {
13483
13471
  throw error;
13484
13472
  console.error(error);
13485
13473
  throw {
13486
- code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
13474
+ code: ErrorCodes.LOAD_ACCOUNT_ERROR,
13487
13475
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
13488
13476
  };
13489
13477
  }
@@ -13628,7 +13616,7 @@ class AccountService extends BaseGraphqlService {
13628
13616
  if (!isNew) {
13629
13617
  const existingAccount = yield this.load({ fetchPolicy: 'network-only' });
13630
13618
  if (!existingAccount || !existingAccount.updateDate) {
13631
- throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
13619
+ throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
13632
13620
  }
13633
13621
  this.copyIdAndUpdateDate(existingAccount, account);
13634
13622
  }
@@ -13637,10 +13625,10 @@ class AccountService extends BaseGraphqlService {
13637
13625
  delete json.profiles;
13638
13626
  // Execute mutation
13639
13627
  const { data } = yield this.graphql.mutate({
13640
- mutation: isNew ? CreateMutation : SaveMutation$1,
13628
+ mutation: isNew ? CreateMutation : SaveMutation,
13641
13629
  variables: { data: json },
13642
13630
  error: {
13643
- code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
13631
+ code: ErrorCodes.SAVE_ACCOUNT_ERROR,
13644
13632
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
13645
13633
  }
13646
13634
  });
@@ -13660,7 +13648,7 @@ class AccountService extends BaseGraphqlService {
13660
13648
  if (counter > 4) {
13661
13649
  if (this._debug)
13662
13650
  console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
13663
- throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
13651
+ throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
13664
13652
  }
13665
13653
  // Check if valid
13666
13654
  if (token) {
@@ -13670,7 +13658,7 @@ class AccountService extends BaseGraphqlService {
13670
13658
  token
13671
13659
  },
13672
13660
  error: {
13673
- code: ErrorCodes$2.UNAUTHORIZED,
13661
+ code: ErrorCodes.UNAUTHORIZED,
13674
13662
  message: 'ERROR.UNAUTHORIZED'
13675
13663
  },
13676
13664
  fetchPolicy: 'no-cache'
@@ -13686,7 +13674,7 @@ class AccountService extends BaseGraphqlService {
13686
13674
  }
13687
13675
  // Generate a new token
13688
13676
  const challengeError = {
13689
- code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
13677
+ code: ErrorCodes.AUTH_CHALLENGE_ERROR,
13690
13678
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
13691
13679
  };
13692
13680
  const data = yield this.graphql.query({
@@ -13720,7 +13708,7 @@ class AccountService extends BaseGraphqlService {
13720
13708
  target.settings.updateDate = source.settings && source.settings.updateDate || target.settings.updateDate;
13721
13709
  }
13722
13710
  }
13723
- 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" });
13711
+ 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" });
13724
13712
  AccountService.decorators = [
13725
13713
  { type: Injectable, args: [{ providedIn: 'root' },] }
13726
13714
  ];
@@ -13980,7 +13968,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
13980
13968
  /* ------------------------------------
13981
13969
  * GraphQL queries
13982
13970
  * ------------------------------------*/
13983
- const Fragments = {
13971
+ const Fragments$1 = {
13984
13972
  config: gql `
13985
13973
  fragment ConfigFragment on ConfigurationVO {
13986
13974
  id
@@ -14007,22 +13995,22 @@ const Fragments = {
14007
13995
  }
14008
13996
  `
14009
13997
  };
14010
- const LoadQuery = gql `
13998
+ const LoadQuery$1 = gql `
14011
13999
  query Configuration{
14012
14000
  data: configuration{
14013
14001
  ...ConfigFragment
14014
14002
  }
14015
14003
  }
14016
- ${Fragments.config}
14004
+ ${Fragments$1.config}
14017
14005
  `;
14018
14006
  // Save (create or update) account mutation
14019
- const SaveMutation = gql `
14007
+ const SaveMutation$1 = gql `
14020
14008
  mutation SaveConfiguration($data: ConfigurationVOInput){
14021
14009
  data: saveConfiguration(config: $data){
14022
14010
  ...ConfigFragment
14023
14011
  }
14024
14012
  }
14025
- ${Fragments.config}
14013
+ ${Fragments$1.config}
14026
14014
  `;
14027
14015
  const ClearCache = gql `
14028
14016
  query ClearCache($name: String) {
@@ -14117,12 +14105,12 @@ class ConfigService extends BaseGraphqlService {
14117
14105
  return __awaiter(this, void 0, void 0, function* () {
14118
14106
  const now = Date.now();
14119
14107
  console.debug('[config] Loading Pod configuration...');
14120
- const query = opts && opts.query || LoadQuery;
14108
+ const query = opts && opts.query || LoadQuery$1;
14121
14109
  const variables = opts && opts.variables || undefined;
14122
14110
  const res = yield this.graphql.query({
14123
14111
  query,
14124
14112
  variables,
14125
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14113
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14126
14114
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
14127
14115
  });
14128
14116
  const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
@@ -14147,12 +14135,12 @@ class ConfigService extends BaseGraphqlService {
14147
14135
  const json = config.asObject();
14148
14136
  // Execute mutation
14149
14137
  const res = yield this.graphql.mutate({
14150
- mutation: SaveMutation,
14138
+ mutation: SaveMutation$1,
14151
14139
  variables: {
14152
14140
  data: json
14153
14141
  },
14154
14142
  error: {
14155
- code: ErrorCodes$2.SAVE_CONFIG_ERROR,
14143
+ code: ErrorCodes.SAVE_CONFIG_ERROR,
14156
14144
  message: 'ERROR.SAVE_CONFIG_ERROR'
14157
14145
  }
14158
14146
  });
@@ -14178,7 +14166,7 @@ class ConfigService extends BaseGraphqlService {
14178
14166
  const res = yield this.graphql.query({
14179
14167
  query: CacheStatistics,
14180
14168
  variables: null,
14181
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14169
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14182
14170
  fetchPolicy: 'network-only'
14183
14171
  });
14184
14172
  const data = res && res.cacheStatistics || undefined;
@@ -14194,7 +14182,7 @@ class ConfigService extends BaseGraphqlService {
14194
14182
  const res = yield this.graphql.query({
14195
14183
  query: ClearCache,
14196
14184
  variables,
14197
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14185
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14198
14186
  fetchPolicy: 'network-only'
14199
14187
  });
14200
14188
  const data = res && res.clearCache || undefined;
@@ -14353,7 +14341,7 @@ class ConfigService extends BaseGraphqlService {
14353
14341
  });
14354
14342
  }
14355
14343
  }
14356
- 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" });
14344
+ 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" });
14357
14345
  ConfigService.decorators = [
14358
14346
  { type: Injectable, args: [{
14359
14347
  providedIn: 'root',
@@ -14372,9 +14360,10 @@ ConfigService.ctorParameters = () => [
14372
14360
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
14373
14361
  ];
14374
14362
 
14375
- const moment$2 = momentImported;
14376
- class PlatformService {
14363
+ const moment$4 = momentImported;
14364
+ class PlatformService extends StartableService {
14377
14365
  constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
14366
+ super(platform);
14378
14367
  this.platform = platform;
14379
14368
  this.cdkPlatform = cdkPlatform;
14380
14369
  this.toastController = toastController;
@@ -14394,15 +14383,10 @@ class PlatformService {
14394
14383
  this.splashScreen = splashScreen;
14395
14384
  this.browser = browser;
14396
14385
  this.downloader = downloader;
14397
- this._started = false;
14398
14386
  this._downloadingJobs = new Map();
14399
14387
  this._debug = !environment.production;
14400
14388
  if (this._debug)
14401
14389
  console.debug('[platform] Creating service');
14402
- this.start();
14403
- }
14404
- get started() {
14405
- return this._started;
14406
14390
  }
14407
14391
  get mobile() {
14408
14392
  return isNotNil(this._mobile) ? this._mobile : this.platform.is('mobile');
@@ -14421,7 +14405,7 @@ class PlatformService {
14421
14405
  return this._android && this._cordova;
14422
14406
  }
14423
14407
  get canDownload() {
14424
- return this._android && !!this.downloader;
14408
+ return isNotNil(this.downloader);
14425
14409
  }
14426
14410
  width() {
14427
14411
  return this.platform.width();
@@ -14429,78 +14413,62 @@ class PlatformService {
14429
14413
  height() {
14430
14414
  return this.platform.height();
14431
14415
  }
14432
- start() {
14433
- if (this._startPromise)
14434
- return this._startPromise;
14435
- if (this._started)
14436
- return Promise.resolve();
14437
- this._started = false;
14438
- const now = Date.now();
14439
- this.accountService.tokenType = undefined;
14440
- console.info('[platform] Starting platform...');
14441
- this._startPromise = this.platform.ready()
14442
- .then(() => {
14443
- this._mobile = this.platform.is('mobile');
14444
- this._cordova = this.platform.is('cordova');
14445
- this._android = this.platform.is('android');
14446
- this.configureCordovaPlugins(this._mobile);
14447
- this.touchUi = this._mobile || this.platform.is('tablet') || this.platform.is('phablet');
14448
- // Force mobile in settings
14449
- if (this._mobile) {
14450
- this.settings.mobile = this._mobile;
14451
- this.settings.touchUi = this.touchUi;
14452
- }
14453
- this.configureTranslate();
14454
- })
14455
- .then(() => this.storageReady())
14456
- .then((forage) => this.migrateStorage(forage))
14457
- .then(() => Promise.all([
14458
- this.entitiesStorage.ready(),
14459
- this.cache.ready().then(() => this.configureCache()),
14460
- this.settings.ready(),
14461
- this.networkService.ready(),
14462
- this.audioProvider.ready()
14463
- ]))
14464
- .then(() => {
14465
- this._started = true;
14466
- this._startPromise = undefined;
14467
- console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile}, touchUi: ${this.touchUi}, canDownload: ${this.canDownload}} in ${Date.now() - now}ms`);
14468
- // Update cache configuration when network changed
14469
- this.networkService.onNetworkStatusChanges.subscribe((type) => this.configureCache(type !== 'none'));
14470
- // Update authentication type
14471
- this.configService.config
14472
- .pipe(map(config => config === null || config === void 0 ? void 0 : config.getProperty(CORE_CONFIG_OPTIONS.AUTH_TOKEN_TYPE)), filter(isNotNilOrBlank), distinctUntilChanged())
14473
- .subscribe(tokenType => {
14474
- console.info(`[platform] Using auth token type {${tokenType}}`);
14475
- this.accountService.tokenType = tokenType;
14476
- });
14477
- // Wait 1 more seconds, before hiding the splash screen
14478
- setTimeout(() => {
14479
- if (this.splashScreen)
14480
- this.splashScreen.hide();
14481
- // Play startup sound
14482
- this.audioProvider.playStartupSound();
14483
- }, 1000);
14484
- })
14485
- // Manage error
14486
- .catch(err => this.onStartupError(err));
14487
- return this._startPromise;
14488
- }
14489
- /**
14490
- * Wait platform is ready.<br/>
14491
- * Important: this will NOT start the platform, has it should be started by the AppComponent
14492
- *
14493
- * @param opts
14494
- */
14495
- ready(opts) {
14496
- const period = opts && opts.checkPeriod || 300;
14497
- if (this._started)
14498
- return Promise.resolve();
14499
- return timer(period, period)
14500
- .pipe(
14501
- // For DEBUG :
14502
- //tap(() => this._debug && console.debug("Waiting platform ready...")),
14503
- filter(() => this._started), first()).toPromise();
14416
+ ngOnStart() {
14417
+ return __awaiter(this, void 0, void 0, function* () {
14418
+ const now = Date.now();
14419
+ this.accountService.tokenType = undefined;
14420
+ console.info('[platform] Starting platform...');
14421
+ try {
14422
+ this._mobile = this.platform.is('mobile');
14423
+ this._cordova = this.platform.is('cordova');
14424
+ this._android = this.platform.is('android');
14425
+ this.configureCordovaPlugins(this._mobile);
14426
+ this.touchUi = this._mobile || this.platform.is('tablet') || this.platform.is('phablet');
14427
+ // Force mobile in settings
14428
+ if (this._mobile) {
14429
+ this.settings.mobile = this._mobile;
14430
+ this.settings.touchUi = this.touchUi;
14431
+ }
14432
+ // Configure translation
14433
+ yield this.configureTranslate();
14434
+ // Configure storage
14435
+ const forage = yield this.storageReady();
14436
+ yield this.migrateStorage(forage);
14437
+ // Start root services
14438
+ yield Promise.all([
14439
+ this.entitiesStorage.ready(),
14440
+ this.cache.ready().then(() => this.configureCache()),
14441
+ this.settings.ready(),
14442
+ this.networkService.ready(),
14443
+ this.audioProvider.ready()
14444
+ ]);
14445
+ console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile}, touchUi: ${this.touchUi}, downloader: ${this.canDownload}} in ${Date.now() - now}ms`);
14446
+ // Update cache configuration when network changed
14447
+ this.networkService.onNetworkStatusChanges
14448
+ .pipe(skip(1)) // Skip the first event (behavior subject send event immediately)
14449
+ .subscribe(type => this.configureCache(type !== 'none'));
14450
+ // Update authentication type
14451
+ this.configService.config
14452
+ .pipe(map(config => config === null || config === void 0 ? void 0 : config.getProperty(CORE_CONFIG_OPTIONS.AUTH_TOKEN_TYPE)), filter(isNotNilOrBlank), distinctUntilChanged())
14453
+ .subscribe(tokenType => {
14454
+ console.info(`[platform] Using auth token type {${tokenType}}`);
14455
+ this.accountService.tokenType = tokenType;
14456
+ });
14457
+ // Hide the splashscreen (if mobile) - after 1s
14458
+ if (this.mobile) {
14459
+ setTimeout(() => {
14460
+ var _a;
14461
+ (_a = this.splashScreen) === null || _a === void 0 ? void 0 : _a.hide();
14462
+ // Play startup sound
14463
+ this.audioProvider.playStartupSound();
14464
+ }, 1000);
14465
+ }
14466
+ }
14467
+ catch (err) {
14468
+ // Manage startup error
14469
+ return this.onStartupError(err);
14470
+ }
14471
+ });
14504
14472
  }
14505
14473
  open(url, target, features, replace) {
14506
14474
  console.info(`[platform] Opening link: ${url}`);
@@ -14581,16 +14549,16 @@ class PlatformService {
14581
14549
  }
14582
14550
  // config moment lib
14583
14551
  try {
14584
- moment$2.locale(event.lang);
14552
+ moment$4.locale(event.lang);
14585
14553
  console.debug('[platform] Use locale {' + event.lang + '}');
14586
14554
  }
14587
14555
  // If error, fallback to en
14588
14556
  catch (err) {
14589
- moment$2.locale('en');
14557
+ moment$4.locale('en');
14590
14558
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
14591
14559
  }
14592
14560
  // Config date adapter
14593
- this.dateAdapter.setLocale(moment$2.locale());
14561
+ this.dateAdapter.setLocale(moment$4.locale());
14594
14562
  }
14595
14563
  });
14596
14564
  this.settings.onChange.subscribe(data => {
@@ -14611,9 +14579,9 @@ class PlatformService {
14611
14579
  });
14612
14580
  }
14613
14581
  configureCache(online) {
14614
- online = isNotNil(online) ? online : this.cache.isOnline();
14582
+ online = toBoolean(online, this.cache.isOnline());
14615
14583
  const cacheTTL = online ? 3600 /* 1h */ : 3600 * 24 * 30; /* 1 month */
14616
- console.info(`[platform] Configuring cache [OK] {online: ${online}}, {timeToLive: ${cacheTTL / 3600}h}, {offlineInvalidate: false}`);
14584
+ console.info(`[platform] Configuring cache [OK] {online: ${online}, timeToLive: ${cacheTTL / 3600}h, offlineInvalidate: false}`);
14617
14585
  this.cache.setDefaultTTL(cacheTTL);
14618
14586
  this.cache.setOfflineInvalidate(false); // Do not invalidate cache when offline
14619
14587
  }
@@ -14728,7 +14696,7 @@ class PlatformService {
14728
14696
  });
14729
14697
  }
14730
14698
  }
14731
- 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), i0.ɵɵinject(i18.Downloader, 8)); }, token: PlatformService, providedIn: "root" });
14699
+ 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), ɵɵinject(Downloader, 8)); }, token: PlatformService, providedIn: "root" });
14732
14700
  PlatformService.decorators = [
14733
14701
  { type: Injectable, args: [{ providedIn: 'root' },] }
14734
14702
  ];
@@ -14743,15 +14711,15 @@ PlatformService.ctorParameters = () => [
14743
14711
  { type: NetworkService },
14744
14712
  { type: AccountService },
14745
14713
  { type: ConfigService },
14746
- { type: CacheService },
14714
+ { type: CacheService$1 },
14747
14715
  { type: Storage },
14748
14716
  { type: AudioProvider },
14749
14717
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
14750
- { type: StatusBar, decorators: [{ type: Optional }] },
14718
+ { type: StatusBar$1, decorators: [{ type: Optional }] },
14751
14719
  { type: Keyboard, decorators: [{ type: Optional }] },
14752
- { type: SplashScreen, decorators: [{ type: Optional }] },
14753
- { type: InAppBrowser, decorators: [{ type: Optional }] },
14754
- { type: Downloader, decorators: [{ type: Optional }] }
14720
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
14721
+ { type: InAppBrowser$1, decorators: [{ type: Optional }] },
14722
+ { type: Downloader$1, decorators: [{ type: Optional }] }
14755
14723
  ];
14756
14724
 
14757
14725
  class AppHelpModal {
@@ -14815,7 +14783,7 @@ class MatStepperI18n extends MatStepperIntl {
14815
14783
  this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
14816
14784
  }
14817
14785
  }
14818
- MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
14786
+ MatStepperI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(ɵɵinject(TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
14819
14787
  MatStepperI18n.decorators = [
14820
14788
  { type: Injectable, args: [{ providedIn: 'root' },] }
14821
14789
  ];
@@ -15807,7 +15775,7 @@ function state2side(state) {
15807
15775
  return 1;
15808
15776
  }
15809
15777
  }
15810
- const ɵ0$1 = (defaultStateSize) => [
15778
+ const ɵ0$9 = (defaultStateSize) => [
15811
15779
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
15812
15780
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
15813
15781
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -15815,7 +15783,7 @@ const ɵ0$1 = (defaultStateSize) => [
15815
15783
  const SCALE_OPTIONS_DEFAULT = {
15816
15784
  startColor: rgbArrayMap.red,
15817
15785
  startStates: [0, 2, 3],
15818
- startStepsFn: ɵ0$1
15786
+ startStepsFn: ɵ0$9
15819
15787
  };
15820
15788
  /**
15821
15789
  * Internal function, that create a colors scale, using iteration
@@ -15907,21 +15875,21 @@ function linearColorGradient(count, options) {
15907
15875
  return result;
15908
15876
  }
15909
15877
 
15910
- class EntityTestClass$1 {
15878
+ class EntityTestClass {
15911
15879
  }
15912
- const FAKE_ENTITIES$1 = [
15880
+ const FAKE_ENTITIES = [
15913
15881
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
15914
15882
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
15915
15883
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
15916
15884
  ];
15917
- function deepCopy$1(values, size) {
15885
+ function deepCopy(values, size) {
15918
15886
  if (isNil(size)) {
15919
- return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
15887
+ return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
15920
15888
  }
15921
15889
  let result = [];
15922
15890
  let i = 1;
15923
15891
  while (result.length < size) {
15924
- result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
15892
+ result = result.concat((values || FAKE_ENTITIES).map(entity => {
15925
15893
  const name = entity.name + ' #' + i;
15926
15894
  return Object.assign(Object.assign({}, entity), { id: i++, name });
15927
15895
  }));
@@ -15931,7 +15899,7 @@ function deepCopy$1(values, size) {
15931
15899
  class AutocompleteTestPage {
15932
15900
  constructor(formBuilder) {
15933
15901
  this.formBuilder = formBuilder;
15934
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
15902
+ this._items = deepCopy(FAKE_ENTITIES, 100);
15935
15903
  this.$items = new BehaviorSubject(undefined);
15936
15904
  this.autocompleteFields = new MatAutocompleteConfigHolder();
15937
15905
  this.memoryHide = false;
@@ -15975,7 +15943,7 @@ class AutocompleteTestPage {
15975
15943
  });
15976
15944
  // From items
15977
15945
  this.autocompleteFields.add('entity-items-large', {
15978
- items: FAKE_ENTITIES$1.slice(),
15946
+ items: FAKE_ENTITIES.slice(),
15979
15947
  attributes: ['label', 'name', 'description', 'comments'],
15980
15948
  displayWith: this.entityToString
15981
15949
  });
@@ -15985,12 +15953,12 @@ class AutocompleteTestPage {
15985
15953
  loadData() {
15986
15954
  return __awaiter(this, void 0, void 0, function* () {
15987
15955
  const data = {
15988
- entity: deepCopy$1(FAKE_ENTITIES$1)[0],
15956
+ entity: deepCopy(FAKE_ENTITIES)[0],
15989
15957
  // This item is NOT in the items list => i should be displayed anyway
15990
15958
  missingEntity: {
15991
15959
  id: -1, label: '??', name: 'Missing item'
15992
15960
  },
15993
- disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
15961
+ disableEntity: deepCopy(FAKE_ENTITIES)[2]
15994
15962
  };
15995
15963
  this.form.setValue(data);
15996
15964
  // Load observables
@@ -16163,13 +16131,13 @@ MaterialTestingPage.ctorParameters = () => [
16163
16131
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
16164
16132
  ];
16165
16133
 
16166
- const moment$1 = momentImported;
16134
+ const moment$5 = momentImported;
16167
16135
  class SwipeTestPage {
16168
16136
  constructor(formBuilder, dateFormatPipe) {
16169
16137
  this.formBuilder = formBuilder;
16170
16138
  this.dateFormatPipe = dateFormatPipe;
16171
16139
  this.$dates = new BehaviorSubject(undefined);
16172
- this._today = moment$1().startOf('day');
16140
+ this._today = moment$5().startOf('day');
16173
16141
  this.form = formBuilder.group({
16174
16142
  empty: [null, Validators.required],
16175
16143
  date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
@@ -16182,7 +16150,7 @@ class SwipeTestPage {
16182
16150
  ngOnInit() {
16183
16151
  const dates = [];
16184
16152
  for (let d = 0; d < 7; d++) {
16185
- dates[d] = moment$1(this._today).add(d - 3, 'day');
16153
+ dates[d] = moment$5(this._today).add(d - 3, 'day');
16186
16154
  }
16187
16155
  this.$dates.next(dates);
16188
16156
  this.loadData();
@@ -16223,7 +16191,7 @@ SwipeTestPage.ctorParameters = () => [
16223
16191
  { type: DateFormatPipe }
16224
16192
  ];
16225
16193
 
16226
- const moment = momentImported;
16194
+ const moment$6 = momentImported;
16227
16195
  class DateTimeTestPage {
16228
16196
  constructor(platform, formBuilder, cd) {
16229
16197
  this.platform = platform;
@@ -16255,7 +16223,7 @@ class DateTimeTestPage {
16255
16223
  // Load the form with data
16256
16224
  loadData() {
16257
16225
  return __awaiter(this, void 0, void 0, function* () {
16258
- const now = moment();
16226
+ const now = moment$6();
16259
16227
  const data = {
16260
16228
  empty: toDateISOString(now.clone().add(2, 'hours')),
16261
16229
  enable: toDateISOString(now),
@@ -16316,20 +16284,20 @@ DateTimeTestPage.ctorParameters = () => [
16316
16284
  { type: ChangeDetectorRef }
16317
16285
  ];
16318
16286
 
16319
- class EntityTestClass {
16287
+ class EntityTestClass$1 {
16320
16288
  }
16321
- const FAKE_ENTITIES = [
16289
+ const FAKE_ENTITIES$1 = [
16322
16290
  { id: 1, label: 'AAA', name: 'Item A' },
16323
16291
  { id: 2, label: 'BBB', name: 'Item B' },
16324
16292
  { id: 3, label: 'CCC', name: 'Item C' }
16325
16293
  ];
16326
- function deepCopy(values) {
16327
- return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
16294
+ function deepCopy$1(values) {
16295
+ return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
16328
16296
  }
16329
16297
  class ChipsTestPage {
16330
16298
  constructor(formBuilder) {
16331
16299
  this.formBuilder = formBuilder;
16332
- this._items = deepCopy(FAKE_ENTITIES);
16300
+ this._items = deepCopy$1(FAKE_ENTITIES$1);
16333
16301
  this._$items = new BehaviorSubject(undefined);
16334
16302
  this.autocompleteFields = new MatAutocompleteConfigHolder();
16335
16303
  this.form = formBuilder.group({
@@ -16348,7 +16316,7 @@ class ChipsTestPage {
16348
16316
  });
16349
16317
  // From items
16350
16318
  this.autocompleteFields.add('entity-items', {
16351
- items: FAKE_ENTITIES.slice(),
16319
+ items: FAKE_ENTITIES$1.slice(),
16352
16320
  attributes: ['label', 'name'],
16353
16321
  displayWith: this.entityToString
16354
16322
  });
@@ -16369,15 +16337,15 @@ class ChipsTestPage {
16369
16337
  const data = {
16370
16338
  entity: [],
16371
16339
  // THis item is NOT in the items list => i should be displayed anyway
16372
- entityInitial: FAKE_ENTITIES.slice(1, 2),
16373
- disableEntity: FAKE_ENTITIES.slice(1, 2)
16340
+ entityInitial: FAKE_ENTITIES$1.slice(1, 2),
16341
+ disableEntity: FAKE_ENTITIES$1.slice(1, 2)
16374
16342
  };
16375
16343
  this.form.setValue(data);
16376
16344
  });
16377
16345
  }
16378
16346
  loadItems() {
16379
16347
  return __awaiter(this, void 0, void 0, function* () {
16380
- this._$items.next(deepCopy(FAKE_ENTITIES));
16348
+ this._$items.next(deepCopy$1(FAKE_ENTITIES$1));
16381
16349
  });
16382
16350
  }
16383
16351
  entityToString(item) {
@@ -16418,7 +16386,7 @@ MatBadgeIconTestPage.decorators = [
16418
16386
  },] }
16419
16387
  ];
16420
16388
 
16421
- const routes$1 = [
16389
+ const routes = [
16422
16390
  {
16423
16391
  path: '',
16424
16392
  pathMatch: 'full',
@@ -16470,7 +16438,7 @@ MaterialTestingModule.decorators = [
16470
16438
  ReactiveFormsModule,
16471
16439
  SharedMaterialModule,
16472
16440
  TranslateModule.forChild(),
16473
- RouterModule.forChild(routes$1)
16441
+ RouterModule.forChild(routes)
16474
16442
  ],
16475
16443
  declarations: [
16476
16444
  MaterialTestingPage,
@@ -17429,7 +17397,7 @@ class UserSettingsValidatorService extends AppValidatorService {
17429
17397
  });
17430
17398
  }
17431
17399
  }
17432
- UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
17400
+ UserSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(ɵɵinject(FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
17433
17401
  UserSettingsValidatorService.decorators = [
17434
17402
  { type: Injectable, args: [{ providedIn: 'root' },] }
17435
17403
  ];
@@ -17473,7 +17441,7 @@ class AccountValidatorService extends AppValidatorService {
17473
17441
  return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
17474
17442
  }
17475
17443
  }
17476
- AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
17444
+ AccountValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
17477
17445
  AccountValidatorService.decorators = [
17478
17446
  { type: Injectable, args: [{ providedIn: 'root' },] }
17479
17447
  ];
@@ -18007,7 +17975,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
18007
17975
  });
18008
17976
  }
18009
17977
  }
18010
- LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
17978
+ LocalSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(ɵɵinject(FormBuilder), ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
18011
17979
  LocalSettingsValidatorService.decorators = [
18012
17980
  { type: Injectable, args: [{ providedIn: 'root' },] }
18013
17981
  ];
@@ -18625,7 +18593,7 @@ class IsOnFieldModePipe {
18625
18593
  return value === 'FIELD';
18626
18594
  }
18627
18595
  }
18628
- IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18596
+ IsOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18629
18597
  IsOnFieldModePipe.decorators = [
18630
18598
  { type: Pipe, args: [{
18631
18599
  name: 'isOnField'
@@ -18637,7 +18605,7 @@ class IsNotOnFieldModePipe {
18637
18605
  return value !== 'FIELD';
18638
18606
  }
18639
18607
  }
18640
- IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18608
+ IsNotOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18641
18609
  IsNotOnFieldModePipe.decorators = [
18642
18610
  { type: Pipe, args: [{
18643
18611
  name: 'isNotOnField'
@@ -18652,7 +18620,7 @@ class PersonToStringPipe {
18652
18620
  return PersonUtils.personToString(value);
18653
18621
  }
18654
18622
  }
18655
- PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18623
+ PersonToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18656
18624
  PersonToStringPipe.decorators = [
18657
18625
  { type: Pipe, args: [{
18658
18626
  name: 'personToString'
@@ -18998,7 +18966,7 @@ class IsLoginAccountPipe {
18998
18966
  return value && value.pubkey && true;
18999
18967
  }
19000
18968
  }
19001
- IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
18969
+ IsLoginAccountPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
19002
18970
  IsLoginAccountPipe.decorators = [
19003
18971
  { type: Pipe, args: [{
19004
18972
  name: 'isLogin'
@@ -19010,7 +18978,7 @@ class AccountToStringPipe {
19010
18978
  return accountToString(value);
19011
18979
  }
19012
18980
  }
19013
- AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
18981
+ AccountToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
19014
18982
  AccountToStringPipe.decorators = [
19015
18983
  { type: Pipe, args: [{
19016
18984
  name: 'accountToString'
@@ -19025,7 +18993,7 @@ class DepartmentToStringPipe {
19025
18993
  return departmentToString(value);
19026
18994
  }
19027
18995
  }
19028
- DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
18996
+ DepartmentToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
19029
18997
  DepartmentToStringPipe.decorators = [
19030
18998
  { type: Pipe, args: [{
19031
18999
  name: 'departmentToString'
@@ -19051,7 +19019,7 @@ class MenuService {
19051
19019
  this._visibleSubject.next(value);
19052
19020
  }
19053
19021
  }
19054
- MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
19022
+ MenuService.ɵprov = ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
19055
19023
  MenuService.decorators = [
19056
19024
  { type: Injectable, args: [{
19057
19025
  providedIn: 'root'
@@ -19545,7 +19513,7 @@ class AuthGuardService {
19545
19513
  }));
19546
19514
  }
19547
19515
  }
19548
- 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" });
19516
+ AuthGuardService.ɵprov = ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(ɵɵinject(AccountService), ɵɵinject(ModalController), ɵɵinject(Router), ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
19549
19517
  AuthGuardService.decorators = [
19550
19518
  { type: Injectable, args: [{ providedIn: 'root' },] }
19551
19519
  ];
@@ -19593,7 +19561,7 @@ class BaseEntityService extends BaseGraphqlService {
19593
19561
  query,
19594
19562
  variables: { id },
19595
19563
  fetchPolicy: opts && opts.fetchPolicy || undefined,
19596
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19564
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19597
19565
  })
19598
19566
  .pipe(map(({ data }) => (!opts || opts.toEntity !== false)
19599
19567
  ? (data && this.fromObject(data))
@@ -19608,7 +19576,7 @@ class BaseEntityService extends BaseGraphqlService {
19608
19576
  query,
19609
19577
  variables: { id },
19610
19578
  fetchPolicy: opts && opts.fetchPolicy || undefined,
19611
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19579
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19612
19580
  });
19613
19581
  // Convert to entity
19614
19582
  return (!opts || opts.toEntity !== false)
@@ -19639,7 +19607,7 @@ class BaseEntityService extends BaseGraphqlService {
19639
19607
  totalFieldName: withTotal ? 'total' : undefined,
19640
19608
  insertFilterFn: filter && filter.asFilterFn(),
19641
19609
  variables,
19642
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
19610
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
19643
19611
  fetchPolicy: opts && opts.fetchPolicy || undefined
19644
19612
  })
19645
19613
  .pipe(map(({ data, total }) => {
@@ -19675,7 +19643,7 @@ class BaseEntityService extends BaseGraphqlService {
19675
19643
  const { data, total } = yield this.graphql.query({
19676
19644
  query,
19677
19645
  variables,
19678
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
19646
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
19679
19647
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
19680
19648
  });
19681
19649
  const entities = (!opts || opts.toEntity !== false) ?
@@ -19714,7 +19682,7 @@ class BaseEntityService extends BaseGraphqlService {
19714
19682
  variables: {
19715
19683
  filter: filter && filter.asPodObject()
19716
19684
  },
19717
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
19685
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
19718
19686
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
19719
19687
  });
19720
19688
  return res.total;
@@ -19747,7 +19715,7 @@ class BaseEntityService extends BaseGraphqlService {
19747
19715
  variables: {
19748
19716
  data: json
19749
19717
  },
19750
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19718
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19751
19719
  update: (proxy, { data }) => {
19752
19720
  const savedEntities = data && data.data;
19753
19721
  if (savedEntities) {
@@ -19803,7 +19771,7 @@ class BaseEntityService extends BaseGraphqlService {
19803
19771
  variables: {
19804
19772
  data: json
19805
19773
  },
19806
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19774
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19807
19775
  update: (cache, { data }) => {
19808
19776
  // Update entity
19809
19777
  const savedEntity = data && data.data;
@@ -19851,7 +19819,7 @@ class BaseEntityService extends BaseGraphqlService {
19851
19819
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19852
19820
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19853
19821
  variables: { ids },
19854
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19822
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19855
19823
  update: (cache, res) => {
19856
19824
  // Remove from cache
19857
19825
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19892,7 +19860,7 @@ class BaseEntityService extends BaseGraphqlService {
19892
19860
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19893
19861
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19894
19862
  variables: { id },
19895
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19863
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19896
19864
  update: (proxy, res) => {
19897
19865
  // Remove from cache
19898
19866
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19925,7 +19893,7 @@ class BaseEntityService extends BaseGraphqlService {
19925
19893
  query: opts && opts.query || this.subscriptions.listenChanges,
19926
19894
  variables,
19927
19895
  error: {
19928
- code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
19896
+ code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
19929
19897
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
19930
19898
  }
19931
19899
  })
@@ -20100,7 +20068,7 @@ class EntitiesTableDataSource extends TableDataSource {
20100
20068
  if (this._debug)
20101
20069
  invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
20102
20070
  // Stop with an error
20103
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20071
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20104
20072
  }
20105
20073
  this._editingRowCount = 0;
20106
20074
  let data;
@@ -20922,14 +20890,14 @@ class AppTable {
20922
20890
  return __awaiter(this, void 0, void 0, function* () {
20923
20891
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
20924
20892
  if (this.readOnly) {
20925
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20893
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20926
20894
  }
20927
20895
  this.resetError();
20928
20896
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
20929
20897
  this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
20930
20898
  const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
20931
20899
  if (!this.confirmEditCreate()) {
20932
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20900
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20933
20901
  }
20934
20902
  // Mark as saving
20935
20903
  this.markAsSaving();
@@ -21045,7 +21013,7 @@ class AppTable {
21045
21013
  deleteRows(event, rows, opts) {
21046
21014
  return __awaiter(this, void 0, void 0, function* () {
21047
21015
  if (this.readOnly) {
21048
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
21016
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
21049
21017
  }
21050
21018
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
21051
21019
  return 0; // SKip
@@ -22456,7 +22424,7 @@ class AppEntityEditor extends AppTabEditor {
22456
22424
  try {
22457
22425
  const data = yield this.dataService.load(id, opts);
22458
22426
  if (!data)
22459
- throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
22427
+ throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
22460
22428
  this._usageMode = this.computeUsageMode(data);
22461
22429
  yield this.onEntityLoaded(data, opts);
22462
22430
  yield this.updateView(data, opts);
@@ -23360,7 +23328,7 @@ class UserEventService extends BaseGraphqlService {
23360
23328
  EntityUtils.copyIdAndUpdateDate(source, target);
23361
23329
  }
23362
23330
  }
23363
- 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" });
23331
+ 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" });
23364
23332
  UserEventService.decorators = [
23365
23333
  { type: Injectable, args: [{ providedIn: 'root' },] }
23366
23334
  ];
@@ -23745,7 +23713,7 @@ class PersonService extends BaseEntityService {
23745
23713
  return target;
23746
23714
  }
23747
23715
  }
23748
- 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" });
23716
+ PersonService.ɵprov = ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(ɵɵinject(GraphqlService), ɵɵinject(PlatformService), ɵɵinject(NetworkService), ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
23749
23717
  PersonService.decorators = [
23750
23718
  { type: Injectable, args: [{ providedIn: 'root' },] }
23751
23719
  ];
@@ -23776,7 +23744,7 @@ class PersonValidatorService {
23776
23744
  return this.formBuilder.group(formConfig);
23777
23745
  }
23778
23746
  }
23779
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
23747
+ PersonValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
23780
23748
  PersonValidatorService.decorators = [
23781
23749
  { type: Injectable, args: [{ providedIn: 'root' },] }
23782
23750
  ];
@@ -23982,16 +23950,16 @@ AdminModule.decorators = [
23982
23950
  ];
23983
23951
  AdminModule.ctorParameters = () => [];
23984
23952
 
23985
- const ɵ0 = {
23953
+ const ɵ0$a = {
23986
23954
  profile: 'ADMIN'
23987
23955
  };
23988
- const routes = [
23956
+ const routes$1 = [
23989
23957
  {
23990
23958
  path: 'users',
23991
23959
  pathMatch: 'full',
23992
23960
  component: UsersPage,
23993
23961
  canActivate: [AuthGuardService],
23994
- data: ɵ0
23962
+ data: ɵ0$a
23995
23963
  }
23996
23964
  ];
23997
23965
  class AdminRoutingModule {
@@ -24001,13 +23969,13 @@ AdminRoutingModule.decorators = [
24001
23969
  imports: [
24002
23970
  SharedRoutingModule,
24003
23971
  AdminModule,
24004
- RouterModule.forChild(routes)
23972
+ RouterModule.forChild(routes$1)
24005
23973
  ],
24006
23974
  exports: [RouterModule]
24007
23975
  },] }
24008
23976
  ];
24009
23977
 
24010
- const ErrorCodes = {
23978
+ const ErrorCodes$2 = {
24011
23979
  LOAD_PERSONS_ERROR: 100,
24012
23980
  SAVE_PERSONS_ERROR: 101,
24013
23981
  DELETE_PERSONS_ERROR: 102,
@@ -24019,5 +23987,5 @@ const ErrorCodes = {
24019
23987
  * Generated bundle index. Do not edit.
24020
23988
  */
24021
23989
 
24022
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, 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, AppFormProvider, 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, ComponentDirtyGuard, 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, FormErrorTranslatePipe, FormErrorTranslator, 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, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, 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, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, 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, waitFor, waitIdle, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, RegisterForm as ɵg, AccountValidatorService as ɵh, RegisterModal as ɵi, UserSettingsValidatorService as ɵj, LocalSettingsValidatorService as ɵk };
23990
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, 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, AppFormProvider, 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, ComponentDirtyGuard, 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, FormErrorTranslatePipe, FormErrorTranslator, 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, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, 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, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, 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, waitFor, waitIdle, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, RegisterForm as ɵg, AccountValidatorService as ɵh, RegisterModal as ɵi, UserSettingsValidatorService as ɵj, LocalSettingsValidatorService as ɵk };
24023
23991
  //# sourceMappingURL=sumaris-net.ngx-components.js.map