@sumaris-net/ngx-components 0.25.18 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/bundles/sumaris-net.ngx-components.umd.js +400 -337
  2. package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
  3. package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
  4. package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
  5. package/doc/changelog.md +6 -0
  6. package/esm2015/src/app/core/account/account.js +5 -7
  7. package/esm2015/src/app/core/auth/form/form-auth.js +6 -7
  8. package/esm2015/src/app/core/form/entity-editor.class.js +23 -15
  9. package/esm2015/src/app/core/form/form.class.js +29 -12
  10. package/esm2015/src/app/core/form/list.form.js +2 -2
  11. package/esm2015/src/app/core/form/properties.form.js +2 -3
  12. package/esm2015/src/app/core/settings/settings.page.js +5 -7
  13. package/esm2015/src/app/core/table/entities-table-datasource.class.js +5 -7
  14. package/esm2015/src/app/core/table/table.class.js +25 -18
  15. package/esm2015/src/app/shared/pipes/form.pipes.js +1 -1
  16. package/esm2015/src/app/shared/validator/form-error-adapter.class.js +3 -3
  17. package/esm2015/src/app/shared/validator/validators.js +8 -9
  18. package/fesm2015/sumaris-net.ngx-components.js +367 -329
  19. package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/app/core/account/account.d.ts +2 -5
  22. package/src/app/core/auth/form/form-auth.d.ts +2 -4
  23. package/src/app/core/form/entity-editor.class.d.ts +10 -2
  24. package/src/app/core/form/form.class.d.ts +15 -12
  25. package/src/app/core/form/properties.form.d.ts +0 -1
  26. package/src/app/core/settings/settings.page.d.ts +2 -5
  27. package/src/app/core/table/table.class.d.ts +5 -7
  28. package/src/app/shared/pipes/form.pipes.d.ts +2 -2
  29. package/src/app/shared/validator/form-error-adapter.class.d.ts +6 -6
  30. package/sumaris-net.ngx-components.metadata.json +1 -1
@@ -1,9 +1,12 @@
1
- import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, ɵɵdefineInjectable, ɵɵinject, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, INJECTOR, Injector, Renderer2 } from '@angular/core';
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Renderer2 } from '@angular/core';
3
+ import * as i1$3 from '@angular/common';
2
4
  import { CommonModule, DOCUMENT, Location } from '@angular/common';
3
5
  import { CdkTableModule } from '@angular/cdk/table';
4
6
  import { A11yModule } from '@angular/cdk/a11y';
5
7
  import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
6
8
  import { ScrollingModule } from '@angular/cdk/scrolling';
9
+ import * as i1$2 from '@angular/material/core';
7
10
  import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
8
11
  import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
9
12
  import { MatSortModule, MatSort } from '@angular/material/sort';
@@ -27,16 +30,21 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
27
30
  import { MatRadioModule } from '@angular/material/radio';
28
31
  import { MatBadgeModule } from '@angular/material/badge';
29
32
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
33
+ import * as i2$1 from '@angular/material/dialog';
30
34
  import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
31
35
  import { MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteModule, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
32
36
  import { __awaiter, __decorate } from 'tslib';
37
+ import * as i1$6 from '@angular/forms';
33
38
  import { NG_VALUE_ACCESSOR, FormGroupDirective, AbstractControl, FormGroup, FormArray, FormControl, ReactiveFormsModule, Validators, FormBuilder } from '@angular/forms';
34
39
  import { timer, merge, fromEvent, Subscription, BehaviorSubject, Subject, isObservable, of, noop as noop$8, Observable, defer, from, combineLatest, EMPTY } from 'rxjs';
35
40
  import { filter, first, map, takeUntil, startWith, debounceTime, takeWhile, switchMap, tap, distinctUntilChanged, mergeMap, catchError, throttleTime } from 'rxjs/operators';
41
+ import * as i1$1 from '@ngx-translate/core';
36
42
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
43
+ import * as i1$4 from '@ionic/angular';
37
44
  import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, AlertController, IonicRouteStrategy, NavParams, MenuController, IonContent } from '@ionic/angular';
38
45
  import * as momentImported from 'moment';
39
46
  import { isMoment } from 'moment';
47
+ import * as i1 from '@angular/material-moment-adapter';
40
48
  import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
41
49
  import { Keyboard } from '@ionic-native/keyboard/ngx';
42
50
  import { TextMaskModule } from 'angular2-text-mask';
@@ -46,32 +54,38 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
46
54
  import { MatDividerModule } from '@angular/material/divider';
47
55
  import { MatTooltipModule } from '@angular/material/tooltip';
48
56
  import { MatChipsModule } from '@angular/material/chips';
57
+ import * as i3$3 from '@angular/router';
49
58
  import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
59
+ import * as i1$5 from '@angular/platform-browser';
50
60
  import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
61
+ import * as i2$2 from '@angular/common/http';
51
62
  import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
52
63
  import { ColorPickerModule } from 'ngx-color-picker';
53
- import { NativeAudio as NativeAudio$1 } from '@ionic-native/native-audio/ngx';
54
- import { Vibration as Vibration$1 } from '@ionic-native/vibration/ngx';
64
+ import { NativeAudio } from '@ionic-native/native-audio/ngx';
65
+ import { Vibration } from '@ionic-native/vibration/ngx';
55
66
  import { AudioManagement } from '@ionic-native/audio-management/ngx';
56
- import { NativeAudio } from '@ionic-native/native-audio/ngx/index';
57
- import { Vibration } from '@ionic-native/vibration/ngx/index';
58
- import { AudioManagement as AudioManagement$1 } from '@ionic-native/audio-management/ngx/index';
67
+ import * as i2 from '@ionic-native/native-audio/ngx/index';
68
+ import * as i3 from '@ionic-native/vibration/ngx/index';
69
+ import * as i4 from '@ionic-native/audio-management/ngx/index';
59
70
  import * as uuidv4Imported from 'uuid/v4';
60
71
  import { DragDropModule } from '@angular/cdk/drag-drop';
61
72
  import { MarkdownModule } from 'ngx-markdown';
62
73
  import { sign, box, hash, verify } from 'tweetnacl';
74
+ import * as i3$1 from '@ionic/storage';
63
75
  import { Storage, IonicStorageModule } from '@ionic/storage';
64
76
  import 'zone.js/dist/zone-error';
65
- import { SplashScreen as SplashScreen$1 } from '@ionic-native/splash-screen/ngx';
66
- import { Connection, Network as Network$1 } from '@ionic-native/network/ngx';
67
- import { CacheService as CacheService$1, CacheModule } from 'ionic-cache';
68
- import { CacheService } from 'ionic-cache/dist/cache.service';
69
- import { Network } from '@ionic-native/network/ngx/index';
70
- import { SplashScreen } from '@ionic-native/splash-screen/ngx/index';
71
- import { StatusBar as StatusBar$1 } from '@ionic-native/status-bar/ngx';
77
+ import { SplashScreen } from '@ionic-native/splash-screen/ngx';
78
+ import { Connection, Network } from '@ionic-native/network/ngx';
79
+ import { CacheService, CacheModule } from 'ionic-cache';
80
+ import * as i6 from 'ionic-cache/dist/cache.service';
81
+ import * as i9 from '@ionic-native/network/ngx/index';
82
+ import * as i10 from '@ionic-native/splash-screen/ngx/index';
83
+ import { StatusBar } from '@ionic-native/status-bar/ngx';
84
+ import * as i2$4 from '@angular/cdk/platform';
72
85
  import { Platform as Platform$1 } from '@angular/cdk/platform';
73
- import { InAppBrowser as InAppBrowser$1 } from '@ionic-native/in-app-browser/ngx';
86
+ import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
74
87
  import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
88
+ import * as i2$3 from 'apollo-angular';
75
89
  import { Apollo } from 'apollo-angular';
76
90
  import { WebSocketLink } from '@apollo/client/link/ws';
77
91
  import { getMainDefinition } from '@apollo/client/utilities';
@@ -79,13 +93,14 @@ import { RetryLink } from '@apollo/client/link/retry';
79
93
  import QueueLink from 'apollo-link-queue';
80
94
  import SerializingLink from 'apollo-link-serialize';
81
95
  import loggerLink from 'apollo-link-logger';
96
+ import * as i3$2 from 'apollo-angular/http';
82
97
  import { HttpLink } from 'apollo-angular/http';
83
98
  import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
84
- import { 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';
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';
89
104
  import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
90
105
  import { SelectionModel } from '@angular/cdk/collections';
91
106
  import { NgxJdenticonModule } from 'ngx-jdenticon';
@@ -870,19 +885,19 @@ class MatAutocompleteConfigHolder {
870
885
  return this.fields[fieldName] || this.add(fieldName);
871
886
  }
872
887
  }
873
- const DEFAULT_VALUE_ACCESSOR = {
888
+ const DEFAULT_VALUE_ACCESSOR$6 = {
874
889
  provide: NG_VALUE_ACCESSOR,
875
890
  useExisting: forwardRef(() => MatAutocompleteField),
876
891
  multi: true
877
892
  };
878
- const noop = () => { };
879
- const ɵ0 = noop;
893
+ const noop$7 = () => { };
894
+ const ɵ0$a = noop$7;
880
895
  class MatAutocompleteField {
881
896
  constructor(cd, formGroupDir) {
882
897
  this.cd = cd;
883
898
  this.formGroupDir = formGroupDir;
884
- this._onChangeCallback = noop;
885
- this._onTouchedCallback = noop;
899
+ this._onChangeCallback = noop$7;
900
+ this._onTouchedCallback = noop$7;
886
901
  this._subscription = new Subscription();
887
902
  this._filter$ = new BehaviorSubject(undefined);
888
903
  this._reload$ = new Subject();
@@ -1476,7 +1491,7 @@ MatAutocompleteField.decorators = [
1476
1491
  // eslint-disable-next-line @angular-eslint/component-selector
1477
1492
  selector: 'mat-autocomplete-field',
1478
1493
  template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- readonly -->\n <ng-container>\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n </ng-container>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
1479
- providers: [DEFAULT_VALUE_ACCESSOR],
1494
+ providers: [DEFAULT_VALUE_ACCESSOR$6],
1480
1495
  changeDetection: ChangeDetectionStrategy.OnPush,
1481
1496
  styles: [":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}.fact-scroll-viewport{height:100%;width:100%}.fact-item{height:54px;display:flex}.fact-item .fact-date{min-width:100px;text-align:center;font-size:24pt}.fact-item .fact-date,.fact-item .fact-text{height:100%;align-items:center;justify-content:center;display:flex}.fact-item .fact-text{border-radius:10px}cdk-virtual-scroll-viewport{border:1px solid #000}cdk-virtual-scroll-viewport li{list-style:none}"]
1482
1497
  },] }
@@ -1553,7 +1568,7 @@ class DateFormatPipe {
1553
1568
  return this.dateAdapter.format(date, displayFormat);
1554
1569
  }
1555
1570
  }
