@sumaris-net/ngx-components 0.13.0 → 0.13.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,9 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, Pipe, Injectable, Directive, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Inject, Renderer2 } from '@angular/core';
3
- import * as i1$3 from '@angular/common';
1
+ import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, ɵɵdefineInjectable, ɵɵinject, Pipe, Injectable, Directive, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, INJECTOR, Injector, Inject, Renderer2 } from '@angular/core';
4
2
  import { CommonModule, DOCUMENT, Location } from '@angular/common';
5
3
  import { CdkTableModule } from '@angular/cdk/table';
6
4
  import { A11yModule } from '@angular/cdk/a11y';
7
5
  import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
8
6
  import { ScrollingModule } from '@angular/cdk/scrolling';
9
- import * as i1$2 from '@angular/material/core';
10
7
  import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
11
8
  import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
12
9
  import { MatSortModule, MatSort } from '@angular/material/sort';
@@ -30,21 +27,16 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
30
27
  import { MatRadioModule } from '@angular/material/radio';
31
28
  import { MatBadgeModule } from '@angular/material/badge';
32
29
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
33
- import * as i2$1 from '@angular/material/dialog';
34
30
  import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
35
31
  import { MatAutocompleteModule, MatAutocompleteTrigger, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
36
32
  import { __awaiter, __decorate } from 'tslib';
37
- import * as i1$6 from '@angular/forms';
38
33
  import { NG_VALUE_ACCESSOR, FormGroupDirective, ReactiveFormsModule, AbstractControl, Validators, FormBuilder, FormControl, FormGroup, FormArray } from '@angular/forms';
39
34
  import { fromEvent, Subscription, BehaviorSubject, Subject, isObservable, merge, of, timer, noop as noop$8, Observable, defer, concat, combineLatest, EMPTY } from 'rxjs';
40
35
  import { filter, first, startWith, debounceTime, takeWhile, switchMap, tap, map, distinctUntilChanged, mergeMap, takeUntil, catchError, throttleTime } from 'rxjs/operators';
41
- import * as i1$1 from '@ngx-translate/core';
42
36
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
43
- import * as i1$4 from '@ionic/angular';
44
37
  import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, IonicRouteStrategy, NavParams, AlertController, MenuController, IonContent } from '@ionic/angular';
45
38
  import * as momentImported from 'moment';
46
39
  import { isMoment } from 'moment';
47
- import * as i1 from '@angular/material-moment-adapter';
48
40
  import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
49
41
  import { Keyboard } from '@ionic-native/keyboard/ngx';
50
42
  import { TextMaskModule } from 'angular2-text-mask';
@@ -54,36 +46,31 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
54
46
  import { MatDividerModule } from '@angular/material/divider';
55
47
  import { MatTooltipModule } from '@angular/material/tooltip';
56
48
  import { MatChipsModule } from '@angular/material/chips';
57
- import * as i3$3 from '@angular/router';
58
49
  import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
59
- import * as i1$5 from '@angular/platform-browser';
60
50
  import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
61
- import * as i2$2 from '@angular/common/http';
62
51
  import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
63
52
  import { ColorPickerModule } from 'ngx-color-picker';
64
- import { NativeAudio } from '@ionic-native/native-audio/ngx';
65
- import { Vibration } from '@ionic-native/vibration/ngx';
53
+ import { NativeAudio as NativeAudio$1 } from '@ionic-native/native-audio/ngx';
54
+ import { Vibration as Vibration$1 } from '@ionic-native/vibration/ngx';
66
55
  import { AudioManagement } from '@ionic-native/audio-management/ngx';
67
- import * as i2 from '@ionic-native/native-audio/ngx/index';
68
- import * as i3 from '@ionic-native/vibration/ngx/index';
69
- import * as i4 from '@ionic-native/audio-management/ngx/index';
56
+ import { NativeAudio } from '@ionic-native/native-audio/ngx/index';
57
+ import { Vibration } from '@ionic-native/vibration/ngx/index';
58
+ import { AudioManagement as AudioManagement$1 } from '@ionic-native/audio-management/ngx/index';
70
59
  import * as uuidv4Imported from 'uuid/v4';
71
60
  import { DragDropModule } from '@angular/cdk/drag-drop';
72
61
  import { MarkdownModule } from 'ngx-markdown';
73
62
  import { sign, box, hash, verify } from 'tweetnacl';
74
- import * as i3$1 from '@ionic/storage';
75
63
  import { Storage, IonicStorageModule } from '@ionic/storage';
76
64
  import 'zone.js/dist/zone-error';
77
- import { SplashScreen } from '@ionic-native/splash-screen/ngx';
78
- import { Connection, Network } from '@ionic-native/network/ngx';
79
- import { CacheService, CacheModule } from 'ionic-cache';
80
- import * as i6 from 'ionic-cache/dist/cache.service';
81
- import * as i9 from '@ionic-native/network/ngx/index';
82
- import * as i10 from '@ionic-native/splash-screen/ngx/index';
83
- import { StatusBar } from '@ionic-native/status-bar/ngx';
84
- import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
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';
72
+ import { InAppBrowser as InAppBrowser$1 } from '@ionic-native/in-app-browser/ngx';
85
73
  import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
86
- import * as i2$3 from 'apollo-angular';
87
74
  import { Apollo } from 'apollo-angular';
88
75
  import { WebSocketLink } from '@apollo/client/link/ws';
89
76
  import { getMainDefinition } from '@apollo/client/utilities';
@@ -91,12 +78,11 @@ import { RetryLink } from '@apollo/client/link/retry';
91
78
  import QueueLink from 'apollo-link-queue';
92
79
  import SerializingLink from 'apollo-link-serialize';
93
80
  import loggerLink from 'apollo-link-logger';
94
- import * as i3$2 from 'apollo-angular/http';
95
81
  import { HttpLink } from 'apollo-angular/http';
96
82
  import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
97
- import * as i13 from '@ionic-native/status-bar/ngx/index';
98
- import * as i14 from '@ionic-native/keyboard/ngx/index';
99
- import * as i16 from '@ionic-native/in-app-browser/ngx/index';
83
+ import { StatusBar } from '@ionic-native/status-bar/ngx/index';
84
+ import { Keyboard as Keyboard$1 } from '@ionic-native/keyboard/ngx/index';
85
+ import { InAppBrowser } from '@ionic-native/in-app-browser/ngx/index';
100
86
  import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
101
87
  import { SelectionModel } from '@angular/cdk/collections';
102
88
  import { NgxJdenticonModule } from 'ngx-jdenticon';
@@ -860,19 +846,19 @@ class MatAutocompleteConfigHolder {
860
846
  return this.fields[fieldName] || this.add(fieldName);
861
847
  }
862
848
  }
863
- const DEFAULT_VALUE_ACCESSOR$6 = {
849
+ const DEFAULT_VALUE_ACCESSOR = {
864
850
  provide: NG_VALUE_ACCESSOR,
865
851
  useExisting: forwardRef(() => MatAutocompleteField),
866
852
  multi: true
867
853
  };
868
- const noop$7 = () => { };
869
- const ɵ0$a = noop$7;
854
+ const noop = () => { };
855
+ const ɵ0 = noop;
870
856
  class MatAutocompleteField {
871
857
  constructor(cd, formGroupDir) {
872
858
  this.cd = cd;
873
859
  this.formGroupDir = formGroupDir;
874
- this._onChangeCallback = noop$7;
875
- this._onTouchedCallback = noop$7;
860
+ this._onChangeCallback = noop;
861
+ this._onTouchedCallback = noop;
876
862
  this._subscription = new Subscription();
877
863
  this._filter$ = new BehaviorSubject(undefined);
878
864
  this._reload$ = new Subject();
@@ -1388,7 +1374,7 @@ MatAutocompleteField.decorators = [
1388
1374
  // eslint-disable-next-line @angular-eslint/component-selector
1389
1375
  selector: 'mat-autocomplete-field',
1390
1376
  template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <!-- readonly -->\n <ng-container *ngIf=\"readonly; else writable\">\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n readonly>\n <ion-label>{{ displayWith(value) }}&nbsp;</ion-label>\n </ng-container>\n\n <ng-template #writable>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <a class=\"ion-padding mat-option \"\n *ngIf=\"_moreItemsCount\"\n (click)=\"_fetchMore$.emit($event)\" >\n <ion-label color=\"primary\" style=\"width: 100%;\">\n <span translate>COMMON.BTN_SHOW_MORE</span>\n <mat-icon class=\"ion-color-primary\">expand_more</mat-icon>\n </ion-label>\n </a>\n </ng-container>\n </mat-select>\n </ng-template>\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autoComplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keyup.arrowdown)=\"!autoComplete.showPanel && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autoComplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\" >\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content matSuffix select=\"[matSuffix]\"></ng-content>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n",
1391
- providers: [DEFAULT_VALUE_ACCESSOR$6],
1377
+ providers: [DEFAULT_VALUE_ACCESSOR],
1392
1378
  changeDetection: ChangeDetectionStrategy.OnPush,
1393
1379
  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}"]
1394
1380
  },] }
@@ -1462,7 +1448,7 @@ class DateFormatPipe {
1462
1448
  return this.dateAdapter.format(date, displayFormat);
1463
1449
  }
1464
1450
  }
