@sumaris-net/ngx-components 1.10.6 → 1.10.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,9 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, EventEmitter, Component, forwardRef, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, Output, ViewChild, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, TemplateRef, ViewContainerRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Renderer2, ViewEncapsulation } from '@angular/core';
3
- import * as i1$3 from '@angular/common';
1
+ import { InjectionToken, EventEmitter, Component, forwardRef, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, Output, ViewChild, ɵɵdefineInjectable, ɵɵinject, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, TemplateRef, ViewContainerRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, INJECTOR, Injector, Renderer2, ViewEncapsulation } from '@angular/core';
4
2
  import { CommonModule, DOCUMENT, Location } from '@angular/common';
5
3
  import { CdkTableModule } from '@angular/cdk/table';
6
4
  import { A11yModule } from '@angular/cdk/a11y';
7
5
  import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
8
6
  import { ScrollingModule } from '@angular/cdk/scrolling';
9
- import * as i1$2 from '@angular/material/core';
10
7
  import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
11
8
  import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
12
9
  import { MatSortModule, MatSort } from '@angular/material/sort';
@@ -30,21 +27,16 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
30
27
  import { MatRadioModule } from '@angular/material/radio';
31
28
  import { MatBadgeModule } from '@angular/material/badge';
32
29
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
33
- import * as i2$1 from '@angular/material/dialog';
34
30
  import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
35
31
  import { MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteModule, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
36
32
  import { __awaiter, __decorate } from 'tslib';
37
- import * as i1$6 from '@angular/forms';
38
33
  import { NG_VALUE_ACCESSOR, FormGroupDirective, AbstractControl, FormGroup, FormArray, FormControl, ReactiveFormsModule, Validators, FormBuilder } from '@angular/forms';
39
34
  import { timer, merge, fromEvent, BehaviorSubject, Subscription, Subject, isObservable, noop as noop$9, Observable, defer, of, from, combineLatest, EMPTY } from 'rxjs';
40
35
  import { filter, first, map, takeUntil, switchMap, startWith, debounceTime, takeWhile, tap, distinctUntilChanged, mergeMap, catchError, throttleTime, skip } from 'rxjs/operators';
41
- import * as i1$1 from '@ngx-translate/core';
42
36
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
43
- import * as i1$4 from '@ionic/angular';
44
37
  import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, AlertController, IonicRouteStrategy, NavParams, MenuController, IonContent } from '@ionic/angular';
45
38
  import * as momentImported from 'moment';
46
39
  import { isMoment } from 'moment';
47
- import * as i1 from '@angular/material-moment-adapter';
48
40
  import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
49
41
  import { Keyboard } from '@ionic-native/keyboard/ngx';
50
42
  import { TextMaskModule } from 'angular2-text-mask';
@@ -54,38 +46,32 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
54
46
  import { MatDividerModule } from '@angular/material/divider';
55
47
  import { MatTooltipModule } from '@angular/material/tooltip';
56
48
  import { MatChipsModule } from '@angular/material/chips';
57
- import * as i3$3 from '@angular/router';
58
49
  import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
59
- import * as i1$5 from '@angular/platform-browser';
60
50
  import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
61
- import * as i2$2 from '@angular/common/http';
62
51
  import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
63
52
  import { ColorPickerModule } from 'ngx-color-picker';
64
- import { NativeAudio } from '@ionic-native/native-audio/ngx';
65
- import { Vibration } from '@ionic-native/vibration/ngx';
53
+ import { NativeAudio as NativeAudio$1 } from '@ionic-native/native-audio/ngx';
54
+ import { Vibration as Vibration$1 } from '@ionic-native/vibration/ngx';
66
55
  import { AudioManagement } from '@ionic-native/audio-management/ngx';
67
- import * as i2 from '@ionic-native/native-audio/ngx/index';
68
- import * as i3 from '@ionic-native/vibration/ngx/index';
69
- import * as i4 from '@ionic-native/audio-management/ngx/index';
56
+ import { NativeAudio } from '@ionic-native/native-audio/ngx/index';
57
+ import { Vibration } from '@ionic-native/vibration/ngx/index';
58
+ import { AudioManagement as AudioManagement$1 } from '@ionic-native/audio-management/ngx/index';
70
59
  import * as uuidv4Imported from 'uuid/v4';
71
60
  import { DragDropModule } from '@angular/cdk/drag-drop';
72
61
  import { MarkdownModule } from 'ngx-markdown';
73
62
  import { sign, box, hash, verify } from 'tweetnacl';
74
- import * as i3$1 from '@ionic/storage';
75
63
  import { Storage, IonicStorageModule } from '@ionic/storage';
76
64
  import 'zone.js/dist/zone-error';
77
- import { SplashScreen } from '@ionic-native/splash-screen/ngx';
78
- import { Connection, Network } from '@ionic-native/network/ngx';
79
- import { CacheService, CacheModule } from 'ionic-cache';
80
- import * as i6 from 'ionic-cache/dist/cache.service';
81
- import * as i9 from '@ionic-native/network/ngx/index';
82
- import * as i10 from '@ionic-native/splash-screen/ngx/index';
83
- import { StatusBar } from '@ionic-native/status-bar/ngx';
84
- import * as i2$4 from '@angular/cdk/platform';
65
+ import { SplashScreen as SplashScreen$1 } from '@ionic-native/splash-screen/ngx';
66
+ import { Connection, Network as Network$1 } from '@ionic-native/network/ngx';
67
+ import { CacheService as CacheService$1, CacheModule } from 'ionic-cache';
68
+ import { CacheService } from 'ionic-cache/dist/cache.service';
69
+ import { Network } from '@ionic-native/network/ngx/index';
70
+ import { SplashScreen } from '@ionic-native/splash-screen/ngx/index';
71
+ import { StatusBar as StatusBar$1 } from '@ionic-native/status-bar/ngx';
85
72
  import { Platform as Platform$1 } from '@angular/cdk/platform';
86
- import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
73
+ import { InAppBrowser as InAppBrowser$1 } from '@ionic-native/in-app-browser/ngx';
87
74
  import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
88
- import * as i2$3 from 'apollo-angular';
89
75
  import { Apollo } from 'apollo-angular';
90
76
  import { WebSocketLink } from '@apollo/client/link/ws';
91
77
  import { getMainDefinition } from '@apollo/client/utilities';
@@ -93,14 +79,13 @@ import { RetryLink } from '@apollo/client/link/retry';
93
79
  import QueueLink from 'apollo-link-queue';
94
80
  import SerializingLink from 'apollo-link-serialize';
95
81
  import loggerLink from 'apollo-link-logger';
96
- import * as i3$2 from 'apollo-angular/http';
97
82
  import { HttpLink } from 'apollo-angular/http';
98
83
  import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
99
- import { NotificationVisibility, Downloader } from '@ionic-native/downloader/ngx';
100
- import * as i14 from '@ionic-native/status-bar/ngx/index';
101
- import * as i15 from '@ionic-native/keyboard/ngx/index';
102
- import * as i17 from '@ionic-native/in-app-browser/ngx/index';
103
- import * as i18 from '@ionic-native/downloader/ngx/index';
84
+ import { NotificationVisibility, Downloader as Downloader$1 } from '@ionic-native/downloader/ngx';
85
+ import { StatusBar } from '@ionic-native/status-bar/ngx/index';
86
+ import { Keyboard as Keyboard$1 } from '@ionic-native/keyboard/ngx/index';
87
+ import { InAppBrowser } from '@ionic-native/in-app-browser/ngx/index';
88
+ import { Downloader } from '@ionic-native/downloader/ngx/index';
104
89
  import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
105
90
  import { SelectionModel } from '@angular/cdk/collections';
106
91
  import { NgxJdenticonModule } from 'ngx-jdenticon';
@@ -991,14 +976,14 @@ class MatAutocompleteConfigHolder {
991
976
  return this.fields[fieldName] || this.add(fieldName);
992
977
  }
993
978
  }
