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