@sumaris-net/ngx-components 1.7.3 → 1.8.2-rc1

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, Component, forwardRef, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, Output, ViewChild, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, TemplateRef, ViewContainerRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Renderer2, ViewEncapsulation } from '@angular/core';
3
- import * as i1$3 from '@angular/common';
1
+ import { InjectionToken, EventEmitter, Component, forwardRef, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, Output, ViewChild, ɵɵdefineInjectable, ɵɵinject, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, TemplateRef, ViewContainerRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, INJECTOR, Injector, Renderer2, ViewEncapsulation } 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, BehaviorSubject, Subscription, Subject, isObservable, noop as noop$9, Observable, defer, of, from, combineLatest, EMPTY } from 'rxjs';
40
35
  import { filter, first, map, takeUntil, switchMap, startWith, debounceTime, takeWhile, tap, distinctUntilChanged, mergeMap, catchError, throttleTime, skip } from 'rxjs/operators';
41
- import * as i1$1 from '@ngx-translate/core';
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';
@@ -991,14 +976,14 @@ class MatAutocompleteConfigHolder {
991
976
  return this.fields[fieldName] || this.add(fieldName);
992
977
  }
993
978
  }
994
- const noop$8 = (_) => { };
995
- const ɵ0$b = noop$8;
979
+ const noop = (_) => { };
980
+ const ɵ0 = noop;
996
981
  class MatAutocompleteField {
997
982
  constructor(cd, formGroupDir) {
998
983
  this.cd = cd;
999
984
  this.formGroupDir = formGroupDir;
1000
- this._onChangeCallback = noop$8;
1001
- this._onTouchedCallback = noop$8;
985
+ this._onChangeCallback = noop;
986
+ this._onTouchedCallback = noop;
1002
987
  this.logPrefix = '[mat-autocomplete] ';
1003
988
  this.formControlName = null;
1004
989
  this.required = false;
@@ -1636,7 +1621,7 @@ MatAutocompleteField.decorators = [
1636
1621
  { type: Component, args: [{
1637
1622
  // eslint-disable-next-line @angular-eslint/component-selector
1638
1623
  selector: 'mat-autocomplete-field',
1639
- template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <!-- readonly -->\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 <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\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)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n [compareWith]=\"equals\"\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)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowdown)=\"dropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\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><i>{{noResultMessage | translate}}</i></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</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)=\"dropButtonClick.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",
1624
+ template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <!-- readonly -->\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 <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\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)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n [compareWith]=\"equals\"\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)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.showPanel && dropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\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><i>{{noResultMessage | translate}}</i></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</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)=\"dropButtonClick.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",
1640
1625
  providers: [{
1641
1626
  provide: NG_VALUE_ACCESSOR,
1642
1627
  multi: true,
@@ -1718,7 +1703,7 @@ class DateFormatPipe {
1718
1703
  return this.dateAdapter.format(date, displayFormat);
1719
1704
  }
1720
1705
  }
1721
- DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1706
+ DateFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(ɵɵinject(MomentDateAdapter), ɵɵinject(TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1722
1707
  DateFormatPipe.decorators = [
1723
1708
  { type: Pipe, args: [{
1724
1709
  name: 'dateFormat'
@@ -1730,7 +1715,7 @@ DateFormatPipe.ctorParameters = () => [
1730
1715
  { type: TranslateService }
1731
1716
  ];
1732
1717
 
1733
- const moment$6 = momentImported;
1718
+ const moment = momentImported;
1734
1719
  class DateDiffDurationPipe {
1735
1720
  constructor(dateAdapter, translate) {
1736
1721
  this.dateAdapter = dateAdapter;
@@ -1746,17 +1731,17 @@ class DateDiffDurationPipe {
1746
1731
  return this.format(startDate, endDate);
1747
1732
  }
1748
1733
  format(startDate, endDate) {
1749
- const duration = moment$6.duration(endDate.diff(startDate));
1734
+ const duration = moment.duration(endDate.diff(startDate));
1750
1735
  if (duration.asMinutes() < 0)
1751
1736
  return '';
1752
- const timeDuration = moment$6(0)
1737
+ const timeDuration = moment(0)
1753
1738
  .hour(duration.hours())
1754
1739
  .minute(duration.minutes());
1755
1740
  const days = Math.floor(duration.asDays());
1756
1741
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
1757
1742
  }
1758
1743
  }
1759
- 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" });
1744
+ DateDiffDurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(ɵɵinject(DateAdapter), ɵɵinject(TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1760
1745
  DateDiffDurationPipe.decorators = [
1761
1746
  { type: Pipe, args: [{
1762
1747
  name: 'dateDiffDuration'
@@ -1777,7 +1762,7 @@ class DateFromNowPipe {
1777
1762
  return date ? date.fromNow(args && args.withoutSuffix) : '';
1778
1763
  }
1779
1764
  }
1780
- DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1765
+ DateFromNowPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(ɵɵinject(MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1781
1766
  DateFromNowPipe.decorators = [
1782
1767
  { type: Pipe, args: [{
1783
1768
  name: 'dateFromNow'
@@ -1846,7 +1831,7 @@ function formatToDD(value, opts) {
1846
1831
  value *= -1;
1847
1832
  }
1848
1833
  }
1849
- let degrees = roundFloat$1(value, opts.maxDecimals).toString();
1834
+ let degrees = roundFloat(value, opts.maxDecimals).toString();
1850
1835
  // Add sign
1851
1836
  let sign = negative ? '-' : '+';
1852
1837
  if (opts.placeholderChar) {
@@ -1897,7 +1882,7 @@ function formatToDDMMSS(value, opts) {
1897
1882
  }
1898
1883
  let degrees = Math.trunc(value);
1899
1884
  let minutes = Math.trunc((value - degrees) * 60);
1900
- let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1885
+ let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1901
1886
  while (seconds >= 60) {
1902
1887
  seconds -= 60;
1903
1888
  minutes += 1;
@@ -1965,7 +1950,7 @@ function formatToDDMM(value, opts) {
1965
1950
  }
1966
1951
  }
1967
1952
  let degrees = Math.trunc(value);
1968
- let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
1953
+ let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
1969
1954
  while (minutes >= 60) {
1970
1955
  minutes -= 60;
1971
1956
  degrees += 1;
@@ -2016,15 +2001,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
2016
2001
  return NaN;
2017
2002
  }
2018
2003
  if (pattern === 'DD')
2019
- return roundFloat$1(degrees, maxDecimals);
2004
+ return roundFloat(degrees, maxDecimals);
2020
2005
  const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
2021
2006
  const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
2022
2007
  const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
2023
2008
  const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
2024
2009
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
2025
- return roundFloat$1(degrees, maxDecimals);
2010
+ return roundFloat(degrees, maxDecimals);
2026
2011
  }
2027
- function roundFloat$1(input, maxDecimals) {
2012
+ function roundFloat(input, maxDecimals) {
2028
2013
  if (maxDecimals > 0) {
2029
2014
  const powDecimal = Math.pow(10, maxDecimals);
2030
2015
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -2044,7 +2029,7 @@ class LatLongFormatPipe {
2044
2029
  return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
2045
2030
  }
2046
2031
  }
2047
- LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2032
+ LatLongFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2048
2033
  LatLongFormatPipe.decorators = [
2049
2034
  { type: Pipe, args: [{
2050
2035
  name: 'latLongFormat'
@@ -2056,7 +2041,7 @@ class LatitudeFormatPipe {
2056
2041
  this.transform = formatLatitude;
2057
2042
  }
2058
2043
  }
2059
- LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2044
+ LatitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2060
2045
  LatitudeFormatPipe.decorators = [
2061
2046
  { type: Pipe, args: [{
2062
2047
  name: 'latitudeFormat'
@@ -2068,7 +2053,7 @@ class LongitudeFormatPipe {
2068
2053
  this.transform = formatLongitude;
2069
2054
  }
2070
2055
  }
2071
- LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2056
+ LongitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2072
2057
  LongitudeFormatPipe.decorators = [
2073
2058
  { type: Pipe, args: [{
2074
2059
  name: 'longitudeFormat'
@@ -2088,7 +2073,7 @@ class NumberFormatPipe {
2088
2073
  }
2089
2074
  }
2090
2075
  }
2091
- NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2076
+ NumberFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2092
2077
  NumberFormatPipe.decorators = [
2093
2078
  { type: Pipe, args: [{
2094
2079
  name: 'numberFormat'
@@ -2128,7 +2113,7 @@ class HighlightPipe {
2128
2113
  }
2129
2114
  }
2130
2115
  }
2131
- HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2116
+ HighlightPipe.ɵprov = ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2132
2117
  HighlightPipe.decorators = [
2133
2118
  { type: Pipe, args: [{
2134
2119
  name: 'highlight'
@@ -2193,7 +2178,7 @@ FileSizePipe.decorators = [
2193
2178
  { type: Pipe, args: [{ name: 'fileSize' },] }
2194
2179
  ];
2195
2180
 
2196
- const moment$5 = momentImported;
2181
+ const moment$1 = momentImported;
2197
2182
  const DATE_UNIX_TIMESTAMP = 'X';
2198
2183
  const DATE_UNIX_MS_TIMESTAMP = 'x';
2199
2184
  class DateUtils {
@@ -2235,32 +2220,32 @@ function fromDateISOString(value) {
2235
2220
  if (!value || isMoment(value))
2236
2221
  return value;
2237
2222
  // Parse the input value, as a ISO date time
2238
- const date = moment$5(value, DATE_ISO_PATTERN);
2223
+ const date = moment$1(value, DATE_ISO_PATTERN);
2239
2224
  if (date.isValid())
2240
2225
  return date;
2241
2226
  // Not valid: trying to convert from unix timestamp
2242
2227
  if (typeof value === 'string') {
2243
2228
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2244
2229
  if (value.length === 10) {
2245
- return moment$5(value, DATE_UNIX_TIMESTAMP);
2230
+ return moment$1(value, DATE_UNIX_TIMESTAMP);
2246
2231
  }
2247
2232
  else if (value.length === 13) {
2248
- return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
2233
+ return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2249
2234
  }
2250
2235
  }
2251
2236
  console.warn('Unable to parse date: ' + value);
2252
2237
  return undefined;
2253
2238
  }
2254
2239
  function fromUnixTimestamp(timeInSec) {
2255
- return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
2240
+ return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2256
2241
  }
2257
2242
  function fromUnixMsTimestamp(timeInMs) {
2258
- return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2243
+ return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2259
2244
  }
2260
2245
  function toDuration(value, unit) {
2261
2246
  if (!value)
2262
2247
  return undefined;
2263
- const duration = moment$5.duration(value, unit);
2248
+ const duration = moment$1.duration(value, unit);
2264
2249
  // fix 990+ ms
2265
2250
  if (duration.milliseconds() >= 990) {
2266
2251
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2289,7 +2274,7 @@ class DurationPipe {
2289
2274
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
2290
2275
  }
2291
2276
  }
2292
- DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2277
+ DurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(ɵɵinject(TranslateService)); }, token: DurationPipe, providedIn: "root" });
2293
2278
  DurationPipe.decorators = [
2294
2279
  { type: Pipe, args: [{
2295
2280
  name: 'duration'
@@ -2310,7 +2295,7 @@ class MathAbsPipe {
2310
2295
  }
2311
2296
  }
2312
2297
  }
2313
- MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2298
+ MathAbsPipe.ɵprov = ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2314
2299
  MathAbsPipe.decorators = [
2315
2300
  { type: Pipe, args: [{
2316
2301
  name: 'mathAbs'
@@ -2322,7 +2307,7 @@ class EvenPipe {
2322
2307
  return val % 2 === 0;
2323
2308
  }
2324
2309
  }
2325
- EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2310
+ EvenPipe.ɵprov = ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2326
2311
  EvenPipe.decorators = [
2327
2312
  { type: Pipe, args: [{
2328
2313
  name: 'even'
@@ -2334,7 +2319,7 @@ class OddPipe {
2334
2319
  return val % 2 !== 0;
2335
2320
  }
2336
2321
  }
2337
- OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2322
+ OddPipe.ɵprov = ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2338
2323
  OddPipe.decorators = [
2339
2324
  { type: Pipe, args: [{
2340
2325
  name: 'odd'
@@ -2442,7 +2427,7 @@ class MapGetPipe {
2442
2427
  return val[key];
2443
2428
  }
2444
2429
  }
2445
- MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2430
+ MapGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2446
2431
  MapGetPipe.decorators = [
2447
2432
  { type: Pipe, args: [{
2448
2433
  name: 'mapGet'
@@ -2456,7 +2441,7 @@ class MapKeysPipe {
2456
2441
  return Object.keys(map);
2457
2442
  }
2458
2443
  }
2459
- MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2444
+ MapKeysPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2460
2445
  MapKeysPipe.decorators = [
2461
2446
  { type: Pipe, args: [{
2462
2447
  name: 'mapKeys'
@@ -2470,7 +2455,7 @@ class MapValuesPipe {
2470
2455
  return Object.values(map);
2471
2456
  }
2472
2457
  }
2473
- MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2458
+ MapValuesPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2474
2459
  MapValuesPipe.decorators = [
2475
2460
  { type: Pipe, args: [{
2476
2461
  name: 'mapValues'
@@ -2483,7 +2468,7 @@ class IsNotNilOrBlankPipe {
2483
2468
  return isNotNilOrBlank(value);
2484
2469
  }
2485
2470
  }
2486
- IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2471
+ IsNotNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2487
2472
  IsNotNilOrBlankPipe.decorators = [
2488
2473
  { type: Pipe, args: [{
2489
2474
  name: 'isNotNilOrBlank'
@@ -2495,7 +2480,7 @@ class IsNilOrBlankPipe {
2495
2480
  return isNilOrBlank(value);
2496
2481
  }
2497
2482
  }
2498
- IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2483
+ IsNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2499
2484
  IsNilOrBlankPipe.decorators = [
2500
2485
  { type: Pipe, args: [{
2501
2486
  name: 'isNilOrBlank'
@@ -2507,7 +2492,7 @@ class ToStringPipe {
2507
2492
  return (value !== null && value !== undefined) ? value.toString() : '';
2508
2493
  }
2509
2494
  }
2510
- ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2495
+ ToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2511
2496
  ToStringPipe.decorators = [
2512
2497
  { type: Pipe, args: [{
2513
2498
  name: 'toString'
@@ -2519,7 +2504,7 @@ class StrLengthPipe {
2519
2504
  return value && value.length || 0;
2520
2505
  }
2521
2506
  }
2522
- StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2507
+ StrLengthPipe.ɵprov = ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2523
2508
  StrLengthPipe.decorators = [
2524
2509
  { type: Pipe, args: [{
2525
2510
  name: 'strLength'
@@ -2596,7 +2581,7 @@ class TranslateContextService {
2596
2581
  return translations[keys[keys.length - 1]]; // Return the last keys translation
2597
2582
  }
2598
2583
  }
2599
- TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2584
+ TranslateContextService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(ɵɵinject(TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2600
2585
  TranslateContextService.decorators = [
2601
2586
  { type: Injectable, args: [{ providedIn: 'root' },] }
2602
2587
  ];
@@ -2646,7 +2631,7 @@ class PropertyGetPipe {
2646
2631
  args && args.defaultValue);
2647
2632
  }
2648
2633
  }
2649
- PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2634
+ PropertyGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2650
2635
  PropertyGetPipe.decorators = [
2651
2636
  { type: Pipe, args: [{
2652
2637
  name: 'propertyGet'
@@ -2671,7 +2656,7 @@ NgInitDirective.propDecorators = {
2671
2656
  ngInit: [{ type: Output }]
2672
2657
  };
2673
2658
 
2674
- const moment$4 = momentImported;
2659
+ const moment$2 = momentImported;
2675
2660
  // @dynamic
2676
2661
  class SharedValidators {
2677
2662
  static getDoubleRegexp(maxDecimals) {
@@ -2688,7 +2673,7 @@ class SharedValidators {
2688
2673
  }
2689
2674
  static validDate(control) {
2690
2675
  const value = control.value;
2691
- const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
2676
+ const date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
2692
2677
  if (date && (!date.isValid() || date.year() < 1970)) {
2693
2678
  return { validDate: true };
2694
2679
  }
@@ -3762,7 +3747,7 @@ class FormErrorTranslator {
3762
3747
  return errorKey;
3763
3748
  }
3764
3749
  }
3765
- 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" });
3750
+ FormErrorTranslator.ɵprov = ɵɵdefineInjectable({ factory: function FormErrorTranslator_Factory() { return new FormErrorTranslator(ɵɵinject(TranslateService), ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorTranslator, providedIn: "root" });
3766
3751
  FormErrorTranslator.decorators = [
3767
3752
  { type: Injectable, args: [{ providedIn: 'root' },] }
3768
3753
  ];
@@ -4114,9 +4099,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
4114
4099
  const hour = parseInt(durationParts[0] || '0');
4115
4100
  const minute = parseInt(durationParts[1] || '0');
4116
4101
  const value = hour + (minute + 0.5) / 60;
4117
- return roundFloat(value, maxDecimals);
4102
+ return roundFloat$1(value, maxDecimals);
4118
4103
  }
4119
- function roundFloat(input, maxDecimals) {
4104
+ function roundFloat$1(input, maxDecimals) {
4120
4105
  if (maxDecimals > 0) {
4121
4106
  const powDecimal = Math.pow(10, maxDecimals);
4122
4107
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -4140,9 +4125,9 @@ const MASKS = {
4140
4125
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
4141
4126
  }
4142
4127
  };
4143
- const noop$7 = () => {
4128
+ const noop$1 = () => {
4144
4129
  };
4145
- const ɵ0$a = noop$7;
4130
+ const ɵ0$1 = noop$1;
4146
4131
  class MatLatLongField {
4147
4132
  constructor(platform, translate, formBuilder, cd, formGroupDir) {
4148
4133
  this.platform = platform;
@@ -4150,8 +4135,8 @@ class MatLatLongField {
4150
4135
  this.formBuilder = formBuilder;
4151
4136
  this.cd = cd;
4152
4137
  this.formGroupDir = formGroupDir;
4153
- this._onChangeCallback = noop$7;
4154
- this._onTouchedCallback = noop$7;
4138
+ this._onChangeCallback = noop$1;
4139
+ this._onTouchedCallback = noop$1;
4155
4140
  this._subscription = new Subscription();
4156
4141
  this.disabling = false;
4157
4142
  this.writing = false;
@@ -4488,14 +4473,14 @@ SharedMatLatLongModule.decorators = [
4488
4473
  },] }
4489
4474
  ];
4490
4475
 
4491
- const DEFAULT_VALUE_ACCESSOR$5 = {
4476
+ const DEFAULT_VALUE_ACCESSOR = {
4492
4477
  provide: NG_VALUE_ACCESSOR,
4493
4478
  useExisting: forwardRef(() => MatDate),
4494
4479
  multi: true
4495
4480
  };
4496
- const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4497
- const noop$6 = () => { };
4498
- const ɵ0$9 = noop$6;
4481
+ const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4482
+ const noop$2 = () => { };
4483
+ const ɵ0$2 = noop$2;
4499
4484
  class MatDate {
4500
4485
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4501
4486
  this.dateAdapter = dateAdapter;
@@ -4504,12 +4489,12 @@ class MatDate {
4504
4489
  this.cd = cd;
4505
4490
  this.keyboard = keyboard;
4506
4491
  this.formGroupDir = formGroupDir;
4507
- this._onChangeCallback = noop$6;
4508
- this._onTouchedCallback = noop$6;
4492
+ this._onChangeCallback = noop$2;
4493
+ this._onTouchedCallback = noop$2;
4509
4494
  this._subscription = new Subscription();
4510
4495
  this.writing = true;
4511
4496
  this.disabling = false;
4512
- this.dayMask = DAY_MASK$2;
4497
+ this.dayMask = DAY_MASK;
4513
4498
  this.disabled = false;
4514
4499
  this.floatLabel = 'auto';
4515
4500
  this.readonly = false;
@@ -4746,7 +4731,7 @@ MatDate.decorators = [
4746
4731
  selector: 'mat-date-field',
4747
4732
  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",
4748
4733
  providers: [
4749
- DEFAULT_VALUE_ACCESSOR$5,
4734
+ DEFAULT_VALUE_ACCESSOR,
4750
4735
  ],
4751
4736
  changeDetection: ChangeDetectionStrategy.OnPush,
4752
4737
  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%}"]
@@ -4779,17 +4764,17 @@ MatDate.propDecorators = {
4779
4764
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
4780
4765
  };
4781
4766
 
4782
- const DEFAULT_VALUE_ACCESSOR$4 = {
4767
+ const DEFAULT_VALUE_ACCESSOR$1 = {
4783
4768
  provide: NG_VALUE_ACCESSOR,
4784
4769
  useExisting: forwardRef(() => MatDateTime),
4785
4770
  multi: true
4786
4771
  };
4787
4772
  const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4788
4773
  const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
4789
- const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4790
- const noop$5 = () => {
4774
+ const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4775
+ const noop$3 = () => {
4791
4776
  };
4792
- const ɵ0$8 = noop$5;
4777
+ const ɵ0$3 = noop$3;
4793
4778
  class MatDateTime {
4794
4779
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4795
4780
  this.platform = platform;
@@ -4799,14 +4784,14 @@ class MatDateTime {
4799
4784
  this.cd = cd;
4800
4785
  this.keyboard = keyboard;
4801
4786
  this.formGroupDir = formGroupDir;
4802
- this._onChangeCallback = noop$5;
4803
- this._onTouchedCallback = noop$5;
4787
+ this._onChangeCallback = noop$3;
4788
+ this._onTouchedCallback = noop$3;
4804
4789
  this._subscription = new Subscription();
4805
4790
  this.writing = true;
4806
4791
  this.disabling = false;
4807
4792
  this._readonly = false;
4808
4793
  this.dayMask = DAY_MASK$1;
4809
- this.hourMask = HOUR_MASK$1;
4794
+ this.hourMask = HOUR_MASK;
4810
4795
  this.floatLabel = 'auto';
4811
4796
  this.compact = false;
4812
4797
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -5118,7 +5103,7 @@ MatDateTime.decorators = [
5118
5103
  selector: 'mat-date-time-field',
5119
5104
  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",
5120
5105
  providers: [
5121
- DEFAULT_VALUE_ACCESSOR$4,
5106
+ DEFAULT_VALUE_ACCESSOR$1,
5122
5107
  ],
5123
5108
  changeDetection: ChangeDetectionStrategy.OnPush,
5124
5109
  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%}"]
@@ -5152,15 +5137,15 @@ MatDateTime.propDecorators = {
5152
5137
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
5153
5138
  };
5154
5139
 
5155
- const DEFAULT_VALUE_ACCESSOR$3 = {
5140
+ const DEFAULT_VALUE_ACCESSOR$2 = {
5156
5141
  provide: NG_VALUE_ACCESSOR,
5157
5142
  useExisting: forwardRef(() => MatDateShort),
5158
5143
  multi: true
5159
5144
  };
5160
- const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
5145
+ const DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
5161
5146
  const noop$4 = () => {
5162
5147
  };
5163
- const ɵ0$7 = noop$4;
5148
+ const ɵ0$4 = noop$4;
5164
5149
  class MatDateShort {
5165
5150
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5166
5151
  this.dateAdapter = dateAdapter;
@@ -5173,7 +5158,7 @@ class MatDateShort {
5173
5158
  this._onTouchedCallback = noop$4;
5174
5159
  this.writing = true;
5175
5160
  this.disabling = false;
5176
- this.dayMask = DAY_MASK;
5161
+ this.dayMask = DAY_MASK$2;
5177
5162
  this.disabled = false;
5178
5163
  this.floatLabel = 'auto';
5179
5164
  this.readonly = false;
@@ -5418,7 +5403,7 @@ MatDateShort.decorators = [
5418
5403
  selector: 'mat-date-short-field',
5419
5404
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_YEAR_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker1)\"\n (keyup.escape)=\"preventEvent($event)\"\n (click)=\"matInput.select()\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker1)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker1\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker1)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n <mat-datepicker #datePicker1\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n (yearSelected)=\"closeDatePicker($event, datePicker1)\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n",
5420
5405
  providers: [
5421
- DEFAULT_VALUE_ACCESSOR$3,
5406
+ DEFAULT_VALUE_ACCESSOR$2,
5422
5407
  ],
5423
5408
  changeDetection: ChangeDetectionStrategy.OnPush,
5424
5409
  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%}"]
@@ -5486,16 +5471,16 @@ SharedMatDateTimeModule.decorators = [
5486
5471
  },] }
5487
5472
  ];
5488
5473
 
5489
- const DEFAULT_VALUE_ACCESSOR$2 = {
5474
+ const DEFAULT_VALUE_ACCESSOR$3 = {
5490
5475
  provide: NG_VALUE_ACCESSOR,
5491
5476
  useExisting: forwardRef(() => MatDuration),
5492
5477
  multi: true
5493
5478
  };
5494
5479
  const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
5495
- const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5496
- const noop$3 = () => {
5480
+ const HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5481
+ const noop$5 = () => {
5497
5482
  };
5498
- const ɵ0$6 = noop$3;
5483
+ const ɵ0$5 = noop$5;
5499
5484
  class MatDuration {
5500
5485
  constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
5501
5486
  this.dateAdapter = dateAdapter;
@@ -5504,11 +5489,11 @@ class MatDuration {
5504
5489
  this.cd = cd;
5505
5490
  this.formGroupDir = formGroupDir;
5506
5491
  this._subscription = new Subscription();
5507
- this._onChangeCallback = noop$3;
5508
- this._onTouchedCallback = noop$3;
5492
+ this._onChangeCallback = noop$5;
5493
+ this._onTouchedCallback = noop$5;
5509
5494
  this.writing = true;
5510
5495
  this.disabling = false;
5511
- this.hourMask = HOUR_MASK;
5496
+ this.hourMask = HOUR_MASK$1;
5512
5497
  this.disabled = false;
5513
5498
  this.floatLabel = 'auto';
5514
5499
  this.readonly = false;
@@ -5688,7 +5673,7 @@ MatDuration.decorators = [
5688
5673
  selector: 'mat-duration-field',
5689
5674
  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",
5690
5675
  providers: [
5691
- DEFAULT_VALUE_ACCESSOR$2,
5676
+ DEFAULT_VALUE_ACCESSOR$3,
5692
5677
  ],
5693
5678
  changeDetection: ChangeDetectionStrategy.OnPush,
5694
5679
  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%}"]
@@ -5745,22 +5730,22 @@ SharedMatDurationModule.decorators = [
5745
5730
  },] }
5746
5731
  ];
5747
5732
 
5748
- const DEFAULT_VALUE_ACCESSOR$1 = {
5733
+ const DEFAULT_VALUE_ACCESSOR$4 = {
5749
5734
  provide: NG_VALUE_ACCESSOR,
5750
5735
  useExisting: forwardRef(() => MatBooleanField),
5751
5736
  multi: true
5752
5737
  };
5753
- const noop$2 = () => {
5738
+ const noop$6 = () => {
5754
5739
  };
5755
- const ɵ0$5 = noop$2;
5740
+ const ɵ0$6 = noop$6;
5756
5741
  class MatBooleanField {
5757
5742
  constructor(translate, formBuilder, cd, formGroupDir) {
5758
5743
  this.translate = translate;
5759
5744
  this.formBuilder = formBuilder;
5760
5745
  this.cd = cd;
5761
5746
  this.formGroupDir = formGroupDir;
5762
- this._onChangeCallback = noop$2;
5763
- this._onTouchedCallback = noop$2;
5747
+ this._onChangeCallback = noop$6;
5748
+ this._onTouchedCallback = noop$6;
5764
5749
  this._writing = false;
5765
5750
  this.showRadio = false;
5766
5751
  this.disabled = false;
@@ -5923,7 +5908,7 @@ MatBooleanField.decorators = [
5923
5908
  selector: 'mat-boolean-field',
5924
5909
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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 <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\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 <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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 <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\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 <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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 <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\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 <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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 <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
5925
5910
  providers: [
5926
- DEFAULT_VALUE_ACCESSOR$1
5911
+ DEFAULT_VALUE_ACCESSOR$4
5927
5912
  ],
5928
5913
  changeDetection: ChangeDetectionStrategy.OnPush,
5929
5914
  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}"]
@@ -6169,7 +6154,7 @@ class MatNumpadDomService {
6169
6154
  this.appRef.detachView(this.componentRef.hostView);
6170
6155
  }
6171
6156
  }
6172
- 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" });
6157
+ MatNumpadDomService.ɵprov = ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
6173
6158
  MatNumpadDomService.decorators = [
6174
6159
  { type: Injectable, args: [{
6175
6160
  providedIn: 'root'
@@ -6533,7 +6518,7 @@ SharedMatNumpadModule.decorators = [
6533
6518
  },] }
6534
6519
  ];
6535
6520
 
6536
- const DEFAULT_VALUE_ACCESSOR = {
6521
+ const DEFAULT_VALUE_ACCESSOR$5 = {
6537
6522
  provide: NG_VALUE_ACCESSOR,
6538
6523
  useExisting: forwardRef(() => MatSwipeField),
6539
6524
  multi: true
@@ -6796,7 +6781,7 @@ MatSwipeField.decorators = [
6796
6781
  { type: Component, args: [{
6797
6782
  selector: 'mat-swipe-field',
6798
6783
  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",
6799
- providers: [DEFAULT_VALUE_ACCESSOR],
6784
+ providers: [DEFAULT_VALUE_ACCESSOR$5],
6800
6785
  changeDetection: ChangeDetectionStrategy.OnPush,
6801
6786
  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}"]
6802
6787
  },] }
@@ -6854,14 +6839,14 @@ SharedMatSwipeModule.decorators = [
6854
6839
  },] }
6855
6840
  ];
6856
6841
 
6857
- const noop$1 = () => { };
6858
- const ɵ0$4 = noop$1;
6842
+ const noop$7 = () => { };
6843
+ const ɵ0$7 = noop$7;
6859
6844
  class MatChipsField {
6860
6845
  constructor(cd, formGroupDir) {
6861
6846
  this.cd = cd;
6862
6847
  this.formGroupDir = formGroupDir;
6863
- this._onChangeCallback = noop$1;
6864
- this._onTouchedCallback = noop$1;
6848
+ this._onChangeCallback = noop$7;
6849
+ this._onTouchedCallback = noop$7;
6865
6850
  this.logPrefix = '[mat-chips] ';
6866
6851
  this.formControlName = null;
6867
6852
  this.required = false;
@@ -7730,7 +7715,7 @@ class ProgressBarService {
7730
7715
  }
7731
7716
  }
7732
7717
  }
7733
- ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7718
+ ProgressBarService.ɵprov = ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7734
7719
  ProgressBarService.decorators = [
7735
7720
  { type: Injectable, args: [{ providedIn: 'root' },] }
7736
7721
  ];
@@ -7774,7 +7759,7 @@ class AppGestureConfig extends HammerGestureConfig {
7774
7759
  return mc;
7775
7760
  }
7776
7761
  }
7777
- AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7762
+ AppGestureConfig.ɵprov = ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7778
7763
  AppGestureConfig.decorators = [
7779
7764
  { type: Injectable, args: [{ providedIn: 'root' },] }
7780
7765
  ];
@@ -7999,7 +7984,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
7999
7984
  this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
8000
7985
  }
8001
7986
  }
8002
- MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7987
+ MatPaginatorI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(ɵɵinject(TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
8003
7988
  MatPaginatorI18n.decorators = [
8004
7989
  { type: Injectable, args: [{ providedIn: 'root' },] }
8005
7990
  ];
@@ -8089,17 +8074,17 @@ function getColorContrast(color, bw) {
8089
8074
  return rgbArrayToHex(rgb.map(v => 255 - v));
8090
8075
  }
8091
8076
 
8092
- const noop = () => {
8077
+ const noop$8 = () => {
8093
8078
  };
8094
- const ɵ0$3 = noop;
8079
+ const ɵ0$8 = noop$8;
8095
8080
  class AppFormField {
8096
8081
  constructor(translate, cd, injector, formGroupDir) {
8097
8082
  this.translate = translate;
8098
8083
  this.cd = cd;
8099
8084
  this.injector = injector;
8100
8085
  this.formGroupDir = formGroupDir;
8101
- this._onChangeCallback = noop;
8102
- this._onTouchedCallback = noop;
8086
+ this._onChangeCallback = noop$8;
8087
+ this._onTouchedCallback = noop$8;
8103
8088
  this.readonly = false;
8104
8089
  this.compact = false;
8105
8090
  this.floatLabel = 'auto';
@@ -8532,14 +8517,14 @@ class AudioProvider extends StartableService {
8532
8517
  });
8533
8518
  }
8534
8519
  }
8535
- 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" });
8520
+ 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" });
8536
8521
  AudioProvider.decorators = [
8537
8522
  { type: Injectable, args: [{ providedIn: 'root' },] }
8538
8523
  ];
8539
8524
  AudioProvider.ctorParameters = () => [
8540
8525
  { type: Platform },
8541
- { type: NativeAudio, decorators: [{ type: Optional }] },
8542
- { type: Vibration, decorators: [{ type: Optional }] },
8526
+ { type: NativeAudio$1, decorators: [{ type: Optional }] },
8527
+ { type: Vibration$1, decorators: [{ type: Optional }] },
8543
8528
  { type: AudioManagement, decorators: [{ type: Optional }] }
8544
8529
  ];
8545
8530
 
@@ -8621,7 +8606,7 @@ class Hotkeys {
8621
8606
  });
8622
8607
  }
8623
8608
  }
8624
- 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" });
8609
+ Hotkeys.ɵprov = ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(ɵɵinject(EventManager), ɵɵinject(MatDialog), ɵɵinject(DOCUMENT), ɵɵinject(ModalController)); }, token: Hotkeys, providedIn: "root" });
8625
8610
  Hotkeys.decorators = [
8626
8611
  { type: Injectable, args: [{
8627
8612
  providedIn: 'root'
@@ -8795,7 +8780,7 @@ class Base64ImageReader {
8795
8780
  }
8796
8781
  }
8797
8782
 
8798
- const uuidv4$1 = uuidv4Imported;
8783
+ const uuidv4 = uuidv4Imported;
8799
8784
  class FileService {
8800
8785
  constructor(platform,
8801
8786
  //private transfer: FileTransfer,
@@ -8832,7 +8817,7 @@ class FileService {
8832
8817
  const lastSlashIndex = source.lastIndexOf('/');
8833
8818
  if (lastSlashIndex === -1)
8834
8819
  throw new Error('Invalid URL: ' + source);
8835
- const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
8820
+ const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
8836
8821
  // Download into the file system
8837
8822
  if (responseType === 'file' && this.canUseFileSystem) {
8838
8823
  console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
@@ -8888,7 +8873,7 @@ class FileService {
8888
8873
  this._started = true;
8889
8874
  }
8890
8875
  }
8891
- 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" });
8876
+ FileService.ɵprov = ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(ɵɵinject(Platform), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
8892
8877
  FileService.decorators = [
8893
8878
  { type: Injectable, args: [{
8894
8879
  providedIn: 'root',
@@ -9054,7 +9039,7 @@ class Base58 {
9054
9039
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
9055
9040
 
9056
9041
  const scrypt = require('scrypt-async');
9057
- const sha256$1 = require('hash.js/lib/hash/sha/256');
9042
+ const sha256 = require('hash.js/lib/hash/sha/256');
9058
9043
  const sha512 = require('hash.js/lib/hash/sha/512');
9059
9044
  const nacl = {
9060
9045
  sign,
@@ -9158,7 +9143,7 @@ class CryptoService {
9158
9143
  * Hash (using SHA256) a message
9159
9144
  */
9160
9145
  sha256(message) {
9161
- return sha256$1().update(message).digest('hex');
9146
+ return sha256().update(message).digest('hex');
9162
9147
  }
9163
9148
  /**
9164
9149
  * Hash (using SHA512) a message
@@ -9171,7 +9156,7 @@ class CryptoService {
9171
9156
  return nacl.util.encodeBase64(m);
9172
9157
  }
9173
9158
  }
9174
- CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
9159
+ CryptoService.ɵprov = ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
9175
9160
  CryptoService.decorators = [
9176
9161
  { type: Injectable, args: [{ providedIn: 'root' },] }
9177
9162
  ];
@@ -10399,7 +10384,7 @@ class LocalSettingsService extends StartableService {
10399
10384
  return page;
10400
10385
  }
10401
10386
  }
10402
- 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" });
10387
+ 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" });
10403
10388
  LocalSettingsService.decorators = [
10404
10389
  { type: Injectable, args: [{
10405
10390
  providedIn: 'root',
@@ -11057,7 +11042,7 @@ class NetworkService extends StartableService {
11057
11042
  });
11058
11043
  }
11059
11044
  }
11060
- 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" });
11045
+ 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" });
11061
11046
  NetworkService.decorators = [
11062
11047
  { type: Injectable, args: [{ providedIn: 'root' },] }
11063
11048
  ];
@@ -11068,16 +11053,16 @@ NetworkService.ctorParameters = () => [
11068
11053
  { type: CryptoService },
11069
11054
  { type: Storage },
11070
11055
  { type: LocalSettingsService },
11071
- { type: CacheService },
11056
+ { type: CacheService$1 },
11072
11057
  { type: HttpClient },
11073
11058
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
11074
- { type: Network, decorators: [{ type: Optional }] },
11075
- { type: SplashScreen, decorators: [{ type: Optional }] },
11059
+ { type: Network$1, decorators: [{ type: Optional }] },
11060
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
11076
11061
  { type: TranslateService, decorators: [{ type: Optional }] },
11077
11062
  { type: ToastController, decorators: [{ type: Optional }] }
11078
11063
  ];
11079
11064
 
11080
- const ErrorCodes$2 = {
11065
+ const ErrorCodes = {
11081
11066
  UNKNOWN_ERROR: 0,
11082
11067
  LOAD_ACCOUNT_ERROR: 1,
11083
11068
  BAD_PASSWORD: 2,
@@ -11429,7 +11414,7 @@ class EntityStore {
11429
11414
  }
11430
11415
  catch (err) {
11431
11416
  console.error(err);
11432
- throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
11417
+ throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
11433
11418
  }
11434
11419
  }
11435
11420
  // Emit update event
@@ -12003,7 +11988,7 @@ class EntitiesStorage extends StartableService {
12003
11988
  }
12004
11989
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
12005
11990
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
12006
- 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" });
11991
+ 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" });
12007
11992
  EntitiesStorage.decorators = [
12008
11993
  { type: Injectable, args: [{ providedIn: 'root' },] }
12009
11994
  ];
@@ -12140,10 +12125,10 @@ function referentialToString(obj, properties) {
12140
12125
  function referentialsToString(values, properties, separator) {
12141
12126
  return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
12142
12127
  }
12143
- const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12128
+ const ɵ0$9 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12144
12129
  const StatusList = Object.freeze([
12145
12130
  {
12146
- id: ɵ0$2,
12131
+ id: ɵ0$9,
12147
12132
  icon: 'checkmark',
12148
12133
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
12149
12134
  },
@@ -12418,7 +12403,7 @@ function accountToString(data) {
12418
12403
  (data.lastName || '')) || '';
12419
12404
  }
12420
12405
 
12421
- const uuidv4 = uuidv4Imported;
12406
+ const uuidv4$1 = uuidv4Imported;
12422
12407
  const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
12423
12408
  const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
12424
12409
  /**
@@ -12462,7 +12447,7 @@ function createTrackerLink(opts) {
12462
12447
  // Skip if not tracked
12463
12448
  if (!context || !context.tracked)
12464
12449
  return forward(operation);
12465
- const id = context.serializationKey || uuidv4();
12450
+ const id = context.serializationKey || uuidv4$1();
12466
12451
  console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
12467
12452
  // Clean context, before calling JSON.stringify (remove unused attributes)
12468
12453
  const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -13127,7 +13112,7 @@ class GraphqlService extends StartableService {
13127
13112
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
13128
13113
  || this.toAppError(err.networkError)
13129
13114
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
13130
- || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
13115
+ || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
13131
13116
  // If graphQL: try to convert the first error found
13132
13117
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
13133
13118
  || this.toAppError(err)
@@ -13135,7 +13120,7 @@ class GraphqlService extends StartableService {
13135
13120
  || (err.graphQLErrors && err.graphQLErrors[0])
13136
13121
  || err;
13137
13122
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
13138
- if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13123
+ if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13139
13124
  console.error('[graphql] original error: ' + err.networkError.message);
13140
13125
  this.onNetworkError.next(error);
13141
13126
  }
@@ -13171,7 +13156,7 @@ class GraphqlService extends StartableService {
13171
13156
  return 'ERROR.UNAUTHORIZED';
13172
13157
  case ServerErrorCodes.FORBIDDEN:
13173
13158
  return 'ERROR.FORBIDDEN';
13174
- case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
13159
+ case ErrorCodes.UNKNOWN_NETWORK_ERROR:
13175
13160
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
13176
13161
  case ServerErrorCodes.BAD_UPDATE_DATE:
13177
13162
  return 'ERROR.BAD_UPDATE_DATE';
@@ -13202,7 +13187,7 @@ class GraphqlService extends StartableService {
13202
13187
  return undefined;
13203
13188
  }
13204
13189
  }
13205
- 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" });
13190
+ 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" });
13206
13191
  GraphqlService.decorators = [
13207
13192
  { type: Injectable, args: [{
13208
13193
  providedIn: 'root'
@@ -13219,7 +13204,7 @@ GraphqlService.ctorParameters = () => [
13219
13204
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
13220
13205
  ];
13221
13206
 
13222
- const sha256 = require('hash.js/lib/hash/sha/256');
13207
+ const sha256$1 = require('hash.js/lib/hash/sha/256');
13223
13208
  class BaseGraphqlServiceOptions {
13224
13209
  }
13225
13210
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
@@ -13370,8 +13355,8 @@ class BaseGraphqlService extends StartableService {
13370
13355
  }
13371
13356
  /* -- protected methods -- */
13372
13357
  computeMutableWatchQueryId(opts) {
13373
- const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
13374
- const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
13358
+ const queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
13359
+ const variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
13375
13360
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
13376
13361
  }
13377
13362
  findMutableWatchQueries(opts) {
@@ -13437,7 +13422,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
13437
13422
  /* ------------------------------------
13438
13423
  * GraphQL queries
13439
13424
  * ------------------------------------*/
13440
- const Fragments$1 = {
13425
+ const Fragments = {
13441
13426
  account: gql `
13442
13427
  fragment AccountFragment on AccountVO {
13443
13428
  id
@@ -13472,14 +13457,14 @@ const Fragments$1 = {
13472
13457
  }`
13473
13458
  };
13474
13459
  // Load account query
13475
- const LoadQuery$1 = gql `
13460
+ const LoadQuery = gql `
13476
13461
  query Account {
13477
13462
  data: account {
13478
13463
  ...AccountFragment
13479
13464
  }
13480
13465
  }
13481
- ${Fragments$1.account}
13482
- ${Fragments$1.settings}
13466
+ ${Fragments.account}
13467
+ ${Fragments.settings}
13483
13468
  `;
13484
13469
  // Check email query
13485
13470
  const IsEmailExistsQuery = gql `
@@ -13494,21 +13479,21 @@ const AccountMutations = {
13494
13479
  ...AccountFragment
13495
13480
  }
13496
13481
  }
13497
- ${Fragments$1.account}
13498
- ${Fragments$1.settings}`,
13482
+ ${Fragments.account}
13483
+ ${Fragments.settings}`,
13499
13484
  create: gql `mutation CreateAccount($data:AccountVOInput){
13500
13485
  data: createAccount(account: $data){
13501
13486
  ...AccountFragment
13502
13487
  }
13503
13488
  }
13504
- ${Fragments$1.account}
13505
- ${Fragments$1.settings}`,
13489
+ ${Fragments.account}
13490
+ ${Fragments.settings}`,
13506
13491
  saveSettings: gql `mutation SaveSettings($data:UserSettingsVOInput){
13507
13492
  data: saveSettings(settings: $data){
13508
13493
  ...UserSettingsFragment
13509
13494
  }
13510
13495
  }
13511
- ${Fragments$1.settings}`
13496
+ ${Fragments.settings}`
13512
13497
  };
13513
13498
  // Sent confirmation email
13514
13499
  const SendConfirmEmailMutation = gql `
@@ -13817,7 +13802,7 @@ class AccountService extends BaseGraphqlService {
13817
13802
  catch (error) {
13818
13803
  console.error(error);
13819
13804
  this.resetData();
13820
- throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13805
+ throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13821
13806
  }
13822
13807
  // Store pubkey+keypair
13823
13808
  this._cache.pubkey = Base58.encode(keypair.publicKey);
@@ -13851,7 +13836,7 @@ class AccountService extends BaseGraphqlService {
13851
13836
  }
13852
13837
  catch (err) {
13853
13838
  // If account not found, check if email is valid
13854
- if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
13839
+ if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
13855
13840
  // Check email exists
13856
13841
  if (data.username.indexOf('@') !== -1) {
13857
13842
  let isEmailExists;
@@ -13863,11 +13848,11 @@ class AccountService extends BaseGraphqlService {
13863
13848
  }
13864
13849
  // Email not exists (no account)
13865
13850
  if (!isEmailExists) {
13866
- throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13851
+ throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13867
13852
  }
13868
13853
  }
13869
13854
  // Email exists, so error = 'bad password'
13870
- throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13855
+ throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13871
13856
  }
13872
13857
  throw err; // resend the first error
13873
13858
  }
@@ -13992,8 +13977,8 @@ class AccountService extends BaseGraphqlService {
13992
13977
  // Load remotely
13993
13978
  else {
13994
13979
  const { data } = yield this.graphql.query({
13995
- query: LoadQuery$1,
13996
- error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
13980
+ query: LoadQuery,
13981
+ error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
13997
13982
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
13998
13983
  });
13999
13984
  json = data;
@@ -14020,7 +14005,7 @@ class AccountService extends BaseGraphqlService {
14020
14005
  return __awaiter(this, void 0, void 0, function* () {
14021
14006
  const isEmailExists = yield this.isEmailExists(email);
14022
14007
  if (isEmailExists) {
14023
- throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14008
+ throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14024
14009
  }
14025
14010
  });
14026
14011
  }
@@ -14056,7 +14041,7 @@ class AccountService extends BaseGraphqlService {
14056
14041
  locale
14057
14042
  },
14058
14043
  error: {
14059
- code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
14044
+ code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
14060
14045
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
14061
14046
  }
14062
14047
  });
@@ -14072,7 +14057,7 @@ class AccountService extends BaseGraphqlService {
14072
14057
  code
14073
14058
  },
14074
14059
  error: {
14075
- code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
14060
+ code: ErrorCodes.CONFIRM_EMAIL_FAILED,
14076
14061
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
14077
14062
  }
14078
14063
  });
@@ -14090,7 +14075,7 @@ class AccountService extends BaseGraphqlService {
14090
14075
  interval: 10
14091
14076
  },
14092
14077
  error: {
14093
- code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
14078
+ code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
14094
14079
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
14095
14080
  }
14096
14081
  }).subscribe({
@@ -14191,7 +14176,7 @@ class AccountService extends BaseGraphqlService {
14191
14176
  throw error;
14192
14177
  console.error(error);
14193
14178
  throw {
14194
- code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
14179
+ code: ErrorCodes.LOAD_ACCOUNT_ERROR,
14195
14180
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
14196
14181
  };
14197
14182
  }
@@ -14359,7 +14344,7 @@ class AccountService extends BaseGraphqlService {
14359
14344
  if (!isNew) {
14360
14345
  const existingAccount = yield this.load({ fetchPolicy: 'network-only' });
14361
14346
  if (!existingAccount || !existingAccount.updateDate) {
14362
- throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14347
+ throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14363
14348
  }
14364
14349
  this.copyIdAndUpdateDate(existingAccount, account);
14365
14350
  }
@@ -14371,7 +14356,7 @@ class AccountService extends BaseGraphqlService {
14371
14356
  mutation: isNew ? AccountMutations.create : AccountMutations.save,
14372
14357
  variables: { data: json },
14373
14358
  error: {
14374
- code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
14359
+ code: ErrorCodes.SAVE_ACCOUNT_ERROR,
14375
14360
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
14376
14361
  }
14377
14362
  });
@@ -14398,7 +14383,7 @@ class AccountService extends BaseGraphqlService {
14398
14383
  mutation: AccountMutations.saveSettings,
14399
14384
  variables: { data: json },
14400
14385
  error: {
14401
- code: ErrorCodes$2.SAVE_SETTINGS_ERROR,
14386
+ code: ErrorCodes.SAVE_SETTINGS_ERROR,
14402
14387
  message: 'ERROR.SAVE_SETTINGS_ERROR'
14403
14388
  }
14404
14389
  });
@@ -14420,7 +14405,7 @@ class AccountService extends BaseGraphqlService {
14420
14405
  if (counter > 4) {
14421
14406
  if (this._debug)
14422
14407
  console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
14423
- throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14408
+ throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14424
14409
  }
14425
14410
  // Check if valid
14426
14411
  if (token) {
@@ -14430,7 +14415,7 @@ class AccountService extends BaseGraphqlService {
14430
14415
  token
14431
14416
  },
14432
14417
  error: {
14433
- code: ErrorCodes$2.UNAUTHORIZED,
14418
+ code: ErrorCodes.UNAUTHORIZED,
14434
14419
  message: 'ERROR.UNAUTHORIZED'
14435
14420
  },
14436
14421
  fetchPolicy: 'no-cache'
@@ -14446,7 +14431,7 @@ class AccountService extends BaseGraphqlService {
14446
14431
  }
14447
14432
  // Generate a new token
14448
14433
  const challengeError = {
14449
- code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
14434
+ code: ErrorCodes.AUTH_CHALLENGE_ERROR,
14450
14435
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
14451
14436
  };
14452
14437
  const data = yield this.graphql.query({
@@ -14485,7 +14470,7 @@ class AccountService extends BaseGraphqlService {
14485
14470
  target.updateDate = source.updateDate || target.updateDate;
14486
14471
  }
14487
14472
  }
14488
- 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" });
14473
+ 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" });
14489
14474
  AccountService.decorators = [
14490
14475
  { type: Injectable, args: [{ providedIn: 'root' },] }
14491
14476
  ];
@@ -14745,7 +14730,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
14745
14730
  /* ------------------------------------
14746
14731
  * GraphQL queries
14747
14732
  * ------------------------------------*/
14748
- const Fragments = {
14733
+ const Fragments$1 = {
14749
14734
  config: gql `
14750
14735
  fragment ConfigFragment on ConfigurationVO {
14751
14736
  id
@@ -14772,13 +14757,13 @@ const Fragments = {
14772
14757
  }
14773
14758
  `
14774
14759
  };
14775
- const LoadQuery = gql `
14760
+ const LoadQuery$1 = gql `
14776
14761
  query Configuration{
14777
14762
  data: configuration{
14778
14763
  ...ConfigFragment
14779
14764
  }
14780
14765
  }
14781
- ${Fragments.config}
14766
+ ${Fragments$1.config}
14782
14767
  `;
14783
14768
  // Save (create or update) account mutation
14784
14769
  const SaveMutation = gql `
@@ -14787,7 +14772,7 @@ const SaveMutation = gql `
14787
14772
  ...ConfigFragment
14788
14773
  }
14789
14774
  }
14790
- ${Fragments.config}
14775
+ ${Fragments$1.config}
14791
14776
  `;
14792
14777
  const ClearCache = gql `
14793
14778
  query ClearCache($name: String) {
@@ -14801,7 +14786,7 @@ const CacheStatistics = gql `
14801
14786
  `;
14802
14787
  const APP_CONFIG_OPTIONS = new InjectionToken('defaultOptions');
14803
14788
  class ConfigService extends BaseGraphqlService {
14804
- constructor(platform, graphql, storage, network, file, toastController, translate, environment, defaultOptionsMap) {
14789
+ constructor(platform, graphql, storage, network, file, toastController, translate, accountService, environment, defaultOptionsMap) {
14805
14790
  super(graphql, environment);
14806
14791
  this.platform = platform;
14807
14792
  this.graphql = graphql;
@@ -14810,6 +14795,7 @@ class ConfigService extends BaseGraphqlService {
14810
14795
  this.file = file;
14811
14796
  this.toastController = toastController;
14812
14797
  this.translate = translate;
14798
+ this.accountService = accountService;
14813
14799
  this.environment = environment;
14814
14800
  this.$data = new BehaviorSubject(null);
14815
14801
  this._debug = !environment.production;
@@ -14837,12 +14823,12 @@ class ConfigService extends BaseGraphqlService {
14837
14823
  return __awaiter(this, void 0, void 0, function* () {
14838
14824
  const now = Date.now();
14839
14825
  console.debug('[config] Loading Pod configuration...');
14840
- const query = opts && opts.query || LoadQuery;
14826
+ const query = opts && opts.query || LoadQuery$1;
14841
14827
  const variables = opts && opts.variables || undefined;
14842
14828
  const res = yield this.graphql.query({
14843
14829
  query,
14844
14830
  variables,
14845
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14831
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14846
14832
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
14847
14833
  });
14848
14834
  const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
@@ -14856,6 +14842,9 @@ class ConfigService extends BaseGraphqlService {
14856
14842
  return this.loadDefault();
14857
14843
  });
14858
14844
  }
14845
+ canUserWrite(data, opts) {
14846
+ return this.accountService.isAdmin();
14847
+ }
14859
14848
  /**
14860
14849
  * Save a configuration
14861
14850
  *
@@ -14872,7 +14861,7 @@ class ConfigService extends BaseGraphqlService {
14872
14861
  data: json
14873
14862
  },
14874
14863
  error: {
14875
- code: ErrorCodes$2.SAVE_CONFIG_ERROR,
14864
+ code: ErrorCodes.SAVE_CONFIG_ERROR,
14876
14865
  message: 'ERROR.SAVE_CONFIG_ERROR'
14877
14866
  }
14878
14867
  });
@@ -14898,7 +14887,7 @@ class ConfigService extends BaseGraphqlService {
14898
14887
  const res = yield this.graphql.query({
14899
14888
  query: CacheStatistics,
14900
14889
  variables: null,
14901
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14890
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14902
14891
  fetchPolicy: 'network-only'
14903
14892
  });
14904
14893
  const data = res && res.cacheStatistics || undefined;
@@ -14914,7 +14903,7 @@ class ConfigService extends BaseGraphqlService {
14914
14903
  const res = yield this.graphql.query({
14915
14904
  query: ClearCache,
14916
14905
  variables,
14917
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14906
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14918
14907
  fetchPolicy: 'network-only'
14919
14908
  });
14920
14909
  const data = res && res.clearCache || undefined;
@@ -15073,7 +15062,7 @@ class ConfigService extends BaseGraphqlService {
15073
15062
  });
15074
15063
  }
15075
15064
  }
15076
- 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" });
15065
+ 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(AccountService), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
15077
15066
  ConfigService.decorators = [
15078
15067
  { type: Injectable, args: [{
15079
15068
  providedIn: 'root',
@@ -15088,11 +15077,12 @@ ConfigService.ctorParameters = () => [
15088
15077
  { type: FileService },
15089
15078
  { type: ToastController },
15090
15079
  { type: TranslateService },
15080
+ { type: AccountService },
15091
15081
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
15092
15082
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
15093
15083
  ];
15094
15084
 
15095
- const moment$2 = momentImported;
15085
+ const moment$4 = momentImported;
15096
15086
  class PlatformService extends StartableService {
15097
15087
  constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
15098
15088
  super(platform);
@@ -15296,16 +15286,16 @@ class PlatformService extends StartableService {
15296
15286
  }
15297
15287
  // config moment lib
15298
15288
  try {
15299
- moment$2.locale(event.lang);
15289
+ moment$4.locale(event.lang);
15300
15290
  console.debug('[platform] Use locale {' + event.lang + '}');
15301
15291
  }
15302
15292
  // If error, fallback to en
15303
15293
  catch (err) {
15304
- moment$2.locale('en');
15294
+ moment$4.locale('en');
15305
15295
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
15306
15296
  }
15307
15297
  // Config date adapter
15308
- this.dateAdapter.setLocale(moment$2.locale());
15298
+ this.dateAdapter.setLocale(moment$4.locale());
15309
15299
  }
15310
15300
  });
15311
15301
  this.settings.onChange.subscribe(data => {
@@ -15439,7 +15429,7 @@ class PlatformService extends StartableService {
15439
15429
  });
15440
15430
  }
15441
15431
  }
15442
- 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" });
15432
+ 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" });
15443
15433
  PlatformService.decorators = [
15444
15434
  { type: Injectable, args: [{ providedIn: 'root' },] }
15445
15435
  ];
@@ -15454,15 +15444,15 @@ PlatformService.ctorParameters = () => [
15454
15444
  { type: NetworkService },
15455
15445
  { type: AccountService },
15456
15446
  { type: ConfigService },
15457
- { type: CacheService },
15447
+ { type: CacheService$1 },
15458
15448
  { type: Storage },
15459
15449
  { type: AudioProvider },
15460
15450
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
15461
- { type: StatusBar, decorators: [{ type: Optional }] },
15451
+ { type: StatusBar$1, decorators: [{ type: Optional }] },
15462
15452
  { type: Keyboard, decorators: [{ type: Optional }] },
15463
- { type: SplashScreen, decorators: [{ type: Optional }] },
15464
- { type: InAppBrowser, decorators: [{ type: Optional }] },
15465
- { type: Downloader, decorators: [{ type: Optional }] }
15453
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
15454
+ { type: InAppBrowser$1, decorators: [{ type: Optional }] },
15455
+ { type: Downloader$1, decorators: [{ type: Optional }] }
15466
15456
  ];
15467
15457
 
15468
15458
  class AppHelpModal {
@@ -15526,7 +15516,7 @@ class MatStepperI18n extends MatStepperIntl {
15526
15516
  this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
15527
15517
  }
15528
15518
  }
15529
- MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
15519
+ MatStepperI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(ɵɵinject(TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
15530
15520
  MatStepperI18n.decorators = [
15531
15521
  { type: Injectable, args: [{ providedIn: 'root' },] }
15532
15522
  ];
@@ -16528,7 +16518,7 @@ function state2side(state) {
16528
16518
  return 1;
16529
16519
  }
16530
16520
  }
16531
- const ɵ0$1 = (defaultStateSize) => [
16521
+ const ɵ0$a = (defaultStateSize) => [
16532
16522
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
16533
16523
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
16534
16524
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -16536,7 +16526,7 @@ const ɵ0$1 = (defaultStateSize) => [
16536
16526
  const SCALE_OPTIONS_DEFAULT = {
16537
16527
  startColor: rgbArrayMap.red,
16538
16528
  startStates: [0, 2, 3],
16539
- startStepsFn: ɵ0$1
16529
+ startStepsFn: ɵ0$a
16540
16530
  };
16541
16531
  /**
16542
16532
  * Internal function, that create a colors scale, using iteration
@@ -16628,21 +16618,21 @@ function linearColorGradient(count, options) {
16628
16618
  return result;
16629
16619
  }
16630
16620
 
16631
- class EntityTestClass$1 {
16621
+ class EntityTestClass {
16632
16622
  }
16633
- const FAKE_ENTITIES$1 = [
16623
+ const FAKE_ENTITIES = [
16634
16624
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
16635
16625
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
16636
16626
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
16637
16627
  ];
16638
- function deepCopy$1(values, size) {
16628
+ function deepCopy(values, size) {
16639
16629
  if (isNil(size)) {
16640
- return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
16630
+ return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
16641
16631
  }
16642
16632
  let result = [];
16643
16633
  let i = 1;
16644
16634
  while (result.length < size) {
16645
- result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
16635
+ result = result.concat((values || FAKE_ENTITIES).map(entity => {
16646
16636
  const name = entity.name + ' #' + i;
16647
16637
  return Object.assign(Object.assign({}, entity), { id: i++, name });
16648
16638
  }));
@@ -16652,7 +16642,7 @@ function deepCopy$1(values, size) {
16652
16642
  class AutocompleteTestPage {
16653
16643
  constructor(formBuilder) {
16654
16644
  this.formBuilder = formBuilder;
16655
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
16645
+ this._items = deepCopy(FAKE_ENTITIES, 100);
16656
16646
  this._$items = new BehaviorSubject(undefined);
16657
16647
  this.autocompleteFields = new MatAutocompleteConfigHolder();
16658
16648
  this.memoryHide = false;
@@ -16696,7 +16686,7 @@ class AutocompleteTestPage {
16696
16686
  });
16697
16687
  // From items
16698
16688
  this.autocompleteFields.add('entity-items-large', {
16699
- items: FAKE_ENTITIES$1.slice(),
16689
+ items: FAKE_ENTITIES.slice(),
16700
16690
  attributes: ['label', 'name', 'description', 'comments'],
16701
16691
  displayWith: this.entityToString
16702
16692
  });
@@ -16706,12 +16696,12 @@ class AutocompleteTestPage {
16706
16696
  loadData() {
16707
16697
  return __awaiter(this, void 0, void 0, function* () {
16708
16698
  const data = {
16709
- entity: deepCopy$1(FAKE_ENTITIES$1)[0],
16699
+ entity: deepCopy(FAKE_ENTITIES)[0],
16710
16700
  // This item is NOT in the items list => i should be displayed anyway
16711
16701
  missingEntity: {
16712
16702
  id: -1, label: '??', name: 'Missing item'
16713
16703
  },
16714
- disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
16704
+ disableEntity: deepCopy(FAKE_ENTITIES)[2]
16715
16705
  };
16716
16706
  this.form.setValue(data);
16717
16707
  // Load observables
@@ -16884,13 +16874,13 @@ MaterialTestingPage.ctorParameters = () => [
16884
16874
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
16885
16875
  ];
16886
16876
 
16887
- const moment$1 = momentImported;
16877
+ const moment$5 = momentImported;
16888
16878
  class SwipeTestPage {
16889
16879
  constructor(formBuilder, dateFormatPipe) {
16890
16880
  this.formBuilder = formBuilder;
16891
16881
  this.dateFormatPipe = dateFormatPipe;
16892
16882
  this.$dates = new BehaviorSubject(undefined);
16893
- this._today = moment$1().startOf('day');
16883
+ this._today = moment$5().startOf('day');
16894
16884
  this.form = formBuilder.group({
16895
16885
  empty: [null, Validators.required],
16896
16886
  date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
@@ -16903,7 +16893,7 @@ class SwipeTestPage {
16903
16893
  ngOnInit() {
16904
16894
  const dates = [];
16905
16895
  for (let d = 0; d < 7; d++) {
16906
- dates[d] = moment$1(this._today).add(d - 3, 'day');
16896
+ dates[d] = moment$5(this._today).add(d - 3, 'day');
16907
16897
  }
16908
16898
  this.$dates.next(dates);
16909
16899
  this.loadData();
@@ -16944,7 +16934,7 @@ SwipeTestPage.ctorParameters = () => [
16944
16934
  { type: DateFormatPipe }
16945
16935
  ];
16946
16936
 
16947
- const moment = momentImported;
16937
+ const moment$6 = momentImported;
16948
16938
  class DateTimeTestPage {
16949
16939
  constructor(platform, formBuilder, cd) {
16950
16940
  this.platform = platform;
@@ -16976,7 +16966,7 @@ class DateTimeTestPage {
16976
16966
  // Load the form with data
16977
16967
  loadData() {
16978
16968
  return __awaiter(this, void 0, void 0, function* () {
16979
- const now = moment();
16969
+ const now = moment$6();
16980
16970
  const data = {
16981
16971
  empty: toDateISOString(now.clone().add(2, 'hours')),
16982
16972
  enable: toDateISOString(now),
@@ -17037,9 +17027,9 @@ DateTimeTestPage.ctorParameters = () => [
17037
17027
  { type: ChangeDetectorRef }
17038
17028
  ];
17039
17029
 
17040
- class EntityTestClass {
17030
+ class EntityTestClass$1 {
17041
17031
  }
17042
- const FAKE_ENTITIES = [
17032
+ const FAKE_ENTITIES$1 = [
17043
17033
  { id: 1, label: 'AAA', name: 'Item A' },
17044
17034
  { id: 2, label: 'BBB', name: 'Item B' },
17045
17035
  { id: 3, label: 'CCC', name: 'Item C' },
@@ -17048,14 +17038,14 @@ const FAKE_ENTITIES = [
17048
17038
  { id: 6, label: 'FFF', name: 'Item F' },
17049
17039
  { id: 7, label: 'GGG', name: 'Item G' }
17050
17040
  ];
17051
- function deepCopy(values, size) {
17041
+ function deepCopy$1(values, size) {
17052
17042
  if (isNil(size)) {
17053
- return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
17043
+ return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
17054
17044
  }
17055
17045
  let result = [];
17056
17046
  let i = 1;
17057
17047
  while (result.length < size) {
17058
- result = result.concat((values || FAKE_ENTITIES).map(entity => {
17048
+ result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
17059
17049
  const name = entity.name + ' #' + i;
17060
17050
  return Object.assign(Object.assign({}, entity), { id: i++, name });
17061
17051
  }));
@@ -17065,7 +17055,7 @@ function deepCopy(values, size) {
17065
17055
  class ChipsTestPage {
17066
17056
  constructor(formBuilder) {
17067
17057
  this.formBuilder = formBuilder;
17068
- this._items = deepCopy(FAKE_ENTITIES, 100);
17058
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
17069
17059
  this._$items = new BehaviorSubject(undefined);
17070
17060
  this.autocompleteFields = new MatAutocompleteConfigHolder();
17071
17061
  this.form = formBuilder.group({
@@ -17104,7 +17094,7 @@ class ChipsTestPage {
17104
17094
  // Load the form with data
17105
17095
  loadData() {
17106
17096
  return __awaiter(this, void 0, void 0, function* () {
17107
- const items = deepCopy(FAKE_ENTITIES);
17097
+ const items = deepCopy$1(FAKE_ENTITIES$1);
17108
17098
  const data = {
17109
17099
  entity: items.slice(0, 1),
17110
17100
  entityInitial: items.slice(1, 2),
@@ -17180,7 +17170,7 @@ MatBadgeIconTestPage.decorators = [
17180
17170
  },] }
17181
17171
  ];
17182
17172
 
17183
- const routes$1 = [
17173
+ const routes = [
17184
17174
  {
17185
17175
  path: '',
17186
17176
  pathMatch: 'full',
@@ -17232,7 +17222,7 @@ MaterialTestingModule.decorators = [
17232
17222
  ReactiveFormsModule,
17233
17223
  SharedMaterialModule,
17234
17224
  TranslateModule.forChild(),
17235
- RouterModule.forChild(routes$1)
17225
+ RouterModule.forChild(routes)
17236
17226
  ],
17237
17227
  declarations: [
17238
17228
  MaterialTestingPage,
@@ -18247,7 +18237,7 @@ class UserSettingsValidatorService extends AppValidatorService {
18247
18237
  });
18248
18238
  }
18249
18239
  }
18250
- UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
18240
+ UserSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(ɵɵinject(FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
18251
18241
  UserSettingsValidatorService.decorators = [
18252
18242
  { type: Injectable, args: [{ providedIn: 'root' },] }
18253
18243
  ];
@@ -18291,7 +18281,7 @@ class AccountValidatorService extends AppValidatorService {
18291
18281
  return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
18292
18282
  }
18293
18283
  }
18294
- AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
18284
+ AccountValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
18295
18285
  AccountValidatorService.decorators = [
18296
18286
  { type: Injectable, args: [{ providedIn: 'root' },] }
18297
18287
  ];
@@ -18856,7 +18846,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
18856
18846
  });
18857
18847
  }
18858
18848
  }
18859
- LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
18849
+ LocalSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(ɵɵinject(FormBuilder), ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
18860
18850
  LocalSettingsValidatorService.decorators = [
18861
18851
  { type: Injectable, args: [{ providedIn: 'root' },] }
18862
18852
  ];
@@ -19475,7 +19465,7 @@ class IsOnFieldModePipe {
19475
19465
  return value === 'FIELD';
19476
19466
  }
19477
19467
  }
19478
- IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
19468
+ IsOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
19479
19469
  IsOnFieldModePipe.decorators = [
19480
19470
  { type: Pipe, args: [{
19481
19471
  name: 'isOnField'
@@ -19487,7 +19477,7 @@ class IsNotOnFieldModePipe {
19487
19477
  return value !== 'FIELD';
19488
19478
  }
19489
19479
  }
19490
- IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
19480
+ IsNotOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
19491
19481
  IsNotOnFieldModePipe.decorators = [
19492
19482
  { type: Pipe, args: [{
19493
19483
  name: 'isNotOnField'
@@ -19502,7 +19492,7 @@ class PersonToStringPipe {
19502
19492
  return PersonUtils.personToString(value);
19503
19493
  }
19504
19494
  }
19505
- PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
19495
+ PersonToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
19506
19496
  PersonToStringPipe.decorators = [
19507
19497
  { type: Pipe, args: [{
19508
19498
  name: 'personToString'
@@ -19887,7 +19877,7 @@ class IsLoginAccountPipe {
19887
19877
  return value && value.pubkey && true;
19888
19878
  }
19889
19879
  }
19890
- IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
19880
+ IsLoginAccountPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
19891
19881
  IsLoginAccountPipe.decorators = [
19892
19882
  { type: Pipe, args: [{
19893
19883
  name: 'isLogin'
@@ -19899,7 +19889,7 @@ class AccountToStringPipe {
19899
19889
  return accountToString(value);
19900
19890
  }
19901
19891
  }
19902
- AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
19892
+ AccountToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
19903
19893
  AccountToStringPipe.decorators = [
19904
19894
  { type: Pipe, args: [{
19905
19895
  name: 'accountToString'
@@ -19914,7 +19904,7 @@ class DepartmentToStringPipe {
19914
19904
  return departmentToString(value);
19915
19905
  }
19916
19906
  }
19917
- DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
19907
+ DepartmentToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
19918
19908
  DepartmentToStringPipe.decorators = [
19919
19909
  { type: Pipe, args: [{
19920
19910
  name: 'departmentToString'
@@ -19940,7 +19930,7 @@ class MenuService {
19940
19930
  this._visibleSubject.next(value);
19941
19931
  }
19942
19932
  }
19943
- MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
19933
+ MenuService.ɵprov = ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
19944
19934
  MenuService.decorators = [
19945
19935
  { type: Injectable, args: [{
19946
19936
  providedIn: 'root'
@@ -20464,7 +20454,7 @@ class AuthGuardService {
20464
20454
  }));
20465
20455
  }
20466
20456
  }
20467
- 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" });
20457
+ AuthGuardService.ɵprov = ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(ɵɵinject(AccountService), ɵɵinject(ModalController), ɵɵinject(Router), ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
20468
20458
  AuthGuardService.decorators = [
20469
20459
  { type: Injectable, args: [{ providedIn: 'root' },] }
20470
20460
  ];
@@ -20506,7 +20496,7 @@ class BaseEntityService extends BaseGraphqlService {
20506
20496
  query,
20507
20497
  variables: { id },
20508
20498
  fetchPolicy: opts && opts.fetchPolicy || undefined,
20509
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20499
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20510
20500
  })
20511
20501
  .pipe(map(({ data }) => (!opts || opts.toEntity !== false)
20512
20502
  ? (data && this.fromObject(data))
@@ -20521,7 +20511,7 @@ class BaseEntityService extends BaseGraphqlService {
20521
20511
  query,
20522
20512
  variables: { id },
20523
20513
  fetchPolicy: opts && opts.fetchPolicy || undefined,
20524
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20514
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20525
20515
  });
20526
20516
  // Convert to entity
20527
20517
  return (!opts || opts.toEntity !== false)
@@ -20552,7 +20542,7 @@ class BaseEntityService extends BaseGraphqlService {
20552
20542
  totalFieldName: withTotal ? 'total' : undefined,
20553
20543
  insertFilterFn: filter && filter.asFilterFn(),
20554
20544
  variables,
20555
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
20545
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
20556
20546
  fetchPolicy: opts && opts.fetchPolicy || undefined
20557
20547
  })
20558
20548
  .pipe(map(({ data, total }) => {
@@ -20588,7 +20578,7 @@ class BaseEntityService extends BaseGraphqlService {
20588
20578
  const { data, total } = yield this.graphql.query({
20589
20579
  query,
20590
20580
  variables,
20591
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
20581
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
20592
20582
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
20593
20583
  });
20594
20584
  const entities = (!opts || opts.toEntity !== false) ?
@@ -20627,12 +20617,15 @@ class BaseEntityService extends BaseGraphqlService {
20627
20617
  variables: {
20628
20618
  filter: filter && filter.asPodObject()
20629
20619
  },
20630
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
20620
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
20631
20621
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
20632
20622
  });
20633
20623
  return res.total;
20634
20624
  });
20635
20625
  }
20626
+ canUserWrite(data, opts) {
20627
+ return !!data;
20628
+ }
20636
20629
  saveAll(entities, opts) {
20637
20630
  return __awaiter(this, void 0, void 0, function* () {
20638
20631
  if (isEmptyArray(entities))
@@ -20660,7 +20653,7 @@ class BaseEntityService extends BaseGraphqlService {
20660
20653
  variables: {
20661
20654
  data: json
20662
20655
  },
20663
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20656
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20664
20657
  update: (proxy, { data }) => {
20665
20658
  const savedEntities = data && data.data;
20666
20659
  if (savedEntities) {
@@ -20716,7 +20709,7 @@ class BaseEntityService extends BaseGraphqlService {
20716
20709
  variables: {
20717
20710
  data: json
20718
20711
  },
20719
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20712
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20720
20713
  update: (cache, { data }) => {
20721
20714
  // Update entity
20722
20715
  const savedEntity = data && data.data;
@@ -20764,7 +20757,7 @@ class BaseEntityService extends BaseGraphqlService {
20764
20757
  refetchQueries: this.getRefetchQueriesForMutation(opts),
20765
20758
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
20766
20759
  variables: { ids },
20767
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20760
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20768
20761
  update: (cache, res) => {
20769
20762
  // Remove from cache
20770
20763
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -20805,7 +20798,7 @@ class BaseEntityService extends BaseGraphqlService {
20805
20798
  refetchQueries: this.getRefetchQueriesForMutation(opts),
20806
20799
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
20807
20800
  variables: { id },
20808
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20801
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20809
20802
  update: (proxy, res) => {
20810
20803
  // Remove from cache
20811
20804
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -20838,7 +20831,7 @@ class BaseEntityService extends BaseGraphqlService {
20838
20831
  query: opts && opts.query || this.subscriptions.listenChanges,
20839
20832
  variables,
20840
20833
  error: {
20841
- code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
20834
+ code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
20842
20835
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
20843
20836
  }
20844
20837
  })
@@ -21024,7 +21017,7 @@ class EntitiesTableDataSource extends TableDataSource {
21024
21017
  if (this._debug)
21025
21018
  invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
21026
21019
  // Stop with an error
21027
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21020
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21028
21021
  }
21029
21022
  this._editingRowCount = 0;
21030
21023
  let data;
@@ -21884,18 +21877,18 @@ class AppTable {
21884
21877
  return true;
21885
21878
  }
21886
21879
  save(opts) {
21887
- var _a, _b;
21880
+ var _a, _b, _c;
21888
21881
  return __awaiter(this, void 0, void 0, function* () {
21889
21882
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
21890
21883
  if (this.readOnly) {
21891
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
21884
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
21892
21885
  }
21893
21886
  this.resetError();
21894
21887
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
21895
- this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
21896
- const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
21888
+ this.previouslyEditedRowId = opts.keepEditing && ((((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined) || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.id));
21889
+ const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_c = this.singleSelectedRow) === null || _c === void 0 ? void 0 : _c.currentData);
21897
21890
  if (!this.confirmEditCreate()) {
21898
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21891
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21899
21892
  }
21900
21893
  // Mark as saving
21901
21894
  this.markAsSaving();
@@ -22012,7 +22005,7 @@ class AppTable {
22012
22005
  var _a;
22013
22006
  return __awaiter(this, void 0, void 0, function* () {
22014
22007
  if (this.readOnly) {
22015
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
22008
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
22016
22009
  }
22017
22010
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
22018
22011
  return 0; // SKip
@@ -23538,7 +23531,7 @@ class AppEntityEditor extends AppTabEditor {
23538
23531
  try {
23539
23532
  const data = yield this.dataService.load(id, opts);
23540
23533
  if (!data)
23541
- throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
23534
+ throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
23542
23535
  this._usageMode = this.computeUsageMode(data);
23543
23536
  yield this.onEntityLoaded(data, opts);
23544
23537
  yield this.updateView(data, opts);
@@ -23859,6 +23852,10 @@ class AppEntityEditor extends AppTabEditor {
23859
23852
  if (!opts || opts.emitEvent !== false)
23860
23853
  this.markForCheck();
23861
23854
  }
23855
+ /* -- public abstract methods (to override) -- */
23856
+ canUserWrite(data, opts) {
23857
+ return this.dataService.canUserWrite(data, opts);
23858
+ }
23862
23859
  /* -- protected methods -- */
23863
23860
  /**
23864
23861
  * Return undefined to keep same tab
@@ -24461,7 +24458,7 @@ class UserEventService extends BaseGraphqlService {
24461
24458
  EntityUtils.copyIdAndUpdateDate(source, target);
24462
24459
  }
24463
24460
  }
24464
- 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" });
24461
+ 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" });
24465
24462
  UserEventService.decorators = [
24466
24463
  { type: Injectable, args: [{ providedIn: 'root' },] }
24467
24464
  ];
@@ -24846,7 +24843,7 @@ class PersonService extends BaseEntityService {
24846
24843
  return target;
24847
24844
  }
24848
24845
  }
24849
- 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" });
24846
+ PersonService.ɵprov = ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(ɵɵinject(GraphqlService), ɵɵinject(PlatformService), ɵɵinject(NetworkService), ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
24850
24847
  PersonService.decorators = [
24851
24848
  { type: Injectable, args: [{ providedIn: 'root' },] }
24852
24849
  ];
@@ -24877,7 +24874,7 @@ class PersonValidatorService {
24877
24874
  return this.formBuilder.group(formConfig);
24878
24875
  }
24879
24876
  }
24880
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
24877
+ PersonValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
24881
24878
  PersonValidatorService.decorators = [
24882
24879
  { type: Injectable, args: [{ providedIn: 'root' },] }
24883
24880
  ];
@@ -25083,16 +25080,16 @@ AdminModule.decorators = [
25083
25080
  ];
25084
25081
  AdminModule.ctorParameters = () => [];
25085
25082
 
25086
- const ɵ0 = {
25083
+ const ɵ0$b = {
25087
25084
  profile: 'ADMIN'
25088
25085
  };
25089
- const routes = [
25086
+ const routes$1 = [
25090
25087
  {
25091
25088
  path: 'users',
25092
25089
  pathMatch: 'full',
25093
25090
  component: UsersPage,
25094
25091
  canActivate: [AuthGuardService],
25095
- data: ɵ0
25092
+ data: ɵ0$b
25096
25093
  }
25097
25094
  ];
25098
25095
  class AdminRoutingModule {
@@ -25102,13 +25099,13 @@ AdminRoutingModule.decorators = [
25102
25099
  imports: [
25103
25100
  SharedRoutingModule,
25104
25101
  AdminModule,
25105
- RouterModule.forChild(routes)
25102
+ RouterModule.forChild(routes$1)
25106
25103
  ],
25107
25104
  exports: [RouterModule]
25108
25105
  },] }
25109
25106
  ];
25110
25107
 
25111
- const ErrorCodes = {
25108
+ const ErrorCodes$2 = {
25112
25109
  LOAD_PERSONS_ERROR: 100,
25113
25110
  SAVE_PERSONS_ERROR: 101,
25114
25111
  DELETE_PERSONS_ERROR: 102,
@@ -25120,5 +25117,5 @@ const ErrorCodes = {
25120
25117
  * Generated bundle index. Do not edit.
25121
25118
  */
25122
25119
 
25123
- 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, AppEditor, 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, NgVarDirective, 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, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, 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, waitForTrue, waitIdle, waitWhilePending, 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, AppIconComponent as ɵl };
25120
+ 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, AppEditor, 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, NgVarDirective, 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, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, 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, waitForTrue, waitIdle, waitWhilePending, 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, AppIconComponent as ɵl };
25124
25121
  //# sourceMappingURL=sumaris-net.ngx-components.js.map