994
- const noop$8 = (_) => { };
995
- const ɵ0$c = noop$8;
979
+ const noop = (_) => { };
980
+ const ɵ0 = noop;
996
981
  class MatAutocompleteField {
997
982
  constructor(cd, formGroupDir) {
998
983
  this.cd = cd;
999
984
  this.formGroupDir = formGroupDir;
1000
- this._onChangeCallback = noop$8;
1001
- this._onTouchedCallback = noop$8;
985
+ this._onChangeCallback = noop;
986
+ this._onTouchedCallback = noop;
1002
987
  this.logPrefix = '[mat-autocomplete] ';
1003
988
  this.formControlName = null;
1004
989
  this.required = false;
@@ -1718,7 +1703,7 @@ class DateFormatPipe {
1718
1703
  return this.dateAdapter.format(date, displayFormat);
1719
1704
  }
1720
1705
  }
1721
- DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1706
+ DateFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(ɵɵinject(MomentDateAdapter), ɵɵinject(TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
1722
1707
  DateFormatPipe.decorators = [
1723
1708
  { type: Pipe, args: [{
1724
1709
  name: 'dateFormat'
@@ -1730,7 +1715,7 @@ DateFormatPipe.ctorParameters = () => [
1730
1715
  { type: TranslateService }
1731
1716
  ];
1732
1717
 
1733
- const moment$6 = momentImported;
1718
+ const moment = momentImported;
1734
1719
  class DateDiffDurationPipe {
1735
1720
  constructor(dateAdapter, translate) {
1736
1721
  this.dateAdapter = dateAdapter;
@@ -1746,17 +1731,17 @@ class DateDiffDurationPipe {
1746
1731
  return this.format(startDate, endDate);
1747
1732
  }
1748
1733
  format(startDate, endDate) {
1749
- const duration = moment$6.duration(endDate.diff(startDate));
1734
+ const duration = moment.duration(endDate.diff(startDate));
1750
1735
  if (duration.asMinutes() < 0)
1751
1736
  return '';
1752
- const timeDuration = moment$6(0)
1737
+ const timeDuration = moment(0)
1753
1738
  .hour(duration.hours())
1754
1739
  .minute(duration.minutes());
1755
1740
  const days = Math.floor(duration.asDays());
1756
1741
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
1757
1742
  }
1758
1743
  }
1759
- DateDiffDurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(i0.ɵɵinject(i1$2.DateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1744
+ DateDiffDurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(ɵɵinject(DateAdapter), ɵɵinject(TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
1760
1745
  DateDiffDurationPipe.decorators = [
1761
1746
  { type: Pipe, args: [{
1762
1747
  name: 'dateDiffDuration'
@@ -1777,7 +1762,7 @@ class DateFromNowPipe {
1777
1762
  return date ? date.fromNow(args && args.withoutSuffix) : '';
1778
1763
  }
1779
1764
  }
1780
- DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1765
+ DateFromNowPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(ɵɵinject(MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1781
1766
  DateFromNowPipe.decorators = [
1782
1767
  { type: Pipe, args: [{
1783
1768
  name: 'dateFromNow'
@@ -1846,7 +1831,7 @@ function formatToDD(value, opts) {
1846
1831
  value *= -1;
1847
1832
  }
1848
1833
  }
1849
- let degrees = roundFloat$1(value, opts.maxDecimals).toString();
1834
+ let degrees = roundFloat(value, opts.maxDecimals).toString();
1850
1835
  // Add sign
1851
1836
  let sign = negative ? '-' : '+';
1852
1837
  if (opts.placeholderChar) {
@@ -1897,7 +1882,7 @@ function formatToDDMMSS(value, opts) {
1897
1882
  }
1898
1883
  let degrees = Math.trunc(value);
1899
1884
  let minutes = Math.trunc((value - degrees) * 60);
1900
- let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1885
+ let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
1901
1886
  while (seconds >= 60) {
1902
1887
  seconds -= 60;
1903
1888
  minutes += 1;
@@ -1965,7 +1950,7 @@ function formatToDDMM(value, opts) {
1965
1950
  }
1966
1951
  }
1967
1952
  let degrees = Math.trunc(value);
1968
- let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
1953
+ let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
1969
1954
  while (minutes >= 60) {
1970
1955
  minutes -= 60;
1971
1956
  degrees += 1;
@@ -2016,15 +2001,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
2016
2001
  return NaN;
2017
2002
  }
2018
2003
  if (pattern === 'DD')
2019
- return roundFloat$1(degrees, maxDecimals);
2004
+ return roundFloat(degrees, maxDecimals);
2020
2005
  const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
2021
2006
  const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
2022
2007
  const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
2023
2008
  const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
2024
2009
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
2025
- return roundFloat$1(degrees, maxDecimals);
2010
+ return roundFloat(degrees, maxDecimals);
2026
2011
  }
2027
- function roundFloat$1(input, maxDecimals) {
2012
+ function roundFloat(input, maxDecimals) {
2028
2013
  if (maxDecimals > 0) {
2029
2014
  const powDecimal = Math.pow(10, maxDecimals);
2030
2015
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -2044,7 +2029,7 @@ class LatLongFormatPipe {
2044
2029
  return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
2045
2030
  }
2046
2031
  }
2047
- LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2032
+ LatLongFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2048
2033
  LatLongFormatPipe.decorators = [
2049
2034
  { type: Pipe, args: [{
2050
2035
  name: 'latLongFormat'
@@ -2056,7 +2041,7 @@ class LatitudeFormatPipe {
2056
2041
  this.transform = formatLatitude;
2057
2042
  }
2058
2043
  }
2059
- LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2044
+ LatitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2060
2045
  LatitudeFormatPipe.decorators = [
2061
2046
  { type: Pipe, args: [{
2062
2047
  name: 'latitudeFormat'
@@ -2068,7 +2053,7 @@ class LongitudeFormatPipe {
2068
2053
  this.transform = formatLongitude;
2069
2054
  }
2070
2055
  }
2071
- LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2056
+ LongitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2072
2057
  LongitudeFormatPipe.decorators = [
2073
2058
  { type: Pipe, args: [{
2074
2059
  name: 'longitudeFormat'
@@ -2088,7 +2073,7 @@ class NumberFormatPipe {
2088
2073
  }
2089
2074
  }
2090
2075
  }
2091
- NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2076
+ NumberFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2092
2077
  NumberFormatPipe.decorators = [
2093
2078
  { type: Pipe, args: [{
2094
2079
  name: 'numberFormat'
@@ -2128,7 +2113,7 @@ class HighlightPipe {
2128
2113
  }
2129
2114
  }
2130
2115
  }
2131
- HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2116
+ HighlightPipe.ɵprov = ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2132
2117
  HighlightPipe.decorators = [
2133
2118
  { type: Pipe, args: [{
2134
2119
  name: 'highlight'
@@ -2193,7 +2178,7 @@ FileSizePipe.decorators = [
2193
2178
  { type: Pipe, args: [{ name: 'fileSize' },] }
2194
2179
  ];
2195
2180
 
2196
- const moment$5 = momentImported;
2181
+ const moment$1 = momentImported;
2197
2182
  const DATE_UNIX_TIMESTAMP = 'X';
2198
2183
  const DATE_UNIX_MS_TIMESTAMP = 'x';
2199
2184
  class DateUtils {
@@ -2235,32 +2220,32 @@ function fromDateISOString(value) {
2235
2220
  if (!value || isMoment(value))
2236
2221
  return value;
2237
2222
  // Parse the input value, as a ISO date time
2238
- const date = moment$5(value, DATE_ISO_PATTERN);
2223
+ const date = moment$1(value, DATE_ISO_PATTERN);
2239
2224
  if (date.isValid())
2240
2225
  return date;
2241
2226
  // Not valid: trying to convert from unix timestamp
2242
2227
  if (typeof value === 'string') {
2243
2228
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2244
2229
  if (value.length === 10) {
2245
- return moment$5(value, DATE_UNIX_TIMESTAMP);
2230
+ return moment$1(value, DATE_UNIX_TIMESTAMP);
2246
2231
  }
2247
2232
  else if (value.length === 13) {
2248
- return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
2233
+ return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2249
2234
  }
2250
2235
  }
2251
2236
  console.warn('Unable to parse date: ' + value);
2252
2237
  return undefined;
2253
2238
  }
2254
2239
  function fromUnixTimestamp(timeInSec) {
2255
- return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
2240
+ return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2256
2241
  }
2257
2242
  function fromUnixMsTimestamp(timeInMs) {
2258
- return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2243
+ return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2259
2244
  }
2260
2245
  function toDuration(value, unit) {
2261
2246
  if (!value)
2262
2247
  return undefined;
2263
- const duration = moment$5.duration(value, unit);
2248
+ const duration = moment$1.duration(value, unit);
2264
2249
  // fix 990+ ms
2265
2250
  if (duration.milliseconds() >= 990) {
2266
2251
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2289,7 +2274,7 @@ class DurationPipe {
2289
2274
  return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
2290
2275
  }
2291
2276
  }
2292
- DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2277
+ DurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(ɵɵinject(TranslateService)); }, token: DurationPipe, providedIn: "root" });
2293
2278
  DurationPipe.decorators = [
2294
2279
  { type: Pipe, args: [{
2295
2280
  name: 'duration'
@@ -2310,7 +2295,7 @@ class MathAbsPipe {
2310
2295
  }
2311
2296
  }
2312
2297
  }
2313
- MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2298
+ MathAbsPipe.ɵprov = ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2314
2299
  MathAbsPipe.decorators = [
2315
2300
  { type: Pipe, args: [{
2316
2301
  name: 'mathAbs'
@@ -2322,7 +2307,7 @@ class EvenPipe {
2322
2307
  return val % 2 === 0;
2323
2308
  }
2324
2309
  }
2325
- EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2310
+ EvenPipe.ɵprov = ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2326
2311
  EvenPipe.decorators = [
2327
2312
  { type: Pipe, args: [{
2328
2313
  name: 'even'
@@ -2334,7 +2319,7 @@ class OddPipe {
2334
2319
  return val % 2 !== 0;
2335
2320
  }
2336
2321
  }
2337
- OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2322
+ OddPipe.ɵprov = ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2338
2323
  OddPipe.decorators = [
2339
2324
  { type: Pipe, args: [{
2340
2325
  name: 'odd'
@@ -2442,7 +2427,7 @@ class MapGetPipe {
2442
2427
  return val[key];
2443
2428
  }
2444
2429
  }
2445
- MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2430
+ MapGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2446
2431
  MapGetPipe.decorators = [
2447
2432
  { type: Pipe, args: [{
2448
2433
  name: 'mapGet'
@@ -2456,7 +2441,7 @@ class MapKeysPipe {
2456
2441
  return Object.keys(map);
2457
2442
  }
2458
2443
  }
2459
- MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2444
+ MapKeysPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2460
2445
  MapKeysPipe.decorators = [
2461
2446
  { type: Pipe, args: [{
2462
2447
  name: 'mapKeys'
@@ -2470,7 +2455,7 @@ class MapValuesPipe {
2470
2455
  return Object.values(map);
2471
2456
  }
2472
2457
  }
2473
- MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2458
+ MapValuesPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2474
2459
  MapValuesPipe.decorators = [
2475
2460
  { type: Pipe, args: [{
2476
2461
  name: 'mapValues'
@@ -2483,7 +2468,7 @@ class IsNotNilOrBlankPipe {
2483
2468
  return isNotNilOrBlank(value);
2484
2469
  }
2485
2470
  }
2486
- IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2471
+ IsNotNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2487
2472
  IsNotNilOrBlankPipe.decorators = [
2488
2473
  { type: Pipe, args: [{
2489
2474
  name: 'isNotNilOrBlank'
@@ -2495,7 +2480,7 @@ class IsNilOrBlankPipe {
2495
2480
  return isNilOrBlank(value);
2496
2481
  }
2497
2482
  }
2498
- IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2483
+ IsNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2499
2484
  IsNilOrBlankPipe.decorators = [
2500
2485
  { type: Pipe, args: [{
2501
2486
  name: 'isNilOrBlank'
@@ -2507,7 +2492,7 @@ class ToStringPipe {
2507
2492
  return (value !== null && value !== undefined) ? value.toString() : '';
2508
2493
  }
2509
2494
  }
2510
- ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2495
+ ToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2511
2496
  ToStringPipe.decorators = [
2512
2497
  { type: Pipe, args: [{
2513
2498
  name: 'toString'
@@ -2519,7 +2504,7 @@ class StrLengthPipe {
2519
2504
  return value && value.length || 0;
2520
2505
  }
2521
2506
  }
2522
- StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2507
+ StrLengthPipe.ɵprov = ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2523
2508
  StrLengthPipe.decorators = [
2524
2509
  { type: Pipe, args: [{
2525
2510
  name: 'strLength'
@@ -2596,7 +2581,7 @@ class TranslateContextService {
2596
2581
  return translations[keys[keys.length - 1]]; // Return the last keys translation
2597
2582
  }
2598
2583
  }
2599
- TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2584
+ TranslateContextService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(ɵɵinject(TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2600
2585
  TranslateContextService.decorators = [
2601
2586
  { type: Injectable, args: [{ providedIn: 'root' },] }
2602
2587
  ];
@@ -2646,7 +2631,7 @@ class PropertyGetPipe {
2646
2631
  args && args.defaultValue);
2647
2632
  }
2648
2633
  }
2649
- PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2634
+ PropertyGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2650
2635
  PropertyGetPipe.decorators = [
2651
2636
  { type: Pipe, args: [{
2652
2637
  name: 'propertyGet'
@@ -2671,7 +2656,7 @@ NgInitDirective.propDecorators = {
2671
2656
  ngInit: [{ type: Output }]
2672
2657
  };
2673
2658
 
2674
- const moment$4 = momentImported;
2659
+ const moment$2 = momentImported;
2675
2660
  // @dynamic
2676
2661
  class SharedValidators {
2677
2662
  static getDoubleRegexp(maxDecimals) {
@@ -2688,7 +2673,7 @@ class SharedValidators {
2688
2673
  }
2689
2674
  static validDate(control) {
2690
2675
  const value = control.value;
2691
- const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
2676
+ const date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
2692
2677
  if (date && (!date.isValid() || date.year() < 1970)) {
2693
2678
  return { validDate: true };
2694
2679
  }
@@ -3762,7 +3747,7 @@ class FormErrorTranslator {
3762
3747
  return errorKey;
3763
3748
  }
3764
3749
  }
3765
- FormErrorTranslator.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormErrorTranslator_Factory() { return new FormErrorTranslator(i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorTranslator, providedIn: "root" });
3750
+ FormErrorTranslator.ɵprov = ɵɵdefineInjectable({ factory: function FormErrorTranslator_Factory() { return new FormErrorTranslator(ɵɵinject(TranslateService), ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorTranslator, providedIn: "root" });
3766
3751
  FormErrorTranslator.decorators = [
3767
3752
  { type: Injectable, args: [{ providedIn: 'root' },] }
3768
3753
  ];
@@ -3948,7 +3933,7 @@ const isIpad = (win) => {
3948
3933
  }
3949
3934
  return false;
3950
3935
  };
3951
- const ɵ0$b = isIpad;
3936
+ const ɵ0$1 = isIpad;
3952
3937
  const isIOS = (win) => testUserAgent(win, /iPhone|iPod/i) || isIpad(win);
3953
3938
  const isAndroid = (win) => testUserAgent(win, /android|sink/i);
3954
3939
  const isCordova = (win) => !!(win['cordova'] || win['phonegap'] || win['PhoneGap']);
@@ -4140,9 +4125,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
4140
4125
  const hour = parseInt(durationParts[0] || '0');
4141
4126
  const minute = parseInt(durationParts[1] || '0');
4142
4127
  const value = hour + (minute + 0.5) / 60;
4143
- return roundFloat(value, maxDecimals);
4128
+ return roundFloat$1(value, maxDecimals);
4144
4129
  }
4145
- function roundFloat(input, maxDecimals) {
4130
+ function roundFloat$1(input, maxDecimals) {
4146
4131
  if (maxDecimals > 0) {
4147
4132
  const powDecimal = Math.pow(10, maxDecimals);
4148
4133
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -4166,9 +4151,9 @@ const MASKS = {
4166
4151
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
4167
4152
  }
4168
4153
  };
4169
- const noop$7 = () => {
4154
+ const noop$1 = () => {
4170
4155
  };
4171
- const ɵ0$a = noop$7;
4156
+ const ɵ0$2 = noop$1;
4172
4157
  class MatLatLongField {
4173
4158
  constructor(platform, translate, formBuilder, cd, formGroupDir) {
4174
4159
  this.platform = platform;
@@ -4176,8 +4161,8 @@ class MatLatLongField {
4176
4161
  this.formBuilder = formBuilder;
4177
4162
  this.cd = cd;
4178
4163
  this.formGroupDir = formGroupDir;
4179
- this._onChangeCallback = noop$7;
4180
- this._onTouchedCallback = noop$7;
4164
+ this._onChangeCallback = noop$1;
4165
+ this._onTouchedCallback = noop$1;
4181
4166
  this._subscription = new Subscription();
4182
4167
  this.disabling = false;
4183
4168
  this.writing = false;
@@ -4514,14 +4499,14 @@ SharedMatLatLongModule.decorators = [
4514
4499
  },] }
4515
4500
  ];
4516
4501
 
4517
- const DEFAULT_VALUE_ACCESSOR$5 = {
4502
+ const DEFAULT_VALUE_ACCESSOR = {
4518
4503
  provide: NG_VALUE_ACCESSOR,
4519
4504
  useExisting: forwardRef(() => MatDate),
4520
4505
  multi: true
4521
4506
  };
4522
- const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4523
- const noop$6 = () => { };
4524
- const ɵ0$9 = noop$6;
4507
+ const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4508
+ const noop$2 = () => { };
4509
+ const ɵ0$3 = noop$2;
4525
4510
  class MatDate {
4526
4511
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4527
4512
  this.dateAdapter = dateAdapter;
@@ -4530,12 +4515,12 @@ class MatDate {
4530
4515
  this.cd = cd;
4531
4516
  this.keyboard = keyboard;
4532
4517
  this.formGroupDir = formGroupDir;
4533
- this._onChangeCallback = noop$6;
4534
- this._onTouchedCallback = noop$6;
4518
+ this._onChangeCallback = noop$2;
4519
+ this._onTouchedCallback = noop$2;
4535
4520
  this._subscription = new Subscription();
4536
4521
  this.writing = true;
4537
4522
  this.disabling = false;
4538
- this.dayMask = DAY_MASK$2;
4523
+ this.dayMask = DAY_MASK;
4539
4524
  this.disabled = false;
4540
4525
  this.floatLabel = 'auto';
4541
4526
  this.readonly = false;
@@ -4772,7 +4757,7 @@ MatDate.decorators = [
4772
4757
  selector: 'mat-date-field',
4773
4758
  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",
4774
4759
  providers: [
4775
- DEFAULT_VALUE_ACCESSOR$5,
4760
+ DEFAULT_VALUE_ACCESSOR,
4776
4761
  ],
4777
4762
  changeDetection: ChangeDetectionStrategy.OnPush,
4778
4763
  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%}"]
@@ -4805,17 +4790,17 @@ MatDate.propDecorators = {
4805
4790
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
4806
4791
  };
4807
4792
 
4808
- const DEFAULT_VALUE_ACCESSOR$4 = {
4793
+ const DEFAULT_VALUE_ACCESSOR$1 = {
4809
4794
  provide: NG_VALUE_ACCESSOR,
4810
4795
  useExisting: forwardRef(() => MatDateTime),
4811
4796
  multi: true
4812
4797
  };
4813
4798
  const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4814
4799
  const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
4815
- const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4816
- const noop$5 = () => {
4800
+ const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4801
+ const noop$3 = () => {
4817
4802
  };
4818
- const ɵ0$8 = noop$5;
4803
+ const ɵ0$4 = noop$3;
4819
4804
  class MatDateTime {
4820
4805
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4821
4806
  this.platform = platform;
@@ -4825,14 +4810,14 @@ class MatDateTime {
4825
4810
  this.cd = cd;
4826
4811
  this.keyboard = keyboard;
4827
4812
  this.formGroupDir = formGroupDir;
4828
- this._onChangeCallback = noop$5;
4829
- this._onTouchedCallback = noop$5;
4813
+ this._onChangeCallback = noop$3;
4814
+ this._onTouchedCallback = noop$3;
4830
4815
  this._subscription = new Subscription();
4831
4816
  this.writing = true;
4832
4817
  this.disabling = false;
4833
4818
  this._readonly = false;
4834
4819
  this.dayMask = DAY_MASK$1;
4835
- this.hourMask = HOUR_MASK$1;
4820
+ this.hourMask = HOUR_MASK;
4836
4821
  this.floatLabel = 'auto';
4837
4822
  this.compact = false;
4838
4823
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -5144,7 +5129,7 @@ MatDateTime.decorators = [
5144
5129
  selector: 'mat-date-time-field',
5145
5130
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{(formControl.errors.msg?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n",
5146
5131
  providers: [
5147
- DEFAULT_VALUE_ACCESSOR$4,
5132
+ DEFAULT_VALUE_ACCESSOR$1,
5148
5133
  ],
5149
5134
  changeDetection: ChangeDetectionStrategy.OnPush,
5150
5135
  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%}"]
@@ -5178,15 +5163,15 @@ MatDateTime.propDecorators = {
5178
5163
  matInputs: [{ type: ViewChildren, args: ['matInput',] }]
5179
5164
  };
5180
5165
 
5181
- const DEFAULT_VALUE_ACCESSOR$3 = {
5166
+ const DEFAULT_VALUE_ACCESSOR$2 = {
5182
5167
  provide: NG_VALUE_ACCESSOR,
5183
5168
  useExisting: forwardRef(() => MatDateShort),
5184
5169
  multi: true
5185
5170
  };
5186
- const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
5171
+ const DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
5187
5172
  const noop$4 = () => {
5188
5173
  };
5189
- const ɵ0$7 = noop$4;
5174
+ const ɵ0$5 = noop$4;
5190
5175
  class MatDateShort {
5191
5176
  constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5192
5177
  this.dateAdapter = dateAdapter;
@@ -5199,7 +5184,7 @@ class MatDateShort {
5199
5184
  this._onTouchedCallback = noop$4;
5200
5185
  this.writing = true;
5201
5186
  this.disabling = false;
5202
- this.dayMask = DAY_MASK;
5187
+ this.dayMask = DAY_MASK$2;
5203
5188
  this.disabled = false;
5204
5189
  this.floatLabel = 'auto';
5205
5190
  this.readonly = false;
@@ -5444,7 +5429,7 @@ MatDateShort.decorators = [
5444
5429
  selector: 'mat-date-short-field',
5445
5430
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_YEAR_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker1)\"\n (keyup.escape)=\"preventEvent($event)\"\n (click)=\"matInput.select()\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker1)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker1\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker1)\"\n [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"writeValue(null)\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n\n <mat-datepicker #datePicker1\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n (yearSelected)=\"closeDatePicker($event, datePicker1)\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n",
5446
5431
  providers: [
5447
- DEFAULT_VALUE_ACCESSOR$3,
5432
+ DEFAULT_VALUE_ACCESSOR$2,
5448
5433
  ],
5449
5434
  changeDetection: ChangeDetectionStrategy.OnPush,
5450
5435
  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%}"]
@@ -5512,16 +5497,16 @@ SharedMatDateTimeModule.decorators = [
5512
5497
  },] }
5513
5498
  ];
5514
5499
 
5515
- const DEFAULT_VALUE_ACCESSOR$2 = {
5500
+ const DEFAULT_VALUE_ACCESSOR$3 = {
5516
5501
  provide: NG_VALUE_ACCESSOR,
5517
5502
  useExisting: forwardRef(() => MatDuration),
5518
5503
  multi: true
5519
5504
  };
5520
5505
  const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
5521
- const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5522
- const noop$3 = () => {
5506
+ const HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5507
+ const noop$5 = () => {
5523
5508
  };
5524
- const ɵ0$6 = noop$3;
5509
+ const ɵ0$6 = noop$5;
5525
5510
  class MatDuration {
5526
5511
  constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
5527
5512
  this.dateAdapter = dateAdapter;
@@ -5530,11 +5515,11 @@ class MatDuration {
5530
5515
  this.cd = cd;
5531
5516
  this.formGroupDir = formGroupDir;
5532
5517
  this._subscription = new Subscription();
5533
- this._onChangeCallback = noop$3;
5534
- this._onTouchedCallback = noop$3;
5518
+ this._onChangeCallback = noop$5;
5519
+ this._onTouchedCallback = noop$5;
5535
5520
  this.writing = true;
5536
5521
  this.disabling = false;
5537
- this.hourMask = HOUR_MASK;
5522
+ this.hourMask = HOUR_MASK$1;
5538
5523
  this.disabled = false;
5539
5524
  this.floatLabel = 'auto';
5540
5525
  this.readonly = false;
@@ -5714,7 +5699,7 @@ MatDuration.decorators = [
5714
5699
  selector: 'mat-duration-field',
5715
5700
  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",
5716
5701
  providers: [
5717
- DEFAULT_VALUE_ACCESSOR$2,
5702
+ DEFAULT_VALUE_ACCESSOR$3,
5718
5703
  ],
5719
5704
  changeDetection: ChangeDetectionStrategy.OnPush,
5720
5705
  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%}"]
@@ -5771,22 +5756,22 @@ SharedMatDurationModule.decorators = [
5771
5756
  },] }
5772
5757
  ];
5773
5758
 
5774
- const DEFAULT_VALUE_ACCESSOR$1 = {
5759
+ const DEFAULT_VALUE_ACCESSOR$4 = {
5775
5760
  provide: NG_VALUE_ACCESSOR,
5776
5761
  useExisting: forwardRef(() => MatBooleanField),
5777
5762
  multi: true
5778
5763
  };
5779
- const noop$2 = () => {
5764
+ const noop$6 = () => {
5780
5765
  };
5781
- const ɵ0$5 = noop$2;
5766
+ const ɵ0$7 = noop$6;
5782
5767
  class MatBooleanField {
5783
5768
  constructor(translate, formBuilder, cd, formGroupDir) {
5784
5769
  this.translate = translate;
5785
5770
  this.formBuilder = formBuilder;
5786
5771
  this.cd = cd;
5787
5772
  this.formGroupDir = formGroupDir;
5788
- this._onChangeCallback = noop$2;
5789
- this._onTouchedCallback = noop$2;
5773
+ this._onChangeCallback = noop$6;
5774
+ this._onTouchedCallback = noop$6;
5790
5775
  this._writing = false;
5791
5776
  this.showRadio = false;
5792
5777
  this.disabled = false;
@@ -5949,7 +5934,7 @@ MatBooleanField.decorators = [
5949
5934
  selector: 'mat-boolean-field',
5950
5935
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label>&nbsp;</ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
5951
5936
  providers: [
5952
- DEFAULT_VALUE_ACCESSOR$1
5937
+ DEFAULT_VALUE_ACCESSOR$4
5953
5938
  ],
5954
5939
  changeDetection: ChangeDetectionStrategy.OnPush,
5955
5940
  styles: [":host{width:100%}.mat-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-form-field.mat-boolean-field-button{margin-top:-4px}.mat-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis:calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}"]
@@ -6195,7 +6180,7 @@ class MatNumpadDomService {
6195
6180
  this.appRef.detachView(this.componentRef.hostView);
6196
6181
  }
6197
6182
  }
6198
- 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" });
6183
+ MatNumpadDomService.ɵprov = ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
6199
6184
  MatNumpadDomService.decorators = [
6200
6185
  { type: Injectable, args: [{
6201
6186
  providedIn: 'root'
@@ -6559,7 +6544,7 @@ SharedMatNumpadModule.decorators = [
6559
6544
  },] }
6560
6545
  ];
6561
6546
 
6562
- const DEFAULT_VALUE_ACCESSOR = {
6547
+ const DEFAULT_VALUE_ACCESSOR$5 = {
6563
6548
  provide: NG_VALUE_ACCESSOR,
6564
6549
  useExisting: forwardRef(() => MatSwipeField),
6565
6550
  multi: true
@@ -6822,7 +6807,7 @@ MatSwipeField.decorators = [
6822
6807
  { type: Component, args: [{
6823
6808
  selector: 'mat-swipe-field',
6824
6809
  template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n",
6825
- providers: [DEFAULT_VALUE_ACCESSOR],
6810
+ providers: [DEFAULT_VALUE_ACCESSOR$5],
6826
6811
  changeDetection: ChangeDetectionStrategy.OnPush,
6827
6812
  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}"]
6828
6813
  },] }
@@ -6880,14 +6865,14 @@ SharedMatSwipeModule.decorators = [
6880
6865
  },] }
6881
6866
  ];
6882
6867
 
6883
- const noop$1 = () => { };
6884
- const ɵ0$4 = noop$1;
6868
+ const noop$7 = () => { };
6869
+ const ɵ0$8 = noop$7;
6885
6870
  class MatChipsField {
6886
6871
  constructor(cd, formGroupDir) {
6887
6872
  this.cd = cd;
6888
6873
  this.formGroupDir = formGroupDir;
6889
- this._onChangeCallback = noop$1;
6890
- this._onTouchedCallback = noop$1;
6874
+ this._onChangeCallback = noop$7;
6875
+ this._onTouchedCallback = noop$7;
6891
6876
  this.logPrefix = '[mat-chips] ';
6892
6877
  this.formControlName = null;
6893
6878
  this.required = false;
@@ -7756,7 +7741,7 @@ class ProgressBarService {
7756
7741
  }
7757
7742
  }
7758
7743
  }
7759
- ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7744
+ ProgressBarService.ɵprov = ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7760
7745
  ProgressBarService.decorators = [
7761
7746
  { type: Injectable, args: [{ providedIn: 'root' },] }
7762
7747
  ];
@@ -7800,7 +7785,7 @@ class AppGestureConfig extends HammerGestureConfig {
7800
7785
  return mc;
7801
7786
  }
7802
7787
  }
7803
- AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7788
+ AppGestureConfig.ɵprov = ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7804
7789
  AppGestureConfig.decorators = [
7805
7790
  { type: Injectable, args: [{ providedIn: 'root' },] }
7806
7791
  ];
@@ -8025,7 +8010,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
8025
8010
  this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
8026
8011
  }
8027
8012
  }
8028
- MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
8013
+ MatPaginatorI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(ɵɵinject(TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
8029
8014
  MatPaginatorI18n.decorators = [
8030
8015
  { type: Injectable, args: [{ providedIn: 'root' },] }
8031
8016
  ];
@@ -8115,17 +8100,17 @@ function getColorContrast(color, bw) {
8115
8100
  return rgbArrayToHex(rgb.map(v => 255 - v));
8116
8101
  }
8117
8102
 
8118
- const noop = () => {
8103
+ const noop$8 = () => {
8119
8104
  };
8120
- const ɵ0$3 = noop;
8105
+ const ɵ0$9 = noop$8;
8121
8106
  class AppFormField {
8122
8107
  constructor(translate, cd, injector, formGroupDir) {
8123
8108
  this.translate = translate;
8124
8109
  this.cd = cd;
8125
8110
  this.injector = injector;
8126
8111
  this.formGroupDir = formGroupDir;
8127
- this._onChangeCallback = noop;
8128
- this._onTouchedCallback = noop;
8112
+ this._onChangeCallback = noop$8;
8113
+ this._onTouchedCallback = noop$8;
8129
8114
  this.readonly = false;
8130
8115
  this.compact = false;
8131
8116
  this.floatLabel = 'auto';
@@ -8561,14 +8546,14 @@ class AudioProvider extends StartableService {
8561
8546
  });
8562
8547
  }
8563
8548
  }
8564
- 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" });
8549
+ 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" });
8565
8550
  AudioProvider.decorators = [
8566
8551
  { type: Injectable, args: [{ providedIn: 'root' },] }
8567
8552
  ];
8568
8553
  AudioProvider.ctorParameters = () => [
8569
8554
  { type: Platform },
8570
- { type: NativeAudio, decorators: [{ type: Optional }] },
8571
- { type: Vibration, decorators: [{ type: Optional }] },
8555
+ { type: NativeAudio$1, decorators: [{ type: Optional }] },
8556
+ { type: Vibration$1, decorators: [{ type: Optional }] },
8572
8557
  { type: AudioManagement, decorators: [{ type: Optional }] }
8573
8558
  ];
8574
8559
 
@@ -8650,7 +8635,7 @@ class Hotkeys {
8650
8635
  });
8651
8636
  }
8652
8637
  }
8653
- 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" });
8638
+ Hotkeys.ɵprov = ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(ɵɵinject(EventManager), ɵɵinject(MatDialog), ɵɵinject(DOCUMENT), ɵɵinject(ModalController)); }, token: Hotkeys, providedIn: "root" });
8654
8639
  Hotkeys.decorators = [
8655
8640
  { type: Injectable, args: [{
8656
8641
  providedIn: 'root'
@@ -8824,7 +8809,7 @@ class Base64ImageReader {
8824
8809
  }
8825
8810
  }
8826
8811
 
8827
- const uuidv4$1 = uuidv4Imported;
8812
+ const uuidv4 = uuidv4Imported;
8828
8813
  class FileService {
8829
8814
  constructor(platform,
8830
8815
  //private transfer: FileTransfer,
@@ -8861,7 +8846,7 @@ class FileService {
8861
8846
  const lastSlashIndex = source.lastIndexOf('/');
8862
8847
  if (lastSlashIndex === -1)
8863
8848
  throw new Error('Invalid URL: ' + source);
8864
- const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
8849
+ const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
8865
8850
  // Download into the file system
8866
8851
  if (responseType === 'file' && this.canUseFileSystem) {
8867
8852
  console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
@@ -8917,7 +8902,7 @@ class FileService {
8917
8902
  this._started = true;
8918
8903
  }
8919
8904
  }
8920
- 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" });
8905
+ FileService.ɵprov = ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(ɵɵinject(Platform), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
8921
8906
  FileService.decorators = [
8922
8907
  { type: Injectable, args: [{
8923
8908
  providedIn: 'root',
@@ -9083,7 +9068,7 @@ class Base58 {
9083
9068
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
9084
9069
 
9085
9070
  const scrypt = require('scrypt-async');
9086
- const sha256$1 = require('hash.js/lib/hash/sha/256');
9071
+ const sha256 = require('hash.js/lib/hash/sha/256');
9087
9072
  const sha512 = require('hash.js/lib/hash/sha/512');
9088
9073
  const nacl = {
9089
9074
  sign,
@@ -9187,7 +9172,7 @@ class CryptoService {
9187
9172
  * Hash (using SHA256) a message
9188
9173
  */
9189
9174
  sha256(message) {
9190
- return sha256$1().update(message).digest('hex');
9175
+ return sha256().update(message).digest('hex');
9191
9176
  }
9192
9177
  /**
9193
9178
  * Hash (using SHA512) a message
@@ -9200,7 +9185,7 @@ class CryptoService {
9200
9185
  return nacl.util.encodeBase64(m);
9201
9186
  }
9202
9187
  }
9203
- CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
9188
+ CryptoService.ɵprov = ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
9204
9189
  CryptoService.decorators = [
9205
9190
  { type: Injectable, args: [{ providedIn: 'root' },] }
9206
9191
  ];
@@ -9253,6 +9238,10 @@ function isInstanceOf(obj, constructor) {
9253
9238
  }
9254
9239
  // @dynamic
9255
9240
  class EntityUtils {
9241
+ // Check that the object has a NOT nil attribute (ID by default)
9242
+ static isEntity(obj) {
9243
+ return isNotNil(obj.__typename) && (typeof obj.fromObject === 'function') && (typeof obj.asObject === 'function');
9244
+ }
9256
9245
  // Check that the object has a NOT nil attribute (ID by default)
9257
9246
  static isNotEmpty(obj, checkedAttribute) {
9258
9247
  return !!obj && obj[checkedAttribute] !== null && obj[checkedAttribute] !== undefined;
@@ -10437,7 +10426,7 @@ class LocalSettingsService extends StartableService {
10437
10426
  return page;
10438
10427
  }
10439
10428
  }
10440
- 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" });
10429
+ 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" });
10441
10430
  LocalSettingsService.decorators = [
10442
10431
  { type: Injectable, args: [{
10443
10432
  providedIn: 'root',
@@ -11095,7 +11084,7 @@ class NetworkService extends StartableService {
11095
11084
  });
11096
11085
  }
11097
11086
  }
11098
- 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" });
11087
+ 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" });
11099
11088
  NetworkService.decorators = [
11100
11089
  { type: Injectable, args: [{ providedIn: 'root' },] }
11101
11090
  ];
@@ -11106,16 +11095,16 @@ NetworkService.ctorParameters = () => [
11106
11095
  { type: CryptoService },
11107
11096
  { type: Storage },
11108
11097
  { type: LocalSettingsService },
11109
- { type: CacheService },
11098
+ { type: CacheService$1 },
11110
11099
  { type: HttpClient },
11111
11100
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
11112
- { type: Network, decorators: [{ type: Optional }] },
11113
- { type: SplashScreen, decorators: [{ type: Optional }] },
11101
+ { type: Network$1, decorators: [{ type: Optional }] },
11102
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
11114
11103
  { type: TranslateService, decorators: [{ type: Optional }] },
11115
11104
  { type: ToastController, decorators: [{ type: Optional }] }
11116
11105
  ];
11117
11106
 
11118
- const ErrorCodes$2 = {
11107
+ const ErrorCodes = {
11119
11108
  UNKNOWN_ERROR: 0,
11120
11109
  LOAD_ACCOUNT_ERROR: 1,
11121
11110
  BAD_PASSWORD: 2,
@@ -11467,7 +11456,7 @@ class EntityStore {
11467
11456
  }
11468
11457
  catch (err) {
11469
11458
  console.error(err);
11470
- throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
11459
+ throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
11471
11460
  }
11472
11461
  }
11473
11462
  // Emit update event
@@ -12041,7 +12030,7 @@ class EntitiesStorage extends StartableService {
12041
12030
  }
12042
12031
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
12043
12032
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
12044
- 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" });
12033
+ 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" });
12045
12034
  EntitiesStorage.decorators = [
12046
12035
  { type: Injectable, args: [{ providedIn: 'root' },] }
12047
12036
  ];
@@ -12178,10 +12167,10 @@ function referentialToString(obj, properties) {
12178
12167
  function referentialsToString(values, properties, separator) {
12179
12168
  return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
12180
12169
  }
12181
- const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12170
+ const ɵ0$a = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12182
12171
  const StatusList = Object.freeze([
12183
12172
  {
12184
- id: ɵ0$2,
12173
+ id: ɵ0$a,
12185
12174
  icon: 'checkmark',
12186
12175
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
12187
12176
  },
@@ -12456,7 +12445,7 @@ function accountToString(data) {
12456
12445
  (data.lastName || '')) || '';
12457
12446
  }
12458
12447
 
12459
- const uuidv4 = uuidv4Imported;
12448
+ const uuidv4$1 = uuidv4Imported;
12460
12449
  const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
12461
12450
  const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
12462
12451
  /**
@@ -12500,7 +12489,7 @@ function createTrackerLink(opts) {
12500
12489
  // Skip if not tracked
12501
12490
  if (!context || !context.tracked)
12502
12491
  return forward(operation);
12503
- const id = context.serializationKey || uuidv4();
12492
+ const id = context.serializationKey || uuidv4$1();
12504
12493
  console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
12505
12494
  // Clean context, before calling JSON.stringify (remove unused attributes)
12506
12495
  const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -13163,7 +13152,7 @@ class GraphqlService extends StartableService {
13163
13152
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
13164
13153
  || this.toAppError(err.networkError)
13165
13154
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
13166
- || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
13155
+ || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
13167
13156
  // If graphQL: try to convert the first error found
13168
13157
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
13169
13158
  || this.toAppError(err)
@@ -13171,7 +13160,7 @@ class GraphqlService extends StartableService {
13171
13160
  || (err.graphQLErrors && err.graphQLErrors[0])
13172
13161
  || err;
13173
13162
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
13174
- if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13163
+ if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13175
13164
  console.error('[graphql] original error: ' + err.networkError.message);
13176
13165
  this.onNetworkError.next(error);
13177
13166
  }
@@ -13207,7 +13196,7 @@ class GraphqlService extends StartableService {
13207
13196
  return 'ERROR.UNAUTHORIZED';
13208
13197
  case ServerErrorCodes.FORBIDDEN:
13209
13198
  return 'ERROR.FORBIDDEN';
13210
- case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
13199
+ case ErrorCodes.UNKNOWN_NETWORK_ERROR:
13211
13200
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
13212
13201
  case ServerErrorCodes.BAD_UPDATE_DATE:
13213
13202
  return 'ERROR.BAD_UPDATE_DATE';
@@ -13238,7 +13227,7 @@ class GraphqlService extends StartableService {
13238
13227
  return undefined;
13239
13228
  }
13240
13229
  }
13241
- 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" });
13230
+ 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" });
13242
13231
  GraphqlService.decorators = [
13243
13232
  { type: Injectable, args: [{
13244
13233
  providedIn: 'root'
@@ -13255,7 +13244,7 @@ GraphqlService.ctorParameters = () => [
13255
13244
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
13256
13245
  ];
13257
13246
 
13258
- const sha256 = require('hash.js/lib/hash/sha/256');
13247
+ const sha256$1 = require('hash.js/lib/hash/sha/256');
13259
13248
  class BaseGraphqlServiceOptions {
13260
13249
  }
13261
13250
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
@@ -13406,8 +13395,8 @@ class BaseGraphqlService extends StartableService {
13406
13395
  }
13407
13396
  /* -- protected methods -- */
13408
13397
  computeMutableWatchQueryId(opts) {
13409
- const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
13410
- const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
13398
+ const queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
13399
+ const variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
13411
13400
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
13412
13401
  }
13413
13402
  findMutableWatchQueries(opts) {
@@ -13473,7 +13462,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
13473
13462
  /* ------------------------------------
13474
13463
  * GraphQL queries
13475
13464
  * ------------------------------------*/
13476
- const Fragments$1 = {
13465
+ const Fragments = {
13477
13466
  account: gql `
13478
13467
  fragment AccountFragment on AccountVO {
13479
13468
  id
@@ -13508,14 +13497,14 @@ const Fragments$1 = {
13508
13497
  }`
13509
13498
  };
13510
13499
  // Load account query
13511
- const LoadQuery$1 = gql `
13500
+ const LoadQuery = gql `
13512
13501
  query Account {
13513
13502
  data: account {
13514
13503
  ...AccountFragment
13515
13504
  }
13516
13505
  }
13517
- ${Fragments$1.account}
13518
- ${Fragments$1.settings}
13506
+ ${Fragments.account}
13507
+ ${Fragments.settings}
13519
13508
  `;
13520
13509
  // Check email query
13521
13510
  const IsEmailExistsQuery = gql `
@@ -13530,21 +13519,21 @@ const AccountMutations = {
13530
13519
  ...AccountFragment
13531
13520
  }
13532
13521
  }
13533
- ${Fragments$1.account}
13534
- ${Fragments$1.settings}`,
13522
+ ${Fragments.account}
13523
+ ${Fragments.settings}`,
13535
13524
  create: gql `mutation CreateAccount($data:AccountVOInput){
13536
13525
  data: createAccount(account: $data){
13537
13526
  ...AccountFragment
13538
13527
  }
13539
13528
  }
13540
- ${Fragments$1.account}
13541
- ${Fragments$1.settings}`,
13529
+ ${Fragments.account}
13530
+ ${Fragments.settings}`,
13542
13531
  saveSettings: gql `mutation SaveSettings($data:UserSettingsVOInput){
13543
13532
  data: saveSettings(settings: $data){
13544
13533
  ...UserSettingsFragment
13545
13534
  }
13546
13535
  }
13547
- ${Fragments$1.settings}`
13536
+ ${Fragments.settings}`
13548
13537
  };
13549
13538
  // Sent confirmation email
13550
13539
  const SendConfirmEmailMutation = gql `
@@ -13861,7 +13850,7 @@ class AccountService extends BaseGraphqlService {
13861
13850
  catch (error) {
13862
13851
  console.error(error);
13863
13852
  this.resetData();
13864
- throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13853
+ throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
13865
13854
  }
13866
13855
  // Store pubkey+keypair
13867
13856
  this._cache.pubkey = Base58.encode(keypair.publicKey);
@@ -13895,7 +13884,7 @@ class AccountService extends BaseGraphqlService {
13895
13884
  }
13896
13885
  catch (err) {
13897
13886
  // If account not found, check if email is valid
13898
- if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
13887
+ if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
13899
13888
  // Check email exists
13900
13889
  if (data.username.indexOf('@') !== -1) {
13901
13890
  let isEmailExists;
@@ -13907,11 +13896,11 @@ class AccountService extends BaseGraphqlService {
13907
13896
  }
13908
13897
  // Email not exists (no account)
13909
13898
  if (!isEmailExists) {
13910
- throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13899
+ throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
13911
13900
  }
13912
13901
  }
13913
13902
  // Email exists, so error = 'bad password'
13914
- throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13903
+ throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
13915
13904
  }
13916
13905
  throw err; // resend the first error
13917
13906
  }
@@ -14057,8 +14046,8 @@ class AccountService extends BaseGraphqlService {
14057
14046
  // Load remotely
14058
14047
  else {
14059
14048
  const { data } = yield this.graphql.query({
14060
- query: LoadQuery$1,
14061
- error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
14049
+ query: LoadQuery,
14050
+ error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
14062
14051
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
14063
14052
  });
14064
14053
  json = data;
@@ -14085,7 +14074,7 @@ class AccountService extends BaseGraphqlService {
14085
14074
  return __awaiter(this, void 0, void 0, function* () {
14086
14075
  const isEmailExists = yield this.isEmailExists(email);
14087
14076
  if (isEmailExists) {
14088
- throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14077
+ throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14089
14078
  }
14090
14079
  });
14091
14080
  }
@@ -14121,7 +14110,7 @@ class AccountService extends BaseGraphqlService {
14121
14110
  locale
14122
14111
  },
14123
14112
  error: {
14124
- code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
14113
+ code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
14125
14114
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
14126
14115
  }
14127
14116
  });
@@ -14137,7 +14126,7 @@ class AccountService extends BaseGraphqlService {
14137
14126
  code
14138
14127
  },
14139
14128
  error: {
14140
- code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
14129
+ code: ErrorCodes.CONFIRM_EMAIL_FAILED,
14141
14130
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
14142
14131
  }
14143
14132
  });
@@ -14216,7 +14205,7 @@ class AccountService extends BaseGraphqlService {
14216
14205
  throw error;
14217
14206
  console.error(error);
14218
14207
  throw {
14219
- code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
14208
+ code: ErrorCodes.LOAD_ACCOUNT_ERROR,
14220
14209
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
14221
14210
  };
14222
14211
  }
@@ -14386,7 +14375,7 @@ class AccountService extends BaseGraphqlService {
14386
14375
  if (!isNew) {
14387
14376
  const existingAccount = yield this.load({ fetchPolicy: 'network-only' });
14388
14377
  if (!existingAccount || !existingAccount.updateDate) {
14389
- throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14378
+ throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14390
14379
  }
14391
14380
  this.copyIdAndUpdateDate(existingAccount, account);
14392
14381
  }
@@ -14398,7 +14387,7 @@ class AccountService extends BaseGraphqlService {
14398
14387
  mutation: isNew ? AccountMutations.create : AccountMutations.save,
14399
14388
  variables: { data: json },
14400
14389
  error: {
14401
- code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
14390
+ code: ErrorCodes.SAVE_ACCOUNT_ERROR,
14402
14391
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
14403
14392
  }
14404
14393
  });
@@ -14425,7 +14414,7 @@ class AccountService extends BaseGraphqlService {
14425
14414
  mutation: AccountMutations.saveSettings,
14426
14415
  variables: { data: json },
14427
14416
  error: {
14428
- code: ErrorCodes$2.SAVE_SETTINGS_ERROR,
14417
+ code: ErrorCodes.SAVE_SETTINGS_ERROR,
14429
14418
  message: 'ERROR.SAVE_SETTINGS_ERROR'
14430
14419
  }
14431
14420
  });
@@ -14447,7 +14436,7 @@ class AccountService extends BaseGraphqlService {
14447
14436
  if (counter > 4) {
14448
14437
  if (this._debug)
14449
14438
  console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
14450
- throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14439
+ throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14451
14440
  }
14452
14441
  // Check if valid
14453
14442
  if (token) {
@@ -14457,7 +14446,7 @@ class AccountService extends BaseGraphqlService {
14457
14446
  token
14458
14447
  },
14459
14448
  error: {
14460
- code: ErrorCodes$2.UNAUTHORIZED,
14449
+ code: ErrorCodes.UNAUTHORIZED,
14461
14450
  message: 'ERROR.UNAUTHORIZED'
14462
14451
  },
14463
14452
  fetchPolicy: 'no-cache'
@@ -14473,7 +14462,7 @@ class AccountService extends BaseGraphqlService {
14473
14462
  }
14474
14463
  // Generate a new token
14475
14464
  const challengeError = {
14476
- code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
14465
+ code: ErrorCodes.AUTH_CHALLENGE_ERROR,
14477
14466
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
14478
14467
  };
14479
14468
  const data = yield this.graphql.query({
@@ -14551,7 +14540,7 @@ class AccountService extends BaseGraphqlService {
14551
14540
  query: AccountSubscriptions.listenChanges,
14552
14541
  variables,
14553
14542
  error: {
14554
- code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
14543
+ code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
14555
14544
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ERROR'
14556
14545
  }
14557
14546
  }).pipe(map(({ data }) => data),
@@ -14580,7 +14569,7 @@ class AccountService extends BaseGraphqlService {
14580
14569
  return Toasts.show(this.toastController, this.translate, opts);
14581
14570
  }
14582
14571
  }
14583
- 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(i1$1.TranslateService, 8), i0.ɵɵinject(i1$4.ToastController, 8), i0.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
14572
+ AccountService.ɵprov = ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(ɵɵinject(CryptoService), ɵɵinject(NetworkService), ɵɵinject(GraphqlService), ɵɵinject(LocalSettingsService), ɵɵinject(Storage), ɵɵinject(FileService), ɵɵinject(TranslateService, 8), ɵɵinject(ToastController, 8), ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
14584
14573
  AccountService.decorators = [
14585
14574
  { type: Injectable, args: [{ providedIn: 'root', deps: [ENVIRONMENT] },] }
14586
14575
  ];
@@ -14842,7 +14831,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
14842
14831
  /* ------------------------------------
14843
14832
  * GraphQL queries
14844
14833
  * ------------------------------------*/
14845
- const Fragments = {
14834
+ const Fragments$1 = {
14846
14835
  config: gql `
14847
14836
  fragment ConfigFragment on ConfigurationVO {
14848
14837
  id
@@ -14869,13 +14858,13 @@ const Fragments = {
14869
14858
  }
14870
14859
  `
14871
14860
  };
14872
- const LoadQuery = gql `
14861
+ const LoadQuery$1 = gql `
14873
14862
  query Configuration{
14874
14863
  data: configuration{
14875
14864
  ...ConfigFragment
14876
14865
  }
14877
14866
  }
14878
- ${Fragments.config}
14867
+ ${Fragments$1.config}
14879
14868
  `;
14880
14869
  // Save (create or update) account mutation
14881
14870
  const SaveMutation = gql `
@@ -14884,7 +14873,7 @@ const SaveMutation = gql `
14884
14873
  ...ConfigFragment
14885
14874
  }
14886
14875
  }
14887
- ${Fragments.config}
14876
+ ${Fragments$1.config}
14888
14877
  `;
14889
14878
  const ClearCache = gql `
14890
14879
  query ClearCache($name: String) {
@@ -14935,12 +14924,12 @@ class ConfigService extends BaseGraphqlService {
14935
14924
  return __awaiter(this, void 0, void 0, function* () {
14936
14925
  const now = Date.now();
14937
14926
  console.debug('[config] Loading Pod configuration...');
14938
- const query = opts && opts.query || LoadQuery;
14927
+ const query = opts && opts.query || LoadQuery$1;
14939
14928
  const variables = opts && opts.variables || undefined;
14940
14929
  const res = yield this.graphql.query({
14941
14930
  query,
14942
14931
  variables,
14943
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14932
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14944
14933
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
14945
14934
  });
14946
14935
  const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
@@ -14973,7 +14962,7 @@ class ConfigService extends BaseGraphqlService {
14973
14962
  data: json
14974
14963
  },
14975
14964
  error: {
14976
- code: ErrorCodes$2.SAVE_CONFIG_ERROR,
14965
+ code: ErrorCodes.SAVE_CONFIG_ERROR,
14977
14966
  message: 'ERROR.SAVE_CONFIG_ERROR'
14978
14967
  }
14979
14968
  });
@@ -14999,7 +14988,7 @@ class ConfigService extends BaseGraphqlService {
14999
14988
  const res = yield this.graphql.query({
15000
14989
  query: CacheStatistics,
15001
14990
  variables: null,
15002
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
14991
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15003
14992
  fetchPolicy: 'network-only'
15004
14993
  });
15005
14994
  const data = res && res.cacheStatistics || undefined;
@@ -15015,7 +15004,7 @@ class ConfigService extends BaseGraphqlService {
15015
15004
  const res = yield this.graphql.query({
15016
15005
  query: ClearCache,
15017
15006
  variables,
15018
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15007
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15019
15008
  fetchPolicy: 'network-only'
15020
15009
  });
15021
15010
  const data = res && res.clearCache || undefined;
@@ -15174,7 +15163,7 @@ class ConfigService extends BaseGraphqlService {
15174
15163
  });
15175
15164
  }
15176
15165
  }
15177
- 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(AccountService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
15166
+ ConfigService.ɵprov = ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(ɵɵinject(Platform), ɵɵinject(GraphqlService), ɵɵinject(Storage), ɵɵinject(NetworkService), ɵɵinject(FileService), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(AccountService), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
15178
15167
  ConfigService.decorators = [
15179
15168
  { type: Injectable, args: [{
15180
15169
  providedIn: 'root',
@@ -15194,7 +15183,7 @@ ConfigService.ctorParameters = () => [
15194
15183
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
15195
15184
  ];
15196
15185
 
15197
- const moment$2 = momentImported;
15186
+ const moment$4 = momentImported;
15198
15187
  class PlatformService extends StartableService {
15199
15188
  constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
15200
15189
  super(platform);
@@ -15401,16 +15390,16 @@ class PlatformService extends StartableService {
15401
15390
  }
15402
15391
  // config moment lib
15403
15392
  try {
15404
- moment$2.locale(event.lang);
15393
+ moment$4.locale(event.lang);
15405
15394
  console.debug('[platform] Use locale {' + event.lang + '}');
15406
15395
  }
15407
15396
  // If error, fallback to en
15408
15397
  catch (err) {
15409
- moment$2.locale('en');
15398
+ moment$4.locale('en');
15410
15399
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
15411
15400
  }
15412
15401
  // Config date adapter
15413
- this.dateAdapter.setLocale(moment$2.locale());
15402
+ this.dateAdapter.setLocale(moment$4.locale());
15414
15403
  }
15415
15404
  });
15416
15405
  this.settings.onChange.subscribe(data => {
@@ -15543,7 +15532,7 @@ class PlatformService extends StartableService {
15543
15532
  });
15544
15533
  }
15545
15534
  }
15546
- PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$4.Platform), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(EntitiesStorage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ConfigService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(AudioProvider), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i14.StatusBar, 8), i0.ɵɵinject(i15.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i17.InAppBrowser, 8), i0.ɵɵinject(i18.Downloader, 8)); }, token: PlatformService, providedIn: "root" });
15535
+ PlatformService.ɵprov = ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(ɵɵinject(Platform), ɵɵinject(Platform$1), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(MomentDateAdapter), ɵɵinject(EntitiesStorage), ɵɵinject(LocalSettingsService), ɵɵinject(NetworkService), ɵɵinject(AccountService), ɵɵinject(ConfigService), ɵɵinject(CacheService), ɵɵinject(Storage), ɵɵinject(AudioProvider), ɵɵinject(ENVIRONMENT), ɵɵinject(StatusBar, 8), ɵɵinject(Keyboard$1, 8), ɵɵinject(SplashScreen, 8), ɵɵinject(InAppBrowser, 8), ɵɵinject(Downloader, 8)); }, token: PlatformService, providedIn: "root" });
15547
15536
  PlatformService.decorators = [
15548
15537
  { type: Injectable, args: [{ providedIn: 'root' },] }
15549
15538
  ];
@@ -15558,15 +15547,15 @@ PlatformService.ctorParameters = () => [
15558
15547
  { type: NetworkService },
15559
15548
  { type: AccountService },
15560
15549
  { type: ConfigService },
15561
- { type: CacheService },
15550
+ { type: CacheService$1 },
15562
15551
  { type: Storage },
15563
15552
  { type: AudioProvider },
15564
15553
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
15565
- { type: StatusBar, decorators: [{ type: Optional }] },
15554
+ { type: StatusBar$1, decorators: [{ type: Optional }] },
15566
15555
  { type: Keyboard, decorators: [{ type: Optional }] },
15567
- { type: SplashScreen, decorators: [{ type: Optional }] },
15568
- { type: InAppBrowser, decorators: [{ type: Optional }] },
15569
- { type: Downloader, decorators: [{ type: Optional }] }
15556
+ { type: SplashScreen$1, decorators: [{ type: Optional }] },
15557
+ { type: InAppBrowser$1, decorators: [{ type: Optional }] },
15558
+ { type: Downloader$1, decorators: [{ type: Optional }] }
15570
15559
  ];
15571
15560
 
15572
15561
  class AppHelpModal {
@@ -15630,7 +15619,7 @@ class MatStepperI18n extends MatStepperIntl {
15630
15619
  this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
15631
15620
  }
15632
15621
  }
15633
- MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
15622
+ MatStepperI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(ɵɵinject(TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
15634
15623
  MatStepperI18n.decorators = [
15635
15624
  { type: Injectable, args: [{ providedIn: 'root' },] }
15636
15625
  ];
@@ -16632,7 +16621,7 @@ function state2side(state) {
16632
16621
  return 1;
16633
16622
  }
16634
16623
  }
16635
- const ɵ0$1 = (defaultStateSize) => [
16624
+ const ɵ0$b = (defaultStateSize) => [
16636
16625
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
16637
16626
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
16638
16627
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -16640,7 +16629,7 @@ const ɵ0$1 = (defaultStateSize) => [
16640
16629
  const SCALE_OPTIONS_DEFAULT = {
16641
16630
  startColor: rgbArrayMap.red,
16642
16631
  startStates: [0, 2, 3],
16643
- startStepsFn: ɵ0$1
16632
+ startStepsFn: ɵ0$b
16644
16633
  };
16645
16634
  /**
16646
16635
  * Internal function, that create a colors scale, using iteration
@@ -16732,21 +16721,21 @@ function linearColorGradient(count, options) {
16732
16721
  return result;
16733
16722
  }
16734
16723
 
16735
- class EntityTestClass$1 {
16724
+ class EntityTestClass {
16736
16725
  }
16737
- const FAKE_ENTITIES$1 = [
16726
+ const FAKE_ENTITIES = [
16738
16727
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
16739
16728
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
16740
16729
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
16741
16730
  ];
16742
- function deepCopy$1(values, size) {
16731
+ function deepCopy(values, size) {
16743
16732
  if (isNil(size)) {
16744
- return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
16733
+ return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
16745
16734
  }
16746
16735
  let result = [];
16747
16736
  let i = 1;
16748
16737
  while (result.length < size) {
16749
- result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
16738
+ result = result.concat((values || FAKE_ENTITIES).map(entity => {
16750
16739
  const name = entity.name + ' #' + i;
16751
16740
  return Object.assign(Object.assign({}, entity), { id: i++, name });
16752
16741
  }));
@@ -16756,7 +16745,7 @@ function deepCopy$1(values, size) {
16756
16745
  class AutocompleteTestPage {
16757
16746
  constructor(formBuilder) {
16758
16747
  this.formBuilder = formBuilder;
16759
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
16748
+ this._items = deepCopy(FAKE_ENTITIES, 100);
16760
16749
  this._$items = new BehaviorSubject(undefined);
16761
16750
  this.autocompleteFields = new MatAutocompleteConfigHolder();
16762
16751
  this.memoryHide = false;
@@ -16800,7 +16789,7 @@ class AutocompleteTestPage {
16800
16789
  });
16801
16790
  // From items
16802
16791
  this.autocompleteFields.add('entity-items-large', {
16803
- items: FAKE_ENTITIES$1.slice(),
16792
+ items: FAKE_ENTITIES.slice(),
16804
16793
  attributes: ['label', 'name', 'description', 'comments'],
16805
16794
  displayWith: this.entityToString
16806
16795
  });
@@ -16810,12 +16799,12 @@ class AutocompleteTestPage {
16810
16799
  loadData() {
16811
16800
  return __awaiter(this, void 0, void 0, function* () {
16812
16801
  const data = {
16813
- entity: deepCopy$1(FAKE_ENTITIES$1)[0],
16802
+ entity: deepCopy(FAKE_ENTITIES)[0],
16814
16803
  // This item is NOT in the items list => i should be displayed anyway
16815
16804
  missingEntity: {
16816
16805
  id: -1, label: '??', name: 'Missing item'
16817
16806
  },
16818
- disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
16807
+ disableEntity: deepCopy(FAKE_ENTITIES)[2]
16819
16808
  };
16820
16809
  this.form.setValue(data);
16821
16810
  // Load observables
@@ -16988,13 +16977,13 @@ MaterialTestingPage.ctorParameters = () => [
16988
16977
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
16989
16978
  ];
16990
16979
 
16991
- const moment$1 = momentImported;
16980
+ const moment$5 = momentImported;
16992
16981
  class SwipeTestPage {
16993
16982
  constructor(formBuilder, dateFormatPipe) {
16994
16983
  this.formBuilder = formBuilder;
16995
16984
  this.dateFormatPipe = dateFormatPipe;
16996
16985
  this.$dates = new BehaviorSubject(undefined);
16997
- this._today = moment$1().startOf('day');
16986
+ this._today = moment$5().startOf('day');
16998
16987
  this.form = formBuilder.group({
16999
16988
  empty: [null, Validators.required],
17000
16989
  date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
@@ -17007,7 +16996,7 @@ class SwipeTestPage {
17007
16996
  ngOnInit() {
17008
16997
  const dates = [];
17009
16998
  for (let d = 0; d < 7; d++) {
17010
- dates[d] = moment$1(this._today).add(d - 3, 'day');
16999
+ dates[d] = moment$5(this._today).add(d - 3, 'day');
17011
17000
  }
17012
17001
  this.$dates.next(dates);
17013
17002
  this.loadData();
@@ -17048,7 +17037,7 @@ SwipeTestPage.ctorParameters = () => [
17048
17037
  { type: DateFormatPipe }
17049
17038
  ];
17050
17039
 
17051
- const moment = momentImported;
17040
+ const moment$6 = momentImported;
17052
17041
  class DateTimeTestPage {
17053
17042
  constructor(platform, formBuilder, cd) {
17054
17043
  this.platform = platform;
@@ -17080,7 +17069,7 @@ class DateTimeTestPage {
17080
17069
  // Load the form with data
17081
17070
  loadData() {
17082
17071
  return __awaiter(this, void 0, void 0, function* () {
17083
- const now = moment();
17072
+ const now = moment$6();
17084
17073
  const data = {
17085
17074
  empty: toDateISOString(now.clone().add(2, 'hours')),
17086
17075
  enable: toDateISOString(now),
@@ -17141,9 +17130,9 @@ DateTimeTestPage.ctorParameters = () => [
17141
17130
  { type: ChangeDetectorRef }
17142
17131
  ];
17143
17132
 
17144
- class EntityTestClass {
17133
+ class EntityTestClass$1 {
17145
17134
  }
17146
- const FAKE_ENTITIES = [
17135
+ const FAKE_ENTITIES$1 = [
17147
17136
  { id: 1, label: 'AAA', name: 'Item A' },
17148
17137
  { id: 2, label: 'BBB', name: 'Item B' },
17149
17138
  { id: 3, label: 'CCC', name: 'Item C' },
@@ -17152,14 +17141,14 @@ const FAKE_ENTITIES = [
17152
17141
  { id: 6, label: 'FFF', name: 'Item F' },
17153
17142
  { id: 7, label: 'GGG', name: 'Item G' }
17154
17143
  ];
17155
- function deepCopy(values, size) {
17144
+ function deepCopy$1(values, size) {
17156
17145
  if (isNil(size)) {
17157
- return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
17146
+ return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
17158
17147
  }
17159
17148
  let result = [];
17160
17149
  let i = 1;
17161
17150
  while (result.length < size) {
17162
- result = result.concat((values || FAKE_ENTITIES).map(entity => {
17151
+ result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
17163
17152
  const name = entity.name + ' #' + i;
17164
17153
  return Object.assign(Object.assign({}, entity), { id: i++, name });
17165
17154
  }));
@@ -17169,7 +17158,7 @@ function deepCopy(values, size) {
17169
17158
  class ChipsTestPage {
17170
17159
  constructor(formBuilder) {
17171
17160
  this.formBuilder = formBuilder;
17172
- this._items = deepCopy(FAKE_ENTITIES, 100);
17161
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
17173
17162
  this._$items = new BehaviorSubject(undefined);
17174
17163
  this.autocompleteFields = new MatAutocompleteConfigHolder();
17175
17164
  this.form = formBuilder.group({
@@ -17208,7 +17197,7 @@ class ChipsTestPage {
17208
17197
  // Load the form with data
17209
17198
  loadData() {
17210
17199
  return __awaiter(this, void 0, void 0, function* () {
17211
- const items = deepCopy(FAKE_ENTITIES);
17200
+ const items = deepCopy$1(FAKE_ENTITIES$1);
17212
17201
  const data = {
17213
17202
  entity: items.slice(0, 1),
17214
17203
  entityInitial: items.slice(1, 2),
@@ -17284,7 +17273,7 @@ MatBadgeIconTestPage.decorators = [
17284
17273
  },] }
17285
17274
  ];
17286
17275
 
17287
- const routes$2 = [
17276
+ const routes = [
17288
17277
  {
17289
17278
  path: '',
17290
17279
  pathMatch: 'full',
@@ -17336,7 +17325,7 @@ MaterialTestingModule.decorators = [
17336
17325
  ReactiveFormsModule,
17337
17326
  SharedMaterialModule,
17338
17327
  TranslateModule.forChild(),
17339
- RouterModule.forChild(routes$2)
17328
+ RouterModule.forChild(routes)
17340
17329
  ],
17341
17330
  declarations: [
17342
17331
  MaterialTestingPage,
@@ -18045,6 +18034,7 @@ function getRandomImage(files) {
18045
18034
  const APP_HOME_BUTTONS = new InjectionToken('homeButton');
18046
18035
  class HomePage {
18047
18036
  constructor(accountService, modalCtrl, translate, toastController, configService, platform, cd, network, settings, environment, locales, buttons) {
18037
+ var _a;
18048
18038
  this.accountService = accountService;
18049
18039
  this.modalCtrl = modalCtrl;
18050
18040
  this.translate = translate;
@@ -18070,6 +18060,7 @@ class HomePage {
18070
18060
  this._debug = !environment.production;
18071
18061
  this.showSpinner = !this.platform.started;
18072
18062
  this.platform.ready().then(() => this.start());
18063
+ this.showAccountButton = toBoolean((_a = environment.account) === null || _a === void 0 ? void 0 : _a.showAccountButton, true);
18073
18064
  }
18074
18065
  get currentLocaleCode() {
18075
18066
  return this.loading ? '' :
@@ -18259,7 +18250,7 @@ HomePage.decorators = [
18259
18250
  { type: Component, args: [{
18260
18251
  moduleId: module.id.toString(),
18261
18252
  selector: 'app-page-home',
18262
- template: "<app-toolbar [canGoBack]=\"false\"\n visible-xs visible-sm visible-mobile>\n\n <!-- change locale button -->\n <ion-button slot=\"end\" *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n</app-toolbar>\n\n<!-- change locale menu -->\n<mat-menu #localeMenu=\"matMenu\">\n <button *ngFor=\"let item of locales\"\n mat-menu-item\n (click)=\"changeLanguage(item.key)\">\n <ion-label>{{item.value}}</ion-label>\n </button>\n</mat-menu>\n\n<ion-content [ngStyle]=\"contentStyle\" no-padding-xs>\n\n <!-- loading spinner -->\n <div class=\"loading-page\" [class.cdk-visually-hidden]=\"!loading\">\n <div class=\"spinner\" *ngIf=\"loading && showSpinner\">\n <p>Loading...</p>\n <div class=\"sk-cube1 sk-cube\"></div>\n <div class=\"sk-cube2 sk-cube\"></div>\n <div class=\"sk-cube4 sk-cube\"></div>\n <div class=\"sk-cube3 sk-cube\"></div>\n </div>\n </div>\n\n <!-- Desktop: translucent top toolbar -->\n <div hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar translucent>\n <ion-buttons slot=\"start\">\n <ion-menu-toggle>\n <ion-button color=\"light\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n </ion-buttons>\n\n <ion-buttons slot=\"end\">\n <!-- change locale button -->\n <ion-button color=\"secondary\" fill=\"solid\"\n *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </div>\n\n <!-- Install (and upgrade) card -->\n <app-install-upgrade-card [isLogin]=\"isLogin\"\n showInstallButton=\"true\">\n </app-install-upgrade-card>\n\n <!-- Welcome card -->\n <ion-card *ngIf=\"!loading\"\n class=\"main welcome ion-padding ion-text-center ion-align-self-center\"\n @fadeInAnimation>\n <ion-card-header>\n <ion-card-title class=\"ion-text-center\">\n <span *ngIf=\"isWeb\" [innerHTML]=\"'HOME.WELCOME_WEB'|translate: {appName: appName}\"></span>\n <span *ngIf=\"!isWeb\" [innerHTML]=\"'HOME.WELCOME_APP'|translate: {appName: appName}\"></span>\n </ion-card-title>\n <ion-card-subtitle [innerHTML]=\"description\">\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content class=\"ion-no-padding\">\n <ion-text color=\"primary\">\n <img class=\"logo\" *ngIf=\"logo\" src=\"{{ logo }}\">\n </ion-text>\n <!-- register help text -->\n <ion-text *ngIf=\"!isLogin && canRegister\">\n <br/>\n <span translate>HOME.REGISTER_HELP</span>\n </ion-text>\n </ion-card-content>\n\n <ion-footer class=\"ion-padding-top\">\n\n <!-- If NOT login -->\n <ng-container *ngIf=\"!isLogin; else loginButtons;\">\n\n <ion-button *ngIf=\"canRegister\" expand=\"block\" color=\"tertiary\" (click)=\"register()\">\n <span translate>HOME.BTN_REGISTER</span>\n </ion-button>\n <ion-button expand=\"block\" color=\"light\" [routerLink]=\"['/']\" (click)=\"login()\">\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n </ng-container>\n\n <!-- If user login -->\n <ng-template #loginButtons>\n\n <!-- Feature buttons -->\n <ng-container *ngIf=\"$filteredButtons | async as buttons\">\n <ng-container *ngFor=\"let item of buttons\">\n <ion-button *ngIf=\"item.path\"\n expand=\"block\" color=\"tertiary\"\n [class]=\"item.cssClass\"\n [routerLink]=\"item.path\"\n routerDirection=\"root\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-text>{{'HOME.BTN_DATA_ENTRY'|translate: {name: (item.title | translate) } }}</ion-text>\n </ion-button>\n\n <!-- divider -->\n <div *ngIf=\"!item.path && !item.action\" [class]=\"item.cssClass\">\n <ion-label translate>{{item.title}}&nbsp;</ion-label>\n </div>\n </ng-container>\n\n <!--<p *ngIf=\"buttons.length\" class=\"visible-mobile\">&nbsp;</p>-->\n </ng-container>\n\n <ion-button expand=\"block\" color=\"secondary\" [routerLink]=\"['/account']\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" name=\"person-circle\"></ion-icon>\n <ion-text translate>HOME.BTN_MY_ACCOUNT</ion-text>\n </ion-button>\n\n <p hidden-xs hidden-sm hidden-mobile>\n <ion-text [innerHTML]=\"'HOME.NOT_THIS_ACCOUNT_QUESTION' | translate: {displayName: accountName }\"></ion-text>\n <br/>\n <ion-text>\n <a href=\"#\" (click)=\"logout($event)\">\n <span translate>HOME.BTN_DISCONNECT</span>\n </a>\n </ion-text>\n </p>\n\n\n </ng-template>\n\n </ion-footer>\n </ion-card>\n\n <!-- Page history -->\n <ion-grid *ngIf=\"!loading && isLogin && pageHistory.length; else bottomBanner\"\n class=\"history-container ion-align-self-center\">\n <ion-row>\n <ion-col size=\"12\" size-xl=\"\" *ngFor=\"let page of pageHistory; trackBy: getPagePath\"\n class=\"ion-text-center\">\n <ion-card class=\"ion-align-self-start ion-text-start\" @fadeInAnimation>\n <ion-card-header class=\"ion-no-padding\">\n <!-- top bar -->\n <ion-card-subtitle>\n <button type=\"button\" tabindex=\"-1\"\n (click)=\"settings.removePageHistory(page.path)\"\n mat-icon-button class=\"ion-float-start ion-no-margin\">\n <mat-icon>close</mat-icon>\n </button>\n <ion-label [innerHTML]=\"page.subtitle|translate\"></ion-label>\n <ion-text class=\"ion-float-end\" [title]=\"page.time|dateFormat:{time: true}\">\n <small><ion-icon name=\"time-outline\"></ion-icon>&nbsp;{{ page.time|dateFromNow }}</small>&nbsp;\n </ion-text>\n </ion-card-subtitle>\n\n <!-- main page -->\n <ion-card-title class=\"ion-no-margin ion-no-padding\">\n <ion-item detail=\"true\"\n tappable class=\"text-1x\"\n [routerLink]=\"page.path\"\n routerDirection=\"root\" lines=\"none\">\n <!-- page icon-->\n <ion-icon *ngIf=\"page.icon\" slot=\"start\" [name]=\"page.icon\"></ion-icon>\n <mat-icon *ngIf=\"page.matIcon\" slot=\"start\">{{page.matIcon}}</mat-icon>\n\n <ion-label color=\"primary\" [innerHTML]=\"page.title\"></ion-label>\n </ion-item>\n </ion-card-title>\n </ion-card-header>\n\n <!-- children pages -->\n <ion-card-content class=\"ion-no-padding ion-padding-start\" *ngIf=\"page.children?.length\">\n <ion-list class=\"ion-no-padding\">\n <ion-item detail=\"true\"\n *ngFor=\"let childPage of page.children\"\n tappable class=\"text-1x\"\n [routerLink]=\"childPage.path\"\n routerDirection=\"root\">\n <!-- page icon-->\n <ion-icon *ngIf=\"childPage.icon\" slot=\"start\" color=\"dark\" [name]=\"childPage.icon\"></ion-icon>\n <mat-icon *ngIf=\"childPage.matIcon\" slot=\"start\" color=\"dark\">{{childPage.matIcon}}</mat-icon>\n\n <ion-label color=\"dark\" [innerHTML]=\"childPage.title\"></ion-label>\n </ion-item>\n </ion-list>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Display configured Departments logos -->\n <ng-template #bottomBanner>\n <div class=\"bottom-banner ion-text-center ion-padding\" *ngIf=\"!loadingBanner\" @fadeInAnimation>\n <a href=\"{{ item.siteUrl }}\" *ngFor=\"let item of $partners | async \">\n <img class=\"logo\" src=\"{{ item.logo }}\" alt=\"{{item.label}}\" [title]=\"item.label\" />\n </a>\n </div>\n </ng-template>\n\n\n</ion-content>\n",
18253
+ template: "<app-toolbar [canGoBack]=\"false\"\n visible-xs visible-sm visible-mobile>\n\n <!-- change locale button -->\n <ion-button slot=\"end\" *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n</app-toolbar>\n\n<!-- change locale menu -->\n<mat-menu #localeMenu=\"matMenu\">\n <button *ngFor=\"let item of locales\"\n mat-menu-item\n (click)=\"changeLanguage(item.key)\">\n <ion-label>{{item.value}}</ion-label>\n </button>\n</mat-menu>\n\n<ion-content [ngStyle]=\"contentStyle\" no-padding-xs>\n\n <!-- loading spinner -->\n <div class=\"loading-page\" [class.cdk-visually-hidden]=\"!loading\">\n <div class=\"spinner\" *ngIf=\"loading && showSpinner\">\n <p>Loading...</p>\n <div class=\"sk-cube1 sk-cube\"></div>\n <div class=\"sk-cube2 sk-cube\"></div>\n <div class=\"sk-cube4 sk-cube\"></div>\n <div class=\"sk-cube3 sk-cube\"></div>\n </div>\n </div>\n\n <!-- Desktop: translucent top toolbar -->\n <div hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar translucent>\n <ion-buttons slot=\"start\">\n <ion-menu-toggle>\n <ion-button color=\"light\" fill=\"clear\">\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n </ion-buttons>\n\n <ion-buttons slot=\"end\">\n <!-- change locale button -->\n <ion-button color=\"secondary\" fill=\"solid\"\n *ngIf=\"currentLocaleCode; let code\"\n [matMenuTriggerFor]=\"localeMenu\">\n <ion-label class=\"ion-text-uppercase\">&nbsp;{{ code }}</ion-label>\n <mat-icon slot=\"end\">arrow_drop_down</mat-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </div>\n\n <!-- Install (and upgrade) card -->\n <app-install-upgrade-card [isLogin]=\"isLogin\"\n showInstallButton=\"true\">\n </app-install-upgrade-card>\n\n <!-- Welcome card -->\n <ion-card *ngIf=\"!loading\"\n class=\"main welcome ion-padding ion-text-center ion-align-self-center\"\n @fadeInAnimation>\n <ion-card-header>\n <ion-card-title class=\"ion-text-center\">\n <span *ngIf=\"isWeb\" [innerHTML]=\"'HOME.WELCOME_WEB'|translate: {appName: appName}\"></span>\n <span *ngIf=\"!isWeb\" [innerHTML]=\"'HOME.WELCOME_APP'|translate: {appName: appName}\"></span>\n </ion-card-title>\n <ion-card-subtitle [innerHTML]=\"description\">\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content class=\"ion-no-padding\">\n <ion-text color=\"primary\">\n <img class=\"logo\" *ngIf=\"logo\" src=\"{{ logo }}\">\n </ion-text>\n <!-- register help text -->\n <ion-text *ngIf=\"!isLogin && canRegister\">\n <br/>\n <span translate>HOME.REGISTER_HELP</span>\n </ion-text>\n </ion-card-content>\n\n <ion-footer class=\"ion-padding-top\">\n\n <!-- If NOT login -->\n <ng-container *ngIf=\"!isLogin; else loginButtons;\">\n\n <ion-button *ngIf=\"canRegister\" expand=\"block\" color=\"tertiary\" (click)=\"register()\">\n <span translate>HOME.BTN_REGISTER</span>\n </ion-button>\n <ion-button expand=\"block\" color=\"light\" [routerLink]=\"['/']\" (click)=\"login()\">\n <span translate>AUTH.BTN_LOGIN</span>\n </ion-button>\n\n </ng-container>\n\n <!-- If user login -->\n <ng-template #loginButtons>\n\n <!-- Feature buttons -->\n <ng-container *ngIf=\"$filteredButtons | async as buttons\">\n <ng-container *ngFor=\"let item of buttons\">\n <ion-button *ngIf=\"item.path\"\n expand=\"block\" color=\"tertiary\"\n [class]=\"item.cssClass\"\n [routerLink]=\"item.path\"\n routerDirection=\"root\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.icon\" [name]=\"item.icon\"></ion-icon>\n <mat-icon slot=\"start\" class=\"ion-float-start\" *ngIf=\"item.matIcon\">{{item.matIcon}}</mat-icon>\n <ion-text>{{'HOME.BTN_DATA_ENTRY'|translate: {name: (item.title | translate) } }}</ion-text>\n </ion-button>\n\n <!-- divider -->\n <div *ngIf=\"!item.path && !item.action\" [class]=\"item.cssClass\">\n <ion-label translate>{{item.title}}&nbsp;</ion-label>\n </div>\n </ng-container>\n\n <!--<p *ngIf=\"buttons.length\" class=\"visible-mobile\">&nbsp;</p>-->\n </ng-container>\n\n <ion-button *ngIf=\"showAccountButton\" expand=\"block\" color=\"secondary\" [routerLink]=\"['/account']\">\n <ion-icon slot=\"start\" class=\"ion-float-start\" name=\"person-circle\"></ion-icon>\n <ion-text translate>HOME.BTN_MY_ACCOUNT</ion-text>\n </ion-button>\n\n <p hidden-xs hidden-sm hidden-mobile>\n <ion-text [innerHTML]=\"'HOME.NOT_THIS_ACCOUNT_QUESTION' | translate: {displayName: accountName }\"></ion-text>\n <br/>\n <ion-text>\n <a href=\"#\" (click)=\"logout($event)\">\n <span translate>HOME.BTN_DISCONNECT</span>\n </a>\n </ion-text>\n </p>\n\n\n </ng-template>\n\n </ion-footer>\n </ion-card>\n\n <!-- Page history -->\n <ion-grid *ngIf=\"!loading && isLogin && pageHistory.length; else bottomBanner\"\n class=\"history-container ion-align-self-center\">\n <ion-row>\n <ion-col size=\"12\" size-xl=\"\" *ngFor=\"let page of pageHistory; trackBy: getPagePath\"\n class=\"ion-text-center\">\n <ion-card class=\"ion-align-self-start ion-text-start\" @fadeInAnimation>\n <ion-card-header class=\"ion-no-padding\">\n <!-- top bar -->\n <ion-card-subtitle>\n <button type=\"button\" tabindex=\"-1\"\n (click)=\"settings.removePageHistory(page.path)\"\n mat-icon-button class=\"ion-float-start ion-no-margin\">\n <mat-icon>close</mat-icon>\n </button>\n <ion-label [innerHTML]=\"page.subtitle|translate\"></ion-label>\n <ion-text class=\"ion-float-end\" [title]=\"page.time|dateFormat:{time: true}\">\n <small><ion-icon name=\"time-outline\"></ion-icon>&nbsp;{{ page.time|dateFromNow }}</small>&nbsp;\n </ion-text>\n </ion-card-subtitle>\n\n <!-- main page -->\n <ion-card-title class=\"ion-no-margin ion-no-padding\">\n <ion-item detail=\"true\"\n tappable class=\"text-1x\"\n [routerLink]=\"page.path\"\n routerDirection=\"root\" lines=\"none\">\n <!-- page icon-->\n <ion-icon *ngIf=\"page.icon\" slot=\"start\" [name]=\"page.icon\"></ion-icon>\n <mat-icon *ngIf=\"page.matIcon\" slot=\"start\">{{page.matIcon}}</mat-icon>\n\n <ion-label color=\"primary\" [innerHTML]=\"page.title\"></ion-label>\n </ion-item>\n </ion-card-title>\n </ion-card-header>\n\n <!-- children pages -->\n <ion-card-content class=\"ion-no-padding ion-padding-start\" *ngIf=\"page.children?.length\">\n <ion-list class=\"ion-no-padding\">\n <ion-item detail=\"true\"\n *ngFor=\"let childPage of page.children\"\n tappable class=\"text-1x\"\n [routerLink]=\"childPage.path\"\n routerDirection=\"root\">\n <!-- page icon-->\n <ion-icon *ngIf=\"childPage.icon\" slot=\"start\" color=\"dark\" [name]=\"childPage.icon\"></ion-icon>\n <mat-icon *ngIf=\"childPage.matIcon\" slot=\"start\" color=\"dark\">{{childPage.matIcon}}</mat-icon>\n\n <ion-label color=\"dark\" [innerHTML]=\"childPage.title\"></ion-label>\n </ion-item>\n </ion-list>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Display configured Departments logos -->\n <ng-template #bottomBanner>\n <div class=\"bottom-banner ion-text-center ion-padding\" *ngIf=\"!loadingBanner\" @fadeInAnimation>\n <a href=\"{{ item.siteUrl }}\" *ngFor=\"let item of $partners | async \">\n <img class=\"logo\" src=\"{{ item.logo }}\" alt=\"{{item.label}}\" [title]=\"item.label\" />\n </a>\n </div>\n </ng-template>\n\n\n</ion-content>\n",
18263
18254
  changeDetection: ChangeDetectionStrategy.OnPush,
18264
18255
  animations: [fadeInAnimation, slideUpDownAnimation],
18265
18256
  styles: ["h1,h2,h3,h4,h5{white-space:normal}.center,ion-content ion-card.welcome img{text-align:center;display:inline-block}ion-content{--background:transparent;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;display:inline-block;padding:15px}ion-content,ion-content .loading-page{background-color:var(--ion-color-primary)}ion-content .loading-page{display:block;height:100%;width:100%;position:absolute;z-index:5;transition:background .5s linear;-webkit-transition:background 1.5s linear}ion-content .loading-page.hidden{background-color:rgba(var(--ion-color-primary),0)}ion-content ion-card{z-index:9}ion-content ion-card ion-card-header{display:block}ion-content ion-card ion-card-header ion-card-subtitle,ion-content ion-card ion-card-header ion-card-title{display:block;width:100%}ion-content ion-card.main{min-width:240px;max-width:400px;margin-left:auto;margin-right:auto}ion-content ion-card.welcome{background-color:hsla(0,0%,100%,.7)}ion-content ion-card.welcome button{margin-top:16px}ion-content ion-card.welcome img{max-width:250px}ion-content .history-container{margin-left:auto;margin-right:auto}ion-content .history-container ion-card{display:inline-block;box-sizing:border-box;z-index:8;min-width:240px;max-width:400px;width:100%;margin-left:auto;margin-right:auto;background-color:hsla(0,0%,100%,.7)}ion-content .history-container ion-card ion-card-header ion-card-subtitle{height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle button[float-start]{z-index:99;margin:0}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label{line-height:40px}ion-content .history-container ion-card ion-card-header ion-card-subtitle ion-label[float-end]{padding-right:16px;font-weight:400}ion-content .history-container ion-card ion-card-header ion-card-title ion-item{--ion-item-background:$transparent;--ion-item-icon-color:var(--ion-color-primary);--ion-item-text-color:var(--ion-color-primary)}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-header ion-card-title ion-item mat-icon[slot=start]{margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important;color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor}ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-label,ion-content .history-container ion-card ion-card-header ion-card-title ion-item ion-text{color:var(--ion-item-text-color)!important;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}ion-content .history-container ion-card ion-card-content ion-list{--ion-item-background:var(--ion-color-transparent)}ion-content .history-container ion-card ion-card-content ion-list ion-item{--ion-item-icon-color:var(--ion-color-dark);--ion-item-text-color:var(--ion-color-dark)}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-icon[slot=start],ion-content .history-container ion-card ion-card-content ion-list ion-item mat-icon[slot=start]{color:var(--ion-item-icon-color)!important;fill:currentColor;stroke:currentColor;margin-right:unset;-webkit-margin-end:16px!important;margin-inline-end:16px!important}ion-content .history-container ion-card ion-card-content ion-list ion-item ion-label,ion-content .history-container ion-card ion-card-content ion-list ion-item ion-text{color:var(--ion-item-text-color)!important}ion-content .bottom-banner{background-color:hsla(0,0%,100%,.7);min-width:240px;z-index:0;position:absolute;left:16px;right:16px;bottom:16px}ion-content .bottom-banner img.logo{max-height:50px;margin-left:8px}ion-content ion-text{text-align:center}@media screen and (max-width:575px){ion-content ion-card{min-width:160px;width:calc(100% - 20px);max-width:100%;margin-left:10px;margin-right:10px}ion-content ion-card h1{margin-top:0;font-size:20px}ion-content ion-card ion-card-content ion-button{margin-top:8px}ion-content .bottom-banner{display:block;position:unset}ion-content .bottom-banner img.logo{max-height:30px}}@media screen and (max-width:767px) and (min-width:576px){ion-content{min-height:555px}ion-content .bottom-banner img.logo{max-height:40px}}@media screen and (min-width:768px){ion-content{min-height:calc(100% - 100px)}}"]
@@ -18275,7 +18266,7 @@ HomePage.ctorParameters = () => [
18275
18266
  { type: ChangeDetectorRef },
18276
18267
  { type: NetworkService },
18277
18268
  { type: LocalSettingsService },
18278
- { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
18269
+ { type: Environment, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
18279
18270
  { type: Array, decorators: [{ type: Inject, args: [APP_LOCALES,] }] },
18280
18271
  { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_HOME_BUTTONS,] }] }
18281
18272
  ];
@@ -18418,7 +18409,7 @@ class UserSettingsValidatorService extends AppValidatorService {
18418
18409
  });
18419
18410
  }
18420
18411
  }
18421
- UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
18412
+ UserSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(ɵɵinject(FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
18422
18413
  UserSettingsValidatorService.decorators = [
18423
18414
  { type: Injectable, args: [{ providedIn: 'root' },] }
18424
18415
  ];
@@ -18462,7 +18453,7 @@ class AccountValidatorService extends AppValidatorService {
18462
18453
  return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
18463
18454
  }
18464
18455
  }
18465
- AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
18456
+ AccountValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
18466
18457
  AccountValidatorService.decorators = [
18467
18458
  { type: Injectable, args: [{ providedIn: 'root' },] }
18468
18459
  ];
@@ -19027,7 +19018,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
19027
19018
  });
19028
19019
  }
19029
19020
  }
19030
- LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
19021
+ LocalSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(ɵɵinject(FormBuilder), ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
19031
19022
  LocalSettingsValidatorService.decorators = [
19032
19023
  { type: Injectable, args: [{ providedIn: 'root' },] }
19033
19024
  ];
@@ -19646,7 +19637,7 @@ class IsOnFieldModePipe {
19646
19637
  return value === 'FIELD';
19647
19638
  }
19648
19639
  }
19649
- IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
19640
+ IsOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
19650
19641
  IsOnFieldModePipe.decorators = [
19651
19642
  { type: Pipe, args: [{
19652
19643
  name: 'isOnField'
@@ -19658,7 +19649,7 @@ class IsNotOnFieldModePipe {
19658
19649
  return value !== 'FIELD';
19659
19650
  }
19660
19651
  }
19661
- IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
19652
+ IsNotOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
19662
19653
  IsNotOnFieldModePipe.decorators = [
19663
19654
  { type: Pipe, args: [{
19664
19655
  name: 'isNotOnField'
@@ -19673,7 +19664,7 @@ class PersonToStringPipe {
19673
19664
  return PersonUtils.personToString(value);
19674
19665
  }
19675
19666
  }
19676
- PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
19667
+ PersonToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
19677
19668
  PersonToStringPipe.decorators = [
19678
19669
  { type: Pipe, args: [{
19679
19670
  name: 'personToString'
@@ -20058,7 +20049,7 @@ class IsLoginAccountPipe {
20058
20049
  return value && value.pubkey && true;
20059
20050
  }
20060
20051
  }
20061
- IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
20052
+ IsLoginAccountPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
20062
20053
  IsLoginAccountPipe.decorators = [
20063
20054
  { type: Pipe, args: [{
20064
20055
  name: 'isLogin'
@@ -20070,7 +20061,7 @@ class AccountToStringPipe {
20070
20061
  return accountToString(value);
20071
20062
  }
20072
20063
  }
20073
- AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
20064
+ AccountToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
20074
20065
  AccountToStringPipe.decorators = [
20075
20066
  { type: Pipe, args: [{
20076
20067
  name: 'accountToString'
@@ -20085,7 +20076,7 @@ class DepartmentToStringPipe {
20085
20076
  return departmentToString(value);
20086
20077
  }
20087
20078
  }
20088
- DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
20079
+ DepartmentToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
20089
20080
  DepartmentToStringPipe.decorators = [
20090
20081
  { type: Pipe, args: [{
20091
20082
  name: 'departmentToString'
@@ -20111,7 +20102,7 @@ class MenuService {
20111
20102
  this._visibleSubject.next(value);
20112
20103
  }
20113
20104
  }
20114
- MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
20105
+ MenuService.ɵprov = ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
20115
20106
  MenuService.decorators = [
20116
20107
  { type: Injectable, args: [{
20117
20108
  providedIn: 'root'
@@ -20637,7 +20628,7 @@ class AuthGuardService {
20637
20628
  }));
20638
20629
  }
20639
20630
  }
20640
- 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" });
20631
+ AuthGuardService.ɵprov = ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(ɵɵinject(AccountService), ɵɵinject(ModalController), ɵɵinject(Router), ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
20641
20632
  AuthGuardService.decorators = [
20642
20633
  { type: Injectable, args: [{ providedIn: 'root' },] }
20643
20634
  ];
@@ -20679,7 +20670,7 @@ class BaseEntityService extends BaseGraphqlService {
20679
20670
  query,
20680
20671
  variables: { id },
20681
20672
  fetchPolicy: opts && opts.fetchPolicy || undefined,
20682
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20673
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20683
20674
  })
20684
20675
  .pipe(map(({ data }) => (!opts || opts.toEntity !== false)
20685
20676
  ? (data && this.fromObject(data))
@@ -20694,7 +20685,7 @@ class BaseEntityService extends BaseGraphqlService {
20694
20685
  query,
20695
20686
  variables: { id },
20696
20687
  fetchPolicy: opts && opts.fetchPolicy || undefined,
20697
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20688
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
20698
20689
  });
20699
20690
  // Convert to entity
20700
20691
  return (!opts || opts.toEntity !== false)
@@ -20725,7 +20716,7 @@ class BaseEntityService extends BaseGraphqlService {
20725
20716
  totalFieldName: withTotal ? 'total' : undefined,
20726
20717
  insertFilterFn: filter && filter.asFilterFn(),
20727
20718
  variables,
20728
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
20719
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
20729
20720
  fetchPolicy: opts && opts.fetchPolicy || undefined
20730
20721
  })
20731
20722
  .pipe(map(({ data, total }) => {
@@ -20761,7 +20752,7 @@ class BaseEntityService extends BaseGraphqlService {
20761
20752
  const { data, total } = yield this.graphql.query({
20762
20753
  query,
20763
20754
  variables,
20764
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
20755
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
20765
20756
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
20766
20757
  });
20767
20758
  const entities = (!opts || opts.toEntity !== false) ?
@@ -20800,7 +20791,7 @@ class BaseEntityService extends BaseGraphqlService {
20800
20791
  variables: {
20801
20792
  filter: filter && filter.asPodObject()
20802
20793
  },
20803
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
20794
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
20804
20795
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
20805
20796
  });
20806
20797
  return res.total;
@@ -20836,7 +20827,7 @@ class BaseEntityService extends BaseGraphqlService {
20836
20827
  variables: {
20837
20828
  data: json
20838
20829
  },
20839
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20830
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20840
20831
  update: (proxy, { data }) => {
20841
20832
  const savedEntities = data && data.data;
20842
20833
  if (savedEntities) {
@@ -20892,7 +20883,7 @@ class BaseEntityService extends BaseGraphqlService {
20892
20883
  variables: {
20893
20884
  data: json
20894
20885
  },
20895
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20886
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
20896
20887
  update: (cache, { data }) => {
20897
20888
  // Update entity
20898
20889
  const savedEntity = data && data.data;
@@ -20940,7 +20931,7 @@ class BaseEntityService extends BaseGraphqlService {
20940
20931
  refetchQueries: this.getRefetchQueriesForMutation(opts),
20941
20932
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
20942
20933
  variables: { ids },
20943
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20934
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20944
20935
  update: (cache, res) => {
20945
20936
  // Remove from cache
20946
20937
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -20981,7 +20972,7 @@ class BaseEntityService extends BaseGraphqlService {
20981
20972
  refetchQueries: this.getRefetchQueriesForMutation(opts),
20982
20973
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
20983
20974
  variables: { id },
20984
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20975
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
20985
20976
  update: (proxy, res) => {
20986
20977
  // Remove from cache
20987
20978
  if (this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -21014,7 +21005,7 @@ class BaseEntityService extends BaseGraphqlService {
21014
21005
  query: opts && opts.query || this.subscriptions.listenChanges,
21015
21006
  variables,
21016
21007
  error: {
21017
- code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
21008
+ code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
21018
21009
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
21019
21010
  }
21020
21011
  })
@@ -21200,7 +21191,7 @@ class EntitiesTableDataSource extends TableDataSource {
21200
21191
  if (this._debug)
21201
21192
  invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
21202
21193
  // Stop with an error
21203
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21194
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21204
21195
  }
21205
21196
  this._editingRowCount = 0;
21206
21197
  let data;
@@ -22064,14 +22055,14 @@ class AppTable {
22064
22055
  return __awaiter(this, void 0, void 0, function* () {
22065
22056
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
22066
22057
  if (this.readOnly) {
22067
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
22058
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
22068
22059
  }
22069
22060
  this.resetError();
22070
22061
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
22071
22062
  this.previouslyEditedRowId = opts.keepEditing && ((((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined) || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.id));
22072
22063
  const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && ((_c = this.editedRow) === null || _c === void 0 ? void 0 : _c.currentData) || ((_d = this.singleSelectedRow) === null || _d === void 0 ? void 0 : _d.currentData);
22073
22064
  if (!this.confirmEditCreate()) {
22074
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
22065
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
22075
22066
  }
22076
22067
  // Mark as saving
22077
22068
  this.markAsSaving();
@@ -22188,7 +22179,7 @@ class AppTable {
22188
22179
  var _a;
22189
22180
  return __awaiter(this, void 0, void 0, function* () {
22190
22181
  if (this.readOnly) {
22191
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
22182
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
22192
22183
  }
22193
22184
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
22194
22185
  return 0; // SKip
@@ -23722,7 +23713,7 @@ class AppEntityEditor extends AppTabEditor {
23722
23713
  try {
23723
23714
  const data = yield this.dataService.load(id, opts);
23724
23715
  if (!data)
23725
- throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
23716
+ throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
23726
23717
  this._usageMode = this.computeUsageMode(data);
23727
23718
  yield this.onEntityLoaded(data, opts);
23728
23719
  yield this.updateView(data, opts);
@@ -24657,7 +24648,7 @@ class UserEventService extends BaseGraphqlService {
24657
24648
  EntityUtils.copyIdAndUpdateDate(source, target);
24658
24649
  }
24659
24650
  }
24660
- 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" });
24651
+ 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" });
24661
24652
  UserEventService.decorators = [
24662
24653
  { type: Injectable, args: [{ providedIn: 'root' },] }
24663
24654
  ];
@@ -25041,7 +25032,7 @@ class PersonService extends BaseEntityService {
25041
25032
  return target;
25042
25033
  }
25043
25034
  }
25044
- 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" });
25035
+ PersonService.ɵprov = ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(ɵɵinject(GraphqlService), ɵɵinject(PlatformService), ɵɵinject(NetworkService), ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
25045
25036
  PersonService.decorators = [
25046
25037
  { type: Injectable, args: [{ providedIn: 'root' },] }
25047
25038
  ];
@@ -25072,7 +25063,7 @@ class PersonValidatorService {
25072
25063
  return this.formBuilder.group(formConfig);
25073
25064
  }
25074
25065
  }
25075
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
25066
+ PersonValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
25076
25067
  PersonValidatorService.decorators = [
25077
25068
  { type: Injectable, args: [{ providedIn: 'root' },] }
25078
25069
  ];
@@ -25266,16 +25257,16 @@ AdminModule.decorators = [
25266
25257
  ];
25267
25258
  AdminModule.ctorParameters = () => [];
25268
25259
 
25269
- const ɵ0 = {
25260
+ const ɵ0$c = {
25270
25261
  profile: 'ADMIN'
25271
25262
  };
25272
- const routes = [
25263
+ const routes$2 = [
25273
25264
  {
25274
25265
  path: 'users',
25275
25266
  pathMatch: 'full',
25276
25267
  component: UsersPage,
25277
25268
  canActivate: [AuthGuardService],
25278
- data: ɵ0
25269
+ data: ɵ0$c
25279
25270
  }
25280
25271
  ];
25281
25272
  class AdminRoutingModule {
@@ -25285,13 +25276,13 @@ AdminRoutingModule.decorators = [
25285
25276
  imports: [
25286
25277
  SharedRoutingModule,
25287
25278
  AdminModule,
25288
- RouterModule.forChild(routes)
25279
+ RouterModule.forChild(routes$2)
25289
25280
  ],
25290
25281
  exports: [RouterModule]
25291
25282
  },] }
25292
25283
  ];
25293
25284
 
25294
- const ErrorCodes = {
25285
+ const ErrorCodes$2 = {
25295
25286
  LOAD_PERSONS_ERROR: 100,
25296
25287
  SAVE_PERSONS_ERROR: 101,
25297
25288
  DELETE_PERSONS_ERROR: 102,
@@ -25303,5 +25294,5 @@ const ErrorCodes = {
25303
25294
  * Generated bundle index. Do not edit.
25304
25295
  */
25305
25296
 
25306
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isControlHasInput, isCordova, isDesktop, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isTouchUi, isWindow, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForTrue, waitIdle, waitWhilePending, ɵ0$b as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, ToastTestingModule as ɵg, ToastTestingPage as ɵh, RegisterForm as ɵi, AccountValidatorService as ɵj, RegisterModal as ɵk, UserSettingsValidatorService as ɵl, LocalSettingsValidatorService as ɵm, AppIconComponent as ɵn };
25297
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes$2 as ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isControlHasInput, isCordova, isDesktop, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isTouchUi, isWindow, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForTrue, waitIdle, waitWhilePending, ɵ0$1 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, ToastTestingModule as ɵg, ToastTestingPage as ɵh, RegisterForm as ɵi, AccountValidatorService as ɵj, RegisterModal as ɵk, UserSettingsValidatorService as ɵl, LocalSettingsValidatorService as ɵm, AppIconComponent as ɵn };
25307
25298
  //# sourceMappingURL=sumaris-net.ngx-components.js.map