1465
- DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1451
+ DateFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(ɵɵinject(MomentDateAdapter), ɵɵinject(TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1466
1452
  DateFormatPipe.decorators = [
1467
1453
  { type: Pipe, args: [{
1468
1454
  name: 'dateFormat'
@@ -1474,7 +1460,7 @@ DateFormatPipe.ctorParameters = () => [
1474
1460
  { type: TranslateService }
1475
1461
  ];
1476
1462
 
1477
- const moment$6 = momentImported;
1463
+ const moment = momentImported;
1478
1464
  class DateDiffDurationPipe {
1479
1465
  constructor(dateAdapter, translate) {
1480
1466
  this.dateAdapter = dateAdapter;
@@ -1490,17 +1476,17 @@ class DateDiffDurationPipe {
1490
1476
  return this.format(startDate, endDate);
1491
1477
  }
1492
1478
  format(startDate, endDate) {
1493
- const duration = moment$6.duration(endDate.diff(startDate));
1479
+ const duration = moment.duration(endDate.diff(startDate));
1494
1480
  if (duration.asMinutes() < 0)
1495
1481
  return '';
1496
- const timeDuration = moment$6(0)
1482
+ const timeDuration = moment(0)
1497
1483
  .hour(duration.hours())
1498
1484
  .minute(duration.minutes());
1499
1485
  const days = Math.floor(duration.asDays());
1500
1486
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
1501
1487
  }
1502
1488
  }
1503
- 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" });
1489
+ DateDiffDurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(ɵɵinject(DateAdapter), ɵɵinject(TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1504
1490
  DateDiffDurationPipe.decorators = [
1505
1491
  { type: Pipe, args: [{
1506
1492
  name: 'dateDiffDuration'
@@ -1521,7 +1507,7 @@ class DateFromNowPipe {
1521
1507
  return date ? date.fromNow(args && args.withoutSuffix) : '';
1522
1508
  }
1523
1509
  }
1524
- DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1510
+ DateFromNowPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(ɵɵinject(MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1525
1511
  DateFromNowPipe.decorators = [
1526
1512
  { type: Pipe, args: [{
1527
1513
  name: 'dateFromNow'
@@ -1590,7 +1576,7 @@ function formatToDD(value, opts) {
1590
1576
  value *= -1;
1591
1577
  }
1592
1578
  }
1593
- let degrees = roundFloat$1(value, opts.maxDecimals).toString();
1579
+ let degrees = roundFloat(value, opts.maxDecimals).toString();
1594
1580
  // Add sign
1595
1581
  let sign = negative ? '-' : '+';
1596
1582
  if (opts.placeholderChar) {
@@ -1641,7 +1627,7 @@ function formatToDDMMSS(value, opts) {
1641
1627
  }
1642
1628
  let degrees = Math.trunc(value);
1643
1629
  let minutes = Math.trunc((value - degrees) * 60);
1644
- let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1630
+ let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1645
1631
  while (seconds >= 60) {
1646
1632
  seconds -= 60;
1647
1633
  minutes += 1;
@@ -1709,7 +1695,7 @@ function formatToDDMM(value, opts) {
1709
1695
  }
1710
1696
  }
1711
1697
  let degrees = Math.trunc(value);
1712
- let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
1698
+ let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
1713
1699
  while (minutes >= 60) {
1714
1700
  minutes -= 60;
1715
1701
  degrees += 1;
@@ -1760,15 +1746,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
1760
1746
  return NaN;
1761
1747
  }
1762
1748
  if (pattern === 'DD')
1763
- return roundFloat$1(degrees, maxDecimals);
1749
+ return roundFloat(degrees, maxDecimals);
1764
1750
  const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
1765
1751
  const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
1766
1752
  const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
1767
1753
  const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
1768
1754
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
1769
- return roundFloat$1(degrees, maxDecimals);
1755
+ return roundFloat(degrees, maxDecimals);
1770
1756
  }
1771
- function roundFloat$1(input, maxDecimals) {
1757
+ function roundFloat(input, maxDecimals) {
1772
1758
  if (maxDecimals > 0) {
1773
1759
  const powDecimal = Math.pow(10, maxDecimals);
1774
1760
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -1788,7 +1774,7 @@ class LatLongFormatPipe {
1788
1774
  return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
1789
1775
  }
1790
1776
  }
1791
- LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1777
+ LatLongFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
1792
1778
  LatLongFormatPipe.decorators = [
1793
1779
  { type: Pipe, args: [{
1794
1780
  name: 'latLongFormat'
@@ -1800,7 +1786,7 @@ class LatitudeFormatPipe {
1800
1786
  this.transform = formatLatitude;
1801
1787
  }
1802
1788
  }
1803
- LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1789
+ LatitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
1804
1790
  LatitudeFormatPipe.decorators = [
1805
1791
  { type: Pipe, args: [{
1806
1792
  name: 'latitudeFormat'
@@ -1812,7 +1798,7 @@ class LongitudeFormatPipe {
1812
1798
  this.transform = formatLongitude;
1813
1799
  }
1814
1800
  }
1815
- LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1801
+ LongitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
1816
1802
  LongitudeFormatPipe.decorators = [
1817
1803
  { type: Pipe, args: [{
1818
1804
  name: 'longitudeFormat'
@@ -1832,7 +1818,7 @@ class NumberFormatPipe {
1832
1818
  }
1833
1819
  }
1834
1820
  }
1835
- NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1821
+ NumberFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
1836
1822
  NumberFormatPipe.decorators = [
1837
1823
  { type: Pipe, args: [{
1838
1824
  name: 'numberFormat'
@@ -1872,7 +1858,7 @@ class HighlightPipe {
1872
1858
  }
1873
1859
  }
1874
1860
  }
1875
- HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1861
+ HighlightPipe.ɵprov = ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
1876
1862
  HighlightPipe.decorators = [
1877
1863
  { type: Pipe, args: [{
1878
1864
  name: 'highlight'
@@ -1937,7 +1923,7 @@ FileSizePipe.decorators = [
1937
1923
  { type: Pipe, args: [{ name: 'fileSize' },] }
1938
1924
  ];
1939
1925
 
1940
- const moment$5 = momentImported;
1926
+ const moment$1 = momentImported;
1941
1927
  const DATE_UNIX_TIMESTAMP = 'X';
1942
1928
  const DATE_UNIX_MS_TIMESTAMP = 'x';
1943
1929
  class DateUtils {
@@ -1971,32 +1957,32 @@ function fromDateISOString(value) {
1971
1957
  if (!value || isMoment(value))
1972
1958
  return value;
1973
1959
  // Parse the input value, as a ISO date time
1974
- const date = moment$5(value, DATE_ISO_PATTERN);
1960
+ const date = moment$1(value, DATE_ISO_PATTERN);
1975
1961
  if (date.isValid())
1976
1962
  return date;
1977
1963
  // Not valid: trying to convert from unix timestamp
1978
1964
  if (typeof value === 'string') {
1979
1965
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
1980
1966
  if (value.length === 10) {
1981
- return moment$5(value, DATE_UNIX_TIMESTAMP);
1967
+ return moment$1(value, DATE_UNIX_TIMESTAMP);
1982
1968
  }
1983
1969
  else if (value.length === 13) {
1984
- return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
1970
+ return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
1985
1971
  }
1986
1972
  }
1987
1973
  console.warn('Unable to parse date: ' + value);
1988
1974
  return undefined;
1989
1975
  }
1990
1976
  function fromUnixTimestamp(timeInSec) {
1991
- return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
1977
+ return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
1992
1978
  }
1993
1979
  function fromUnixMsTimestamp(timeInMs) {
1994
- return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
1980
+ return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
1995
1981
  }
1996
1982
  function toDuration(value, unit) {
1997
1983
  if (!value)
1998
1984
  return undefined;
1999
- const duration = moment$5.duration(value, unit);
1985
+ const duration = moment$1.duration(value, unit);
2000
1986
  // fix 990+ ms
2001
1987
  if (duration.milliseconds() >= 990) {
2002
1988
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2025,7 +2011,7 @@ class DurationPipe {
2025
2011
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
2026
2012
  }
2027
2013
  }
2028
- DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2014
+ DurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(ɵɵinject(TranslateService)); }, token: DurationPipe, providedIn: "root" });
2029
2015
  DurationPipe.decorators = [
2030
2016
  { type: Pipe, args: [{
2031
2017
  name: 'duration'
@@ -2046,7 +2032,7 @@ class MathAbsPipe {
2046
2032
  }
2047
2033
  }
2048
2034
  }
2049
- MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2035
+ MathAbsPipe.ɵprov = ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2050
2036
  MathAbsPipe.decorators = [
2051
2037
  { type: Pipe, args: [{
2052
2038
  name: 'mathAbs'
@@ -2058,7 +2044,7 @@ class EvenPipe {
2058
2044
  return val % 2 === 0;
2059
2045
  }
2060
2046
  }
2061
- EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2047
+ EvenPipe.ɵprov = ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2062
2048
  EvenPipe.decorators = [
2063
2049
  { type: Pipe, args: [{
2064
2050
  name: 'even'
@@ -2070,7 +2056,7 @@ class OddPipe {
2070
2056
  return val % 2 !== 0;
2071
2057
  }
2072
2058
  }
2073
- OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2059
+ OddPipe.ɵprov = ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2074
2060
  OddPipe.decorators = [
2075
2061
  { type: Pipe, args: [{
2076
2062
  name: 'odd'
@@ -2178,7 +2164,7 @@ class MapGetPipe {
2178
2164
  return val[key];
2179
2165
  }
2180
2166
  }
2181
- MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2167
+ MapGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2182
2168
  MapGetPipe.decorators = [
2183
2169
  { type: Pipe, args: [{
2184
2170
  name: 'mapGet'
@@ -2192,7 +2178,7 @@ class MapKeysPipe {
2192
2178
  return Object.keys(map);
2193
2179
  }
2194
2180
  }
2195
- MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2181
+ MapKeysPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2196
2182
  MapKeysPipe.decorators = [
2197
2183
  { type: Pipe, args: [{
2198
2184
  name: 'mapKeys'
@@ -2206,7 +2192,7 @@ class MapValuesPipe {
2206
2192
  return Object.values(map);
2207
2193
  }
2208
2194
  }
2209
- MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2195
+ MapValuesPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2210
2196
  MapValuesPipe.decorators = [
2211
2197
  { type: Pipe, args: [{
2212
2198
  name: 'mapValues'
@@ -2219,7 +2205,7 @@ class IsNotNilOrBlankPipe {
2219
2205
  return isNotNilOrBlank(value);
2220
2206
  }
2221
2207
  }
2222
- IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2208
+ IsNotNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2223
2209
  IsNotNilOrBlankPipe.decorators = [
2224
2210
  { type: Pipe, args: [{
2225
2211
  name: 'isNotNilOrBlank'
@@ -2231,7 +2217,7 @@ class IsNilOrBlankPipe {
2231
2217
  return isNilOrBlank(value);
2232
2218
  }
2233
2219
  }
2234
- IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2220
+ IsNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2235
2221
  IsNilOrBlankPipe.decorators = [
2236
2222
  { type: Pipe, args: [{
2237
2223
  name: 'isNilOrBlank'
@@ -2243,7 +2229,7 @@ class ToStringPipe {
2243
2229
  return (value !== null && value !== undefined) ? value.toString() : '';
2244
2230
  }
2245
2231
  }
2246
- ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2232
+ ToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2247
2233
  ToStringPipe.decorators = [
2248
2234
  { type: Pipe, args: [{
2249
2235
  name: 'toString'
@@ -2255,7 +2241,7 @@ class StrLengthPipe {
2255
2241
  return value && value.length || 0;
2256
2242
  }
2257
2243
  }
2258
- StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2244
+ StrLengthPipe.ɵprov = ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2259
2245
  StrLengthPipe.decorators = [
2260
2246
  { type: Pipe, args: [{
2261
2247
  name: 'strLength'
@@ -2306,7 +2292,7 @@ class TranslateContextService {
2306
2292
  : parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
2307
2293
  }
2308
2294
  }
2309
- TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2295
+ TranslateContextService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(ɵɵinject(TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2310
2296
  TranslateContextService.decorators = [
2311
2297
  { type: Injectable, args: [{ providedIn: 'root' },] }
2312
2298
  ];
@@ -2322,7 +2308,7 @@ class TranslateContextPipe {
2322
2308
  return this.translateContext.instant(key, context);
2323
2309
  }
2324
2310
  }
2325
- TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2311
+ TranslateContextPipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2326
2312
  TranslateContextPipe.decorators = [
2327
2313
  { type: Pipe, args: [{
2328
2314
  name: 'translateContext'
@@ -2339,7 +2325,7 @@ class TranslatablePipe {
2339
2325
  return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
2340
2326
  }
2341
2327
  }
2342
- TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2328
+ TranslatablePipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2343
2329
  TranslatablePipe.decorators = [
2344
2330
  { type: Pipe, args: [{
2345
2331
  name: 'translatable'
@@ -2356,7 +2342,7 @@ class PropertyGetPipe {
2356
2342
  args && args.defaultValue);
2357
2343
  }
2358
2344
  }
2359
- PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2345
+ PropertyGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2360
2346
  PropertyGetPipe.decorators = [
2361
2347
  { type: Pipe, args: [{
2362
2348
  name: 'propertyGet'
@@ -2600,12 +2586,12 @@ SharedMatAutocompleteModule.decorators = [
2600
2586
  },] }
2601
2587
  ];
2602
2588
 
2603
- const moment$4 = momentImported;
2589
+ const moment$2 = momentImported;
2604
2590
  // @dynamic
2605
2591
  class SharedValidators {
2606
2592
  static validDate(control) {
2607
2593
  const value = control.value;
2608
- const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
2594
+ const date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
2609
2595
  if (date && (!date.isValid() || date.year() < 1970)) {
2610
2596
  return { validDate: true };
2611
2597
  }
@@ -3008,9 +2994,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
3008
2994
  const hour = parseInt(durationParts[0] || '0');
3009
2995
  const minute = parseInt(durationParts[1] || '0');
3010
2996
  const value = hour + (minute + 0.5) / 60;
3011
- return roundFloat(value, maxDecimals);
2997
+ return roundFloat$1(value, maxDecimals);
3012
2998
  }
3013
- function roundFloat(input, maxDecimals) {
2999
+ function roundFloat$1(input, maxDecimals) {
3014
3000
  if (maxDecimals > 0) {
3015
3001
  const powDecimal = Math.pow(10, maxDecimals);
3016
3002
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -3034,9 +3020,9 @@ const MASKS = {
3034
3020
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
3035
3021
  }
3036
3022
  };
3037
- const noop$6 = () => {
3023
+ const noop$1 = () => {
3038
3024
  };
3039
- const ɵ0$9 = noop$6;
3025
+ const ɵ0$1 = noop$1;
3040
3026
  class MatLatLongField {
3041
3027
  constructor(platform, translate, formBuilder, cd, formGroupDir) {
3042
3028
  this.platform = platform;
@@ -3044,8 +3030,8 @@ class MatLatLongField {
3044
3030
  this.formBuilder = formBuilder;
3045
3031
  this.cd = cd;
3046
3032
  this.formGroupDir = formGroupDir;
3047
- this._onChangeCallback = noop$6;
3048
- this._onTouchedCallback = noop$6;
3033
+ this._onChangeCallback = noop$1;
3034
+ this._onTouchedCallback = noop$1;
3049
3035
  this._subscription = new Subscription();
3050
3036
  this.disabling = false;
3051
3037
  this.writing = false;
@@ -3386,14 +3372,14 @@ SharedMatLatLongModule.decorators = [
3386
3372
  },] }
3387
3373
  ];
3388
3374
 
3389
- const DEFAULT_VALUE_ACCESSOR$5 = {
3375
+ const DEFAULT_VALUE_ACCESSOR$1 = {
3390
3376
  provide: NG_VALUE_ACCESSOR,
3391
3377
  useExisting: forwardRef(() => MatDate),
3392
3378
  multi: true
3393
3379
  };
3394
- const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3395
- const noop$5 = () => { };
3396
- const ɵ0$8 = noop$5;
3380
+ const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3381
+ const noop$2 = () => { };
3382
+ const ɵ0$2 = noop$2;
3397
3383
  class MatDate {
3398
3384
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
3399
3385
  this.dateAdapter = dateAdapter;
@@ -3402,12 +3388,12 @@ class MatDate {
3402
3388
  this.cd = cd;
3403
3389
  this.keyboard = keyboard;
3404
3390
  this.formGroupDir = formGroupDir;
3405
- this._onChangeCallback = noop$5;
3406
- this._onTouchedCallback = noop$5;
3391
+ this._onChangeCallback = noop$2;
3392
+ this._onTouchedCallback = noop$2;
3407
3393
  this._subscription = new Subscription();
3408
3394
  this.writing = true;
3409
3395
  this.disabling = false;
3410
- this.dayMask = DAY_MASK$2;
3396
+ this.dayMask = DAY_MASK;
3411
3397
  this.disabled = false;
3412
3398
  this.floatLabel = 'auto';
3413
3399
  this.readonly = false;
@@ -3644,7 +3630,7 @@ MatDate.decorators = [
3644
3630
  selector: 'mat-date-field',
3645
3631
  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",
3646
3632
  providers: [
3647
- DEFAULT_VALUE_ACCESSOR$5,
3633
+ DEFAULT_VALUE_ACCESSOR$1,
3648
3634
  ],
3649
3635
  changeDetection: ChangeDetectionStrategy.OnPush,
3650
3636
  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%}"]
@@ -3677,17 +3663,17 @@ MatDate.propDecorators = {
3677
3663
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
3678
3664
  };
3679
3665
 
3680
- const DEFAULT_VALUE_ACCESSOR$4 = {
3666
+ const DEFAULT_VALUE_ACCESSOR$2 = {
3681
3667
  provide: NG_VALUE_ACCESSOR,
3682
3668
  useExisting: forwardRef(() => MatDateTime),
3683
3669
  multi: true
3684
3670
  };
3685
3671
  const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3686
3672
  const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
3687
- const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
3688
- const noop$4 = () => {
3673
+ const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
3674
+ const noop$3 = () => {
3689
3675
  };
3690
- const ɵ0$7 = noop$4;
3676
+ const ɵ0$3 = noop$3;
3691
3677
  class MatDateTime {
3692
3678
  constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
3693
3679
  this.platform = platform;
@@ -3697,14 +3683,14 @@ class MatDateTime {
3697
3683
  this.keyboard = keyboard;
3698
3684
  this.cd = cd;
3699
3685
  this.formGroupDir = formGroupDir;
3700
- this._onChangeCallback = noop$4;
3701
- this._onTouchedCallback = noop$4;
3686
+ this._onChangeCallback = noop$3;
3687
+ this._onTouchedCallback = noop$3;
3702
3688
  this._subscription = new Subscription();
3703
3689
  this.writing = true;
3704
3690
  this.disabling = false;
3705
3691
  this._onDestroy = new EventEmitter();
3706
3692
  this.dayMask = DAY_MASK$1;
3707
- this.hourMask = HOUR_MASK$1;
3693
+ this.hourMask = HOUR_MASK;
3708
3694
  this.floatLabel = 'auto';
3709
3695
  this.readonly = false;
3710
3696
  this.compact = false;
@@ -4010,7 +3996,7 @@ MatDateTime.decorators = [
4010
3996
  selector: 'mat-date-time-field',
4011
3997
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{formControl.errors.msg}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n",
4012
3998
  providers: [
4013
- DEFAULT_VALUE_ACCESSOR$4,
3999
+ DEFAULT_VALUE_ACCESSOR$2,
4014
4000
  ],
4015
4001
  changeDetection: ChangeDetectionStrategy.OnPush,
4016
4002
  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%}"]
@@ -4049,10 +4035,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
4049
4035
  useExisting: forwardRef(() => MatDateShort),
4050
4036
  multi: true
4051
4037
  };
4052
- const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
4053
- const noop$3 = () => {
4038
+ const DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
4039
+ const noop$4 = () => {
4054
4040
  };
4055
- const ɵ0$6 = noop$3;
4041
+ const ɵ0$4 = noop$4;
4056
4042
  class MatDateShort {
4057
4043
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4058
4044
  this.dateAdapter = dateAdapter;
@@ -4061,11 +4047,11 @@ class MatDateShort {
4061
4047
  this.cd = cd;
4062
4048
  this.keyboard = keyboard;
4063
4049
  this.formGroupDir = formGroupDir;
4064
- this._onChangeCallback = noop$3;
4065
- this._onTouchedCallback = noop$3;
4050
+ this._onChangeCallback = noop$4;
4051
+ this._onTouchedCallback = noop$4;
4066
4052
  this.writing = true;
4067
4053
  this.disabling = false;
4068
- this.dayMask = DAY_MASK;
4054
+ this.dayMask = DAY_MASK$2;
4069
4055
  this.disabled = false;
4070
4056
  this.floatLabel = 'auto';
4071
4057
  this.readonly = false;
@@ -4378,16 +4364,16 @@ SharedMatDateTimeModule.decorators = [
4378
4364
  },] }
4379
4365
  ];
4380
4366
 
4381
- const DEFAULT_VALUE_ACCESSOR$2 = {
4367
+ const DEFAULT_VALUE_ACCESSOR$4 = {
4382
4368
  provide: NG_VALUE_ACCESSOR,
4383
4369
  useExisting: forwardRef(() => MatDuration),
4384
4370
  multi: true
4385
4371
  };
4386
4372
  const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
4387
- const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
4388
- const noop$2 = () => {
4373
+ const HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
4374
+ const noop$5 = () => {
4389
4375
  };
4390
- const ɵ0$5 = noop$2;
4376
+ const ɵ0$5 = noop$5;
4391
4377
  class MatDuration {
4392
4378
  constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
4393
4379
  this.dateAdapter = dateAdapter;
@@ -4396,11 +4382,11 @@ class MatDuration {
4396
4382
  this.cd = cd;
4397
4383
  this.formGroupDir = formGroupDir;
4398
4384
  this._subscription = new Subscription();
4399
- this._onChangeCallback = noop$2;
4400
- this._onTouchedCallback = noop$2;
4385
+ this._onChangeCallback = noop$5;
4386
+ this._onTouchedCallback = noop$5;
4401
4387
  this.writing = true;
4402
4388
  this.disabling = false;
4403
- this.hourMask = HOUR_MASK;
4389
+ this.hourMask = HOUR_MASK$1;
4404
4390
  this.disabled = false;
4405
4391
  this.floatLabel = 'auto';
4406
4392
  this.readonly = false;
@@ -4580,7 +4566,7 @@ MatDuration.decorators = [
4580
4566
  selector: 'mat-duration-field',
4581
4567
  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",
4582
4568
  providers: [
4583
- DEFAULT_VALUE_ACCESSOR$2,
4569
+ DEFAULT_VALUE_ACCESSOR$4,
4584
4570
  ],
4585
4571
  changeDetection: ChangeDetectionStrategy.OnPush,
4586
4572
  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%}"]
@@ -4637,22 +4623,22 @@ SharedMatDurationModule.decorators = [
4637
4623
  },] }
4638
4624
  ];
4639
4625
 
4640
- const DEFAULT_VALUE_ACCESSOR$1 = {
4626
+ const DEFAULT_VALUE_ACCESSOR$5 = {
4641
4627
  provide: NG_VALUE_ACCESSOR,
4642
4628
  useExisting: forwardRef(() => MatBooleanField),
4643
4629
  multi: true
4644
4630
  };
4645
- const noop$1 = () => {
4631
+ const noop$6 = () => {
4646
4632
  };
4647
- const ɵ0$4 = noop$1;
4633
+ const ɵ0$6 = noop$6;
4648
4634
  class MatBooleanField {
4649
4635
  constructor(translate, formBuilder, cd, formGroupDir) {
4650
4636
  this.translate = translate;
4651
4637
  this.formBuilder = formBuilder;
4652
4638
  this.cd = cd;
4653
4639
  this.formGroupDir = formGroupDir;
4654
- this._onChangeCallback = noop$1;
4655
- this._onTouchedCallback = noop$1;
4640
+ this._onChangeCallback = noop$6;
4641
+ this._onTouchedCallback = noop$6;
4656
4642
  this._writing = false;
4657
4643
  this.showRadio = false;
4658
4644
  this.disabled = false;
@@ -4816,7 +4802,7 @@ MatBooleanField.decorators = [
4816
4802
  selector: 'mat-boolean-field',
4817
4803
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value ? 'COMMON.YES' : 'COMMON.NO') | translate }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{'COMMON.YES'|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span translate>COMMON.YES</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span translate>COMMON.NO</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label>&nbsp;</ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <ion-grid class=\"ion-no-padding\" *ngIf=\"!formControl.disabled; else disabledLabel\">\n <ion-row class=\"ion-no-padding\">\n <!-- Yes button -->\n <ion-col>\n <ion-button style=\"width: 100%;\"\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'danger' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon slot=\"start\" name=\"checkmark\"></ion-icon>\n {{'COMMON.YES'|translate}}\n </ion-button>\n </ion-col>\n <!-- No button -->\n <ion-col>\n <ion-button style=\"width: 100%;\"\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'danger' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon slot=\"start\" name=\"close\"></ion-icon>\n {{'COMMON.NO'|translate}}\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n",
4818
4804
  providers: [
4819
- DEFAULT_VALUE_ACCESSOR$1
4805
+ DEFAULT_VALUE_ACCESSOR$5
4820
4806
  ],
4821
4807
  changeDetection: ChangeDetectionStrategy.OnPush,
4822
4808
  styles: [":host{width:100%}"]
@@ -5057,7 +5043,7 @@ class MatNumpadDomService {
5057
5043
  this.appRef.detachView(this.componentRef.hostView);
5058
5044
  }
5059
5045
  }
5060
- 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" });
5046
+ MatNumpadDomService.ɵprov = ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
5061
5047
  MatNumpadDomService.decorators = [
5062
5048
  { type: Injectable, args: [{
5063
5049
  providedIn: 'root'
@@ -5421,7 +5407,7 @@ SharedMatNumpadModule.decorators = [
5421
5407
  },] }
5422
5408
  ];
5423
5409
 
5424
- const DEFAULT_VALUE_ACCESSOR = {
5410
+ const DEFAULT_VALUE_ACCESSOR$6 = {
5425
5411
  provide: NG_VALUE_ACCESSOR,
5426
5412
  useExisting: forwardRef(() => MatSwipeField),
5427
5413
  multi: true
@@ -5684,7 +5670,7 @@ MatSwipeField.decorators = [
5684
5670
  { type: Component, args: [{
5685
5671
  selector: 'mat-swipe-field',
5686
5672
  template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n",
5687
- providers: [DEFAULT_VALUE_ACCESSOR],
5673
+ providers: [DEFAULT_VALUE_ACCESSOR$6],
5688
5674
  changeDetection: ChangeDetectionStrategy.OnPush,
5689
5675
  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}"]
5690
5676
  },] }
@@ -6179,7 +6165,7 @@ class ProgressBarService {
6179
6165
  }
6180
6166
  }
6181
6167
  }
6182
- ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
6168
+ ProgressBarService.ɵprov = ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
6183
6169
  ProgressBarService.decorators = [
6184
6170
  { type: Injectable, args: [{ providedIn: 'root' },] }
6185
6171
  ];
@@ -6223,7 +6209,7 @@ class AppGestureConfig extends HammerGestureConfig {
6223
6209
  return mc;
6224
6210
  }
6225
6211
  }
6226
- AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
6212
+ AppGestureConfig.ɵprov = ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
6227
6213
  AppGestureConfig.decorators = [
6228
6214
  { type: Injectable, args: [{ providedIn: 'root' },] }
6229
6215
  ];
@@ -6446,7 +6432,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
6446
6432
  this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
6447
6433
  }
6448
6434
  }
6449
- MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
6435
+ MatPaginatorI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(ɵɵinject(TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
6450
6436
  MatPaginatorI18n.decorators = [
6451
6437
  { type: Injectable, args: [{ providedIn: 'root' },] }
6452
6438
  ];
@@ -6536,17 +6522,17 @@ function getColorContrast(color, bw) {
6536
6522
  return rgbArrayToHex(rgb.map(v => 255 - v));
6537
6523
  }
6538
6524
 
6539
- const noop = () => {
6525
+ const noop$7 = () => {
6540
6526
  };
6541
- const ɵ0$3 = noop;
6527
+ const ɵ0$7 = noop$7;
6542
6528
  class AppFormField {
6543
6529
  constructor(translate, cd, injector, formGroupDir) {
6544
6530
  this.translate = translate;
6545
6531
  this.cd = cd;
6546
6532
  this.injector = injector;
6547
6533
  this.formGroupDir = formGroupDir;
6548
- this._onChangeCallback = noop;
6549
- this._onTouchedCallback = noop;
6534
+ this._onChangeCallback = noop$7;
6535
+ this._onTouchedCallback = noop$7;
6550
6536
  this.readonly = false;
6551
6537
  this.compact = false;
6552
6538
  this.floatLabel = 'auto';
@@ -6917,14 +6903,14 @@ class AudioProvider {
6917
6903
  });
6918
6904
  }
6919
6905
  }
6920
- 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" });
6906
+ 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" });
6921
6907
  AudioProvider.decorators = [
6922
6908
  { type: Injectable, args: [{ providedIn: 'root' },] }
6923
6909
  ];
6924
6910
  AudioProvider.ctorParameters = () => [
6925
6911
  { type: Platform },
6926
- { type: NativeAudio, decorators: [{ type: Optional }] },
6927
- { type: Vibration, decorators: [{ type: Optional }] },
6912
+ { type: NativeAudio$1, decorators: [{ type: Optional }] },
6913
+ { type: Vibration$1, decorators: [{ type: Optional }] },
6928
6914
  { type: AudioManagement, decorators: [{ type: Optional }] }
6929
6915
  ];
6930
6916
 
@@ -7006,7 +6992,7 @@ class Hotkeys {
7006
6992
  });
7007
6993
  }
7008
6994
  }
7009
- 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" });
6995
+ Hotkeys.ɵprov = ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(ɵɵinject(EventManager), ɵɵinject(MatDialog), ɵɵinject(DOCUMENT), ɵɵinject(ModalController)); }, token: Hotkeys, providedIn: "root" });
7010
6996
  Hotkeys.decorators = [
7011
6997
  { type: Injectable, args: [{
7012
6998
  providedIn: 'root'
@@ -7180,7 +7166,7 @@ class Base64ImageReader {
7180
7166
  }
7181
7167
  }
7182
7168
 
7183
- const uuidv4$1 = uuidv4Imported;
7169
+ const uuidv4 = uuidv4Imported;
7184
7170
  class FileService {
7185
7171
  constructor(platform,
7186
7172
  //private transfer: FileTransfer,
@@ -7217,7 +7203,7 @@ class FileService {
7217
7203
  const lastSlashIndex = source.lastIndexOf('/');
7218
7204
  if (lastSlashIndex === -1)
7219
7205
  throw new Error('Invalid URL: ' + source);
7220
- const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
7206
+ const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
7221
7207
  // Download into the file system
7222
7208
  if (responseType === 'file' && this.canUseFileSystem) {
7223
7209
  console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
@@ -7273,7 +7259,7 @@ class FileService {
7273
7259
  this._started = true;
7274
7260
  }
7275
7261
  }
7276
- 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" });
7262
+ FileService.ɵprov = ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(ɵɵinject(Platform), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
7277
7263
  FileService.decorators = [
7278
7264
  { type: Injectable, args: [{
7279
7265
  providedIn: 'root',
@@ -7435,7 +7421,7 @@ class Base58 {
7435
7421
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
7436
7422
 
7437
7423
  const scrypt = require('scrypt-async');
7438
- const sha256$1 = require('hash.js/lib/hash/sha/256');
7424
+ const sha256 = require('hash.js/lib/hash/sha/256');
7439
7425
  const sha512 = require('hash.js/lib/hash/sha/512');
7440
7426
  const nacl = {
7441
7427
  sign,
@@ -7539,7 +7525,7 @@ class CryptoService {
7539
7525
  * Hash (using SHA256) a message
7540
7526
  */
7541
7527
  sha256(message) {
7542
- return sha256$1().update(message).digest('hex');
7528
+ return sha256().update(message).digest('hex');
7543
7529
  }
7544
7530
  /**
7545
7531
  * Hash (using SHA512) a message
@@ -7552,7 +7538,7 @@ class CryptoService {
7552
7538
  return nacl.util.encodeBase64(m);
7553
7539
  }
7554
7540
  }
7555
- CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
7541
+ CryptoService.ɵprov = ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
7556
7542
  CryptoService.decorators = [
7557
7543
  { type: Injectable, args: [{ providedIn: 'root' },] }
7558
7544
  ];
@@ -8759,7 +8745,7 @@ class LocalSettingsService {
8759
8745
  return page;
8760
8746
  }
8761
8747
  }
8762
- 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" });
8748
+ 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" });
8763
8749
  LocalSettingsService.decorators = [
8764
8750
  { type: Injectable, args: [{
8765
8751
  providedIn: 'root',
@@ -9455,7 +9441,7 @@ class NetworkService {
9455
9441
  });
9456
9442
  }
9457
9443
  }
9458
- 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" });
9444
+ 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" });
9459
9445
  NetworkService.decorators = [
9460
9446
  { type: Injectable, args: [{ providedIn: 'root' },] }
9461
9447
  ];
@@ -9466,16 +9452,16 @@ NetworkService.ctorParameters = () => [
9466
9452
  { type: CryptoService },
9467
9453
  { type: Storage },
9468
9454
  { type: LocalSettingsService },
9469
- { type: CacheService },
9455
+ { type: CacheService$1 },
9470
9456
  { type: HttpClient },
9471
9457
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
9472
- { type: Network, decorators: [{ type: Optional }] },
9473
- { type: SplashScreen, decorators: [{ type: Optional }] },
9458
+ { type: Network$1, decorators: [{ type: Optional }] },
9459
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
9474
9460
  { type: TranslateService, decorators: [{ type: Optional }] },
9475
9461
  { type: ToastController, decorators: [{ type: Optional }] }
9476
9462
  ];
9477
9463
 
9478
- const ErrorCodes$2 = {
9464
+ const ErrorCodes = {
9479
9465
  UNKNOWN_ERROR: 0,
9480
9466
  LOAD_ACCOUNT_ERROR: 1,
9481
9467
  BAD_PASSWORD: 2,
@@ -9822,7 +9808,7 @@ class EntityStore {
9822
9808
  }
9823
9809
  catch (err) {
9824
9810
  console.error(err);
9825
- throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
9811
+ throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
9826
9812
  }
9827
9813
  }
9828
9814
  // Emit update event
@@ -10399,7 +10385,7 @@ class EntitiesStorage {
10399
10385
  }
10400
10386
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
10401
10387
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
10402
- 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" });
10388
+ 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" });
10403
10389
  EntitiesStorage.decorators = [
10404
10390
  { type: Injectable, args: [{ providedIn: 'root' },] }
10405
10391
  ];
@@ -10496,10 +10482,10 @@ function referentialToString(obj, properties) {
10496
10482
  function referentialsToString(values, properties, separator) {
10497
10483
  return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
10498
10484
  }
10499
- const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
10485
+ const ɵ0$8 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
10500
10486
  const StatusList = Object.freeze([
10501
10487
  {
10502
- id: ɵ0$2,
10488
+ id: ɵ0$8,
10503
10489
  icon: 'checkmark',
10504
10490
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
10505
10491
  },
@@ -10770,7 +10756,7 @@ function accountToString(data) {
10770
10756
  (data.lastName || '')) || '';
10771
10757
  }
10772
10758
 
10773
- const uuidv4 = uuidv4Imported;
10759
+ const uuidv4$1 = uuidv4Imported;
10774
10760
  const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
10775
10761
  const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
10776
10762
  /**
@@ -10814,7 +10800,7 @@ function createTrackerLink(opts) {
10814
10800
  // Skip if not tracked
10815
10801
  if (!context || !context.tracked)
10816
10802
  return forward(operation);
10817
- const id = context.serializationKey || uuidv4();
10803
+ const id = context.serializationKey || uuidv4$1();
10818
10804
  console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
10819
10805
  // Clean context, before calling JSON.stringify (remove unused attributes)
10820
10806
  const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -11522,7 +11508,7 @@ class GraphqlService {
11522
11508
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
11523
11509
  || this.toAppError(err.networkError)
11524
11510
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
11525
- || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
11511
+ || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
11526
11512
  // If graphQL: try to convert the first error found
11527
11513
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
11528
11514
  || this.toAppError(err)
@@ -11530,7 +11516,7 @@ class GraphqlService {
11530
11516
  || (err.graphQLErrors && err.graphQLErrors[0])
11531
11517
  || err;
11532
11518
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
11533
- if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
11519
+ if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
11534
11520
  console.error('[graphql] original error: ' + err.networkError.message);
11535
11521
  this.onNetworkError.next(error);
11536
11522
  }
@@ -11566,7 +11552,7 @@ class GraphqlService {
11566
11552
  return 'ERROR.UNAUTHORIZED';
11567
11553
  case ServerErrorCodes.FORBIDDEN:
11568
11554
  return 'ERROR.FORBIDDEN';
11569
- case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
11555
+ case ErrorCodes.UNKNOWN_NETWORK_ERROR:
11570
11556
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
11571
11557
  case ServerErrorCodes.BAD_UPDATE_DATE:
11572
11558
  return 'ERROR.BAD_UPDATE_DATE';
@@ -11603,7 +11589,7 @@ class GraphqlService {
11603
11589
  });
11604
11590
  }
11605
11591
  }
11606
- 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" });
11592
+ 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" });
11607
11593
  GraphqlService.decorators = [
11608
11594
  { type: Injectable, args: [{
11609
11595
  providedIn: 'root'
@@ -11620,7 +11606,7 @@ GraphqlService.ctorParameters = () => [
11620
11606
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
11621
11607
  ];
11622
11608
 
11623
- const sha256 = require('hash.js/lib/hash/sha/256');
11609
+ const sha256$1 = require('hash.js/lib/hash/sha/256');
11624
11610
  class BaseGraphqlServiceOptions {
11625
11611
  }
11626
11612
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
@@ -11770,8 +11756,8 @@ class BaseGraphqlService {
11770
11756
  }
11771
11757
  /* -- protected methods -- */
11772
11758
  computeMutableWatchQueryId(opts) {
11773
- const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
11774
- const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
11759
+ const queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
11760
+ const variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
11775
11761
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
11776
11762
  }
11777
11763
  findMutableWatchQueries(opts) {
@@ -11834,7 +11820,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
11834
11820
  /* ------------------------------------
11835
11821
  * GraphQL queries
11836
11822
  * ------------------------------------*/
11837
- const Fragments$1 = {
11823
+ const Fragments = {
11838
11824
  account: gql `
11839
11825
  fragment AccountFragment on AccountVO {
11840
11826
  id
@@ -11867,13 +11853,13 @@ const Fragments$1 = {
11867
11853
  `
11868
11854
  };
11869
11855
  // Load account query
11870
- const LoadQuery$1 = gql `
11856
+ const LoadQuery = gql `
11871
11857
  query Account {
11872
11858
  account {
11873
11859
  ...AccountFragment
11874
11860
  }
11875
11861
  }
11876
- ${Fragments$1.account}
11862
+ ${Fragments.account}
11877
11863
  `;
11878
11864
  // Check email query
11879
11865
  const IsEmailExistsQuery = gql `
@@ -11882,13 +11868,13 @@ const IsEmailExistsQuery = gql `
11882
11868
  }
11883
11869
  `;
11884
11870
  // Save (create or update) account mutation
11885
- const SaveMutation$1 = gql `
11871
+ const SaveMutation = gql `
11886
11872
  mutation SaveAccount($account:AccountVOInput){
11887
11873
  saveAccount(account: $account){
11888
11874
  ...AccountFragment
11889
11875
  }
11890
11876
  }
11891
- ${Fragments$1.account}
11877
+ ${Fragments.account}
11892
11878
  `;
11893
11879
  // Create account mutation
11894
11880
  const CreateMutation = gql `
@@ -11897,7 +11883,7 @@ const CreateMutation = gql `
11897
11883
  ...AccountFragment
11898
11884
  }
11899
11885
  }
11900
- ${Fragments$1.account}
11886
+ ${Fragments.account}
11901
11887
  `;
11902
11888
  // Sent confirmation email
11903
11889
  const SendConfirmEmailMutation = gql `
@@ -12236,7 +12222,7 @@ class AccountService extends BaseGraphqlService {
12236
12222
  catch (error) {
12237
12223
  console.error(error);
12238
12224
  this.resetData();
12239
- throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
12225
+ throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
12240
12226
  }
12241
12227
  // Store pubkey+keypair
12242
12228
  this.data.pubkey = Base58.encode(keypair.publicKey);
@@ -12270,7 +12256,7 @@ class AccountService extends BaseGraphqlService {
12270
12256
  }
12271
12257
  catch (err) {
12272
12258
  // If account not found, check if email is valid
12273
- if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
12259
+ if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
12274
12260
  // Check email exists
12275
12261
  if (data.username.indexOf('@') !== -1) {
12276
12262
  let isEmailExists;
@@ -12282,11 +12268,11 @@ class AccountService extends BaseGraphqlService {
12282
12268
  }
12283
12269
  // Email not exists (no account)
12284
12270
  if (!isEmailExists) {
12285
- throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
12271
+ throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
12286
12272
  }
12287
12273
  }
12288
12274
  // Email exists, so error = 'bad password'
12289
- throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
12275
+ throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
12290
12276
  }
12291
12277
  throw err; // resend the first error
12292
12278
  }
@@ -12347,7 +12333,7 @@ class AccountService extends BaseGraphqlService {
12347
12333
  throw error;
12348
12334
  console.error(error);
12349
12335
  throw {
12350
- code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
12336
+ code: ErrorCodes.LOAD_ACCOUNT_ERROR,
12351
12337
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
12352
12338
  };
12353
12339
  }
@@ -12559,8 +12545,8 @@ class AccountService extends BaseGraphqlService {
12559
12545
  }
12560
12546
  else {
12561
12547
  const res = yield this.graphql.query({
12562
- query: LoadQuery$1,
12563
- error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
12548
+ query: LoadQuery,
12549
+ error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
12564
12550
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
12565
12551
  });
12566
12552
  accountJson = res && res.account;
@@ -12594,7 +12580,7 @@ class AccountService extends BaseGraphqlService {
12594
12580
  if (!isNew) {
12595
12581
  const existingAccount = yield this.loadAccount({ fetchPolicy: 'network-only' });
12596
12582
  if (!existingAccount || !existingAccount.updateDate) {
12597
- throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
12583
+ throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
12598
12584
  }
12599
12585
  account.updateDate = existingAccount.updateDate || account.updateDate;
12600
12586
  if (account.settings && existingAccount.settings) {
@@ -12607,12 +12593,12 @@ class AccountService extends BaseGraphqlService {
12607
12593
  delete json.mainProfile; // Not known on server
12608
12594
  // Execute mutation
12609
12595
  const res = yield this.graphql.mutate({
12610
- mutation: isNew ? CreateMutation : SaveMutation$1,
12596
+ mutation: isNew ? CreateMutation : SaveMutation,
12611
12597
  variables: {
12612
12598
  account: json
12613
12599
  },
12614
12600
  error: {
12615
- code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
12601
+ code: ErrorCodes.SAVE_ACCOUNT_ERROR,
12616
12602
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
12617
12603
  }
12618
12604
  });
@@ -12637,7 +12623,7 @@ class AccountService extends BaseGraphqlService {
12637
12623
  return __awaiter(this, void 0, void 0, function* () {
12638
12624
  const isEmailExists = yield this.isEmailExists(email);
12639
12625
  if (isEmailExists) {
12640
- throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
12626
+ throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
12641
12627
  }
12642
12628
  });
12643
12629
  }
@@ -12673,7 +12659,7 @@ class AccountService extends BaseGraphqlService {
12673
12659
  locale
12674
12660
  },
12675
12661
  error: {
12676
- code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
12662
+ code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
12677
12663
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
12678
12664
  }
12679
12665
  });
@@ -12689,7 +12675,7 @@ class AccountService extends BaseGraphqlService {
12689
12675
  code
12690
12676
  },
12691
12677
  error: {
12692
- code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
12678
+ code: ErrorCodes.CONFIRM_EMAIL_FAILED,
12693
12679
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
12694
12680
  }
12695
12681
  });
@@ -12707,7 +12693,7 @@ class AccountService extends BaseGraphqlService {
12707
12693
  interval: 10
12708
12694
  },
12709
12695
  error: {
12710
- code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
12696
+ code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
12711
12697
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
12712
12698
  }
12713
12699
  }).subscribe({
@@ -12786,7 +12772,7 @@ class AccountService extends BaseGraphqlService {
12786
12772
  if (counter > 4) {
12787
12773
  if (this._debug)
12788
12774
  console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
12789
- throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
12775
+ throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
12790
12776
  }
12791
12777
  // Check if valid
12792
12778
  if (token) {
@@ -12796,7 +12782,7 @@ class AccountService extends BaseGraphqlService {
12796
12782
  token
12797
12783
  },
12798
12784
  error: {
12799
- code: ErrorCodes$2.UNAUTHORIZED,
12785
+ code: ErrorCodes.UNAUTHORIZED,
12800
12786
  message: 'ERROR.UNAUTHORIZED'
12801
12787
  },
12802
12788
  fetchPolicy: 'no-cache'
@@ -12812,7 +12798,7 @@ class AccountService extends BaseGraphqlService {
12812
12798
  }
12813
12799
  // Generate a new token
12814
12800
  const challengeError = {
12815
- code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
12801
+ code: ErrorCodes.AUTH_CHALLENGE_ERROR,
12816
12802
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
12817
12803
  };
12818
12804
  const data = yield this.graphql.query({
@@ -12838,7 +12824,7 @@ class AccountService extends BaseGraphqlService {
12838
12824
  });
12839
12825
  }
12840
12826
  }
12841
- 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" });
12827
+ 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" });
12842
12828
  AccountService.decorators = [
12843
12829
  { type: Injectable, args: [{ providedIn: 'root' },] }
12844
12830
  ];
@@ -13088,7 +13074,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
13088
13074
  /* ------------------------------------
13089
13075
  * GraphQL queries
13090
13076
  * ------------------------------------*/
13091
- const Fragments = {
13077
+ const Fragments$1 = {
13092
13078
  config: gql `
13093
13079
  fragment ConfigFragment on ConfigurationVO {
13094
13080
  id
@@ -13115,22 +13101,22 @@ const Fragments = {
13115
13101
  }
13116
13102
  `
13117
13103
  };
13118
- const LoadQuery = gql `
13104
+ const LoadQuery$1 = gql `
13119
13105
  query Configuration{
13120
13106
  data: configuration{
13121
13107
  ...ConfigFragment
13122
13108
  }
13123
13109
  }
13124
- ${Fragments.config}
13110
+ ${Fragments$1.config}
13125
13111
  `;
13126
13112
  // Save (create or update) account mutation
13127
- const SaveMutation = gql `
13113
+ const SaveMutation$1 = gql `
13128
13114
  mutation SaveConfiguration($data: ConfigurationVOInput){
13129
13115
  data: saveConfiguration(config: $data){
13130
13116
  ...ConfigFragment
13131
13117
  }
13132
13118
  }
13133
- ${Fragments.config}
13119
+ ${Fragments$1.config}
13134
13120
  `;
13135
13121
  const ClearCache = gql `
13136
13122
  query ClearCache($name: String) {
@@ -13218,12 +13204,12 @@ class ConfigService extends BaseGraphqlService {
13218
13204
  return __awaiter(this, void 0, void 0, function* () {
13219
13205
  const now = Date.now();
13220
13206
  console.debug('[config] Loading Pod configuration...');
13221
- const query = opts && opts.query || LoadQuery;
13207
+ const query = opts && opts.query || LoadQuery$1;
13222
13208
  const variables = opts && opts.variables || undefined;
13223
13209
  const res = yield this.graphql.query({
13224
13210
  query,
13225
13211
  variables,
13226
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13212
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13227
13213
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
13228
13214
  });
13229
13215
  const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
@@ -13248,12 +13234,12 @@ class ConfigService extends BaseGraphqlService {
13248
13234
  const json = config.asObject();
13249
13235
  // Execute mutation
13250
13236
  const res = yield this.graphql.mutate({
13251
- mutation: SaveMutation,
13237
+ mutation: SaveMutation$1,
13252
13238
  variables: {
13253
13239
  data: json
13254
13240
  },
13255
13241
  error: {
13256
- code: ErrorCodes$2.SAVE_CONFIG_ERROR,
13242
+ code: ErrorCodes.SAVE_CONFIG_ERROR,
13257
13243
  message: 'ERROR.SAVE_CONFIG_ERROR'
13258
13244
  }
13259
13245
  });
@@ -13279,7 +13265,7 @@ class ConfigService extends BaseGraphqlService {
13279
13265
  const res = yield this.graphql.query({
13280
13266
  query: CacheStatistics,
13281
13267
  variables: null,
13282
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13268
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13283
13269
  fetchPolicy: 'network-only'
13284
13270
  });
13285
13271
  const data = res && res.cacheStatistics || undefined;
@@ -13295,7 +13281,7 @@ class ConfigService extends BaseGraphqlService {
13295
13281
  const res = yield this.graphql.query({
13296
13282
  query: ClearCache,
13297
13283
  variables,
13298
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13284
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
13299
13285
  fetchPolicy: 'network-only'
13300
13286
  });
13301
13287
  const data = res && res.clearCache || undefined;
@@ -13454,7 +13440,7 @@ class ConfigService extends BaseGraphqlService {
13454
13440
  });
13455
13441
  }
13456
13442
  }
13457
- 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" });
13443
+ 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" });
13458
13444
  ConfigService.decorators = [
13459
13445
  { type: Injectable, args: [{
13460
13446
  providedIn: 'root',
@@ -13473,7 +13459,7 @@ ConfigService.ctorParameters = () => [
13473
13459
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
13474
13460
  ];
13475
13461
 
13476
- const moment$2 = momentImported;
13462
+ const moment$4 = momentImported;
13477
13463
  class PlatformService {
13478
13464
  constructor(platform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser) {
13479
13465
  this.platform = platform;
@@ -13637,16 +13623,16 @@ class PlatformService {
13637
13623
  }
13638
13624
  // config moment lib
13639
13625
  try {
13640
- moment$2.locale(event.lang);
13626
+ moment$4.locale(event.lang);
13641
13627
  console.debug('[platform] Use locale {' + event.lang + '}');
13642
13628
  }
13643
13629
  // If error, fallback to en
13644
13630
  catch (err) {
13645
- moment$2.locale('en');
13631
+ moment$4.locale('en');
13646
13632
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
13647
13633
  }
13648
13634
  // Config date adapter
13649
- this.dateAdapter.setLocale(moment$2.locale());
13635
+ this.dateAdapter.setLocale(moment$4.locale());
13650
13636
  }
13651
13637
  });
13652
13638
  this.settings.onChange.subscribe(data => {
@@ -13779,7 +13765,7 @@ class PlatformService {
13779
13765
  });
13780
13766
  }
13781
13767
  }
13782
- PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$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(i13.StatusBar, 8), i0.ɵɵinject(i14.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i16.InAppBrowser, 8)); }, token: PlatformService, providedIn: "root" });
13768
+ PlatformService.ɵprov = ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(ɵɵinject(Platform), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(MomentDateAdapter), ɵɵinject(EntitiesStorage), ɵɵinject(LocalSettingsService), ɵɵinject(NetworkService), ɵɵinject(AccountService), ɵɵinject(ConfigService), ɵɵinject(CacheService), ɵɵinject(Storage), ɵɵinject(AudioProvider), ɵɵinject(ENVIRONMENT), ɵɵinject(StatusBar, 8), ɵɵinject(Keyboard$1, 8), ɵɵinject(SplashScreen, 8), ɵɵinject(InAppBrowser, 8)); }, token: PlatformService, providedIn: "root" });
13783
13769
  PlatformService.decorators = [
13784
13770
  { type: Injectable, args: [{ providedIn: 'root' },] }
13785
13771
  ];
@@ -13793,14 +13779,14 @@ PlatformService.ctorParameters = () => [
13793
13779
  { type: NetworkService },
13794
13780
  { type: AccountService },
13795
13781
  { type: ConfigService },
13796
- { type: CacheService },
13782
+ { type: CacheService$1 },
13797
13783
  { type: Storage },
13798
13784
  { type: AudioProvider },
13799
13785
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
13800
- { type: StatusBar, decorators: [{ type: Optional }] },
13786
+ { type: StatusBar$1, decorators: [{ type: Optional }] },
13801
13787
  { type: Keyboard, decorators: [{ type: Optional }] },
13802
- { type: SplashScreen, decorators: [{ type: Optional }] },
13803
- { type: InAppBrowser, decorators: [{ type: Optional }] }
13788
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
13789
+ { type: InAppBrowser$1, decorators: [{ type: Optional }] }
13804
13790
  ];
13805
13791
 
13806
13792
  class AppHelpModal {
@@ -13864,7 +13850,7 @@ class MatStepperI18n extends MatStepperIntl {
13864
13850
  this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
13865
13851
  }
13866
13852
  }
13867
- MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
13853
+ MatStepperI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(ɵɵinject(TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
13868
13854
  MatStepperI18n.decorators = [
13869
13855
  { type: Injectable, args: [{ providedIn: 'root' },] }
13870
13856
  ];
@@ -14772,7 +14758,7 @@ function state2side(state) {
14772
14758
  return 1;
14773
14759
  }
14774
14760
  }
14775
- const ɵ0$1 = (defaultStateSize) => [
14761
+ const ɵ0$9 = (defaultStateSize) => [
14776
14762
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
14777
14763
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
14778
14764
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -14780,7 +14766,7 @@ const ɵ0$1 = (defaultStateSize) => [
14780
14766
  const SCALE_OPTIONS_DEFAULT = {
14781
14767
  startColor: rgbArrayMap.red,
14782
14768
  startStates: [0, 2, 3],
14783
- startStepsFn: ɵ0$1
14769
+ startStepsFn: ɵ0$9
14784
14770
  };
14785
14771
  /**
14786
14772
  * Internal function, that create a colors scale, using iteration
@@ -14872,21 +14858,21 @@ function linearColorGradient(count, options) {
14872
14858
  return result;
14873
14859
  }
14874
14860
 
14875
- class EntityTestClass$1 {
14861
+ class EntityTestClass {
14876
14862
  }
14877
- const FAKE_ENTITIES$1 = [
14863
+ const FAKE_ENTITIES = [
14878
14864
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
14879
14865
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
14880
14866
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
14881
14867
  ];
14882
- function deepCopy$1(values, size) {
14868
+ function deepCopy(values, size) {
14883
14869
  if (isNil(size)) {
14884
- return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
14870
+ return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
14885
14871
  }
14886
14872
  let result = [];
14887
14873
  let i = 1;
14888
14874
  while (result.length < size) {
14889
- result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
14875
+ result = result.concat((values || FAKE_ENTITIES).map(entity => {
14890
14876
  const name = entity.name + ' #' + i;
14891
14877
  return Object.assign(Object.assign({}, entity), { id: i++, name });
14892
14878
  }));
@@ -14896,7 +14882,7 @@ function deepCopy$1(values, size) {
14896
14882
  class AutocompleteTestPage {
14897
14883
  constructor(formBuilder) {
14898
14884
  this.formBuilder = formBuilder;
14899
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
14885
+ this._items = deepCopy(FAKE_ENTITIES, 100);
14900
14886
  this.$items = new BehaviorSubject(undefined);
14901
14887
  this.autocompleteFields = new MatAutocompleteConfigHolder();
14902
14888
  this.memoryHide = false;
@@ -14940,7 +14926,7 @@ class AutocompleteTestPage {
14940
14926
  });
14941
14927
  // From items
14942
14928
  this.autocompleteFields.add('entity-items-large', {
14943
- items: FAKE_ENTITIES$1.slice(),
14929
+ items: FAKE_ENTITIES.slice(),
14944
14930
  attributes: ['label', 'name', 'description', 'comments'],
14945
14931
  displayWith: this.entityToString
14946
14932
  });
@@ -14950,12 +14936,12 @@ class AutocompleteTestPage {
14950
14936
  loadData() {
14951
14937
  return __awaiter(this, void 0, void 0, function* () {
14952
14938
  const data = {
14953
- entity: deepCopy$1(FAKE_ENTITIES$1)[1],
14939
+ entity: deepCopy(FAKE_ENTITIES)[1],
14954
14940
  // This item is NOT in the items list => i should be displayed anyway
14955
14941
  missingEntity: {
14956
14942
  id: -1, label: '??', name: 'Missing item'
14957
14943
  },
14958
- disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
14944
+ disableEntity: deepCopy(FAKE_ENTITIES)[2]
14959
14945
  };
14960
14946
  this.form.setValue(data);
14961
14947
  // Load observables
@@ -15125,13 +15111,13 @@ MaterialTestingPage.ctorParameters = () => [
15125
15111
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
15126
15112
  ];
15127
15113
 
15128
- const moment$1 = momentImported;
15114
+ const moment$5 = momentImported;
15129
15115
  class SwipeTestPage {
15130
15116
  constructor(formBuilder, dateFormatPipe) {
15131
15117
  this.formBuilder = formBuilder;
15132
15118
  this.dateFormatPipe = dateFormatPipe;
15133
15119
  this.$dates = new BehaviorSubject(undefined);
15134
- this._today = moment$1().startOf('day');
15120
+ this._today = moment$5().startOf('day');
15135
15121
  this.form = formBuilder.group({
15136
15122
  empty: [null, Validators.required],
15137
15123
  date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
@@ -15144,7 +15130,7 @@ class SwipeTestPage {
15144
15130
  ngOnInit() {
15145
15131
  const dates = [];
15146
15132
  for (let d = 0; d < 7; d++) {
15147
- dates[d] = moment$1(this._today).add(d - 3, 'day');
15133
+ dates[d] = moment$5(this._today).add(d - 3, 'day');
15148
15134
  }
15149
15135
  this.$dates.next(dates);
15150
15136
  this.loadData();
@@ -15745,7 +15731,7 @@ class FormArrayHelper {
15745
15731
  }
15746
15732
  }
15747
15733
 
15748
- const moment = momentImported;
15734
+ const moment$6 = momentImported;
15749
15735
  class DateTimeTestPage {
15750
15736
  constructor(platform, formBuilder, cd) {
15751
15737
  this.platform = platform;
@@ -15776,7 +15762,7 @@ class DateTimeTestPage {
15776
15762
  // Load the form with data
15777
15763
  loadData() {
15778
15764
  return __awaiter(this, void 0, void 0, function* () {
15779
- const now = moment();
15765
+ const now = moment$6();
15780
15766
  const data = {
15781
15767
  empty: toDateISOString(now.clone().add(2, 'hours')),
15782
15768
  enable: toDateISOString(now),
@@ -15836,20 +15822,20 @@ DateTimeTestPage.ctorParameters = () => [
15836
15822
  { type: ChangeDetectorRef }
15837
15823
  ];
15838
15824
 
15839
- class EntityTestClass {
15825
+ class EntityTestClass$1 {
15840
15826
  }
15841
- const FAKE_ENTITIES = [
15827
+ const FAKE_ENTITIES$1 = [
15842
15828
  { id: 1, label: 'AAA', name: 'Item A' },
15843
15829
  { id: 2, label: 'BBB', name: 'Item B' },
15844
15830
  { id: 3, label: 'CCC', name: 'Item C' }
15845
15831
  ];
15846
- function deepCopy(values) {
15847
- return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
15832
+ function deepCopy$1(values) {
15833
+ return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
15848
15834
  }
15849
15835
  class ChipsTestPage {
15850
15836
  constructor(formBuilder) {
15851
15837
  this.formBuilder = formBuilder;
15852
- this._items = deepCopy(FAKE_ENTITIES);
15838
+ this._items = deepCopy$1(FAKE_ENTITIES$1);
15853
15839
  this._$items = new BehaviorSubject(undefined);
15854
15840
  this.autocompleteFields = new MatAutocompleteConfigHolder();
15855
15841
  this.form = formBuilder.group({
@@ -15868,7 +15854,7 @@ class ChipsTestPage {
15868
15854
  });
15869
15855
  // From items
15870
15856
  this.autocompleteFields.add('entity-items', {
15871
- items: FAKE_ENTITIES.slice(),
15857
+ items: FAKE_ENTITIES$1.slice(),
15872
15858
  attributes: ['label', 'name'],
15873
15859
  displayWith: this.entityToString
15874
15860
  });
@@ -15889,15 +15875,15 @@ class ChipsTestPage {
15889
15875
  const data = {
15890
15876
  entity: [],
15891
15877
  // THis item is NOT in the items list => i should be displayed anyway
15892
- entityInitial: FAKE_ENTITIES.slice(1, 2),
15893
- disableEntity: FAKE_ENTITIES.slice(1, 2)
15878
+ entityInitial: FAKE_ENTITIES$1.slice(1, 2),
15879
+ disableEntity: FAKE_ENTITIES$1.slice(1, 2)
15894
15880
  };
15895
15881
  this.form.setValue(data);
15896
15882
  });
15897
15883
  }
15898
15884
  loadItems() {
15899
15885
  return __awaiter(this, void 0, void 0, function* () {
15900
- this._$items.next(deepCopy(FAKE_ENTITIES));
15886
+ this._$items.next(deepCopy$1(FAKE_ENTITIES$1));
15901
15887
  });
15902
15888
  }
15903
15889
  entityToString(item) {
@@ -15929,7 +15915,7 @@ ChipsTestPage.ctorParameters = () => [
15929
15915
  { type: FormBuilder }
15930
15916
  ];
15931
15917
 
15932
- const routes$1 = [
15918
+ const routes = [
15933
15919
  {
15934
15920
  path: '',
15935
15921
  pathMatch: 'full',
@@ -15976,7 +15962,7 @@ MaterialTestingModule.decorators = [
15976
15962
  ReactiveFormsModule,
15977
15963
  SharedMaterialModule,
15978
15964
  TranslateModule.forChild(),
15979
- RouterModule.forChild(routes$1)
15965
+ RouterModule.forChild(routes)
15980
15966
  ],
15981
15967
  declarations: [
15982
15968
  MaterialTestingPage,
@@ -16877,7 +16863,7 @@ class UserSettingsValidatorService extends AppValidatorService {
16877
16863
  });
16878
16864
  }
16879
16865
  }
16880
- UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
16866
+ UserSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(ɵɵinject(FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
16881
16867
  UserSettingsValidatorService.decorators = [
16882
16868
  { type: Injectable, args: [{ providedIn: 'root' },] }
16883
16869
  ];
@@ -16921,7 +16907,7 @@ class AccountValidatorService extends AppValidatorService {
16921
16907
  return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
16922
16908
  }
16923
16909
  }
16924
- AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
16910
+ AccountValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
16925
16911
  AccountValidatorService.decorators = [
16926
16912
  { type: Injectable, args: [{ providedIn: 'root' },] }
16927
16913
  ];
@@ -17159,7 +17145,7 @@ class FormButtonsBarComponent {
17159
17145
  FormButtonsBarComponent.decorators = [
17160
17146
  { type: Component, args: [{
17161
17147
  selector: 'app-form-buttons-bar',
17162
- template: "<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col>\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\" (keyup.enter)=\"onBack.emit($event)\" *ngIf=\"onBack.observers.length\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\" (keyup.enter)=\"onCancel.emit($event)\" [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers.length\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <ion-button [fill]=\"disabled? 'clear' : 'solid'\" (click)=\"onSave.emit($event)\" (keyup.enter)=\"onSave.emit($event)\" color=\"danger\" [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n",
17148
+ template: "<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col>\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <!-- close (go back) -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\" (keyup.enter)=\"onBack.emit($event)\" *ngIf=\"onBack.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <!-- reload -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\" (keyup.enter)=\"onCancel.emit($event)\" [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button [fill]=\"disabled ? 'clear' : 'solid'\" (click)=\"onSave.emit($event)\" (keyup.enter)=\"onSave.emit($event)\" color=\"danger\"\n [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n",
17163
17149
  providers: [
17164
17150
  { provide: FormButtonsBarToken, useExisting: FormButtonsBarComponent }
17165
17151
  ],
@@ -17450,7 +17436,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
17450
17436
  });
17451
17437
  }
17452
17438
  }
17453
- LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
17439
+ LocalSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(ɵɵinject(FormBuilder), ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
17454
17440
  LocalSettingsValidatorService.decorators = [
17455
17441
  { type: Injectable, args: [{ providedIn: 'root' },] }
17456
17442
  ];
@@ -18058,7 +18044,7 @@ class IsOnFieldModePipe {
18058
18044
  return value === 'FIELD';
18059
18045
  }
18060
18046
  }
18061
- IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18047
+ IsOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
18062
18048
  IsOnFieldModePipe.decorators = [
18063
18049
  { type: Pipe, args: [{
18064
18050
  name: 'isOnField'
@@ -18070,7 +18056,7 @@ class IsNotOnFieldModePipe {
18070
18056
  return value !== 'FIELD';
18071
18057
  }
18072
18058
  }
18073
- IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18059
+ IsNotOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
18074
18060
  IsNotOnFieldModePipe.decorators = [
18075
18061
  { type: Pipe, args: [{
18076
18062
  name: 'isNotOnField'
@@ -18085,7 +18071,7 @@ class PersonToStringPipe {
18085
18071
  return PersonUtils.personToString(value);
18086
18072
  }
18087
18073
  }
18088
- PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18074
+ PersonToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
18089
18075
  PersonToStringPipe.decorators = [
18090
18076
  { type: Pipe, args: [{
18091
18077
  name: 'personToString'
@@ -18302,7 +18288,7 @@ class IsLoginAccountPipe {
18302
18288
  return value && value.pubkey && true;
18303
18289
  }
18304
18290
  }
18305
- IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
18291
+ IsLoginAccountPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
18306
18292
  IsLoginAccountPipe.decorators = [
18307
18293
  { type: Pipe, args: [{
18308
18294
  name: 'isLogin'
@@ -18314,7 +18300,7 @@ class AccountToStringPipe {
18314
18300
  return accountToString(value);
18315
18301
  }
18316
18302
  }
18317
- AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
18303
+ AccountToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
18318
18304
  AccountToStringPipe.decorators = [
18319
18305
  { type: Pipe, args: [{
18320
18306
  name: 'accountToString'
@@ -18329,7 +18315,7 @@ class DepartmentToStringPipe {
18329
18315
  return departmentToString(value);
18330
18316
  }
18331
18317
  }
18332
- DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
18318
+ DepartmentToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
18333
18319
  DepartmentToStringPipe.decorators = [
18334
18320
  { type: Pipe, args: [{
18335
18321
  name: 'departmentToString'
@@ -18355,7 +18341,7 @@ class MenuService {
18355
18341
  this._visibleSubject.next(value);
18356
18342
  }
18357
18343
  }
18358
- MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
18344
+ MenuService.ɵprov = ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
18359
18345
  MenuService.decorators = [
18360
18346
  { type: Injectable, args: [{
18361
18347
  providedIn: 'root'
@@ -18849,7 +18835,7 @@ class AuthGuardService {
18849
18835
  }));
18850
18836
  }
18851
18837
  }
18852
- 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" });
18838
+ AuthGuardService.ɵprov = ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(ɵɵinject(AccountService), ɵɵinject(ModalController), ɵɵinject(Router), ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
18853
18839
  AuthGuardService.decorators = [
18854
18840
  { type: Injectable, args: [{ providedIn: 'root' },] }
18855
18841
  ];
@@ -18897,7 +18883,7 @@ class BaseEntityService extends BaseGraphqlService {
18897
18883
  query,
18898
18884
  variables: { id },
18899
18885
  fetchPolicy: opts && opts.fetchPolicy || undefined,
18900
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18886
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18901
18887
  })
18902
18888
  .pipe(map(({ data }) => (!opts || opts.toEntity !== false)
18903
18889
  ? (data && this.fromObject(data))
@@ -18912,7 +18898,7 @@ class BaseEntityService extends BaseGraphqlService {
18912
18898
  query,
18913
18899
  variables: { id },
18914
18900
  fetchPolicy: opts && opts.fetchPolicy || undefined,
18915
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18901
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
18916
18902
  });
18917
18903
  // Convert to entity
18918
18904
  return (!opts || opts.toEntity !== false)
@@ -18943,7 +18929,7 @@ class BaseEntityService extends BaseGraphqlService {
18943
18929
  totalFieldName: withTotal ? 'total' : undefined,
18944
18930
  insertFilterFn: filter && filter.asFilterFn(),
18945
18931
  variables,
18946
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
18932
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
18947
18933
  fetchPolicy: opts && opts.fetchPolicy || undefined
18948
18934
  })
18949
18935
  .pipe(map(({ data, total }) => {
@@ -18979,7 +18965,7 @@ class BaseEntityService extends BaseGraphqlService {
18979
18965
  const { data, total } = yield this.graphql.query({
18980
18966
  query,
18981
18967
  variables,
18982
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
18968
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
18983
18969
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
18984
18970
  });
18985
18971
  const entities = (!opts || opts.toEntity !== false) ?
@@ -19028,7 +19014,7 @@ class BaseEntityService extends BaseGraphqlService {
19028
19014
  variables: {
19029
19015
  data: json
19030
19016
  },
19031
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19017
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19032
19018
  update: (proxy, { data }) => {
19033
19019
  const savedEntities = data && data.data;
19034
19020
  if (savedEntities) {
@@ -19084,7 +19070,7 @@ class BaseEntityService extends BaseGraphqlService {
19084
19070
  variables: {
19085
19071
  data: json
19086
19072
  },
19087
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19073
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
19088
19074
  update: (cache, { data }) => {
19089
19075
  // Update entity
19090
19076
  const savedEntity = data && data.data;
@@ -19132,7 +19118,7 @@ class BaseEntityService extends BaseGraphqlService {
19132
19118
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19133
19119
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19134
19120
  variables: { ids },
19135
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19121
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19136
19122
  update: (cache, res) => {
19137
19123
  // Remove from cache
19138
19124
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19173,7 +19159,7 @@ class BaseEntityService extends BaseGraphqlService {
19173
19159
  refetchQueries: this.getRefetchQueriesForMutation(opts),
19174
19160
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
19175
19161
  variables: { id },
19176
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19162
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
19177
19163
  update: (proxy, res) => {
19178
19164
  // Remove from cache
19179
19165
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -19206,7 +19192,7 @@ class BaseEntityService extends BaseGraphqlService {
19206
19192
  query: opts && opts.query || this.subscriptions.listenChanges,
19207
19193
  variables,
19208
19194
  error: {
19209
- code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
19195
+ code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
19210
19196
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
19211
19197
  }
19212
19198
  })
@@ -19368,7 +19354,7 @@ class EntitiesTableDataSource extends TableDataSource {
19368
19354
  if (this._debug)
19369
19355
  invalidRows.forEach(this.logRowErrors);
19370
19356
  // Stop with an error
19371
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
19357
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
19372
19358
  }
19373
19359
  this._editingRowCount = 0;
19374
19360
  let data;
@@ -19763,13 +19749,16 @@ class AppTable {
19763
19749
  }
19764
19750
  }
19765
19751
  markAsUntouched(opts) {
19766
- if (this.dirtySubject.value !== false || this.editedRow) {
19752
+ if (this.dirtySubject.value !== false || (this.editedRow && this.editedRow.id !== this.previouslySavedEditedRowId)) {
19753
+ // Cancel the current editing row only if it was not previously saved
19767
19754
  this.dirtySubject.next(false);
19755
+ this.dataSource.cancelOrDelete(this.editedRow);
19768
19756
  this.editedRow = null;
19769
19757
  if (!opts || opts.emitEvent !== false) {
19770
19758
  this.markForCheck();
19771
19759
  }
19772
19760
  }
19761
+ this.previouslySavedEditedRowId = undefined;
19773
19762
  }
19774
19763
  markAsTouched(opts) {
19775
19764
  if (this.editedRow && this.editedRow.editing) {
@@ -19892,7 +19881,6 @@ class AppTable {
19892
19881
  .pipe(startWith(this.autoLoad ? {} : 'skip'), switchMap((event) => {
19893
19882
  this.dirtySubject.next(false);
19894
19883
  this.selection.clear();
19895
- this.editedRow = undefined;
19896
19884
  if (event === 'skip') {
19897
19885
  return of(undefined);
19898
19886
  }
@@ -20169,16 +20157,17 @@ class AppTable {
20169
20157
  return true;
20170
20158
  }
20171
20159
  save(opts) {
20160
+ var _a, _b;
20172
20161
  return __awaiter(this, void 0, void 0, function* () {
20173
20162
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
20174
20163
  if (this.readOnly) {
20175
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20164
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20176
20165
  }
20177
20166
  this.resetError();
20178
20167
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
20179
- const editedRowId = opts.keepEditing && this.editedRow && this.editedRow.editing && this.editedRow.id;
20168
+ this.previouslySavedEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
20180
20169
  if (!this.confirmEditCreate()) {
20181
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20170
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
20182
20171
  }
20183
20172
  try {
20184
20173
  // Mark as saving
@@ -20201,15 +20190,13 @@ class AppTable {
20201
20190
  finally {
20202
20191
  this.markAsSaved();
20203
20192
  // Restoring previous row
20204
- if (isNotNil(editedRowId)) {
20205
- if (editedRowId !== -1) {
20206
- this.dataSource.waitIdle()
20207
- .then(() => this.dataSource.getRow(editedRowId))
20208
- // Select by row id
20209
- .then(row => row && this.clickRow(null, row));
20193
+ if (isNotNil(this.previouslySavedEditedRowId)) {
20194
+ if (this.previouslySavedEditedRowId !== -1) {
20195
+ // Select by row id
20196
+ this.selectRowById(this.previouslySavedEditedRowId);
20210
20197
  }
20211
20198
  else {
20212
- // TODO: find a way to restore the row (find it by data ?)
20199
+ this.selectRowByData((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
20213
20200
  }
20214
20201
  }
20215
20202
  }
@@ -20305,7 +20292,7 @@ class AppTable {
20305
20292
  deleteRows(event, rows, opts) {
20306
20293
  return __awaiter(this, void 0, void 0, function* () {
20307
20294
  if (this.readOnly) {
20308
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20295
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
20309
20296
  }
20310
20297
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
20311
20298
  return 0; // SKip
@@ -20368,6 +20355,20 @@ class AppTable {
20368
20355
  this.onStartEditingRow.emit(row);
20369
20356
  return true;
20370
20357
  }
20358
+ selectRowById(id) {
20359
+ if (id === undefined)
20360
+ return;
20361
+ this.dataSource.waitIdle()
20362
+ .then(() => this.dataSource.getRow(id))
20363
+ .then(row => this.clickRow(null, row));
20364
+ }
20365
+ selectRowByData(data) {
20366
+ if (data === undefined)
20367
+ return;
20368
+ this.dataSource.waitIdle()
20369
+ .then(() => this.dataSource.getRows())
20370
+ .then(rows => { var _a; return this.selectRowById((_a = rows.find(row => this.dataEquals(row.currentData, data))) === null || _a === void 0 ? void 0 : _a.id); });
20371
+ }
20371
20372
  clickRow(event, row) {
20372
20373
  var _a;
20373
20374
  if (this.loading) {
@@ -20834,6 +20835,17 @@ class AppTable {
20834
20835
  }
20835
20836
  }
20836
20837
  }
20838
+ /**
20839
+ * Compare data equality (default by id)
20840
+ * Can be overridden to add additional properties to compare
20841
+ *
20842
+ * @param t1
20843
+ * @param t2
20844
+ * @protected
20845
+ */
20846
+ dataEquals(t1, t2) {
20847
+ return EntityUtils.equals(t1, t2, 'id');
20848
+ }
20837
20849
  /* -- private method -- */
20838
20850
  setLoading(value, opts) {
20839
20851
  if (this.loadingSubject.value !== value) {
@@ -21110,6 +21122,9 @@ class AppTabEditor {
21110
21122
  this.registerSubscription(this.formButtonsBar.onBack.subscribe(event => this.onBackClick(event)));
21111
21123
  }
21112
21124
  }
21125
+ ngAfterViewInit() {
21126
+ // Can be override by subclasses
21127
+ }
21113
21128
  ngOnDestroy() {
21114
21129
  this._subscription.unsubscribe();
21115
21130
  }
@@ -21609,6 +21624,7 @@ class AppEntityEditor extends AppTabEditor {
21609
21624
  this.disable();
21610
21625
  }
21611
21626
  ngAfterViewInit() {
21627
+ super.ngAfterViewInit();
21612
21628
  // Load data
21613
21629
  if (this._autoLoad) {
21614
21630
  setTimeout(() => this.loadFromRoute(), this._autoLoadDelay);
@@ -21669,7 +21685,7 @@ class AppEntityEditor extends AppTabEditor {
21669
21685
  try {
21670
21686
  const data = yield this.dataService.load(id, opts);
21671
21687
  if (!data)
21672
- throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
21688
+ throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
21673
21689
  this._usageMode = this.computeUsageMode(data);
21674
21690
  yield this.onEntityLoaded(data, opts);
21675
21691
  this.updateView(data, opts);
@@ -22561,7 +22577,7 @@ class UserEventService extends BaseGraphqlService {
22561
22577
  EntityUtils.copyIdAndUpdateDate(source, target);
22562
22578
  }
22563
22579
  }
22564
- 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" });
22580
+ 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" });
22565
22581
  UserEventService.decorators = [
22566
22582
  { type: Injectable, args: [{ providedIn: 'root' },] }
22567
22583
  ];
@@ -22943,7 +22959,7 @@ class PersonService extends BaseEntityService {
22943
22959
  return target;
22944
22960
  }
22945
22961
  }
22946
- 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" });
22962
+ PersonService.ɵprov = ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(ɵɵinject(GraphqlService), ɵɵinject(PlatformService), ɵɵinject(NetworkService), ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
22947
22963
  PersonService.decorators = [
22948
22964
  { type: Injectable, args: [{ providedIn: 'root' },] }
22949
22965
  ];
@@ -22974,7 +22990,7 @@ class PersonValidatorService {
22974
22990
  return this.formBuilder.group(formConfig);
22975
22991
  }
22976
22992
  }
22977
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
22993
+ PersonValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
22978
22994
  PersonValidatorService.decorators = [
22979
22995
  { type: Injectable, args: [{ providedIn: 'root' },] }
22980
22996
  ];
@@ -23130,7 +23146,7 @@ UsersPage.decorators = [
23130
23146
  ],
23131
23147
  animations: [slideUpDownAnimation],
23132
23148
  changeDetection: ChangeDetectionStrategy.OnPush,
23133
- styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:calc(100%)}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
23149
+ styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:100%}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
23134
23150
  },] }
23135
23151
  ];
23136
23152
  UsersPage.ctorParameters = () => [
@@ -23178,16 +23194,16 @@ AdminModule.decorators = [
23178
23194
  ];
23179
23195
  AdminModule.ctorParameters = () => [];
23180
23196
 
23181
- const ɵ0 = {
23197
+ const ɵ0$a = {
23182
23198
  profile: 'ADMIN'
23183
23199
  };
23184
- const routes = [
23200
+ const routes$1 = [
23185
23201
  {
23186
23202
  path: 'users',
23187
23203
  pathMatch: 'full',
23188
23204
  component: UsersPage,
23189
23205
  canActivate: [AuthGuardService],
23190
- data: ɵ0
23206
+ data: ɵ0$a
23191
23207
  }
23192
23208
  ];
23193
23209
  class AdminRoutingModule {
@@ -23197,13 +23213,13 @@ AdminRoutingModule.decorators = [
23197
23213
  imports: [
23198
23214
  SharedRoutingModule,
23199
23215
  AdminModule,
23200
- RouterModule.forChild(routes)
23216
+ RouterModule.forChild(routes$1)
23201
23217
  ],
23202
23218
  exports: [RouterModule]
23203
23219
  },] }
23204
23220
  ];
23205
23221
 
23206
- const ErrorCodes = {
23222
+ const ErrorCodes$2 = {
23207
23223
  LOAD_PERSONS_ERROR: 100,
23208
23224
  SAVE_PERSONS_ERROR: 101,
23209
23225
  DELETE_PERSONS_ERROR: 102,
@@ -23215,5 +23231,5 @@ const ErrorCodes = {
23215
23231
  * Generated bundle index. Do not edit.
23216
23232
  */
23217
23233
 
23218
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormHolder, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, copyForm2Entity, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
23234
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormHolder, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes$2 as ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormFieldValuesHolder, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, copyForm2Entity, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
23219
23235
  //# sourceMappingURL=ngx-sumaris-components.js.map