1556
- DateFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(ɵɵinject(MomentDateAdapter), ɵɵinject(TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1571
+ DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1557
1572
  DateFormatPipe.decorators = [
1558
1573
  { type: Pipe, args: [{
1559
1574
  name: 'dateFormat'
@@ -1565,7 +1580,7 @@ DateFormatPipe.ctorParameters = () => [
1565
1580
  { type: TranslateService }
1566
1581
  ];
1567
1582
 
1568
- const moment = momentImported;
1583
+ const moment$6 = momentImported;
1569
1584
  class DateDiffDurationPipe {
1570
1585
  constructor(dateAdapter, translate) {
1571
1586
  this.dateAdapter = dateAdapter;
@@ -1581,17 +1596,17 @@ class DateDiffDurationPipe {
1581
1596
  return this.format(startDate, endDate);
1582
1597
  }
1583
1598
  format(startDate, endDate) {
1584
- const duration = moment.duration(endDate.diff(startDate));
1599
+ const duration = moment$6.duration(endDate.diff(startDate));
1585
1600
  if (duration.asMinutes() < 0)
1586
1601
  return '';
1587
- const timeDuration = moment(0)
1602
+ const timeDuration = moment$6(0)
1588
1603
  .hour(duration.hours())
1589
1604
  .minute(duration.minutes());
1590
1605
  const days = Math.floor(duration.asDays());
1591
1606
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
1592
1607
  }
1593
1608
  }
1594
- DateDiffDurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(ɵɵinject(DateAdapter), ɵɵinject(TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1609
+ 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" });
1595
1610
  DateDiffDurationPipe.decorators = [
1596
1611
  { type: Pipe, args: [{
1597
1612
  name: 'dateDiffDuration'
@@ -1612,7 +1627,7 @@ class DateFromNowPipe {
1612
1627
  return date ? date.fromNow(args && args.withoutSuffix) : '';
1613
1628
  }
1614
1629
  }
1615
- DateFromNowPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(ɵɵinject(MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1630
+ DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1616
1631
  DateFromNowPipe.decorators = [
1617
1632
  { type: Pipe, args: [{
1618
1633
  name: 'dateFromNow'
@@ -1681,7 +1696,7 @@ function formatToDD(value, opts) {
1681
1696
  value *= -1;
1682
1697
  }
1683
1698
  }
1684
- let degrees = roundFloat(value, opts.maxDecimals).toString();
1699
+ let degrees = roundFloat$1(value, opts.maxDecimals).toString();
1685
1700
  // Add sign
1686
1701
  let sign = negative ? '-' : '+';
1687
1702
  if (opts.placeholderChar) {
@@ -1732,7 +1747,7 @@ function formatToDDMMSS(value, opts) {
1732
1747
  }
1733
1748
  let degrees = Math.trunc(value);
1734
1749
  let minutes = Math.trunc((value - degrees) * 60);
1735
- let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1750
+ let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1736
1751
  while (seconds >= 60) {
1737
1752
  seconds -= 60;
1738
1753
  minutes += 1;
@@ -1800,7 +1815,7 @@ function formatToDDMM(value, opts) {
1800
1815
  }
1801
1816
  }
1802
1817
  let degrees = Math.trunc(value);
1803
- let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
1818
+ let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
1804
1819
  while (minutes >= 60) {
1805
1820
  minutes -= 60;
1806
1821
  degrees += 1;
@@ -1851,15 +1866,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
1851
1866
  return NaN;
1852
1867
  }
1853
1868
  if (pattern === 'DD')
1854
- return roundFloat(degrees, maxDecimals);
1869
+ return roundFloat$1(degrees, maxDecimals);
1855
1870
  const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
1856
1871
  const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
1857
1872
  const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
1858
1873
  const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
1859
1874
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
1860
- return roundFloat(degrees, maxDecimals);
1875
+ return roundFloat$1(degrees, maxDecimals);
1861
1876
  }
1862
- function roundFloat(input, maxDecimals) {
1877
+ function roundFloat$1(input, maxDecimals) {
1863
1878
  if (maxDecimals > 0) {
1864
1879
  const powDecimal = Math.pow(10, maxDecimals);
1865
1880
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -1879,7 +1894,7 @@ class LatLongFormatPipe {
1879
1894
  return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
1880
1895
  }
1881
1896
  }
1882
- LatLongFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1897
+ LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1883
1898
  LatLongFormatPipe.decorators = [
1884
1899
  { type: Pipe, args: [{
1885
1900
  name: 'latLongFormat'
@@ -1891,7 +1906,7 @@ class LatitudeFormatPipe {
1891
1906
  this.transform = formatLatitude;
1892
1907
  }
1893
1908
  }
1894
- LatitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1909
+ LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1895
1910
  LatitudeFormatPipe.decorators = [
1896
1911
  { type: Pipe, args: [{
1897
1912
  name: 'latitudeFormat'
@@ -1903,7 +1918,7 @@ class LongitudeFormatPipe {
1903
1918
  this.transform = formatLongitude;
1904
1919
  }
1905
1920
  }
1906
- LongitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1921
+ LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1907
1922
  LongitudeFormatPipe.decorators = [
1908
1923
  { type: Pipe, args: [{
1909
1924
  name: 'longitudeFormat'
@@ -1923,7 +1938,7 @@ class NumberFormatPipe {
1923
1938
  }
1924
1939
  }
1925
1940
  }
1926
- NumberFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1941
+ NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1927
1942
  NumberFormatPipe.decorators = [
1928
1943
  { type: Pipe, args: [{
1929
1944
  name: 'numberFormat'
@@ -1963,7 +1978,7 @@ class HighlightPipe {
1963
1978
  }
1964
1979
  }
1965
1980
  }
1966
- HighlightPipe.ɵprov = ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1981
+ HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1967
1982
  HighlightPipe.decorators = [
1968
1983
  { type: Pipe, args: [{
1969
1984
  name: 'highlight'
@@ -2028,7 +2043,7 @@ FileSizePipe.decorators = [
2028
2043
  { type: Pipe, args: [{ name: 'fileSize' },] }
2029
2044
  ];
2030
2045
 
2031
- const moment$1 = momentImported;
2046
+ const moment$5 = momentImported;
2032
2047
  const DATE_UNIX_TIMESTAMP = 'X';
2033
2048
  const DATE_UNIX_MS_TIMESTAMP = 'x';
2034
2049
  class DateUtils {
@@ -2062,32 +2077,32 @@ function fromDateISOString(value) {
2062
2077
  if (!value || isMoment(value))
2063
2078
  return value;
2064
2079
  // Parse the input value, as a ISO date time
2065
- const date = moment$1(value, DATE_ISO_PATTERN);
2080
+ const date = moment$5(value, DATE_ISO_PATTERN);
2066
2081
  if (date.isValid())
2067
2082
  return date;
2068
2083
  // Not valid: trying to convert from unix timestamp
2069
2084
  if (typeof value === 'string') {
2070
2085
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2071
2086
  if (value.length === 10) {
2072
- return moment$1(value, DATE_UNIX_TIMESTAMP);
2087
+ return moment$5(value, DATE_UNIX_TIMESTAMP);
2073
2088
  }
2074
2089
  else if (value.length === 13) {
2075
- return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2090
+ return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
2076
2091
  }
2077
2092
  }
2078
2093
  console.warn('Unable to parse date: ' + value);
2079
2094
  return undefined;
2080
2095
  }
2081
2096
  function fromUnixTimestamp(timeInSec) {
2082
- return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2097
+ return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
2083
2098
  }
2084
2099
  function fromUnixMsTimestamp(timeInMs) {
2085
- return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2100
+ return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2086
2101
  }
2087
2102
  function toDuration(value, unit) {
2088
2103
  if (!value)
2089
2104
  return undefined;
2090
- const duration = moment$1.duration(value, unit);
2105
+ const duration = moment$5.duration(value, unit);
2091
2106
  // fix 990+ ms
2092
2107
  if (duration.milliseconds() >= 990) {
2093
2108
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2116,7 +2131,7 @@ class DurationPipe {
2116
2131
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
2117
2132
  }
2118
2133
  }
2119
- DurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(ɵɵinject(TranslateService)); }, token: DurationPipe, providedIn: "root" });
2134
+ DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2120
2135
  DurationPipe.decorators = [
2121
2136
  { type: Pipe, args: [{
2122
2137
  name: 'duration'
@@ -2137,7 +2152,7 @@ class MathAbsPipe {
2137
2152
  }
2138
2153
  }
2139
2154
  }
2140
- MathAbsPipe.ɵprov = ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2155
+ MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2141
2156
  MathAbsPipe.decorators = [
2142
2157
  { type: Pipe, args: [{
2143
2158
  name: 'mathAbs'
@@ -2149,7 +2164,7 @@ class EvenPipe {
2149
2164
  return val % 2 === 0;
2150
2165
  }
2151
2166
  }
2152
- EvenPipe.ɵprov = ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2167
+ EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2153
2168
  EvenPipe.decorators = [
2154
2169
  { type: Pipe, args: [{
2155
2170
  name: 'even'
@@ -2161,7 +2176,7 @@ class OddPipe {
2161
2176
  return val % 2 !== 0;
2162
2177
  }
2163
2178
  }
2164
- OddPipe.ɵprov = ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2179
+ OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2165
2180
  OddPipe.decorators = [
2166
2181
  { type: Pipe, args: [{
2167
2182
  name: 'odd'
@@ -2269,7 +2284,7 @@ class MapGetPipe {
2269
2284
  return val[key];
2270
2285
  }
2271
2286
  }
2272
- MapGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2287
+ MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2273
2288
  MapGetPipe.decorators = [
2274
2289
  { type: Pipe, args: [{
2275
2290
  name: 'mapGet'
@@ -2283,7 +2298,7 @@ class MapKeysPipe {
2283
2298
  return Object.keys(map);
2284
2299
  }
2285
2300
  }
2286
- MapKeysPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2301
+ MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2287
2302
  MapKeysPipe.decorators = [
2288
2303
  { type: Pipe, args: [{
2289
2304
  name: 'mapKeys'
@@ -2297,7 +2312,7 @@ class MapValuesPipe {
2297
2312
  return Object.values(map);
2298
2313
  }
2299
2314
  }
2300
- MapValuesPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2315
+ MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2301
2316
  MapValuesPipe.decorators = [
2302
2317
  { type: Pipe, args: [{
2303
2318
  name: 'mapValues'
@@ -2310,7 +2325,7 @@ class IsNotNilOrBlankPipe {
2310
2325
  return isNotNilOrBlank(value);
2311
2326
  }
2312
2327
  }
2313
- IsNotNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2328
+ IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2314
2329
  IsNotNilOrBlankPipe.decorators = [
2315
2330
  { type: Pipe, args: [{
2316
2331
  name: 'isNotNilOrBlank'
@@ -2322,7 +2337,7 @@ class IsNilOrBlankPipe {
2322
2337
  return isNilOrBlank(value);
2323
2338
  }
2324
2339
  }
2325
- IsNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2340
+ IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2326
2341
  IsNilOrBlankPipe.decorators = [
2327
2342
  { type: Pipe, args: [{
2328
2343
  name: 'isNilOrBlank'
@@ -2334,7 +2349,7 @@ class ToStringPipe {
2334
2349
  return (value !== null && value !== undefined) ? value.toString() : '';
2335
2350
  }
2336
2351
  }
2337
- ToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2352
+ ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2338
2353
  ToStringPipe.decorators = [
2339
2354
  { type: Pipe, args: [{
2340
2355
  name: 'toString'
@@ -2346,7 +2361,7 @@ class StrLengthPipe {
2346
2361
  return value && value.length || 0;
2347
2362
  }
2348
2363
  }
2349
- StrLengthPipe.ɵprov = ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2364
+ StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2350
2365
  StrLengthPipe.decorators = [
2351
2366
  { type: Pipe, args: [{
2352
2367
  name: 'strLength'
@@ -2397,7 +2412,7 @@ class TranslateContextService {
2397
2412
  : parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
2398
2413
  }
2399
2414
  }
2400
- TranslateContextService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(ɵɵinject(TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2415
+ TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2401
2416
  TranslateContextService.decorators = [
2402
2417
  { type: Injectable, args: [{ providedIn: 'root' },] }
2403
2418
  ];
@@ -2413,7 +2428,7 @@ class TranslateContextPipe {
2413
2428
  return this.translateContext.instant(key, context);
2414
2429
  }
2415
2430
  }
2416
- TranslateContextPipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2431
+ TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2417
2432
  TranslateContextPipe.decorators = [
2418
2433
  { type: Pipe, args: [{
2419
2434
  name: 'translateContext'
@@ -2430,7 +2445,7 @@ class TranslatablePipe {
2430
2445
  return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
2431
2446
  }
2432
2447
  }
2433
- TranslatablePipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2448
+ TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2434
2449
  TranslatablePipe.decorators = [
2435
2450
  { type: Pipe, args: [{
2436
2451
  name: 'translatable'
@@ -2447,7 +2462,7 @@ class PropertyGetPipe {
2447
2462
  args && args.defaultValue);
2448
2463
  }
2449
2464
  }
2450
- PropertyGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2465
+ PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2451
2466
  PropertyGetPipe.decorators = [
2452
2467
  { type: Pipe, args: [{
2453
2468
  name: 'propertyGet'
@@ -2472,12 +2487,12 @@ NgInitDirective.propDecorators = {
2472
2487
  ngInit: [{ type: Output }]
2473
2488
  };
2474
2489
 
2475
- const moment$2 = momentImported;
2490
+ const moment$4 = momentImported;
2476
2491
  // @dynamic
2477
2492
  class SharedValidators {
2478
2493
  static validDate(control) {
2479
2494
  const value = control.value;
2480
- const date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
2495
+ const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
2481
2496
  if (date && (!date.isValid() || date.year() < 1970)) {
2482
2497
  return { validDate: true };
2483
2498
  }
@@ -2685,23 +2700,22 @@ class SharedFormGroupValidators {
2685
2700
  };
2686
2701
  }
2687
2702
  static dateMaxDuration(startDateField, endDateField, maxDuration, durationUnit) {
2703
+ const maxDurationError = { dateMaxDuration: true };
2688
2704
  return (group) => {
2689
- const endField = group.get(endDateField);
2690
2705
  const startDate = fromDateISOString(group.get(startDateField).value);
2706
+ const endField = group.get(endDateField);
2691
2707
  const endDate = fromDateISOString(endField.value);
2692
2708
  if (isNotNil(startDate) && isNotNil(endDate) && Math.abs(startDate.diff(endDate, durationUnit)) > maxDuration) {
2709
+ console.log('TODO error !');
2693
2710
  // Update end field
2694
- const endFieldErrors = endField.errors || {};
2695
- endFieldErrors['dateMaxDuration'] = true;
2696
- endField.setErrors(endFieldErrors);
2697
2711
  endField.markAsTouched({ onlySelf: true });
2712
+ endField.markAsPending();
2713
+ endField.setErrors(Object.assign(Object.assign({}, endField.errors), maxDurationError));
2698
2714
  // Return the error (should be apply to the parent form)
2699
- return { dateMaxDuration: true };
2715
+ return maxDurationError;
2700
2716
  }
2701
2717
  // OK: remove the existing on the end field
2702
- else {
2703
- SharedValidators.clearError(endField, 'dateMaxDuration');
2704
- }
2718
+ SharedValidators.clearError(endField, 'dateMaxDuration');
2705
2719
  return null;
2706
2720
  };
2707
2721
  }
@@ -3489,8 +3503,8 @@ class FormErrorAdapter {
3489
3503
  }, "");
3490
3504
  }
3491
3505
  translateControlPath(path, opts) {
3492
- if (opts === null || opts === void 0 ? void 0 : opts.pathTranslateService) {
3493
- return opts === null || opts === void 0 ? void 0 : opts.pathTranslateService.translateControlPath(path);
3506
+ if (opts === null || opts === void 0 ? void 0 : opts.controlPathTranslator) {
3507
+ return opts === null || opts === void 0 ? void 0 : opts.controlPathTranslator.translateControlPath(path);
3494
3508
  }
3495
3509
  const i18nKey = (opts && opts.i18nPrefix || '') + changeCaseToUnderscore(path).toUpperCase();
3496
3510
  return this.translate.instant(i18nKey);
@@ -3513,7 +3527,7 @@ class FormErrorAdapter {
3513
3527
  return errorKey;
3514
3528
  }
3515
3529
  }
3516
- FormErrorAdapter.ɵprov = ɵɵdefineInjectable({ factory: function FormErrorAdapter_Factory() { return new FormErrorAdapter(ɵɵinject(TranslateService), ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorAdapter, providedIn: "root" });
3530
+ FormErrorAdapter.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormErrorAdapter_Factory() { return new FormErrorAdapter(i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorAdapter, providedIn: "root" });
3517
3531
  FormErrorAdapter.decorators = [
3518
3532
  { type: Injectable, args: [{ providedIn: 'root' },] }
3519
3533
  ];
@@ -3782,9 +3796,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
3782
3796
  const hour = parseInt(durationParts[0] || '0');
3783
3797
  const minute = parseInt(durationParts[1] || '0');
3784
3798
  const value = hour + (minute + 0.5) / 60;
3785
- return roundFloat$1(value, maxDecimals);
3799
+ return roundFloat(value, maxDecimals);
3786
3800
  }
3787
- function roundFloat$1(input, maxDecimals) {
3801
+ function roundFloat(input, maxDecimals) {
3788
3802
  if (maxDecimals > 0) {
3789
3803
  const powDecimal = Math.pow(10, maxDecimals);
3790
3804
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -3808,9 +3822,9 @@ const MASKS = {
3808
3822
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
3809
3823
  }
3810
3824
  };
3811
- const noop$1 = () => {
3825
+ const noop$6 = () => {
3812
3826
  };
3813
- const ɵ0$1 = noop$1;
3827
+ const ɵ0$9 = noop$6;
3814
3828
  class MatLatLongField {
3815
3829
  constructor(platform, translate, formBuilder, cd, formGroupDir) {
3816
3830
  this.platform = platform;
@@ -3818,8 +3832,8 @@ class MatLatLongField {
3818
3832
  this.formBuilder = formBuilder;
3819
3833
  this.cd = cd;
3820
3834
  this.formGroupDir = formGroupDir;
3821
- this._onChangeCallback = noop$1;
3822
- this._onTouchedCallback = noop$1;
3835
+ this._onChangeCallback = noop$6;
3836
+ this._onTouchedCallback = noop$6;
3823
3837
  this._subscription = new Subscription();
3824
3838
  this.disabling = false;
3825
3839
  this.writing = false;
@@ -4155,14 +4169,14 @@ SharedMatLatLongModule.decorators = [
4155
4169
  },] }
4156
4170
  ];
4157
4171
 
4158
- const DEFAULT_VALUE_ACCESSOR$1 = {
4172
+ const DEFAULT_VALUE_ACCESSOR$5 = {
4159
4173
  provide: NG_VALUE_ACCESSOR,
4160
4174
  useExisting: forwardRef(() => MatDate),
4161
4175
  multi: true
4162
4176
  };
4163
- const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4164
- const noop$2 = () => { };
4165
- const ɵ0$2 = noop$2;
4177
+ const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4178
+ const noop$5 = () => { };
4179
+ const ɵ0$8 = noop$5;
4166
4180
  class MatDate {
4167
4181
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4168
4182
  this.dateAdapter = dateAdapter;
@@ -4171,12 +4185,12 @@ class MatDate {
4171
4185
  this.cd = cd;
4172
4186
  this.keyboard = keyboard;
4173
4187
  this.formGroupDir = formGroupDir;
4174
- this._onChangeCallback = noop$2;
4175
- this._onTouchedCallback = noop$2;
4188
+ this._onChangeCallback = noop$5;
4189
+ this._onTouchedCallback = noop$5;
4176
4190
  this._subscription = new Subscription();
4177
4191
  this.writing = true;
4178
4192
  this.disabling = false;
4179
- this.dayMask = DAY_MASK;
4193
+ this.dayMask = DAY_MASK$2;
4180
4194
  this.disabled = false;
4181
4195
  this.floatLabel = 'auto';
4182
4196
  this.readonly = false;
@@ -4413,7 +4427,7 @@ MatDate.decorators = [
4413
4427
  selector: 'mat-date-field',
4414
4428
  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",
4415
4429
  providers: [
4416
- DEFAULT_VALUE_ACCESSOR$1,
4430
+ DEFAULT_VALUE_ACCESSOR$5,
4417
4431
  ],
4418
4432
  changeDetection: ChangeDetectionStrategy.OnPush,
4419
4433
  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%}"]
@@ -4446,17 +4460,17 @@ MatDate.propDecorators = {
4446
4460
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
4447
4461
  };
4448
4462
 
4449
- const DEFAULT_VALUE_ACCESSOR$2 = {
4463
+ const DEFAULT_VALUE_ACCESSOR$4 = {
4450
4464
  provide: NG_VALUE_ACCESSOR,
4451
4465
  useExisting: forwardRef(() => MatDateTime),
4452
4466
  multi: true
4453
4467
  };
4454
4468
  const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4455
4469
  const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
4456
- const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4457
- const noop$3 = () => {
4470
+ const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4471
+ const noop$4 = () => {
4458
4472
  };
4459
- const ɵ0$3 = noop$3;
4473
+ const ɵ0$7 = noop$4;
4460
4474
  class MatDateTime {
4461
4475
  constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
4462
4476
  this.platform = platform;
@@ -4466,14 +4480,14 @@ class MatDateTime {
4466
4480
  this.keyboard = keyboard;
4467
4481
  this.cd = cd;
4468
4482
  this.formGroupDir = formGroupDir;
4469
- this._onChangeCallback = noop$3;
4470
- this._onTouchedCallback = noop$3;
4483
+ this._onChangeCallback = noop$4;
4484
+ this._onTouchedCallback = noop$4;
4471
4485
  this._subscription = new Subscription();
4472
4486
  this.writing = true;
4473
4487
  this.disabling = false;
4474
4488
  this._readonly = false;
4475
4489
  this.dayMask = DAY_MASK$1;
4476
- this.hourMask = HOUR_MASK;
4490
+ this.hourMask = HOUR_MASK$1;
4477
4491
  this.floatLabel = 'auto';
4478
4492
  this.compact = false;
4479
4493
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -4784,7 +4798,7 @@ MatDateTime.decorators = [
4784
4798
  selector: 'mat-date-time-field',
4785
4799
  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",
4786
4800
  providers: [
4787
- DEFAULT_VALUE_ACCESSOR$2,
4801
+ DEFAULT_VALUE_ACCESSOR$4,
4788
4802
  ],
4789
4803
  changeDetection: ChangeDetectionStrategy.OnPush,
4790
4804
  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%}"]
@@ -4823,10 +4837,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
4823
4837
  useExisting: forwardRef(() => MatDateShort),
4824
4838
  multi: true
4825
4839
  };
4826
- const DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
4827
- const noop$4 = () => {
4840
+ const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
4841
+ const noop$3 = () => {
4828
4842
  };
4829
- const ɵ0$4 = noop$4;
4843
+ const ɵ0$6 = noop$3;
4830
4844
  class MatDateShort {
4831
4845
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4832
4846
  this.dateAdapter = dateAdapter;
@@ -4835,11 +4849,11 @@ class MatDateShort {
4835
4849
  this.cd = cd;
4836
4850
  this.keyboard = keyboard;
4837
4851
  this.formGroupDir = formGroupDir;
4838
- this._onChangeCallback = noop$4;
4839
- this._onTouchedCallback = noop$4;
4852
+ this._onChangeCallback = noop$3;
4853
+ this._onTouchedCallback = noop$3;
4840
4854
  this.writing = true;
4841
4855
  this.disabling = false;
4842
- this.dayMask = DAY_MASK$2;
4856
+ this.dayMask = DAY_MASK;
4843
4857
  this.disabled = false;
4844
4858
  this.floatLabel = 'auto';
4845
4859
  this.readonly = false;
@@ -5152,16 +5166,16 @@ SharedMatDateTimeModule.decorators = [
5152
5166
  },] }
5153
5167
  ];
5154
5168
 
5155
- const DEFAULT_VALUE_ACCESSOR$4 = {
5169
+ const DEFAULT_VALUE_ACCESSOR$2 = {
5156
5170
  provide: NG_VALUE_ACCESSOR,
5157
5171
  useExisting: forwardRef(() => MatDuration),
5158
5172
  multi: true
5159
5173
  };
5160
5174
  const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
5161
- const HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5162
- const noop$5 = () => {
5175
+ const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5176
+ const noop$2 = () => {
5163
5177
  };
5164
- const ɵ0$5 = noop$5;
5178
+ const ɵ0$5 = noop$2;
5165
5179
  class MatDuration {
5166
5180
  constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
5167
5181
  this.dateAdapter = dateAdapter;
@@ -5170,11 +5184,11 @@ class MatDuration {
5170
5184
  this.cd = cd;
5171
5185
  this.formGroupDir = formGroupDir;
5172
5186
  this._subscription = new Subscription();
5173
- this._onChangeCallback = noop$5;
5174
- this._onTouchedCallback = noop$5;
5187
+ this._onChangeCallback = noop$2;
5188
+ this._onTouchedCallback = noop$2;
5175
5189
  this.writing = true;
5176
5190
  this.disabling = false;
5177
- this.hourMask = HOUR_MASK$1;
5191
+ this.hourMask = HOUR_MASK;
5178
5192
  this.disabled = false;
5179
5193
  this.floatLabel = 'auto';
5180
5194
  this.readonly = false;
@@ -5354,7 +5368,7 @@ MatDuration.decorators = [
5354
5368
  selector: 'mat-duration-field',
5355
5369
  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",
5356
5370
  providers: [
5357
- DEFAULT_VALUE_ACCESSOR$4,
5371
+ DEFAULT_VALUE_ACCESSOR$2,
5358
5372
  ],
5359
5373
  changeDetection: ChangeDetectionStrategy.OnPush,
5360
5374
  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%}"]
@@ -5411,22 +5425,22 @@ SharedMatDurationModule.decorators = [
5411
5425
  },] }
5412
5426
  ];
5413
5427
 
5414
- const DEFAULT_VALUE_ACCESSOR$5 = {
5428
+ const DEFAULT_VALUE_ACCESSOR$1 = {
5415
5429
  provide: NG_VALUE_ACCESSOR,
5416
5430
  useExisting: forwardRef(() => MatBooleanField),
5417
5431
  multi: true
5418
5432
  };
5419
- const noop$6 = () => {
5433
+ const noop$1 = () => {
5420
5434
  };
5421
- const ɵ0$6 = noop$6;
5435
+ const ɵ0$4 = noop$1;
5422
5436
  class MatBooleanField {
5423
5437
  constructor(translate, formBuilder, cd, formGroupDir) {
5424
5438
  this.translate = translate;
5425
5439
  this.formBuilder = formBuilder;
5426
5440
  this.cd = cd;
5427
5441
  this.formGroupDir = formGroupDir;
5428
- this._onChangeCallback = noop$6;
5429
- this._onTouchedCallback = noop$6;
5442
+ this._onChangeCallback = noop$1;
5443
+ this._onTouchedCallback = noop$1;
5430
5444
  this._writing = false;
5431
5445
  this.showRadio = false;
5432
5446
  this.disabled = false;
@@ -5599,7 +5613,7 @@ MatBooleanField.decorators = [
5599
5613
  selector: 'mat-boolean-field',
5600
5614
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | translate }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label>&nbsp;</ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n",
5601
5615
  providers: [
5602
- DEFAULT_VALUE_ACCESSOR$5
5616
+ DEFAULT_VALUE_ACCESSOR$1
5603
5617
  ],
5604
5618
  changeDetection: ChangeDetectionStrategy.OnPush,
5605
5619
  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}"]
@@ -5847,7 +5861,7 @@ class MatNumpadDomService {
5847
5861
  this.appRef.detachView(this.componentRef.hostView);
5848
5862
  }
5849
5863
  }
5850
- MatNumpadDomService.ɵprov = ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
5864
+ 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" });
5851
5865
  MatNumpadDomService.decorators = [
5852
5866
  { type: Injectable, args: [{
5853
5867
  providedIn: 'root'
@@ -6211,7 +6225,7 @@ SharedMatNumpadModule.decorators = [
6211
6225
  },] }
6212
6226
  ];
6213
6227
 
6214
- const DEFAULT_VALUE_ACCESSOR$6 = {
6228
+ const DEFAULT_VALUE_ACCESSOR = {
6215
6229
  provide: NG_VALUE_ACCESSOR,
6216
6230
  useExisting: forwardRef(() => MatSwipeField),
6217
6231
  multi: true
@@ -6474,7 +6488,7 @@ MatSwipeField.decorators = [
6474
6488
  { type: Component, args: [{
6475
6489
  selector: 'mat-swipe-field',
6476
6490
  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",
6477
- providers: [DEFAULT_VALUE_ACCESSOR$6],
6491
+ providers: [DEFAULT_VALUE_ACCESSOR],
6478
6492
  changeDetection: ChangeDetectionStrategy.OnPush,
6479
6493
  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}"]
6480
6494
  },] }
@@ -6969,7 +6983,7 @@ class ProgressBarService {
6969
6983
  }
6970
6984
  }
6971
6985
  }
6972
- ProgressBarService.ɵprov = ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
6986
+ ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
6973
6987
  ProgressBarService.decorators = [
6974
6988
  { type: Injectable, args: [{ providedIn: 'root' },] }
6975
6989
  ];
@@ -7013,7 +7027,7 @@ class AppGestureConfig extends HammerGestureConfig {
7013
7027
  return mc;
7014
7028
  }
7015
7029
  }
7016
- AppGestureConfig.ɵprov = ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7030
+ AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7017
7031
  AppGestureConfig.decorators = [
7018
7032
  { type: Injectable, args: [{ providedIn: 'root' },] }
7019
7033
  ];
@@ -7236,7 +7250,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
7236
7250
  this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
7237
7251
  }
7238
7252
  }
7239
- MatPaginatorI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(ɵɵinject(TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7253
+ MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7240
7254
  MatPaginatorI18n.decorators = [
7241
7255
  { type: Injectable, args: [{ providedIn: 'root' },] }
7242
7256
  ];
@@ -7326,17 +7340,17 @@ function getColorContrast(color, bw) {
7326
7340
  return rgbArrayToHex(rgb.map(v => 255 - v));
7327
7341
  }
7328
7342
 
7329
- const noop$7 = () => {
7343
+ const noop = () => {
7330
7344
  };
7331
- const ɵ0$7 = noop$7;
7345
+ const ɵ0$3 = noop;
7332
7346
  class AppFormField {
7333
7347
  constructor(translate, cd, injector, formGroupDir) {
7334
7348
  this.translate = translate;
7335
7349
  this.cd = cd;
7336
7350
  this.injector = injector;
7337
7351
  this.formGroupDir = formGroupDir;
7338
- this._onChangeCallback = noop$7;
7339
- this._onTouchedCallback = noop$7;
7352
+ this._onChangeCallback = noop;
7353
+ this._onTouchedCallback = noop;
7340
7354
  this.readonly = false;
7341
7355
  this.compact = false;
7342
7356
  this.floatLabel = 'auto';
@@ -7752,14 +7766,14 @@ class AudioProvider extends StartableService {
7752
7766
  });
7753
7767
  }
7754
7768
  }
7755
- 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" });
7769
+ 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" });
7756
7770
  AudioProvider.decorators = [
7757
7771
  { type: Injectable, args: [{ providedIn: 'root' },] }
7758
7772
  ];
7759
7773
  AudioProvider.ctorParameters = () => [
7760
7774
  { type: Platform },
7761
- { type: NativeAudio$1, decorators: [{ type: Optional }] },
7762
- { type: Vibration$1, decorators: [{ type: Optional }] },
7775
+ { type: NativeAudio, decorators: [{ type: Optional }] },
7776
+ { type: Vibration, decorators: [{ type: Optional }] },
7763
7777
  { type: AudioManagement, decorators: [{ type: Optional }] }
7764
7778
  ];
7765
7779
 
@@ -7841,7 +7855,7 @@ class Hotkeys {
7841
7855
  });
7842
7856
  }
7843
7857
  }
7844
- Hotkeys.ɵprov = ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(ɵɵinject(EventManager), ɵɵinject(MatDialog), ɵɵinject(DOCUMENT), ɵɵinject(ModalController)); }, token: Hotkeys, providedIn: "root" });
7858
+ 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" });
7845
7859
  Hotkeys.decorators = [
7846
7860
  { type: Injectable, args: [{
7847
7861
  providedIn: 'root'
@@ -8015,7 +8029,7 @@ class Base64ImageReader {
8015
8029
  }
8016
8030
  }
8017
8031
 
8018
- const uuidv4 = uuidv4Imported;
8032
+ const uuidv4$1 = uuidv4Imported;
8019
8033
  class FileService {
8020
8034
  constructor(platform,
8021
8035
  //private transfer: FileTransfer,
@@ -8052,7 +8066,7 @@ class FileService {
8052
8066
  const lastSlashIndex = source.lastIndexOf('/');
8053
8067
  if (lastSlashIndex === -1)
8054
8068
  throw new Error('Invalid URL: ' + source);
8055
- const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
8069
+ const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
8056
8070
  // Download into the file system
8057
8071
  if (responseType === 'file' && this.canUseFileSystem) {
8058
8072
  console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
@@ -8108,7 +8122,7 @@ class FileService {
8108
8122
  this._started = true;
8109
8123
  }
8110
8124
  }
8111
- FileService.ɵprov = ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(ɵɵinject(Platform), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
8125
+ 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" });
8112
8126
  FileService.decorators = [
8113
8127
  { type: Injectable, args: [{
8114
8128
  providedIn: 'root',
@@ -8270,7 +8284,7 @@ class Base58 {
8270
8284
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
8271
8285
 
8272
8286
  const scrypt = require('scrypt-async');
8273
- const sha256 = require('hash.js/lib/hash/sha/256');
8287
+ const sha256$1 = require('hash.js/lib/hash/sha/256');
8274
8288
  const sha512 = require('hash.js/lib/hash/sha/512');
8275
8289
  const nacl = {
8276
8290
  sign,
@@ -8374,7 +8388,7 @@ class CryptoService {
8374
8388
  * Hash (using SHA256) a message
8375
8389
  */
8376
8390
  sha256(message) {
8377
- return sha256().update(message).digest('hex');
8391
+ return sha256$1().update(message).digest('hex');
8378
8392
  }
8379
8393
  /**
8380
8394
  * Hash (using SHA512) a message
@@ -8387,7 +8401,7 @@ class CryptoService {
8387
8401
  return nacl.util.encodeBase64(m);
8388
8402
  }
8389
8403
  }
8390
- CryptoService.ɵprov = ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8404
+ CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8391
8405
  CryptoService.decorators = [
8392
8406
  { type: Injectable, args: [{ providedIn: 'root' },] }
8393
8407
  ];
@@ -9608,7 +9622,7 @@ class LocalSettingsService extends StartableService {
9608
9622
  return page;
9609
9623
  }
9610
9624
  }
9611
- 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" });
9625
+ 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" });
9612
9626
  LocalSettingsService.decorators = [
9613
9627
  { type: Injectable, args: [{
9614
9628
  providedIn: 'root',
@@ -10268,7 +10282,7 @@ class NetworkService extends StartableService {
10268
10282
  });
10269
10283
  }
10270
10284
  }
10271
- 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" });
10285
+ 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" });
10272
10286
  NetworkService.decorators = [
10273
10287
  { type: Injectable, args: [{ providedIn: 'root' },] }
10274
10288
  ];
@@ -10279,16 +10293,16 @@ NetworkService.ctorParameters = () => [
10279
10293
  { type: CryptoService },
10280
10294
  { type: Storage },
10281
10295
  { type: LocalSettingsService },
10282
- { type: CacheService$1 },
10296
+ { type: CacheService },
10283
10297
  { type: HttpClient },
10284
10298
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
10285
- { type: Network$1, decorators: [{ type: Optional }] },
10286
- { type: SplashScreen$1, decorators: [{ type: Optional }] },
10299
+ { type: Network, decorators: [{ type: Optional }] },
10300
+ { type: SplashScreen, decorators: [{ type: Optional }] },
10287
10301
  { type: TranslateService, decorators: [{ type: Optional }] },
10288
10302
  { type: ToastController, decorators: [{ type: Optional }] }
10289
10303
  ];
10290
10304
 
10291
- const ErrorCodes = {
10305
+ const ErrorCodes$2 = {
10292
10306
  UNKNOWN_ERROR: 0,
10293
10307
  LOAD_ACCOUNT_ERROR: 1,
10294
10308
  BAD_PASSWORD: 2,
@@ -10635,7 +10649,7 @@ class EntityStore {
10635
10649
  }
10636
10650
  catch (err) {
10637
10651
  console.error(err);
10638
- throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
10652
+ throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
10639
10653
  }
10640
10654
  }
10641
10655
  // Emit update event
@@ -11206,7 +11220,7 @@ class EntitiesStorage extends StartableService {
11206
11220
  }
11207
11221
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
11208
11222
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
11209
- 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" });
11223
+ 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" });
11210
11224
  EntitiesStorage.decorators = [
11211
11225
  { type: Injectable, args: [{ providedIn: 'root' },] }
11212
11226
  ];
@@ -11306,10 +11320,10 @@ function referentialToString(obj, properties) {
11306
11320
  function referentialsToString(values, properties, separator) {
11307
11321
  return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
11308
11322
  }
11309
- const ɵ0$8 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
11323
+ const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
11310
11324
  const StatusList = Object.freeze([
11311
11325
  {
11312
- id: ɵ0$8,
11326
+ id: ɵ0$2,
11313
11327
  icon: 'checkmark',
11314
11328
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
11315
11329
  },
@@ -11584,7 +11598,7 @@ function accountToString(data) {
11584
11598
  (data.lastName || '')) || '';
11585
11599
  }
11586
11600
 
11587
- const uuidv4$1 = uuidv4Imported;
11601
+ const uuidv4 = uuidv4Imported;
11588
11602
  const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
11589
11603
  const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
11590
11604
  /**
@@ -11628,7 +11642,7 @@ function createTrackerLink(opts) {
11628
11642
  // Skip if not tracked
11629
11643
  if (!context || !context.tracked)
11630
11644
  return forward(operation);
11631
- const id = context.serializationKey || uuidv4$1();
11645
+ const id = context.serializationKey || uuidv4();
11632
11646
  console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
11633
11647
  // Clean context, before calling JSON.stringify (remove unused attributes)
11634
11648
  const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -12297,7 +12311,7 @@ class GraphqlService extends StartableService {
12297
12311
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
12298
12312
  || this.toAppError(err.networkError)
12299
12313
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
12300
- || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
12314
+ || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
12301
12315
  // If graphQL: try to convert the first error found
12302
12316
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
12303
12317
  || this.toAppError(err)
@@ -12305,7 +12319,7 @@ class GraphqlService extends StartableService {
12305
12319
  || (err.graphQLErrors && err.graphQLErrors[0])
12306
12320
  || err;
12307
12321
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
12308
- if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
12322
+ if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
12309
12323
  console.error('[graphql] original error: ' + err.networkError.message);
12310
12324
  this.onNetworkError.next(error);
12311
12325
  }
@@ -12341,7 +12355,7 @@ class GraphqlService extends StartableService {
12341
12355
  return 'ERROR.UNAUTHORIZED';
12342
12356
  case ServerErrorCodes.FORBIDDEN:
12343
12357
  return 'ERROR.FORBIDDEN';
12344
- case ErrorCodes.UNKNOWN_NETWORK_ERROR:
12358
+ case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
12345
12359
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
12346
12360
  case ServerErrorCodes.BAD_UPDATE_DATE:
12347
12361
  return 'ERROR.BAD_UPDATE_DATE';
@@ -12369,7 +12383,7 @@ class GraphqlService extends StartableService {
12369
12383
  return undefined;
12370
12384
  }
12371
12385
  }
12372
- 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" });
12386
+ 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" });
12373
12387
  GraphqlService.decorators = [
12374
12388
  { type: Injectable, args: [{
12375
12389
  providedIn: 'root'
@@ -12386,7 +12400,7 @@ GraphqlService.ctorParameters = () => [
12386
12400
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
12387
12401
  ];
12388
12402
 
12389
- const sha256$1 = require('hash.js/lib/hash/sha/256');
12403
+ const sha256 = require('hash.js/lib/hash/sha/256');
12390
12404
  class BaseGraphqlServiceOptions {
12391
12405
  }
12392
12406
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
@@ -12536,8 +12550,8 @@ class BaseGraphqlService {
12536
12550
  }
12537
12551
  /* -- protected methods -- */
12538
12552
  computeMutableWatchQueryId(opts) {
12539
- const queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
12540
- const variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
12553
+ const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
12554
+ const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
12541
12555
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
12542
12556
  }
12543
12557
  findMutableWatchQueries(opts) {
@@ -12600,7 +12614,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
12600
12614
  /* ------------------------------------
12601
12615
  * GraphQL queries
12602
12616
  * ------------------------------------*/
12603
- const Fragments = {
12617
+ const Fragments$1 = {
12604
12618
  account: gql `
12605
12619
  fragment AccountFragment on AccountVO {
12606
12620
  id
@@ -12633,13 +12647,13 @@ const Fragments = {
12633
12647
  `
12634
12648
  };
12635
12649
  // Load account query
12636
- const LoadQuery = gql `
12650
+ const LoadQuery$1 = gql `
12637
12651
  query Account {
12638
12652
  data: account {
12639
12653
  ...AccountFragment
12640
12654
  }
12641
12655
  }
12642
- ${Fragments.account}
12656
+ ${Fragments$1.account}
12643
12657
  `;
12644
12658
  // Check email query
12645
12659
  const IsEmailExistsQuery = gql `
@@ -12648,13 +12662,13 @@ const IsEmailExistsQuery = gql `
12648
12662
  }
12649
12663
  `;
12650
12664
  // Save (create or update) account mutation
12651
- const SaveMutation = gql `
12665
+ const SaveMutation$1 = gql `
12652
12666
  mutation SaveAccount($data:AccountVOInput){
12653
12667
  data: saveAccount(account: $data){
12654
12668
  ...AccountFragment
12655
12669
  }
12656
12670
  }
12657
- ${Fragments.account}
12671
+ ${Fragments$1.account}
12658
12672
  `;
12659
12673
  // Create account mutation
12660
12674
  const CreateMutation = gql `
@@ -12663,7 +12677,7 @@ const CreateMutation = gql `
12663
12677
  ...AccountFragment
12664
12678
  }
12665
12679
  }
12666
- ${Fragments.account}
12680
+ ${Fragments$1.account}
12667
12681
  `;
12668
12682
  // Sent confirmation email
12669
12683
  const SendConfirmEmailMutation = gql `
@@ -13001,7 +13015,7 @@ class AccountService extends BaseGraphqlService {
13001
13015
  catch (error) {
13002
13016
  console.error(error);
13003
13017
  this.resetData();
13004
- throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13018
+ throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13005
13019
  }
13006
13020
  // Store pubkey+keypair
13007
13021
  this._data.pubkey = Base58.encode(keypair.publicKey);
@@ -13035,7 +13049,7 @@ class AccountService extends BaseGraphqlService {
13035
13049
  }
13036
13050
  catch (err) {
13037
13051
  // If account not found, check if email is valid
13038
- if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
13052
+ if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
13039
13053
  // Check email exists
13040
13054
  if (data.username.indexOf('@') !== -1) {
13041
13055
  let isEmailExists;
@@ -13047,11 +13061,11 @@ class AccountService extends BaseGraphqlService {
13047
13061
  }
13048
13062
  // Email not exists (no account)
13049
13063
  if (!isEmailExists) {
13050
- throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13064
+ throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13051
13065
  }
13052
13066
  }
13053
13067
  // Email exists, so error = 'bad password'
13054
- throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13068
+ throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13055
13069
  }
13056
13070
  throw err; // resend the first error
13057
13071
  }
@@ -13176,8 +13190,8 @@ class AccountService extends BaseGraphqlService {
13176
13190
  // Load remotely
13177
13191
  else {
13178
13192
  const { data } = yield this.graphql.query({
13179
- query: LoadQuery,
13180
- error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
13193
+ query: LoadQuery$1,
13194
+ error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
13181
13195
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
13182
13196
  });
13183
13197
  json = data;
@@ -13204,7 +13218,7 @@ class AccountService extends BaseGraphqlService {
13204
13218
  return __awaiter(this, void 0, void 0, function* () {
13205
13219
  const isEmailExists = yield this.isEmailExists(email);
13206
13220
  if (isEmailExists) {
13207
- throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
13221
+ throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
13208
13222
  }
13209
13223
  });
13210
13224
  }
@@ -13240,7 +13254,7 @@ class AccountService extends BaseGraphqlService {
13240
13254
  locale
13241
13255
  },
13242
13256
  error: {
13243
- code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
13257
+ code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
13244
13258
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
13245
13259
  }
13246
13260
  });
@@ -13256,7 +13270,7 @@ class AccountService extends BaseGraphqlService {
13256
13270
  code
13257
13271
  },
13258
13272
  error: {
13259
- code: ErrorCodes.CONFIRM_EMAIL_FAILED,
13273
+ code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
13260
13274
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
13261
13275
  }
13262
13276
  });
@@ -13274,7 +13288,7 @@ class AccountService extends BaseGraphqlService {
13274
13288
  interval: 10
13275
13289
  },
13276
13290
  error: {
13277
- code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
13291
+ code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
13278
13292
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
13279
13293
  }
13280
13294
  }).subscribe({
@@ -13383,7 +13397,7 @@ class AccountService extends BaseGraphqlService {
13383
13397
  throw error;
13384
13398
  console.error(error);
13385
13399
  throw {
13386
- code: ErrorCodes.LOAD_ACCOUNT_ERROR,
13400
+ code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
13387
13401
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
13388
13402
  };
13389
13403
  }
@@ -13528,7 +13542,7 @@ class AccountService extends BaseGraphqlService {
13528
13542
  if (!isNew) {
13529
13543
  const existingAccount = yield this.load({ fetchPolicy: 'network-only' });
13530
13544
  if (!existingAccount || !existingAccount.updateDate) {
13531
- throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
13545
+ throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
13532
13546
  }
13533
13547
  this.copyIdAndUpdateDate(existingAccount, account);
13534
13548
  }
@@ -13537,10 +13551,10 @@ class AccountService extends BaseGraphqlService {
13537
13551
  delete json.profiles;
13538
13552
  // Execute mutation
13539
13553
  const { data } = yield this.graphql.mutate({
13540
- mutation: isNew ? CreateMutation : SaveMutation,
13554
+ mutation: isNew ? CreateMutation : SaveMutation$1,
13541
13555
  variables: { data: json },
13542
13556
  error: {
13543
- code: ErrorCodes.SAVE_ACCOUNT_ERROR,
13557
+ code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
13544
13558
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
13545
13559
  }
13546
13560
  });
@@ -13560,7 +13574,7 @@ class AccountService extends BaseGraphqlService {
13560
13574
  if (counter > 4) {
13561
13575
  if (this._debug)
13562
13576
  console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
13563
- throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
13577
+ throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
13564
13578
  }
13565
13579
  // Check if valid
13566
13580
  if (token) {
@@ -13570,7 +13584,7 @@ class AccountService extends BaseGraphqlService {
13570
13584
  token
13571
13585
  },
13572
13586
  error: {
13573
- code: ErrorCodes.UNAUTHORIZED,
13587
+ code: ErrorCodes$2.UNAUTHORIZED,
13574
13588
  message: 'ERROR.UNAUTHORIZED'
13575
13589
  },
13576
13590
  fetchPolicy: 'no-cache'
@@ -13586,7 +13600,7 @@ class AccountService extends BaseGraphqlService {
13586
13600
  }
13587
13601
  // Generate a new token
13588
13602
  const challengeError = {
13589
- code: ErrorCodes.AUTH_CHALLENGE_ERROR,
13603
+ code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
13590
13604
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
13591
13605
  };
13592
13606
  const data = yield this.graphql.query({
@@ -13620,7 +13634,7 @@ class AccountService extends BaseGraphqlService {
13620
13634
  target.settings.updateDate = source.settings && source.settings.updateDate || target.settings.updateDate;
13621
13635
  }
13622
13636
  }
13623
- 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" });
13637
+ 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" });
13624
13638
  AccountService.decorators = [
13625
13639
  { type: Injectable, args: [{ providedIn: 'root' },] }
13626
13640
  ];
@@ -13880,7 +13894,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
13880
13894
  /* ------------------------------------
13881
13895
  * GraphQL queries
13882
13896
  * ------------------------------------*/
13883
- const Fragments$1 = {
13897
+ const Fragments = {
13884
13898
  config: gql `
13885
13899
  fragment ConfigFragment on ConfigurationVO {
13886
13900
  id
@@ -13907,22 +13921,22 @@ const Fragments$1 = {
13907
13921
  }
13908
13922
  `
13909
13923
  };
13910
- const LoadQuery$1 = gql `
13924
+ const LoadQuery = gql `
13911
13925
  query Configuration{
13912
13926
  data: configuration{
13913
13927
  ...ConfigFragment
13914
13928
  }
13915
13929
  }
13916
- ${Fragments$1.config}
13930
+ ${Fragments.config}
13917
13931
  `;
13918
13932
  // Save (create or update) account mutation
13919
- const SaveMutation$1 = gql `
13933
+ const SaveMutation = gql `
13920
13934
  mutation SaveConfiguration($data: ConfigurationVOInput){
13921
13935
  data: saveConfiguration(config: $data){
13922
13936
  ...ConfigFragment
13923
13937
  }
13924
13938
  }
13925
- ${Fragments$1.config}
13939
+ ${Fragments.config}
13926
13940
  `;
13927
13941
  const ClearCache = gql `
13928
13942
  query ClearCache($name: String) {
@@ -14017,12 +14031,12 @@ class ConfigService extends BaseGraphqlService {
14017
14031
  return __awaiter(this, void 0, void 0, function* () {
14018
14032
  const now = Date.now();
14019
14033
  console.debug('[config] Loading Pod configuration...');
14020
- const query = opts && opts.query || LoadQuery$1;
14034
+ const query = opts && opts.query || LoadQuery;
14021
14035
  const variables = opts && opts.variables || undefined;
14022
14036
  const res = yield this.graphql.query({
14023
14037
  query,
14024
14038
  variables,
14025
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14039
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14026
14040
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
14027
14041
  });
14028
14042
  const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
@@ -14047,12 +14061,12 @@ class ConfigService extends BaseGraphqlService {
14047
14061
  const json = config.asObject();
14048
14062
  // Execute mutation
14049
14063
  const res = yield this.graphql.mutate({
14050
- mutation: SaveMutation$1,
14064
+ mutation: SaveMutation,
14051
14065
  variables: {
14052
14066
  data: json
14053
14067
  },
14054
14068
  error: {
14055
- code: ErrorCodes.SAVE_CONFIG_ERROR,
14069
+ code: ErrorCodes$2.SAVE_CONFIG_ERROR,
14056
14070
  message: 'ERROR.SAVE_CONFIG_ERROR'
14057
14071
  }
14058
14072
  });
@@ -14078,7 +14092,7 @@ class ConfigService extends BaseGraphqlService {
14078
14092
  const res = yield this.graphql.query({
14079
14093
  query: CacheStatistics,
14080
14094
  variables: null,
14081
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14095
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14082
14096
  fetchPolicy: 'network-only'
14083
14097
  });
14084
14098
  const data = res && res.cacheStatistics || undefined;
@@ -14094,7 +14108,7 @@ class ConfigService extends BaseGraphqlService {
14094
14108
  const res = yield this.graphql.query({
14095
14109
  query: ClearCache,
14096
14110
  variables,
14097
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14111
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14098
14112
  fetchPolicy: 'network-only'
14099
14113
  });
14100
14114
  const data = res && res.clearCache || undefined;
@@ -14253,7 +14267,7 @@ class ConfigService extends BaseGraphqlService {
14253
14267
  });
14254
14268
  }
14255
14269
  }
14256
- ConfigService.ɵprov = ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(ɵɵinject(Platform), ɵɵinject(GraphqlService), ɵɵinject(Storage), ɵɵinject(NetworkService), ɵɵinject(FileService), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
14270
+ 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" });
14257
14271
  ConfigService.decorators = [
14258
14272
  { type: Injectable, args: [{
14259
14273
  providedIn: 'root',
@@ -14272,7 +14286,7 @@ ConfigService.ctorParameters = () => [
14272
14286
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
14273
14287
  ];
14274
14288
 
14275
- const moment$4 = momentImported;
14289
+ const moment$2 = momentImported;
14276
14290
  class PlatformService {
14277
14291
  constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
14278
14292
  this.platform = platform;
@@ -14481,16 +14495,16 @@ class PlatformService {
14481
14495
  }
14482
14496
  // config moment lib
14483
14497
  try {
14484
- moment$4.locale(event.lang);
14498
+ moment$2.locale(event.lang);
14485
14499
  console.debug('[platform] Use locale {' + event.lang + '}');
14486
14500
  }
14487
14501
  // If error, fallback to en
14488
14502
  catch (err) {
14489
- moment$4.locale('en');
14503
+ moment$2.locale('en');
14490
14504
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
14491
14505
  }
14492
14506
  // Config date adapter
14493
- this.dateAdapter.setLocale(moment$4.locale());
14507
+ this.dateAdapter.setLocale(moment$2.locale());
14494
14508
  }
14495
14509
  });
14496
14510
  this.settings.onChange.subscribe(data => {
@@ -14628,7 +14642,7 @@ class PlatformService {
14628
14642
  });
14629
14643
  }
14630
14644
  }
14631
- 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" });
14645
+ 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" });
14632
14646
  PlatformService.decorators = [
14633
14647
  { type: Injectable, args: [{ providedIn: 'root' },] }
14634
14648
  ];
@@ -14643,15 +14657,15 @@ PlatformService.ctorParameters = () => [
14643
14657
  { type: NetworkService },
14644
14658
  { type: AccountService },
14645
14659
  { type: ConfigService },
14646
- { type: CacheService$1 },
14660
+ { type: CacheService },
14647
14661
  { type: Storage },
14648
14662
  { type: AudioProvider },
14649
14663
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
14650
- { type: StatusBar$1, decorators: [{ type: Optional }] },
14664
+ { type: StatusBar, decorators: [{ type: Optional }] },
14651
14665
  { type: Keyboard, decorators: [{ type: Optional }] },
14652
- { type: SplashScreen$1, decorators: [{ type: Optional }] },
14653
- { type: InAppBrowser$1, decorators: [{ type: Optional }] },
14654
- { type: Downloader$1, decorators: [{ type: Optional }] }
14666
+ { type: SplashScreen, decorators: [{ type: Optional }] },
14667
+ { type: InAppBrowser, decorators: [{ type: Optional }] },
14668
+ { type: Downloader, decorators: [{ type: Optional }] }
14655
14669
  ];
14656
14670
 
14657
14671
  class AppHelpModal {
@@ -14715,7 +14729,7 @@ class MatStepperI18n extends MatStepperIntl {
14715
14729
  this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
14716
14730
  }
14717
14731
  }
14718
- MatStepperI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(ɵɵinject(TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
14732
+ MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
14719
14733
  MatStepperI18n.decorators = [
14720
14734
  { type: Injectable, args: [{ providedIn: 'root' },] }
14721
14735
  ];
@@ -15707,7 +15721,7 @@ function state2side(state) {
15707
15721
  return 1;
15708
15722
  }
15709
15723
  }
15710
- const ɵ0$9 = (defaultStateSize) => [
15724
+ const ɵ0$1 = (defaultStateSize) => [
15711
15725
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
15712
15726
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
15713
15727
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -15715,7 +15729,7 @@ const ɵ0$9 = (defaultStateSize) => [
15715
15729
  const SCALE_OPTIONS_DEFAULT = {
15716
15730
  startColor: rgbArrayMap.red,
15717
15731
  startStates: [0, 2, 3],
15718
- startStepsFn: ɵ0$9
15732
+ startStepsFn: ɵ0$1
15719
15733
  };
15720
15734
  /**
15721
15735
  * Internal function, that create a colors scale, using iteration
@@ -15807,21 +15821,21 @@ function linearColorGradient(count, options) {
15807
15821
  return result;
15808
15822
  }
15809
15823
 
15810
- class EntityTestClass {
15824
+ class EntityTestClass$1 {
15811
15825
  }
15812
- const FAKE_ENTITIES = [
15826
+ const FAKE_ENTITIES$1 = [
15813
15827
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
15814
15828
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
15815
15829
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
15816
15830
  ];
15817
- function deepCopy(values, size) {
15831
+ function deepCopy$1(values, size) {
15818
15832
  if (isNil(size)) {
15819
- return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
15833
+ return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
15820
15834
  }
15821
15835
  let result = [];
15822
15836
  let i = 1;
15823
15837
  while (result.length < size) {
15824
- result = result.concat((values || FAKE_ENTITIES).map(entity => {
15838
+ result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
15825
15839
  const name = entity.name + ' #' + i;
15826
15840
  return Object.assign(Object.assign({}, entity), { id: i++, name });
15827
15841
  }));
@@ -15831,7 +15845,7 @@ function deepCopy(values, size) {
15831
15845
  class AutocompleteTestPage {
15832
15846
  constructor(formBuilder) {
15833
15847
  this.formBuilder = formBuilder;
15834
- this._items = deepCopy(FAKE_ENTITIES, 100);
15848
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
15835
15849
  this.$items = new BehaviorSubject(undefined);
15836
15850
  this.autocompleteFields = new MatAutocompleteConfigHolder();
15837
15851
  this.memoryHide = false;
@@ -15875,7 +15889,7 @@ class AutocompleteTestPage {
15875
15889
  });
15876
15890
  // From items
15877
15891
  this.autocompleteFields.add('entity-items-large', {
15878
- items: FAKE_ENTITIES.slice(),
15892
+ items: FAKE_ENTITIES$1.slice(),
15879
15893
  attributes: ['label', 'name', 'description', 'comments'],
15880
15894
  displayWith: this.entityToString
15881
15895
  });
@@ -15885,12 +15899,12 @@ class AutocompleteTestPage {
15885
15899
  loadData() {
15886
15900
  return __awaiter(this, void 0, void 0, function* () {
15887
15901
  const data = {
15888
- entity: deepCopy(FAKE_ENTITIES)[0],
15902
+ entity: deepCopy$1(FAKE_ENTITIES$1)[0],
15889
15903
  // This item is NOT in the items list => i should be displayed anyway
15890
15904
  missingEntity: {
15891
15905
  id: -1, label: '??', name: 'Missing item'
15892
15906
  },
15893
- disableEntity: deepCopy(FAKE_ENTITIES)[2]
15907
+ disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
15894
15908
  };
15895
15909
  this.form.setValue(data);
15896
15910
  // Load observables
@@ -16063,13 +16077,13 @@ MaterialTestingPage.ctorParameters = () => [
16063
16077
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
16064
16078
  ];
16065
16079
 
16066
- const moment$5 = momentImported;
16080
+ const moment$1 = momentImported;
16067
16081
  class SwipeTestPage {
16068
16082
  constructor(formBuilder, dateFormatPipe) {
16069
16083
  this.formBuilder = formBuilder;
16070
16084
  this.dateFormatPipe = dateFormatPipe;
16071
16085
  this.$dates = new BehaviorSubject(undefined);
16072
- this._today = moment$5().startOf('day');
16086
+ this._today = moment$1().startOf('day');
16073
16087
  this.form = formBuilder.group({
16074
16088
  empty: [null, Validators.required],
16075
16089
  date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
@@ -16082,7 +16096,7 @@ class SwipeTestPage {
16082
16096
  ngOnInit() {
16083
16097
  const dates = [];
16084
16098
  for (let d = 0; d < 7; d++) {
16085
- dates[d] = moment$5(this._today).add(d - 3, 'day');
16099
+ dates[d] = moment$1(this._today).add(d - 3, 'day');
16086
16100
  }
16087
16101
  this.$dates.next(dates);
16088
16102
  this.loadData();
@@ -16123,7 +16137,7 @@ SwipeTestPage.ctorParameters = () => [
16123
16137
  { type: DateFormatPipe }
16124
16138
  ];
16125
16139
 
16126
- const moment$6 = momentImported;
16140
+ const moment = momentImported;
16127
16141
  class DateTimeTestPage {
16128
16142
  constructor(platform, formBuilder, cd) {
16129
16143
  this.platform = platform;
@@ -16155,7 +16169,7 @@ class DateTimeTestPage {
16155
16169
  // Load the form with data
16156
16170
  loadData() {
16157
16171
  return __awaiter(this, void 0, void 0, function* () {
16158
- const now = moment$6();
16172
+ const now = moment();
16159
16173
  const data = {
16160
16174
  empty: toDateISOString(now.clone().add(2, 'hours')),
16161
16175
  enable: toDateISOString(now),
@@ -16216,20 +16230,20 @@ DateTimeTestPage.ctorParameters = () => [
16216
16230
  { type: ChangeDetectorRef }
16217
16231
  ];
16218
16232
 
16219
- class EntityTestClass$1 {
16233
+ class EntityTestClass {
16220
16234
  }
16221
- const FAKE_ENTITIES$1 = [
16235
+ const FAKE_ENTITIES = [
16222
16236
  { id: 1, label: 'AAA', name: 'Item A' },
16223
16237
  { id: 2, label: 'BBB', name: 'Item B' },
16224
16238
  { id: 3, label: 'CCC', name: 'Item C' }
16225
16239
  ];
16226
- function deepCopy$1(values) {
16227
- return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
16240
+ function deepCopy(values) {
16241
+ return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
16228
16242
  }
16229
16243
  class ChipsTestPage {
16230
16244
  constructor(formBuilder) {
16231
16245
  this.formBuilder = formBuilder;
16232
- this._items = deepCopy$1(FAKE_ENTITIES$1);
16246
+ this._items = deepCopy(FAKE_ENTITIES);
16233
16247
  this._$items = new BehaviorSubject(undefined);
16234
16248
  this.autocompleteFields = new MatAutocompleteConfigHolder();
16235
16249
  this.form = formBuilder.group({
@@ -16248,7 +16262,7 @@ class ChipsTestPage {
16248
16262
  });
16249
16263
  // From items
16250
16264
  this.autocompleteFields.add('entity-items', {
16251
- items: FAKE_ENTITIES$1.slice(),
16265
+ items: FAKE_ENTITIES.slice(),
16252
16266
  attributes: ['label', 'name'],
16253
16267
  displayWith: this.entityToString
16254
16268
  });
@@ -16269,15 +16283,15 @@ class ChipsTestPage {
16269
16283
  const data = {
16270
16284
  entity: [],
16271
16285
  // THis item is NOT in the items list => i should be displayed anyway
16272
- entityInitial: FAKE_ENTITIES$1.slice(1, 2),
16273
- disableEntity: FAKE_ENTITIES$1.slice(1, 2)
16286
+ entityInitial: FAKE_ENTITIES.slice(1, 2),
16287
+ disableEntity: FAKE_ENTITIES.slice(1, 2)
16274
16288
  };
16275
16289
  this.form.setValue(data);
16276
16290
  });
16277
16291
  }
16278
16292
  loadItems() {
16279
16293
  return __awaiter(this, void 0, void 0, function* () {
16280
- this._$items.next(deepCopy$1(FAKE_ENTITIES$1));
16294
+ this._$items.next(deepCopy(FAKE_ENTITIES));
16281
16295
  });
16282
16296
  }
16283
16297
  entityToString(item) {
@@ -16309,7 +16323,7 @@ ChipsTestPage.ctorParameters = () => [
16309
16323
  { type: FormBuilder }
16310
16324
  ];
16311
16325
 
16312
- const routes = [
16326
+ const routes$1 = [
16313
16327
  {
16314
16328
  path: '',
16315
16329
  pathMatch: 'full',
@@ -16356,7 +16370,7 @@ MaterialTestingModule.decorators = [
16356
16370
  ReactiveFormsModule,
16357
16371
  SharedMaterialModule,
16358
16372
  TranslateModule.forChild(),
16359
- RouterModule.forChild(routes)
16373
+ RouterModule.forChild(routes$1)
16360
16374
  ],
16361
16375
  declarations: [
16362
16376
  MaterialTestingPage,
@@ -16449,20 +16463,21 @@ RegisterModal.propDecorators = {
16449
16463
 
16450
16464
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
16451
16465
  class AppForm {
16452
- constructor(dateAdapter, form, settings) {
16453
- this.dateAdapter = dateAdapter;
16454
- this.settings = settings;
16455
- this._subscription = new Subscription();
16466
+ constructor(injector, form) {
16467
+ this.error = null;
16456
16468
  this._enable = false;
16457
16469
  this._loading = true;
16458
- this.error = null;
16470
+ this.i18nFieldPrefix = null;
16471
+ this._subscription = new Subscription();
16459
16472
  this.debug = false;
16460
16473
  this.onCancel = new EventEmitter();
16461
16474
  this.onSubmit = new EventEmitter();
16462
16475
  if (form)
16463
16476
  this.setForm(form);
16464
- this.autocompleteHelper = new MatAutocompleteConfigHolder(settings && {
16465
- getUserAttributes: (a, b) => settings.getFieldDisplayAttributes(a, b)
16477
+ this.settings = injector.get(LocalSettingsService);
16478
+ this.errorTranslator = injector.get(FormErrorAdapter);
16479
+ this.autocompleteHelper = new MatAutocompleteConfigHolder(this.settings && {
16480
+ getUserAttributes: (a, b) => this.settings.getFieldDisplayAttributes(a, b)
16466
16481
  });
16467
16482
  this.autocompleteFields = this.autocompleteHelper.fields;
16468
16483
  }
@@ -16522,6 +16537,9 @@ class AppForm {
16522
16537
  }
16523
16538
  ngOnInit() {
16524
16539
  this._enable ? this.enable() : this.disable();
16540
+ this.errorTranslatorOptions = this.errorTranslatorOptions || {
16541
+ controlPathTranslator: this
16542
+ };
16525
16543
  }
16526
16544
  ngOnDestroy() {
16527
16545
  this._subscription.unsubscribe();
@@ -16630,7 +16648,18 @@ class AppForm {
16630
16648
  if (!opts || opts.emitEvent !== false)
16631
16649
  this.markForCheck();
16632
16650
  }
16651
+ translateControlPath(path) {
16652
+ return this.getFieldName(path);
16653
+ }
16633
16654
  /* -- protected methods -- */
16655
+ getFormError(form, opts) {
16656
+ if (!form || !this.errorTranslator)
16657
+ return undefined;
16658
+ return this.errorTranslator.translateErrors(this.form, Object.assign({ controlPathTranslator: this }, opts));
16659
+ }
16660
+ getFieldName(path) {
16661
+ return (this.i18nFieldPrefix || '') + changeCaseToUnderscore(path).toUpperCase();
16662
+ }
16634
16663
  registerSubscription(sub) {
16635
16664
  return this._subscription.add(sub);
16636
16665
  }
@@ -16646,25 +16675,25 @@ AppForm.decorators = [
16646
16675
  { type: Directive }
16647
16676
  ];
16648
16677
  AppForm.ctorParameters = () => [
16649
- { type: undefined },
16650
- { type: FormGroup },
16651
- { type: LocalSettingsService }
16678
+ { type: Injector },
16679
+ { type: FormGroup }
16652
16680
  ];
16653
16681
  AppForm.propDecorators = {
16654
16682
  debug: [{ type: Input }],
16655
16683
  tabindex: [{ type: Input }],
16684
+ errorTranslatorOptions: [{ type: Input }],
16656
16685
  form: [{ type: Input }],
16657
16686
  onCancel: [{ type: Output }],
16658
16687
  onSubmit: [{ type: Output }]
16659
16688
  };
16660
16689
 
16661
16690
  class AuthForm extends AppForm {
16662
- constructor(platform, dateAdapter, formBuilder, settings, configService, modalCtrl, network, cd, environment) {
16663
- super(dateAdapter, formBuilder.group({
16691
+ constructor(injector, platform, formBuilder, settings, configService, modalCtrl, network, cd, environment) {
16692
+ super(injector, formBuilder.group({
16664
16693
  username: [null, Validators.required],
16665
16694
  password: [null, Validators.required],
16666
16695
  offline: [network.offline]
16667
- }), settings);
16696
+ }));
16668
16697
  this.configService = configService;
16669
16698
  this.modalCtrl = modalCtrl;
16670
16699
  this.network = network;
@@ -16756,8 +16785,8 @@ AuthForm.decorators = [
16756
16785
  },] }
16757
16786
  ];
16758
16787
  AuthForm.ctorParameters = () => [
16788
+ { type: Injector },
16759
16789
  { type: PlatformService },
16760
- { type: DateAdapter },
16761
16790
  { type: FormBuilder },
16762
16791
  { type: LocalSettingsService },
16763
16792
  { type: ConfigService },
@@ -17299,7 +17328,7 @@ class UserSettingsValidatorService extends AppValidatorService {
17299
17328
  });
17300
17329
  }
17301
17330
  }
17302
- UserSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(ɵɵinject(FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
17331
+ UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
17303
17332
  UserSettingsValidatorService.decorators = [
17304
17333
  { type: Injectable, args: [{ providedIn: 'root' },] }
17305
17334
  ];
@@ -17343,7 +17372,7 @@ class AccountValidatorService extends AppValidatorService {
17343
17372
  return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
17344
17373
  }
17345
17374
  }
17346
- AccountValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
17375
+ AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
17347
17376
  AccountValidatorService.decorators = [
17348
17377
  { type: Injectable, args: [{ providedIn: 'root' },] }
17349
17378
  ];
@@ -17353,9 +17382,8 @@ AccountValidatorService.ctorParameters = () => [
17353
17382
  ];
17354
17383
 
17355
17384
  class AccountPage extends AppForm {
17356
- constructor(dateAdapter, router, formBuilder, accountService, validatorService, settingsValidatorService, translate, settings, cd, locales) {
17357
- super(dateAdapter, validatorService.getFormGroup(accountService.account), settings);
17358
- this.dateAdapter = dateAdapter;
17385
+ constructor(injector, router, formBuilder, accountService, validatorService, settingsValidatorService, translate, settings, cd, locales) {
17386
+ super(injector, validatorService.getFormGroup(accountService.account));
17359
17387
  this.router = router;
17360
17388
  this.formBuilder = formBuilder;
17361
17389
  this.accountService = accountService;
@@ -17520,7 +17548,7 @@ AccountPage.decorators = [
17520
17548
  },] }
17521
17549
  ];
17522
17550
  AccountPage.ctorParameters = () => [
17523
- { type: DateAdapter },
17551
+ { type: Injector },
17524
17552
  { type: Router },
17525
17553
  { type: FormBuilder },
17526
17554
  { type: AccountService },
@@ -17877,7 +17905,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
17877
17905
  });
17878
17906
  }
17879
17907
  }
17880
- LocalSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(ɵɵinject(FormBuilder), ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
17908
+ LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
17881
17909
  LocalSettingsValidatorService.decorators = [
17882
17910
  { type: Injectable, args: [{ providedIn: 'root' },] }
17883
17911
  ];
@@ -17887,9 +17915,8 @@ LocalSettingsValidatorService.ctorParameters = () => [
17887
17915
  ];
17888
17916
 
17889
17917
  class SettingsPage extends AppForm {
17890
- constructor(dateAdapter, platform, router, validatorService, alertCtrl, translate, formBuilder, accountService, settings, cd, network, locales) {
17891
- super(dateAdapter, validatorService.getFormGroup(), settings);
17892
- this.dateAdapter = dateAdapter;
17918
+ constructor(injector, platform, router, validatorService, alertCtrl, translate, formBuilder, accountService, settings, cd, network, locales) {
17919
+ super(injector, validatorService.getFormGroup());
17893
17920
  this.platform = platform;
17894
17921
  this.router = router;
17895
17922
  this.validatorService = validatorService;
@@ -18155,7 +18182,7 @@ SettingsPage.decorators = [
18155
18182
  },] }
18156
18183
  ];
18157
18184
  SettingsPage.ctorParameters = () => [
18158
- { type: DateAdapter },
18185
+ { type: Injector },
18159
18186
  { type: PlatformService },
18160
18187
  { type: Router },
18161
18188
  { type: LocalSettingsValidatorService },
@@ -18171,8 +18198,7 @@ SettingsPage.ctorParameters = () => [
18171
18198
 
18172
18199
  class AppPropertiesForm extends AppForm {
18173
18200
  constructor(injector, formBuilder, dateAdapter, settings, cd, formGroupDir) {
18174
- super(dateAdapter, null, settings);
18175
- this.injector = injector;
18201
+ super(injector, null);
18176
18202
  this.formBuilder = formBuilder;
18177
18203
  this.dateAdapter = dateAdapter;
18178
18204
  this.settings = settings;
@@ -18284,7 +18310,7 @@ AppPropertiesForm.propDecorators = {
18284
18310
 
18285
18311
  class AppListForm extends AppForm {
18286
18312
  constructor(injector, formBuilder, dateAdapter, settings, cd, formGroupDir) {
18287
- super(dateAdapter, null, settings);
18313
+ super(injector, null);
18288
18314
  this.injector = injector;
18289
18315
  this.formBuilder = formBuilder;
18290
18316
  this.dateAdapter = dateAdapter;
@@ -18497,7 +18523,7 @@ class IsOnFieldModePipe {
18497
18523
  return value === 'FIELD';
18498
18524
  }
18499
18525
  }
18500
- IsOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18526
+ IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18501
18527
  IsOnFieldModePipe.decorators = [
18502
18528
  { type: Pipe, args: [{
18503
18529
  name: 'isOnField'
@@ -18509,7 +18535,7 @@ class IsNotOnFieldModePipe {
18509
18535
  return value !== 'FIELD';
18510
18536
  }
18511
18537
  }
18512
- IsNotOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18538
+ IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18513
18539
  IsNotOnFieldModePipe.decorators = [
18514
18540
  { type: Pipe, args: [{
18515
18541
  name: 'isNotOnField'
@@ -18524,7 +18550,7 @@ class PersonToStringPipe {
18524
18550
  return PersonUtils.personToString(value);
18525
18551
  }
18526
18552
  }
18527
- PersonToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18553
+ PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18528
18554
  PersonToStringPipe.decorators = [
18529
18555
  { type: Pipe, args: [{
18530
18556
  name: 'personToString'
@@ -18870,7 +18896,7 @@ class IsLoginAccountPipe {
18870
18896
  return value && value.pubkey && true;
18871
18897
  }
18872
18898
  }
18873
- IsLoginAccountPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
18899
+ IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
18874
18900
  IsLoginAccountPipe.decorators = [
18875
18901
  { type: Pipe, args: [{
18876
18902
  name: 'isLogin'
@@ -18882,7 +18908,7 @@ class AccountToStringPipe {
18882
18908
  return accountToString(value);
18883
18909
  }
18884
18910
  }
18885
- AccountToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
18911
+ AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
18886
18912
  AccountToStringPipe.decorators = [
18887
18913
  { type: Pipe, args: [{
18888
18914
  name: 'accountToString'
@@ -18897,7 +18923,7 @@ class DepartmentToStringPipe {
18897
18923
  return departmentToString(value);
18898
18924
  }
18899
18925
  }
18900
- DepartmentToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
18926
+ DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
18901
18927
  DepartmentToStringPipe.decorators = [
18902
18928
  { type: Pipe, args: [{
18903
18929
  name: 'departmentToString'
@@ -18923,7 +18949,7 @@ class MenuService {
18923
18949
  this._visibleSubject.next(value);
18924
18950
  }
18925
18951
  }
18926
- MenuService.ɵprov = ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
18952
+ MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
18927
18953
  MenuService.decorators = [
18928
18954
  { type: Injectable, args: [{
18929
18955
  providedIn: 'root'
@@ -19417,7 +19443,7 @@ class AuthGuardService {
19417
19443
  }));
19418
19444
  }
19419
19445
  }
19420
- AuthGuardService.ɵprov = ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(ɵɵinject(AccountService), ɵɵinject(ModalController), ɵɵinject(Router), ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
19446
+ 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" });
19421
19447
  AuthGuardService.decorators = [
19422
19448
  { type: Injectable, args: [{ providedIn: 'root' },] }
19423
19449
  ];
@@ -19465,7 +19491,7 @@ class BaseEntityService extends BaseGraphqlService {
19465
19491
  query,
19466
19492
  variables: { id },
19467
19493
  fetchPolicy: opts && opts.fetchPolicy || undefined,
19468
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19494
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19469
19495
  })
19470
19496
  .pipe(map(({ data }) => (!opts || opts.toEntity !== false)
19471
19497
  ? (data && this.fromObject(data))
@@ -19480,7 +19506,7 @@ class BaseEntityService extends BaseGraphqlService {
19480
19506
  query,
19481
19507
  variables: { id },
19482
19508
  fetchPolicy: opts && opts.fetchPolicy || undefined,
19483
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19509
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
19484
19510
  });
19485
19511
  // Convert to entity
19486
19512
  return (!opts || opts.toEntity !== false)
@@ -19511,7 +19537,7 @@ class BaseEntityService extends BaseGraphqlService {
19511
19537
  totalFieldName: withTotal ? 'total' : undefined,
19512
19538
  insertFilterFn: filter && filter.asFilterFn(),
19513
19539
  variables,
19514
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
19540
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
19515
19541
  fetchPolicy: opts && opts.fetchPolicy || undefined
19516
19542
  })
19517
19543
  .pipe(map(({ data, total }) => {
@@ -19547,7 +19573,7 @@ class BaseEntityService extends BaseGraphqlService {
19547
19573
  const { data, total } = yield this.graphql.query({
19548
19574
  query,
19549
19575
  variables,
19550
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
19576
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
19551
19577
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
19552
19578
  });
19553
19579
  const entities = (!opts || opts.toEntity !== false) ?
@@ -19586,7 +19612,7 @@ class BaseEntityService extends BaseGraphqlService {
19586
19612
  variables: {
19587
19613
  filter: filter && filter.asPodObject()
19588
19614
  },
19589
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
19615
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
19590
19616
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
19591
19617
  });
19592
19618
  return res.total;
@@ -19619,7 +19645,7 @@ class BaseEntityService extends BaseGraphqlService {
19619
19645
  variables: {
19620
19646
  data: json
19621
19647
  },
19622
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19648
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19623
19649
  update: (proxy, { data }) => {
19624
19650
  const savedEntities = data && data.data;
19625
19651
  if (savedEntities) {
@@ -19675,7 +19701,7 @@ class BaseEntityService extends BaseGraphqlService {
19675
19701
  variables: {
19676
19702
  data: json
19677
19703
  },
19678
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19704
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19679
19705
  update: (cache, { data }) => {
19680
19706
  // Update entity
19681
19707
  const savedEntity = data && data.data;
@@ -19723,7 +19749,7 @@ class BaseEntityService extends BaseGraphqlService {
19723
19749
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19724
19750
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19725
19751
  variables: { ids },
19726
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19752
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19727
19753
  update: (cache, res) => {
19728
19754
  // Remove from cache
19729
19755
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19764,7 +19790,7 @@ class BaseEntityService extends BaseGraphqlService {
19764
19790
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19765
19791
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19766
19792
  variables: { id },
19767
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19793
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19768
19794
  update: (proxy, res) => {
19769
19795
  // Remove from cache
19770
19796
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19797,7 +19823,7 @@ class BaseEntityService extends BaseGraphqlService {
19797
19823
  query: opts && opts.query || this.subscriptions.listenChanges,
19798
19824
  variables,
19799
19825
  error: {
19800
- code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
19826
+ code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
19801
19827
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
19802
19828
  }
19803
19829
  })
@@ -19972,7 +19998,7 @@ class EntitiesTableDataSource extends TableDataSource {
19972
19998
  if (this._debug)
19973
19999
  invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
19974
20000
  // Stop with an error
19975
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20001
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
19976
20002
  }
19977
20003
  this._editingRowCount = 0;
19978
20004
  let data;
@@ -20043,12 +20069,10 @@ class EntitiesTableDataSource extends TableDataSource {
20043
20069
  this._stopWatching$.next();
20044
20070
  }
20045
20071
  waitIdle(debounceTimeMs) {
20046
- return __awaiter(this, void 0, void 0, function* () {
20047
- return firstFalsePromise(this.loadingSubject
20048
- .asObservable()
20049
- .pipe(debounceTime(debounceTimeMs || 100) // if not started yet, wait
20050
- ));
20051
- });
20072
+ return firstFalsePromise(this.loadingSubject
20073
+ .asObservable()
20074
+ .pipe(debounceTime(debounceTimeMs || 100) // if not started yet, wait
20075
+ ));
20052
20076
  }
20053
20077
  confirmCreate(row) {
20054
20078
  if (!super.confirmCreate(row))
@@ -20477,7 +20501,7 @@ class AppTable {
20477
20501
  this.saveBeforeSort = toBoolean(this.saveBeforeSort, !this.readOnly); // force to false when readonly
20478
20502
  this.saveBeforeFilter = toBoolean(this.saveBeforeFilter, !this.readOnly); // force to false when readonly
20479
20503
  this.keepEditedRowOnSave = toBoolean(this.keepEditedRowOnSave, this.inlineEdition);
20480
- this.translateErrorOptions = this.translateErrorOptions || { separator: ', ', pathTranslateService: this }; // Can be override in subclasses constructors
20504
+ this.errorTranslatorOptions = this.errorTranslatorOptions || { separator: ', ', controlPathTranslator: this }; // Can be override in subclasses constructors
20481
20505
  // Check ask user confirmation is possible
20482
20506
  if (this.confirmBeforeDelete && !this.alertCtrl)
20483
20507
  throw Error('Missing \'alertCtrl\' or \'injector\' in component\'s constructor.');
@@ -20683,7 +20707,7 @@ class AppTable {
20683
20707
  if (previousRow && (previousRow.id === -1) && ((_a = previousRow.validator) === null || _a === void 0 ? void 0 : _a.invalid) && !((_b = previousRow.validator) === null || _b === void 0 ? void 0 : _b.dirty)) {
20684
20708
  this.deleteNewRow(event, previousRow);
20685
20709
  // Wait deletion is done, then edit previous row (by id, because of reloading)
20686
- firstFalsePromise(this.loadingSubject)
20710
+ this.waitIdle()
20687
20711
  .then(() => this.editRowById(event, row.id, { focusColumn: this.lastUserColumn }));
20688
20712
  return true;
20689
20713
  }
@@ -20796,14 +20820,14 @@ class AppTable {
20796
20820
  return __awaiter(this, void 0, void 0, function* () {
20797
20821
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
20798
20822
  if (this.readOnly) {
20799
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20823
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20800
20824
  }
20801
20825
  this.resetError();
20802
20826
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
20803
20827
  this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
20804
20828
  const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
20805
20829
  if (!this.confirmEditCreate()) {
20806
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20830
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20807
20831
  }
20808
20832
  // Mark as saving
20809
20833
  this.markAsSaving();
@@ -20919,7 +20943,7 @@ class AppTable {
20919
20943
  deleteRows(event, rows, opts) {
20920
20944
  return __awaiter(this, void 0, void 0, function* () {
20921
20945
  if (this.readOnly) {
20922
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20946
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20923
20947
  }
20924
20948
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
20925
20949
  return 0; // SKip
@@ -20970,30 +20994,34 @@ class AppTable {
20970
20994
  });
20971
20995
  }
20972
20996
  selectRowById(id) {
20973
- if (id === undefined)
20974
- return Promise.resolve(false);
20975
- return firstFalsePromise(this.loadingSubject)
20976
- .then(() => this.dataSource.getRow(id))
20977
- .then(row => row && this.clickRow(null, row));
20997
+ return __awaiter(this, void 0, void 0, function* () {
20998
+ if (id === undefined)
20999
+ return false;
21000
+ yield this.waitIdle();
21001
+ const row = this.dataSource.getRow(id);
21002
+ return this.clickRow(null, row);
21003
+ });
20978
21004
  }
20979
21005
  /**
20980
21006
  * Try to select row by data. Will use dataEquals() (that call EntityUtils.equals()) to find same row's data
20981
21007
  * @param data
20982
21008
  */
20983
21009
  selectRowByData(data) {
20984
- if (data === undefined)
20985
- return Promise.resolve(false);
20986
- return firstFalsePromise(this.loadingSubject)
20987
- .then(() => this.dataSource.getRows())
20988
- .then(rows => rows.find(row => this.equals(row.currentData, data)))
20989
- .then(row => row && this.clickRow(null, row));
21010
+ return __awaiter(this, void 0, void 0, function* () {
21011
+ if (data === undefined)
21012
+ return Promise.resolve(false);
21013
+ yield this.waitIdle();
21014
+ const row = ((yield this.dataSource.getRows()) || [])
21015
+ .find(row => this.equals(row.currentData, data));
21016
+ return row && this.clickRow(null, row);
21017
+ });
20990
21018
  }
20991
21019
  clickRow(event, row) {
20992
21020
  if (this.loading) {
20993
21021
  // Wait while loading, and loop
20994
21022
  if (this.debug)
20995
21023
  console.debug("[table] Waiting before apply clickRow() (datasource is busy)...");
20996
- firstFalsePromise(this.loadingSubject).then(() => this.clickRow(event, row));
21024
+ this.waitIdle().then(() => this.clickRow(event, row));
20997
21025
  return false;
20998
21026
  }
20999
21027
  // DEBUG
@@ -21019,6 +21047,9 @@ class AppTable {
21019
21047
  moveRow(id, direction) {
21020
21048
  this.dataSource.move(id, direction);
21021
21049
  }
21050
+ waitIdle() {
21051
+ return firstFalsePromise(this.loadingSubject);
21052
+ }
21022
21053
  openSelectColumnsModal(event) {
21023
21054
  return __awaiter(this, void 0, void 0, function* () {
21024
21055
  // Copy current columns (deep copy)
@@ -21051,7 +21082,7 @@ class AppTable {
21051
21082
  // When target wait for a complete (e.g. IonRefresher)
21052
21083
  if ((event === null || event === void 0 ? void 0 : event.target) && event.target.complete) {
21053
21084
  setTimeout(() => __awaiter(this, void 0, void 0, function* () {
21054
- yield firstFalsePromise(this.loadingSubject);
21085
+ yield this.waitIdle();
21055
21086
  event.target.complete();
21056
21087
  }));
21057
21088
  }
@@ -21375,7 +21406,7 @@ class AppTable {
21375
21406
  return this._autocompleteConfigHolder.add(fieldName, options);
21376
21407
  }
21377
21408
  getI18nColumnName(columnName) {
21378
- return this.i18nColumnPrefix + changeCaseToUnderscore(columnName).toUpperCase();
21409
+ return (this.i18nColumnPrefix || '') + changeCaseToUnderscore(columnName).toUpperCase();
21379
21410
  }
21380
21411
  generateTableId() {
21381
21412
  return this.location.path(true).replace(/[?].*$/g, '').replace(/\/[\d]+/g, '_id') + '_' + this.constructor.name;
@@ -21478,7 +21509,7 @@ class AppTable {
21478
21509
  row = row || this.editedRow;
21479
21510
  if (!row || !this.formErrorAdapter)
21480
21511
  return undefined;
21481
- return this.formErrorAdapter.translateErrors(row.validator, Object.assign(Object.assign({}, this.translateErrorOptions), opts));
21512
+ return this.formErrorAdapter.translateErrors(row.validator, Object.assign(Object.assign({}, this.errorTranslatorOptions), opts));
21482
21513
  }
21483
21514
  setError(value, opts) {
21484
21515
  if (this.errorSubject.value !== value) {
@@ -22199,6 +22230,7 @@ class AppEntityEditor extends AppTabEditor {
22199
22230
  // Default options
22200
22231
  enableListenChanges: (injector.get(ENVIRONMENT).listenRemoteChanges === true), pathIdAttribute: 'id', autoLoad: true, autoUpdateRoute: true, i18nPrefix: '' }, options);
22201
22232
  this.settings = injector.get(LocalSettingsService);
22233
+ this.formErrorAdapter = injector.get(FormErrorAdapter);
22202
22234
  this.cd = injector.get(ChangeDetectorRef);
22203
22235
  this.dateFormat = injector.get(DateFormatPipe);
22204
22236
  this.toastController = injector.get(ToastController);
@@ -22278,7 +22310,6 @@ class AppEntityEditor extends AppTabEditor {
22278
22310
  /**
22279
22311
  * Load data from the snapshot route
22280
22312
  *
22281
- * @param route
22282
22313
  * @protected
22283
22314
  */
22284
22315
  loadFromRoute() {
@@ -22323,7 +22354,7 @@ class AppEntityEditor extends AppTabEditor {
22323
22354
  try {
22324
22355
  const data = yield this.dataService.load(id, opts);
22325
22356
  if (!data)
22326
- throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
22357
+ throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
22327
22358
  this._usageMode = this.computeUsageMode(data);
22328
22359
  yield this.onEntityLoaded(data, opts);
22329
22360
  yield this.updateView(data, opts);
@@ -22367,7 +22398,7 @@ class AppEntityEditor extends AppTabEditor {
22367
22398
  const idChanged = isNotNil(data.id)
22368
22399
  && this.previousDataId !== undefined // Ignore if first loading (=undefined)
22369
22400
  && this.previousDataId !== data.id;
22370
- opts = Object.assign({ updateRoute: this._autoUpdateRoute && idChanged && !this.loading, openTabIndex: this._autoOpenNextTab && idChanged && isNil(this.previousDataId) && this.selectedTabIndex + 1 < this.tabCount ? this.selectedTabIndex + 1 : undefined }, opts);
22401
+ opts = Object.assign({ updateRoute: this._autoUpdateRoute && idChanged && !this.loading, openTabIndex: this._autoOpenNextTab && idChanged && this.computeNextTabIndex() }, opts);
22371
22402
  this.data = data;
22372
22403
  this.previousDataId = data.id || null;
22373
22404
  const promiseOrVoid = this.setValue(data);
@@ -22384,7 +22415,7 @@ class AppEntityEditor extends AppTabEditor {
22384
22415
  .then(() => this.updateTitle(data));
22385
22416
  }
22386
22417
  else {
22387
- // Update the tag group index
22418
+ // Update the next tab
22388
22419
  this.updateTabIndex(opts.openTabIndex);
22389
22420
  // Update the title.
22390
22421
  this.updateTitle(data);
@@ -22412,7 +22443,7 @@ class AppEntityEditor extends AppTabEditor {
22412
22443
  updateTabAndRoute(data, opts) {
22413
22444
  return __awaiter(this, void 0, void 0, function* () {
22414
22445
  this.queryParams = this.queryParams || {};
22415
- // Open the tab group
22446
+ // Open the next tab
22416
22447
  this.updateTabIndex(opts && opts.openTabIndex);
22417
22448
  // Save the opened tab into the queryParams
22418
22449
  this.queryParams.tab = this.selectedTabIndex;
@@ -22438,12 +22469,9 @@ class AppEntityEditor extends AppTabEditor {
22438
22469
  * Update the route location, and open the next tab
22439
22470
  */
22440
22471
  updateTabIndex(tabIndex) {
22441
- // Open the second tab
22442
- if (isNotNil(tabIndex)) {
22443
- if (this.selectedTabIndex !== tabIndex) {
22444
- this.selectedTabIndex = tabIndex;
22445
- this.markForCheck();
22446
- }
22472
+ if (isNotNil(tabIndex) && tabIndex > this.selectedTabIndex) {
22473
+ this.selectedTabIndex = tabIndex;
22474
+ this.markForCheck();
22447
22475
  }
22448
22476
  }
22449
22477
  saveAndClose(event, options) {
@@ -22466,7 +22494,13 @@ class AppEntityEditor extends AppTabEditor {
22466
22494
  return this.goBack();
22467
22495
  });
22468
22496
  }
22469
- save(event, options) {
22497
+ /**
22498
+ * Save the editor, by calling the dataService.save().
22499
+ * Ensure that editor if valid. If not, display an error
22500
+ * @param event
22501
+ * @param opts
22502
+ */
22503
+ save(event, opts) {
22470
22504
  return __awaiter(this, void 0, void 0, function* () {
22471
22505
  if (this.loading || this.saving) {
22472
22506
  console.debug('[data-editor] Skip save: editor is busy (loading or saving)');
@@ -22495,10 +22529,10 @@ class AppEntityEditor extends AppTabEditor {
22495
22529
  const data = yield this.getValue();
22496
22530
  this.disable();
22497
22531
  // Save form
22498
- const updatedData = yield this.dataService.save(data, options);
22532
+ const updatedData = yield this.dataService.save(data, opts);
22499
22533
  yield this.onEntitySaved(updatedData);
22500
22534
  // Update the view (e.g metadata)
22501
- yield this.updateView(updatedData, options);
22535
+ yield this.updateView(updatedData, opts);
22502
22536
  // Subscribe to remote changes
22503
22537
  if (!this.hasRemoteListener)
22504
22538
  this.startListenRemoteChanges();
@@ -22611,7 +22645,7 @@ class AppEntityEditor extends AppTabEditor {
22611
22645
  });
22612
22646
  }
22613
22647
  setError(err) {
22614
- console.error('[data-editor] ' + err && err.message || err, err);
22648
+ console.error('[entity-editor] Error: ' + err && err.message || '', err);
22615
22649
  let userMessage = err && err.message && this.translate.instant(err.message) || err;
22616
22650
  // Add details error (if any) under the main message
22617
22651
  const detailMessage = err && err.details && (err.details.message || err.details) || undefined;
@@ -22623,6 +22657,10 @@ class AppEntityEditor extends AppTabEditor {
22623
22657
  this.error = userMessage;
22624
22658
  }
22625
22659
  /* -- protected methods -- */
22660
+ computeNextTabIndex() {
22661
+ const nextTabIndex = this.selectedTabIndex + 1;
22662
+ return nextTabIndex < this.tabCount ? nextTabIndex : this.selectedTabIndex;
22663
+ }
22626
22664
  unload() {
22627
22665
  return __awaiter(this, void 0, void 0, function* () {
22628
22666
  this.form.reset();
@@ -23216,7 +23254,7 @@ class UserEventService extends BaseGraphqlService {
23216
23254
  EntityUtils.copyIdAndUpdateDate(source, target);
23217
23255
  }
23218
23256
  }
23219
- 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" });
23257
+ 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" });
23220
23258
  UserEventService.decorators = [
23221
23259
  { type: Injectable, args: [{ providedIn: 'root' },] }
23222
23260
  ];
@@ -23601,7 +23639,7 @@ class PersonService extends BaseEntityService {
23601
23639
  return target;
23602
23640
  }
23603
23641
  }
23604
- PersonService.ɵprov = ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(ɵɵinject(GraphqlService), ɵɵinject(PlatformService), ɵɵinject(NetworkService), ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
23642
+ 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" });
23605
23643
  PersonService.decorators = [
23606
23644
  { type: Injectable, args: [{ providedIn: 'root' },] }
23607
23645
  ];
@@ -23632,7 +23670,7 @@ class PersonValidatorService {
23632
23670
  return this.formBuilder.group(formConfig);
23633
23671
  }
23634
23672
  }
23635
- PersonValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
23673
+ PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
23636
23674
  PersonValidatorService.decorators = [
23637
23675
  { type: Injectable, args: [{ providedIn: 'root' },] }
23638
23676
  ];
@@ -23838,16 +23876,16 @@ AdminModule.decorators = [
23838
23876
  ];
23839
23877
  AdminModule.ctorParameters = () => [];
23840
23878
 
23841
- const ɵ0$a = {
23879
+ const ɵ0 = {
23842
23880
  profile: 'ADMIN'
23843
23881
  };
23844
- const routes$1 = [
23882
+ const routes = [
23845
23883
  {
23846
23884
  path: 'users',
23847
23885
  pathMatch: 'full',
23848
23886
  component: UsersPage,
23849
23887
  canActivate: [AuthGuardService],
23850
- data: ɵ0$a
23888
+ data: ɵ0
23851
23889
  }
23852
23890
  ];
23853
23891
  class AdminRoutingModule {
@@ -23857,13 +23895,13 @@ AdminRoutingModule.decorators = [
23857
23895
  imports: [
23858
23896
  SharedRoutingModule,
23859
23897
  AdminModule,
23860
- RouterModule.forChild(routes$1)
23898
+ RouterModule.forChild(routes)
23861
23899
  ],
23862
23900
  exports: [RouterModule]
23863
23901
  },] }
23864
23902
  ];
23865
23903
 
23866
- const ErrorCodes$2 = {
23904
+ const ErrorCodes = {
23867
23905
  LOAD_PERSONS_ERROR: 100,
23868
23906
  SAVE_PERSONS_ERROR: 101,
23869
23907
  DELETE_PERSONS_ERROR: 102,
@@ -23875,5 +23913,5 @@ const ErrorCodes$2 = {
23875
23913
  * Generated bundle index. Do not edit.
23876
23914
  */
23877
23915
 
23878
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes$2 as ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorAdapter, FormErrorTranslatePipe, FormFieldValuesHolder, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitIdle, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
23916
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorAdapter, FormErrorTranslatePipe, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitIdle, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
23879
23917
  //# sourceMappingURL=sumaris-net.ngx-components.js.map