@sumaris-net/ngx-components 0.13.9 → 0.13.13
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/ngx-sumaris-components.umd.js +416 -320
- package/bundles/ngx-sumaris-components.umd.js.map +1 -1
- package/bundles/ngx-sumaris-components.umd.min.js +2 -2
- package/bundles/ngx-sumaris-components.umd.min.js.map +1 -1
- package/esm2015/src/app/admin/users/list/users.js +1 -1
- package/esm2015/src/app/core/form/entity-editor.class.js +37 -28
- package/esm2015/src/app/core/form/form.utils.js +1 -1
- package/esm2015/src/app/core/services/base-entity-service.class.js +24 -1
- package/esm2015/src/app/core/table/entities-table-datasource.class.js +5 -3
- package/esm2015/src/app/core/table/table.class.js +12 -6
- package/esm2015/src/app/shared/functions.js +4 -1
- package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.js +2 -2
- package/fesm2015/ngx-sumaris-components.js +346 -288
- package/fesm2015/ngx-sumaris-components.js.map +1 -1
- package/ngx-sumaris-components.metadata.json +1 -1
- package/package.json +1 -1
- package/src/app/core/form/entity-editor.class.d.ts +3 -2
- package/src/app/core/services/base-entity-service.class.d.ts +2 -0
- package/src/app/core/table/table.class.d.ts +1 -1
- package/src/app/shared/functions.d.ts +1 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, Pipe, Injectable, Directive, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Inject, Renderer2 } from '@angular/core';
|
|
3
|
+
import * as i1$3 from '@angular/common';
|
|
2
4
|
import { CommonModule, DOCUMENT, Location } from '@angular/common';
|
|
3
5
|
import { CdkTableModule } from '@angular/cdk/table';
|
|
4
6
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
5
7
|
import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
|
|
6
8
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
9
|
+
import * as i1$2 from '@angular/material/core';
|
|
7
10
|
import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
|
|
8
11
|
import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
|
|
9
12
|
import { MatSortModule, MatSort } from '@angular/material/sort';
|
|
@@ -27,16 +30,21 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
|
27
30
|
import { MatRadioModule } from '@angular/material/radio';
|
|
28
31
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
29
32
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
33
|
+
import * as i2$1 from '@angular/material/dialog';
|
|
30
34
|
import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
|
|
31
35
|
import { MatAutocompleteModule, MatAutocompleteTrigger, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
|
|
32
36
|
import { __awaiter, __decorate } from 'tslib';
|
|
37
|
+
import * as i1$6 from '@angular/forms';
|
|
33
38
|
import { NG_VALUE_ACCESSOR, FormGroupDirective, ReactiveFormsModule, AbstractControl, Validators, FormBuilder, FormControl, FormGroup, FormArray } from '@angular/forms';
|
|
34
39
|
import { fromEvent, Subscription, BehaviorSubject, Subject, isObservable, merge, of, timer, noop as noop$8, Observable, defer, concat, combineLatest, EMPTY } from 'rxjs';
|
|
35
40
|
import { filter, first, startWith, debounceTime, takeWhile, switchMap, tap, map, distinctUntilChanged, mergeMap, takeUntil, catchError, throttleTime } from 'rxjs/operators';
|
|
41
|
+
import * as i1$1 from '@ngx-translate/core';
|
|
36
42
|
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
43
|
+
import * as i1$4 from '@ionic/angular';
|
|
37
44
|
import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, IonicRouteStrategy, NavParams, AlertController, MenuController, IonContent } from '@ionic/angular';
|
|
38
45
|
import * as momentImported from 'moment';
|
|
39
46
|
import { isMoment } from 'moment';
|
|
47
|
+
import * as i1 from '@angular/material-moment-adapter';
|
|
40
48
|
import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
|
|
41
49
|
import { Keyboard } from '@ionic-native/keyboard/ngx';
|
|
42
50
|
import { TextMaskModule } from 'angular2-text-mask';
|
|
@@ -46,32 +54,38 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
|
|
|
46
54
|
import { MatDividerModule } from '@angular/material/divider';
|
|
47
55
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
48
56
|
import { MatChipsModule } from '@angular/material/chips';
|
|
57
|
+
import * as i3$3 from '@angular/router';
|
|
49
58
|
import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
|
|
59
|
+
import * as i1$5 from '@angular/platform-browser';
|
|
50
60
|
import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
|
|
61
|
+
import * as i2$2 from '@angular/common/http';
|
|
51
62
|
import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
|
|
52
63
|
import { ColorPickerModule } from 'ngx-color-picker';
|
|
53
|
-
import { NativeAudio
|
|
54
|
-
import { Vibration
|
|
64
|
+
import { NativeAudio } from '@ionic-native/native-audio/ngx';
|
|
65
|
+
import { Vibration } from '@ionic-native/vibration/ngx';
|
|
55
66
|
import { AudioManagement } from '@ionic-native/audio-management/ngx';
|
|
56
|
-
import
|
|
57
|
-
import
|
|
58
|
-
import
|
|
67
|
+
import * as i2 from '@ionic-native/native-audio/ngx/index';
|
|
68
|
+
import * as i3 from '@ionic-native/vibration/ngx/index';
|
|
69
|
+
import * as i4 from '@ionic-native/audio-management/ngx/index';
|
|
59
70
|
import * as uuidv4Imported from 'uuid/v4';
|
|
60
71
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
61
72
|
import { MarkdownModule } from 'ngx-markdown';
|
|
62
73
|
import { sign, box, hash, verify } from 'tweetnacl';
|
|
74
|
+
import * as i3$1 from '@ionic/storage';
|
|
63
75
|
import { Storage, IonicStorageModule } from '@ionic/storage';
|
|
64
76
|
import 'zone.js/dist/zone-error';
|
|
65
|
-
import { SplashScreen
|
|
66
|
-
import { Connection, Network
|
|
67
|
-
import { CacheService
|
|
68
|
-
import
|
|
69
|
-
import
|
|
70
|
-
import
|
|
71
|
-
import { StatusBar
|
|
77
|
+
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
|
|
78
|
+
import { Connection, Network } from '@ionic-native/network/ngx';
|
|
79
|
+
import { CacheService, CacheModule } from 'ionic-cache';
|
|
80
|
+
import * as i6 from 'ionic-cache/dist/cache.service';
|
|
81
|
+
import * as i9 from '@ionic-native/network/ngx/index';
|
|
82
|
+
import * as i10 from '@ionic-native/splash-screen/ngx/index';
|
|
83
|
+
import { StatusBar } from '@ionic-native/status-bar/ngx';
|
|
84
|
+
import * as i2$4 from '@angular/cdk/platform';
|
|
72
85
|
import { Platform as Platform$1 } from '@angular/cdk/platform';
|
|
73
|
-
import { InAppBrowser
|
|
86
|
+
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
|
|
74
87
|
import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
|
|
88
|
+
import * as i2$3 from 'apollo-angular';
|
|
75
89
|
import { Apollo } from 'apollo-angular';
|
|
76
90
|
import { WebSocketLink } from '@apollo/client/link/ws';
|
|
77
91
|
import { getMainDefinition } from '@apollo/client/utilities';
|
|
@@ -79,11 +93,12 @@ import { RetryLink } from '@apollo/client/link/retry';
|
|
|
79
93
|
import QueueLink from 'apollo-link-queue';
|
|
80
94
|
import SerializingLink from 'apollo-link-serialize';
|
|
81
95
|
import loggerLink from 'apollo-link-logger';
|
|
96
|
+
import * as i3$2 from 'apollo-angular/http';
|
|
82
97
|
import { HttpLink } from 'apollo-angular/http';
|
|
83
98
|
import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
|
|
84
|
-
import
|
|
85
|
-
import
|
|
86
|
-
import
|
|
99
|
+
import * as i14 from '@ionic-native/status-bar/ngx/index';
|
|
100
|
+
import * as i15 from '@ionic-native/keyboard/ngx/index';
|
|
101
|
+
import * as i17 from '@ionic-native/in-app-browser/ngx/index';
|
|
87
102
|
import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
|
|
88
103
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
89
104
|
import { NgxJdenticonModule } from 'ngx-jdenticon';
|
|
@@ -116,6 +131,9 @@ function isNotNilOrBlank(obj) {
|
|
|
116
131
|
function isNotNilOrNaN(obj) {
|
|
117
132
|
return obj !== undefined && obj !== null && (typeof obj !== 'number' || !isNaN(obj));
|
|
118
133
|
}
|
|
134
|
+
function isNilOrNaN(obj) {
|
|
135
|
+
return obj === undefined || obj === null || (typeof obj === 'number' && isNaN(obj));
|
|
136
|
+
}
|
|
119
137
|
function isNotEmptyArray(obj) {
|
|
120
138
|
return obj !== undefined && obj !== null && obj.length > 0;
|
|
121
139
|
}
|
|
@@ -847,19 +865,19 @@ class MatAutocompleteConfigHolder {
|
|
|
847
865
|
return this.fields[fieldName] || this.add(fieldName);
|
|
848
866
|
}
|
|
849
867
|
}
|
|
850
|
-
const DEFAULT_VALUE_ACCESSOR = {
|
|
868
|
+
const DEFAULT_VALUE_ACCESSOR$6 = {
|
|
851
869
|
provide: NG_VALUE_ACCESSOR,
|
|
852
870
|
useExisting: forwardRef(() => MatAutocompleteField),
|
|
853
871
|
multi: true
|
|
854
872
|
};
|
|
855
|
-
const noop = () => { };
|
|
856
|
-
const ɵ0 = noop;
|
|
873
|
+
const noop$7 = () => { };
|
|
874
|
+
const ɵ0$a = noop$7;
|
|
857
875
|
class MatAutocompleteField {
|
|
858
876
|
constructor(cd, formGroupDir) {
|
|
859
877
|
this.cd = cd;
|
|
860
878
|
this.formGroupDir = formGroupDir;
|
|
861
|
-
this._onChangeCallback = noop;
|
|
862
|
-
this._onTouchedCallback = noop;
|
|
879
|
+
this._onChangeCallback = noop$7;
|
|
880
|
+
this._onTouchedCallback = noop$7;
|
|
863
881
|
this._subscription = new Subscription();
|
|
864
882
|
this._filter$ = new BehaviorSubject(undefined);
|
|
865
883
|
this._reload$ = new Subject();
|
|
@@ -1032,7 +1050,7 @@ class MatAutocompleteField {
|
|
|
1032
1050
|
}
|
|
1033
1051
|
}),
|
|
1034
1052
|
// Filter if not enough character
|
|
1035
|
-
filter(value => value
|
|
1053
|
+
filter(value => value.length >= this.suggestLengthThreshold),
|
|
1036
1054
|
// Wait a debounce time
|
|
1037
1055
|
debounceTime(this.debounceTime)),
|
|
1038
1056
|
// Object set: use it (no distinctUntilChanged() pipe need)
|
|
@@ -1375,7 +1393,7 @@ MatAutocompleteField.decorators = [
|
|
|
1375
1393
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1376
1394
|
selector: 'mat-autocomplete-field',
|
|
1377
1395
|
template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <!-- readonly -->\n <ng-container *ngIf=\"readonly; else writable\">\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n readonly>\n <ion-label>{{ displayWith(value) }} </ion-label>\n </ng-container>\n\n <ng-template #writable>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <a class=\"ion-padding mat-option \"\n *ngIf=\"_moreItemsCount\"\n (click)=\"_fetchMore$.emit($event)\" >\n <ion-label color=\"primary\" style=\"width: 100%;\">\n <span translate>COMMON.BTN_SHOW_MORE</span>\n <mat-icon class=\"ion-color-primary\">expand_more</mat-icon>\n </ion-label>\n </a>\n </ng-container>\n </mat-select>\n </ng-template>\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autoComplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keyup.arrowdown)=\"!autoComplete.showPanel && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autoComplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\" >\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content matSuffix select=\"[matSuffix]\"></ng-content>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n",
|
|
1378
|
-
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
1396
|
+
providers: [DEFAULT_VALUE_ACCESSOR$6],
|
|
1379
1397
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1380
1398
|
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}"]
|
|
1381
1399
|
},] }
|
|
@@ -1449,7 +1467,7 @@ class DateFormatPipe {
|
|
|
1449
1467
|
return this.dateAdapter.format(date, displayFormat);
|
|
1450
1468
|
}
|
|
1451
1469
|
}
|
|
1452
|
-
DateFormatPipe.ɵprov =
|
|
1470
|
+
DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
|
|
1453
1471
|
DateFormatPipe.decorators = [
|
|
1454
1472
|
{ type: Pipe, args: [{
|
|
1455
1473
|
name: 'dateFormat'
|
|
@@ -1461,7 +1479,7 @@ DateFormatPipe.ctorParameters = () => [
|
|
|
1461
1479
|
{ type: TranslateService }
|
|
1462
1480
|
];
|
|
1463
1481
|
|
|
1464
|
-
const moment = momentImported;
|
|
1482
|
+
const moment$6 = momentImported;
|
|
1465
1483
|
class DateDiffDurationPipe {
|
|
1466
1484
|
constructor(dateAdapter, translate) {
|
|
1467
1485
|
this.dateAdapter = dateAdapter;
|
|
@@ -1477,17 +1495,17 @@ class DateDiffDurationPipe {
|
|
|
1477
1495
|
return this.format(startDate, endDate);
|
|
1478
1496
|
}
|
|
1479
1497
|
format(startDate, endDate) {
|
|
1480
|
-
const duration = moment.duration(endDate.diff(startDate));
|
|
1498
|
+
const duration = moment$6.duration(endDate.diff(startDate));
|
|
1481
1499
|
if (duration.asMinutes() < 0)
|
|
1482
1500
|
return '';
|
|
1483
|
-
const timeDuration = moment(0)
|
|
1501
|
+
const timeDuration = moment$6(0)
|
|
1484
1502
|
.hour(duration.hours())
|
|
1485
1503
|
.minute(duration.minutes());
|
|
1486
1504
|
const days = Math.floor(duration.asDays());
|
|
1487
1505
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
|
|
1488
1506
|
}
|
|
1489
1507
|
}
|
|
1490
|
-
DateDiffDurationPipe.ɵprov =
|
|
1508
|
+
DateDiffDurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(i0.ɵɵinject(i1$2.DateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
|
|
1491
1509
|
DateDiffDurationPipe.decorators = [
|
|
1492
1510
|
{ type: Pipe, args: [{
|
|
1493
1511
|
name: 'dateDiffDuration'
|
|
@@ -1508,7 +1526,7 @@ class DateFromNowPipe {
|
|
|
1508
1526
|
return date ? date.fromNow(args && args.withoutSuffix) : '';
|
|
1509
1527
|
}
|
|
1510
1528
|
}
|
|
1511
|
-
DateFromNowPipe.ɵprov =
|
|
1529
|
+
DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
|
|
1512
1530
|
DateFromNowPipe.decorators = [
|
|
1513
1531
|
{ type: Pipe, args: [{
|
|
1514
1532
|
name: 'dateFromNow'
|
|
@@ -1577,7 +1595,7 @@ function formatToDD(value, opts) {
|
|
|
1577
1595
|
value *= -1;
|
|
1578
1596
|
}
|
|
1579
1597
|
}
|
|
1580
|
-
let degrees = roundFloat(value, opts.maxDecimals).toString();
|
|
1598
|
+
let degrees = roundFloat$1(value, opts.maxDecimals).toString();
|
|
1581
1599
|
// Add sign
|
|
1582
1600
|
let sign = negative ? '-' : '+';
|
|
1583
1601
|
if (opts.placeholderChar) {
|
|
@@ -1628,7 +1646,7 @@ function formatToDDMMSS(value, opts) {
|
|
|
1628
1646
|
}
|
|
1629
1647
|
let degrees = Math.trunc(value);
|
|
1630
1648
|
let minutes = Math.trunc((value - degrees) * 60);
|
|
1631
|
-
let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
|
|
1649
|
+
let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
|
|
1632
1650
|
while (seconds >= 60) {
|
|
1633
1651
|
seconds -= 60;
|
|
1634
1652
|
minutes += 1;
|
|
@@ -1696,7 +1714,7 @@ function formatToDDMM(value, opts) {
|
|
|
1696
1714
|
}
|
|
1697
1715
|
}
|
|
1698
1716
|
let degrees = Math.trunc(value);
|
|
1699
|
-
let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
|
|
1717
|
+
let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
|
|
1700
1718
|
while (minutes >= 60) {
|
|
1701
1719
|
minutes -= 60;
|
|
1702
1720
|
degrees += 1;
|
|
@@ -1747,15 +1765,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
|
|
|
1747
1765
|
return NaN;
|
|
1748
1766
|
}
|
|
1749
1767
|
if (pattern === 'DD')
|
|
1750
|
-
return roundFloat(degrees, maxDecimals);
|
|
1768
|
+
return roundFloat$1(degrees, maxDecimals);
|
|
1751
1769
|
const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
|
|
1752
1770
|
const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
|
|
1753
1771
|
const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
|
|
1754
1772
|
const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
|
|
1755
1773
|
degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
|
|
1756
|
-
return roundFloat(degrees, maxDecimals);
|
|
1774
|
+
return roundFloat$1(degrees, maxDecimals);
|
|
1757
1775
|
}
|
|
1758
|
-
function roundFloat(input, maxDecimals) {
|
|
1776
|
+
function roundFloat$1(input, maxDecimals) {
|
|
1759
1777
|
if (maxDecimals > 0) {
|
|
1760
1778
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
1761
1779
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -1775,7 +1793,7 @@ class LatLongFormatPipe {
|
|
|
1775
1793
|
return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
|
|
1776
1794
|
}
|
|
1777
1795
|
}
|
|
1778
|
-
LatLongFormatPipe.ɵprov =
|
|
1796
|
+
LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
|
|
1779
1797
|
LatLongFormatPipe.decorators = [
|
|
1780
1798
|
{ type: Pipe, args: [{
|
|
1781
1799
|
name: 'latLongFormat'
|
|
@@ -1787,7 +1805,7 @@ class LatitudeFormatPipe {
|
|
|
1787
1805
|
this.transform = formatLatitude;
|
|
1788
1806
|
}
|
|
1789
1807
|
}
|
|
1790
|
-
LatitudeFormatPipe.ɵprov =
|
|
1808
|
+
LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
|
|
1791
1809
|
LatitudeFormatPipe.decorators = [
|
|
1792
1810
|
{ type: Pipe, args: [{
|
|
1793
1811
|
name: 'latitudeFormat'
|
|
@@ -1799,7 +1817,7 @@ class LongitudeFormatPipe {
|
|
|
1799
1817
|
this.transform = formatLongitude;
|
|
1800
1818
|
}
|
|
1801
1819
|
}
|
|
1802
|
-
LongitudeFormatPipe.ɵprov =
|
|
1820
|
+
LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
|
|
1803
1821
|
LongitudeFormatPipe.decorators = [
|
|
1804
1822
|
{ type: Pipe, args: [{
|
|
1805
1823
|
name: 'longitudeFormat'
|
|
@@ -1819,7 +1837,7 @@ class NumberFormatPipe {
|
|
|
1819
1837
|
}
|
|
1820
1838
|
}
|
|
1821
1839
|
}
|
|
1822
|
-
NumberFormatPipe.ɵprov =
|
|
1840
|
+
NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
|
|
1823
1841
|
NumberFormatPipe.decorators = [
|
|
1824
1842
|
{ type: Pipe, args: [{
|
|
1825
1843
|
name: 'numberFormat'
|
|
@@ -1859,7 +1877,7 @@ class HighlightPipe {
|
|
|
1859
1877
|
}
|
|
1860
1878
|
}
|
|
1861
1879
|
}
|
|
1862
|
-
HighlightPipe.ɵprov =
|
|
1880
|
+
HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
|
|
1863
1881
|
HighlightPipe.decorators = [
|
|
1864
1882
|
{ type: Pipe, args: [{
|
|
1865
1883
|
name: 'highlight'
|
|
@@ -1924,7 +1942,7 @@ FileSizePipe.decorators = [
|
|
|
1924
1942
|
{ type: Pipe, args: [{ name: 'fileSize' },] }
|
|
1925
1943
|
];
|
|
1926
1944
|
|
|
1927
|
-
const moment$
|
|
1945
|
+
const moment$5 = momentImported;
|
|
1928
1946
|
const DATE_UNIX_TIMESTAMP = 'X';
|
|
1929
1947
|
const DATE_UNIX_MS_TIMESTAMP = 'x';
|
|
1930
1948
|
class DateUtils {
|
|
@@ -1958,32 +1976,32 @@ function fromDateISOString(value) {
|
|
|
1958
1976
|
if (!value || isMoment(value))
|
|
1959
1977
|
return value;
|
|
1960
1978
|
// Parse the input value, as a ISO date time
|
|
1961
|
-
const date = moment$
|
|
1979
|
+
const date = moment$5(value, DATE_ISO_PATTERN);
|
|
1962
1980
|
if (date.isValid())
|
|
1963
1981
|
return date;
|
|
1964
1982
|
// Not valid: trying to convert from unix timestamp
|
|
1965
1983
|
if (typeof value === 'string') {
|
|
1966
1984
|
console.warn('Wrong date format - Trying to convert from local time: ' + value);
|
|
1967
1985
|
if (value.length === 10) {
|
|
1968
|
-
return moment$
|
|
1986
|
+
return moment$5(value, DATE_UNIX_TIMESTAMP);
|
|
1969
1987
|
}
|
|
1970
1988
|
else if (value.length === 13) {
|
|
1971
|
-
return moment$
|
|
1989
|
+
return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
|
|
1972
1990
|
}
|
|
1973
1991
|
}
|
|
1974
1992
|
console.warn('Unable to parse date: ' + value);
|
|
1975
1993
|
return undefined;
|
|
1976
1994
|
}
|
|
1977
1995
|
function fromUnixTimestamp(timeInSec) {
|
|
1978
|
-
return moment$
|
|
1996
|
+
return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
|
|
1979
1997
|
}
|
|
1980
1998
|
function fromUnixMsTimestamp(timeInMs) {
|
|
1981
|
-
return moment$
|
|
1999
|
+
return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
|
|
1982
2000
|
}
|
|
1983
2001
|
function toDuration(value, unit) {
|
|
1984
2002
|
if (!value)
|
|
1985
2003
|
return undefined;
|
|
1986
|
-
const duration = moment$
|
|
2004
|
+
const duration = moment$5.duration(value, unit);
|
|
1987
2005
|
// fix 990+ ms
|
|
1988
2006
|
if (duration.milliseconds() >= 990) {
|
|
1989
2007
|
duration.add(1000 - duration.milliseconds(), 'ms');
|
|
@@ -2012,7 +2030,7 @@ class DurationPipe {
|
|
|
2012
2030
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
|
|
2013
2031
|
}
|
|
2014
2032
|
}
|
|
2015
|
-
DurationPipe.ɵprov =
|
|
2033
|
+
DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
|
|
2016
2034
|
DurationPipe.decorators = [
|
|
2017
2035
|
{ type: Pipe, args: [{
|
|
2018
2036
|
name: 'duration'
|
|
@@ -2033,7 +2051,7 @@ class MathAbsPipe {
|
|
|
2033
2051
|
}
|
|
2034
2052
|
}
|
|
2035
2053
|
}
|
|
2036
|
-
MathAbsPipe.ɵprov =
|
|
2054
|
+
MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
|
|
2037
2055
|
MathAbsPipe.decorators = [
|
|
2038
2056
|
{ type: Pipe, args: [{
|
|
2039
2057
|
name: 'mathAbs'
|
|
@@ -2045,7 +2063,7 @@ class EvenPipe {
|
|
|
2045
2063
|
return val % 2 === 0;
|
|
2046
2064
|
}
|
|
2047
2065
|
}
|
|
2048
|
-
EvenPipe.ɵprov =
|
|
2066
|
+
EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
|
|
2049
2067
|
EvenPipe.decorators = [
|
|
2050
2068
|
{ type: Pipe, args: [{
|
|
2051
2069
|
name: 'even'
|
|
@@ -2057,7 +2075,7 @@ class OddPipe {
|
|
|
2057
2075
|
return val % 2 !== 0;
|
|
2058
2076
|
}
|
|
2059
2077
|
}
|
|
2060
|
-
OddPipe.ɵprov =
|
|
2078
|
+
OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
|
|
2061
2079
|
OddPipe.decorators = [
|
|
2062
2080
|
{ type: Pipe, args: [{
|
|
2063
2081
|
name: 'odd'
|
|
@@ -2165,7 +2183,7 @@ class MapGetPipe {
|
|
|
2165
2183
|
return val[key];
|
|
2166
2184
|
}
|
|
2167
2185
|
}
|
|
2168
|
-
MapGetPipe.ɵprov =
|
|
2186
|
+
MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
|
|
2169
2187
|
MapGetPipe.decorators = [
|
|
2170
2188
|
{ type: Pipe, args: [{
|
|
2171
2189
|
name: 'mapGet'
|
|
@@ -2179,7 +2197,7 @@ class MapKeysPipe {
|
|
|
2179
2197
|
return Object.keys(map);
|
|
2180
2198
|
}
|
|
2181
2199
|
}
|
|
2182
|
-
MapKeysPipe.ɵprov =
|
|
2200
|
+
MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
|
|
2183
2201
|
MapKeysPipe.decorators = [
|
|
2184
2202
|
{ type: Pipe, args: [{
|
|
2185
2203
|
name: 'mapKeys'
|
|
@@ -2193,7 +2211,7 @@ class MapValuesPipe {
|
|
|
2193
2211
|
return Object.values(map);
|
|
2194
2212
|
}
|
|
2195
2213
|
}
|
|
2196
|
-
MapValuesPipe.ɵprov =
|
|
2214
|
+
MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
|
|
2197
2215
|
MapValuesPipe.decorators = [
|
|
2198
2216
|
{ type: Pipe, args: [{
|
|
2199
2217
|
name: 'mapValues'
|
|
@@ -2206,7 +2224,7 @@ class IsNotNilOrBlankPipe {
|
|
|
2206
2224
|
return isNotNilOrBlank(value);
|
|
2207
2225
|
}
|
|
2208
2226
|
}
|
|
2209
|
-
IsNotNilOrBlankPipe.ɵprov =
|
|
2227
|
+
IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
|
|
2210
2228
|
IsNotNilOrBlankPipe.decorators = [
|
|
2211
2229
|
{ type: Pipe, args: [{
|
|
2212
2230
|
name: 'isNotNilOrBlank'
|
|
@@ -2218,7 +2236,7 @@ class IsNilOrBlankPipe {
|
|
|
2218
2236
|
return isNilOrBlank(value);
|
|
2219
2237
|
}
|
|
2220
2238
|
}
|
|
2221
|
-
IsNilOrBlankPipe.ɵprov =
|
|
2239
|
+
IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
|
|
2222
2240
|
IsNilOrBlankPipe.decorators = [
|
|
2223
2241
|
{ type: Pipe, args: [{
|
|
2224
2242
|
name: 'isNilOrBlank'
|
|
@@ -2230,7 +2248,7 @@ class ToStringPipe {
|
|
|
2230
2248
|
return (value !== null && value !== undefined) ? value.toString() : '';
|
|
2231
2249
|
}
|
|
2232
2250
|
}
|
|
2233
|
-
ToStringPipe.ɵprov =
|
|
2251
|
+
ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
|
|
2234
2252
|
ToStringPipe.decorators = [
|
|
2235
2253
|
{ type: Pipe, args: [{
|
|
2236
2254
|
name: 'toString'
|
|
@@ -2242,7 +2260,7 @@ class StrLengthPipe {
|
|
|
2242
2260
|
return value && value.length || 0;
|
|
2243
2261
|
}
|
|
2244
2262
|
}
|
|
2245
|
-
StrLengthPipe.ɵprov =
|
|
2263
|
+
StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
|
|
2246
2264
|
StrLengthPipe.decorators = [
|
|
2247
2265
|
{ type: Pipe, args: [{
|
|
2248
2266
|
name: 'strLength'
|
|
@@ -2293,7 +2311,7 @@ class TranslateContextService {
|
|
|
2293
2311
|
: parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
|
|
2294
2312
|
}
|
|
2295
2313
|
}
|
|
2296
|
-
TranslateContextService.ɵprov =
|
|
2314
|
+
TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
|
|
2297
2315
|
TranslateContextService.decorators = [
|
|
2298
2316
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
2299
2317
|
];
|
|
@@ -2309,7 +2327,7 @@ class TranslateContextPipe {
|
|
|
2309
2327
|
return this.translateContext.instant(key, context);
|
|
2310
2328
|
}
|
|
2311
2329
|
}
|
|
2312
|
-
TranslateContextPipe.ɵprov =
|
|
2330
|
+
TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
|
|
2313
2331
|
TranslateContextPipe.decorators = [
|
|
2314
2332
|
{ type: Pipe, args: [{
|
|
2315
2333
|
name: 'translateContext'
|
|
@@ -2326,7 +2344,7 @@ class TranslatablePipe {
|
|
|
2326
2344
|
return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
2327
2345
|
}
|
|
2328
2346
|
}
|
|
2329
|
-
TranslatablePipe.ɵprov =
|
|
2347
|
+
TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
|
|
2330
2348
|
TranslatablePipe.decorators = [
|
|
2331
2349
|
{ type: Pipe, args: [{
|
|
2332
2350
|
name: 'translatable'
|
|
@@ -2343,7 +2361,7 @@ class PropertyGetPipe {
|
|
|
2343
2361
|
args && args.defaultValue);
|
|
2344
2362
|
}
|
|
2345
2363
|
}
|
|
2346
|
-
PropertyGetPipe.ɵprov =
|
|
2364
|
+
PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
|
|
2347
2365
|
PropertyGetPipe.decorators = [
|
|
2348
2366
|
{ type: Pipe, args: [{
|
|
2349
2367
|
name: 'propertyGet'
|
|
@@ -2587,12 +2605,12 @@ SharedMatAutocompleteModule.decorators = [
|
|
|
2587
2605
|
},] }
|
|
2588
2606
|
];
|
|
2589
2607
|
|
|
2590
|
-
const moment$
|
|
2608
|
+
const moment$4 = momentImported;
|
|
2591
2609
|
// @dynamic
|
|
2592
2610
|
class SharedValidators {
|
|
2593
2611
|
static validDate(control) {
|
|
2594
2612
|
const value = control.value;
|
|
2595
|
-
const date = !value || moment$
|
|
2613
|
+
const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
|
|
2596
2614
|
if (date && (!date.isValid() || date.year() < 1970)) {
|
|
2597
2615
|
return { validDate: true };
|
|
2598
2616
|
}
|
|
@@ -2995,9 +3013,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
|
|
|
2995
3013
|
const hour = parseInt(durationParts[0] || '0');
|
|
2996
3014
|
const minute = parseInt(durationParts[1] || '0');
|
|
2997
3015
|
const value = hour + (minute + 0.5) / 60;
|
|
2998
|
-
return roundFloat
|
|
3016
|
+
return roundFloat(value, maxDecimals);
|
|
2999
3017
|
}
|
|
3000
|
-
function roundFloat
|
|
3018
|
+
function roundFloat(input, maxDecimals) {
|
|
3001
3019
|
if (maxDecimals > 0) {
|
|
3002
3020
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
3003
3021
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -3021,9 +3039,9 @@ const MASKS = {
|
|
|
3021
3039
|
DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
|
|
3022
3040
|
}
|
|
3023
3041
|
};
|
|
3024
|
-
const noop$
|
|
3042
|
+
const noop$6 = () => {
|
|
3025
3043
|
};
|
|
3026
|
-
const ɵ0$
|
|
3044
|
+
const ɵ0$9 = noop$6;
|
|
3027
3045
|
class MatLatLongField {
|
|
3028
3046
|
constructor(platform, translate, formBuilder, cd, formGroupDir) {
|
|
3029
3047
|
this.platform = platform;
|
|
@@ -3031,8 +3049,8 @@ class MatLatLongField {
|
|
|
3031
3049
|
this.formBuilder = formBuilder;
|
|
3032
3050
|
this.cd = cd;
|
|
3033
3051
|
this.formGroupDir = formGroupDir;
|
|
3034
|
-
this._onChangeCallback = noop$
|
|
3035
|
-
this._onTouchedCallback = noop$
|
|
3052
|
+
this._onChangeCallback = noop$6;
|
|
3053
|
+
this._onTouchedCallback = noop$6;
|
|
3036
3054
|
this._subscription = new Subscription();
|
|
3037
3055
|
this.disabling = false;
|
|
3038
3056
|
this.writing = false;
|
|
@@ -3373,14 +3391,14 @@ SharedMatLatLongModule.decorators = [
|
|
|
3373
3391
|
},] }
|
|
3374
3392
|
];
|
|
3375
3393
|
|
|
3376
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
3394
|
+
const DEFAULT_VALUE_ACCESSOR$5 = {
|
|
3377
3395
|
provide: NG_VALUE_ACCESSOR,
|
|
3378
3396
|
useExisting: forwardRef(() => MatDate),
|
|
3379
3397
|
multi: true
|
|
3380
3398
|
};
|
|
3381
|
-
const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3382
|
-
const noop$
|
|
3383
|
-
const ɵ0$
|
|
3399
|
+
const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3400
|
+
const noop$5 = () => { };
|
|
3401
|
+
const ɵ0$8 = noop$5;
|
|
3384
3402
|
class MatDate {
|
|
3385
3403
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
3386
3404
|
this.dateAdapter = dateAdapter;
|
|
@@ -3389,12 +3407,12 @@ class MatDate {
|
|
|
3389
3407
|
this.cd = cd;
|
|
3390
3408
|
this.keyboard = keyboard;
|
|
3391
3409
|
this.formGroupDir = formGroupDir;
|
|
3392
|
-
this._onChangeCallback = noop$
|
|
3393
|
-
this._onTouchedCallback = noop$
|
|
3410
|
+
this._onChangeCallback = noop$5;
|
|
3411
|
+
this._onTouchedCallback = noop$5;
|
|
3394
3412
|
this._subscription = new Subscription();
|
|
3395
3413
|
this.writing = true;
|
|
3396
3414
|
this.disabling = false;
|
|
3397
|
-
this.dayMask = DAY_MASK;
|
|
3415
|
+
this.dayMask = DAY_MASK$2;
|
|
3398
3416
|
this.disabled = false;
|
|
3399
3417
|
this.floatLabel = 'auto';
|
|
3400
3418
|
this.readonly = false;
|
|
@@ -3631,7 +3649,7 @@ MatDate.decorators = [
|
|
|
3631
3649
|
selector: 'mat-date-field',
|
|
3632
3650
|
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",
|
|
3633
3651
|
providers: [
|
|
3634
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
3652
|
+
DEFAULT_VALUE_ACCESSOR$5,
|
|
3635
3653
|
],
|
|
3636
3654
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3637
3655
|
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%}"]
|
|
@@ -3664,17 +3682,17 @@ MatDate.propDecorators = {
|
|
|
3664
3682
|
matInputs: [{ type: ViewChildren, args: ['matInput',] }]
|
|
3665
3683
|
};
|
|
3666
3684
|
|
|
3667
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
3685
|
+
const DEFAULT_VALUE_ACCESSOR$4 = {
|
|
3668
3686
|
provide: NG_VALUE_ACCESSOR,
|
|
3669
3687
|
useExisting: forwardRef(() => MatDateTime),
|
|
3670
3688
|
multi: true
|
|
3671
3689
|
};
|
|
3672
3690
|
const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3673
3691
|
const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
|
|
3674
|
-
const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
|
|
3675
|
-
const noop$
|
|
3692
|
+
const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
|
|
3693
|
+
const noop$4 = () => {
|
|
3676
3694
|
};
|
|
3677
|
-
const ɵ0$
|
|
3695
|
+
const ɵ0$7 = noop$4;
|
|
3678
3696
|
class MatDateTime {
|
|
3679
3697
|
constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
|
|
3680
3698
|
this.platform = platform;
|
|
@@ -3684,14 +3702,14 @@ class MatDateTime {
|
|
|
3684
3702
|
this.keyboard = keyboard;
|
|
3685
3703
|
this.cd = cd;
|
|
3686
3704
|
this.formGroupDir = formGroupDir;
|
|
3687
|
-
this._onChangeCallback = noop$
|
|
3688
|
-
this._onTouchedCallback = noop$
|
|
3705
|
+
this._onChangeCallback = noop$4;
|
|
3706
|
+
this._onTouchedCallback = noop$4;
|
|
3689
3707
|
this._subscription = new Subscription();
|
|
3690
3708
|
this.writing = true;
|
|
3691
3709
|
this.disabling = false;
|
|
3692
3710
|
this._onDestroy = new EventEmitter();
|
|
3693
3711
|
this.dayMask = DAY_MASK$1;
|
|
3694
|
-
this.hourMask = HOUR_MASK;
|
|
3712
|
+
this.hourMask = HOUR_MASK$1;
|
|
3695
3713
|
this.floatLabel = 'auto';
|
|
3696
3714
|
this.readonly = false;
|
|
3697
3715
|
this.compact = false;
|
|
@@ -3997,7 +4015,7 @@ MatDateTime.decorators = [
|
|
|
3997
4015
|
selector: 'mat-date-time-field',
|
|
3998
4016
|
template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{formControl.errors.msg}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n",
|
|
3999
4017
|
providers: [
|
|
4000
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4018
|
+
DEFAULT_VALUE_ACCESSOR$4,
|
|
4001
4019
|
],
|
|
4002
4020
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4003
4021
|
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%}"]
|
|
@@ -4036,10 +4054,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
|
|
|
4036
4054
|
useExisting: forwardRef(() => MatDateShort),
|
|
4037
4055
|
multi: true
|
|
4038
4056
|
};
|
|
4039
|
-
const DAY_MASK
|
|
4040
|
-
const noop$
|
|
4057
|
+
const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
|
|
4058
|
+
const noop$3 = () => {
|
|
4041
4059
|
};
|
|
4042
|
-
const ɵ0$
|
|
4060
|
+
const ɵ0$6 = noop$3;
|
|
4043
4061
|
class MatDateShort {
|
|
4044
4062
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
4045
4063
|
this.dateAdapter = dateAdapter;
|
|
@@ -4048,11 +4066,11 @@ class MatDateShort {
|
|
|
4048
4066
|
this.cd = cd;
|
|
4049
4067
|
this.keyboard = keyboard;
|
|
4050
4068
|
this.formGroupDir = formGroupDir;
|
|
4051
|
-
this._onChangeCallback = noop$
|
|
4052
|
-
this._onTouchedCallback = noop$
|
|
4069
|
+
this._onChangeCallback = noop$3;
|
|
4070
|
+
this._onTouchedCallback = noop$3;
|
|
4053
4071
|
this.writing = true;
|
|
4054
4072
|
this.disabling = false;
|
|
4055
|
-
this.dayMask = DAY_MASK
|
|
4073
|
+
this.dayMask = DAY_MASK;
|
|
4056
4074
|
this.disabled = false;
|
|
4057
4075
|
this.floatLabel = 'auto';
|
|
4058
4076
|
this.readonly = false;
|
|
@@ -4365,16 +4383,16 @@ SharedMatDateTimeModule.decorators = [
|
|
|
4365
4383
|
},] }
|
|
4366
4384
|
];
|
|
4367
4385
|
|
|
4368
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4386
|
+
const DEFAULT_VALUE_ACCESSOR$2 = {
|
|
4369
4387
|
provide: NG_VALUE_ACCESSOR,
|
|
4370
4388
|
useExisting: forwardRef(() => MatDuration),
|
|
4371
4389
|
multi: true
|
|
4372
4390
|
};
|
|
4373
4391
|
const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
|
|
4374
|
-
const HOUR_MASK
|
|
4375
|
-
const noop$
|
|
4392
|
+
const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
|
|
4393
|
+
const noop$2 = () => {
|
|
4376
4394
|
};
|
|
4377
|
-
const ɵ0$5 = noop$
|
|
4395
|
+
const ɵ0$5 = noop$2;
|
|
4378
4396
|
class MatDuration {
|
|
4379
4397
|
constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
|
|
4380
4398
|
this.dateAdapter = dateAdapter;
|
|
@@ -4383,11 +4401,11 @@ class MatDuration {
|
|
|
4383
4401
|
this.cd = cd;
|
|
4384
4402
|
this.formGroupDir = formGroupDir;
|
|
4385
4403
|
this._subscription = new Subscription();
|
|
4386
|
-
this._onChangeCallback = noop$
|
|
4387
|
-
this._onTouchedCallback = noop$
|
|
4404
|
+
this._onChangeCallback = noop$2;
|
|
4405
|
+
this._onTouchedCallback = noop$2;
|
|
4388
4406
|
this.writing = true;
|
|
4389
4407
|
this.disabling = false;
|
|
4390
|
-
this.hourMask = HOUR_MASK
|
|
4408
|
+
this.hourMask = HOUR_MASK;
|
|
4391
4409
|
this.disabled = false;
|
|
4392
4410
|
this.floatLabel = 'auto';
|
|
4393
4411
|
this.readonly = false;
|
|
@@ -4567,7 +4585,7 @@ MatDuration.decorators = [
|
|
|
4567
4585
|
selector: 'mat-duration-field',
|
|
4568
4586
|
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",
|
|
4569
4587
|
providers: [
|
|
4570
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4588
|
+
DEFAULT_VALUE_ACCESSOR$2,
|
|
4571
4589
|
],
|
|
4572
4590
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4573
4591
|
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%}"]
|
|
@@ -4624,22 +4642,22 @@ SharedMatDurationModule.decorators = [
|
|
|
4624
4642
|
},] }
|
|
4625
4643
|
];
|
|
4626
4644
|
|
|
4627
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4645
|
+
const DEFAULT_VALUE_ACCESSOR$1 = {
|
|
4628
4646
|
provide: NG_VALUE_ACCESSOR,
|
|
4629
4647
|
useExisting: forwardRef(() => MatBooleanField),
|
|
4630
4648
|
multi: true
|
|
4631
4649
|
};
|
|
4632
|
-
const noop$
|
|
4650
|
+
const noop$1 = () => {
|
|
4633
4651
|
};
|
|
4634
|
-
const ɵ0$
|
|
4652
|
+
const ɵ0$4 = noop$1;
|
|
4635
4653
|
class MatBooleanField {
|
|
4636
4654
|
constructor(translate, formBuilder, cd, formGroupDir) {
|
|
4637
4655
|
this.translate = translate;
|
|
4638
4656
|
this.formBuilder = formBuilder;
|
|
4639
4657
|
this.cd = cd;
|
|
4640
4658
|
this.formGroupDir = formGroupDir;
|
|
4641
|
-
this._onChangeCallback = noop$
|
|
4642
|
-
this._onTouchedCallback = noop$
|
|
4659
|
+
this._onChangeCallback = noop$1;
|
|
4660
|
+
this._onTouchedCallback = noop$1;
|
|
4643
4661
|
this._writing = false;
|
|
4644
4662
|
this.showRadio = false;
|
|
4645
4663
|
this.disabled = false;
|
|
@@ -4803,7 +4821,7 @@ MatBooleanField.decorators = [
|
|
|
4803
4821
|
selector: 'mat-boolean-field',
|
|
4804
4822
|
template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value ? 'COMMON.YES' : 'COMMON.NO') | translate }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{'COMMON.YES'|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span translate>COMMON.YES</span>\n </mat-radio-button> \n <mat-radio-button #noButton [value]=\"false\">\n <span translate>COMMON.NO</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label> </ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <ion-grid class=\"ion-no-padding\" *ngIf=\"!formControl.disabled; else disabledLabel\">\n <ion-row class=\"ion-no-padding\">\n <!-- Yes button -->\n <ion-col>\n <ion-button style=\"width: 100%;\"\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'danger' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon slot=\"start\" name=\"checkmark\"></ion-icon>\n {{'COMMON.YES'|translate}}\n </ion-button>\n </ion-col>\n <!-- No button -->\n <ion-col>\n <ion-button style=\"width: 100%;\"\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'danger' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon slot=\"start\" name=\"close\"></ion-icon>\n {{'COMMON.NO'|translate}}\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n",
|
|
4805
4823
|
providers: [
|
|
4806
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4824
|
+
DEFAULT_VALUE_ACCESSOR$1
|
|
4807
4825
|
],
|
|
4808
4826
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4809
4827
|
styles: [":host{width:100%}"]
|
|
@@ -5044,7 +5062,7 @@ class MatNumpadDomService {
|
|
|
5044
5062
|
this.appRef.detachView(this.componentRef.hostView);
|
|
5045
5063
|
}
|
|
5046
5064
|
}
|
|
5047
|
-
MatNumpadDomService.ɵprov =
|
|
5065
|
+
MatNumpadDomService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1$3.DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
|
|
5048
5066
|
MatNumpadDomService.decorators = [
|
|
5049
5067
|
{ type: Injectable, args: [{
|
|
5050
5068
|
providedIn: 'root'
|
|
@@ -5408,7 +5426,7 @@ SharedMatNumpadModule.decorators = [
|
|
|
5408
5426
|
},] }
|
|
5409
5427
|
];
|
|
5410
5428
|
|
|
5411
|
-
const DEFAULT_VALUE_ACCESSOR
|
|
5429
|
+
const DEFAULT_VALUE_ACCESSOR = {
|
|
5412
5430
|
provide: NG_VALUE_ACCESSOR,
|
|
5413
5431
|
useExisting: forwardRef(() => MatSwipeField),
|
|
5414
5432
|
multi: true
|
|
@@ -5671,7 +5689,7 @@ MatSwipeField.decorators = [
|
|
|
5671
5689
|
{ type: Component, args: [{
|
|
5672
5690
|
selector: 'mat-swipe-field',
|
|
5673
5691
|
template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n",
|
|
5674
|
-
providers: [DEFAULT_VALUE_ACCESSOR
|
|
5692
|
+
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
5675
5693
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5676
5694
|
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}"]
|
|
5677
5695
|
},] }
|
|
@@ -6166,7 +6184,7 @@ class ProgressBarService {
|
|
|
6166
6184
|
}
|
|
6167
6185
|
}
|
|
6168
6186
|
}
|
|
6169
|
-
ProgressBarService.ɵprov =
|
|
6187
|
+
ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
|
|
6170
6188
|
ProgressBarService.decorators = [
|
|
6171
6189
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6172
6190
|
];
|
|
@@ -6210,7 +6228,7 @@ class AppGestureConfig extends HammerGestureConfig {
|
|
|
6210
6228
|
return mc;
|
|
6211
6229
|
}
|
|
6212
6230
|
}
|
|
6213
|
-
AppGestureConfig.ɵprov =
|
|
6231
|
+
AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
|
|
6214
6232
|
AppGestureConfig.decorators = [
|
|
6215
6233
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6216
6234
|
];
|
|
@@ -6433,7 +6451,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
|
|
|
6433
6451
|
this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
|
|
6434
6452
|
}
|
|
6435
6453
|
}
|
|
6436
|
-
MatPaginatorI18n.ɵprov =
|
|
6454
|
+
MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
|
|
6437
6455
|
MatPaginatorI18n.decorators = [
|
|
6438
6456
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6439
6457
|
];
|
|
@@ -6523,17 +6541,17 @@ function getColorContrast(color, bw) {
|
|
|
6523
6541
|
return rgbArrayToHex(rgb.map(v => 255 - v));
|
|
6524
6542
|
}
|
|
6525
6543
|
|
|
6526
|
-
const noop
|
|
6544
|
+
const noop = () => {
|
|
6527
6545
|
};
|
|
6528
|
-
const ɵ0$
|
|
6546
|
+
const ɵ0$3 = noop;
|
|
6529
6547
|
class AppFormField {
|
|
6530
6548
|
constructor(translate, cd, injector, formGroupDir) {
|
|
6531
6549
|
this.translate = translate;
|
|
6532
6550
|
this.cd = cd;
|
|
6533
6551
|
this.injector = injector;
|
|
6534
6552
|
this.formGroupDir = formGroupDir;
|
|
6535
|
-
this._onChangeCallback = noop
|
|
6536
|
-
this._onTouchedCallback = noop
|
|
6553
|
+
this._onChangeCallback = noop;
|
|
6554
|
+
this._onTouchedCallback = noop;
|
|
6537
6555
|
this.readonly = false;
|
|
6538
6556
|
this.compact = false;
|
|
6539
6557
|
this.floatLabel = 'auto';
|
|
@@ -6904,14 +6922,14 @@ class AudioProvider {
|
|
|
6904
6922
|
});
|
|
6905
6923
|
}
|
|
6906
6924
|
}
|
|
6907
|
-
AudioProvider.ɵprov =
|
|
6925
|
+
AudioProvider.ɵprov = i0.ɵɵdefineInjectable({ factory: function AudioProvider_Factory() { return new AudioProvider(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2.NativeAudio, 8), i0.ɵɵinject(i3.Vibration, 8), i0.ɵɵinject(i4.AudioManagement, 8)); }, token: AudioProvider, providedIn: "root" });
|
|
6908
6926
|
AudioProvider.decorators = [
|
|
6909
6927
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6910
6928
|
];
|
|
6911
6929
|
AudioProvider.ctorParameters = () => [
|
|
6912
6930
|
{ type: Platform },
|
|
6913
|
-
{ type: NativeAudio
|
|
6914
|
-
{ type: Vibration
|
|
6931
|
+
{ type: NativeAudio, decorators: [{ type: Optional }] },
|
|
6932
|
+
{ type: Vibration, decorators: [{ type: Optional }] },
|
|
6915
6933
|
{ type: AudioManagement, decorators: [{ type: Optional }] }
|
|
6916
6934
|
];
|
|
6917
6935
|
|
|
@@ -6993,7 +7011,7 @@ class Hotkeys {
|
|
|
6993
7011
|
});
|
|
6994
7012
|
}
|
|
6995
7013
|
}
|
|
6996
|
-
Hotkeys.ɵprov =
|
|
7014
|
+
Hotkeys.ɵprov = i0.ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(i0.ɵɵinject(i1$5.EventManager), i0.ɵɵinject(i2$1.MatDialog), i0.ɵɵinject(i1$3.DOCUMENT), i0.ɵɵinject(i1$4.ModalController)); }, token: Hotkeys, providedIn: "root" });
|
|
6997
7015
|
Hotkeys.decorators = [
|
|
6998
7016
|
{ type: Injectable, args: [{
|
|
6999
7017
|
providedIn: 'root'
|
|
@@ -7167,7 +7185,7 @@ class Base64ImageReader {
|
|
|
7167
7185
|
}
|
|
7168
7186
|
}
|
|
7169
7187
|
|
|
7170
|
-
const uuidv4 = uuidv4Imported;
|
|
7188
|
+
const uuidv4$1 = uuidv4Imported;
|
|
7171
7189
|
class FileService {
|
|
7172
7190
|
constructor(platform,
|
|
7173
7191
|
//private transfer: FileTransfer,
|
|
@@ -7204,7 +7222,7 @@ class FileService {
|
|
|
7204
7222
|
const lastSlashIndex = source.lastIndexOf('/');
|
|
7205
7223
|
if (lastSlashIndex === -1)
|
|
7206
7224
|
throw new Error('Invalid URL: ' + source);
|
|
7207
|
-
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
|
|
7225
|
+
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
|
|
7208
7226
|
// Download into the file system
|
|
7209
7227
|
if (responseType === 'file' && this.canUseFileSystem) {
|
|
7210
7228
|
console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
|
|
@@ -7260,7 +7278,7 @@ class FileService {
|
|
|
7260
7278
|
this._started = true;
|
|
7261
7279
|
}
|
|
7262
7280
|
}
|
|
7263
|
-
FileService.ɵprov =
|
|
7281
|
+
FileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$2.HttpClient), i0.ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
|
|
7264
7282
|
FileService.decorators = [
|
|
7265
7283
|
{ type: Injectable, args: [{
|
|
7266
7284
|
providedIn: 'root',
|
|
@@ -7422,7 +7440,7 @@ class Base58 {
|
|
|
7422
7440
|
Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
7423
7441
|
|
|
7424
7442
|
const scrypt = require('scrypt-async');
|
|
7425
|
-
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
7443
|
+
const sha256$1 = require('hash.js/lib/hash/sha/256');
|
|
7426
7444
|
const sha512 = require('hash.js/lib/hash/sha/512');
|
|
7427
7445
|
const nacl = {
|
|
7428
7446
|
sign,
|
|
@@ -7526,7 +7544,7 @@ class CryptoService {
|
|
|
7526
7544
|
* Hash (using SHA256) a message
|
|
7527
7545
|
*/
|
|
7528
7546
|
sha256(message) {
|
|
7529
|
-
return sha256().update(message).digest('hex');
|
|
7547
|
+
return sha256$1().update(message).digest('hex');
|
|
7530
7548
|
}
|
|
7531
7549
|
/**
|
|
7532
7550
|
* Hash (using SHA512) a message
|
|
@@ -7539,7 +7557,7 @@ class CryptoService {
|
|
|
7539
7557
|
return nacl.util.encodeBase64(m);
|
|
7540
7558
|
}
|
|
7541
7559
|
}
|
|
7542
|
-
CryptoService.ɵprov =
|
|
7560
|
+
CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
|
|
7543
7561
|
CryptoService.decorators = [
|
|
7544
7562
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7545
7563
|
];
|
|
@@ -8746,7 +8764,7 @@ class LocalSettingsService {
|
|
|
8746
8764
|
return page;
|
|
8747
8765
|
}
|
|
8748
8766
|
}
|
|
8749
|
-
LocalSettingsService.ɵprov =
|
|
8767
|
+
LocalSettingsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsService_Factory() { return new LocalSettingsService(i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_SETTINGS, 8), i0.ɵɵinject(APP_LOCAL_SETTINGS_OPTIONS, 8)); }, token: LocalSettingsService, providedIn: "root" });
|
|
8750
8768
|
LocalSettingsService.decorators = [
|
|
8751
8769
|
{ type: Injectable, args: [{
|
|
8752
8770
|
providedIn: 'root',
|
|
@@ -9442,7 +9460,7 @@ class NetworkService {
|
|
|
9442
9460
|
});
|
|
9443
9461
|
}
|
|
9444
9462
|
}
|
|
9445
|
-
NetworkService.ɵprov =
|
|
9463
|
+
NetworkService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NetworkService_Factory() { return new NetworkService(i0.ɵɵinject(i1$3.DOCUMENT), i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i1$4.ModalController), i0.ɵɵinject(CryptoService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i2$2.HttpClient), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i9.Network, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i1$1.TranslateService, 8), i0.ɵɵinject(i1$4.ToastController, 8)); }, token: NetworkService, providedIn: "root" });
|
|
9446
9464
|
NetworkService.decorators = [
|
|
9447
9465
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
9448
9466
|
];
|
|
@@ -9453,16 +9471,16 @@ NetworkService.ctorParameters = () => [
|
|
|
9453
9471
|
{ type: CryptoService },
|
|
9454
9472
|
{ type: Storage },
|
|
9455
9473
|
{ type: LocalSettingsService },
|
|
9456
|
-
{ type: CacheService
|
|
9474
|
+
{ type: CacheService },
|
|
9457
9475
|
{ type: HttpClient },
|
|
9458
9476
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
9459
|
-
{ type: Network
|
|
9460
|
-
{ type: SplashScreen
|
|
9477
|
+
{ type: Network, decorators: [{ type: Optional }] },
|
|
9478
|
+
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
9461
9479
|
{ type: TranslateService, decorators: [{ type: Optional }] },
|
|
9462
9480
|
{ type: ToastController, decorators: [{ type: Optional }] }
|
|
9463
9481
|
];
|
|
9464
9482
|
|
|
9465
|
-
const ErrorCodes = {
|
|
9483
|
+
const ErrorCodes$2 = {
|
|
9466
9484
|
UNKNOWN_ERROR: 0,
|
|
9467
9485
|
LOAD_ACCOUNT_ERROR: 1,
|
|
9468
9486
|
BAD_PASSWORD: 2,
|
|
@@ -9809,7 +9827,7 @@ class EntityStore {
|
|
|
9809
9827
|
}
|
|
9810
9828
|
catch (err) {
|
|
9811
9829
|
console.error(err);
|
|
9812
|
-
throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
|
|
9830
|
+
throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
|
|
9813
9831
|
}
|
|
9814
9832
|
}
|
|
9815
9833
|
// Emit update event
|
|
@@ -10386,7 +10404,7 @@ class EntitiesStorage {
|
|
|
10386
10404
|
}
|
|
10387
10405
|
EntitiesStorage.TRASH_PREFIX = 'Trash#';
|
|
10388
10406
|
EntitiesStorage.REMOTE_PREFIX = 'Remote#';
|
|
10389
|
-
EntitiesStorage.ɵprov =
|
|
10407
|
+
EntitiesStorage.ɵprov = i0.ɵɵdefineInjectable({ factory: function EntitiesStorage_Factory() { return new EntitiesStorage(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(ProgressBarService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_STORAGE_TYPE_POLICIES, 8)); }, token: EntitiesStorage, providedIn: "root" });
|
|
10390
10408
|
EntitiesStorage.decorators = [
|
|
10391
10409
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
10392
10410
|
];
|
|
@@ -10483,10 +10501,10 @@ function referentialToString(obj, properties) {
|
|
|
10483
10501
|
function referentialsToString(values, properties, separator) {
|
|
10484
10502
|
return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
|
|
10485
10503
|
}
|
|
10486
|
-
const ɵ0$
|
|
10504
|
+
const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
|
|
10487
10505
|
const StatusList = Object.freeze([
|
|
10488
10506
|
{
|
|
10489
|
-
id: ɵ0$
|
|
10507
|
+
id: ɵ0$2,
|
|
10490
10508
|
icon: 'checkmark',
|
|
10491
10509
|
label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
|
|
10492
10510
|
},
|
|
@@ -10757,7 +10775,7 @@ function accountToString(data) {
|
|
|
10757
10775
|
(data.lastName || '')) || '';
|
|
10758
10776
|
}
|
|
10759
10777
|
|
|
10760
|
-
const uuidv4
|
|
10778
|
+
const uuidv4 = uuidv4Imported;
|
|
10761
10779
|
const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
|
|
10762
10780
|
const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
|
|
10763
10781
|
/**
|
|
@@ -10801,7 +10819,7 @@ function createTrackerLink(opts) {
|
|
|
10801
10819
|
// Skip if not tracked
|
|
10802
10820
|
if (!context || !context.tracked)
|
|
10803
10821
|
return forward(operation);
|
|
10804
|
-
const id = context.serializationKey || uuidv4
|
|
10822
|
+
const id = context.serializationKey || uuidv4();
|
|
10805
10823
|
console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
|
|
10806
10824
|
// Clean context, before calling JSON.stringify (remove unused attributes)
|
|
10807
10825
|
const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
|
|
@@ -11509,7 +11527,7 @@ class GraphqlService {
|
|
|
11509
11527
|
(err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
|
|
11510
11528
|
|| this.toAppError(err.networkError)
|
|
11511
11529
|
|| (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
|
|
11512
|
-
|| this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
|
|
11530
|
+
|| this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
|
|
11513
11531
|
// If graphQL: try to convert the first error found
|
|
11514
11532
|
|| (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
|
|
11515
11533
|
|| this.toAppError(err)
|
|
@@ -11517,7 +11535,7 @@ class GraphqlService {
|
|
|
11517
11535
|
|| (err.graphQLErrors && err.graphQLErrors[0])
|
|
11518
11536
|
|| err;
|
|
11519
11537
|
console.error('[graphql] ' + (error && error.message || error), error.stack || '');
|
|
11520
|
-
if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
|
|
11538
|
+
if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
|
|
11521
11539
|
console.error('[graphql] original error: ' + err.networkError.message);
|
|
11522
11540
|
this.onNetworkError.next(error);
|
|
11523
11541
|
}
|
|
@@ -11553,7 +11571,7 @@ class GraphqlService {
|
|
|
11553
11571
|
return 'ERROR.UNAUTHORIZED';
|
|
11554
11572
|
case ServerErrorCodes.FORBIDDEN:
|
|
11555
11573
|
return 'ERROR.FORBIDDEN';
|
|
11556
|
-
case ErrorCodes.UNKNOWN_NETWORK_ERROR:
|
|
11574
|
+
case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
|
|
11557
11575
|
return 'ERROR.UNKNOWN_NETWORK_ERROR';
|
|
11558
11576
|
case ServerErrorCodes.BAD_UPDATE_DATE:
|
|
11559
11577
|
return 'ERROR.BAD_UPDATE_DATE';
|
|
@@ -11590,7 +11608,7 @@ class GraphqlService {
|
|
|
11590
11608
|
});
|
|
11591
11609
|
}
|
|
11592
11610
|
}
|
|
11593
|
-
GraphqlService.ɵprov =
|
|
11611
|
+
GraphqlService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GraphqlService_Factory() { return new GraphqlService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$3.Apollo), i0.ɵɵinject(i3$2.HttpLink), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(CryptoService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_GRAPHQL_TYPE_POLICIES, 8)); }, token: GraphqlService, providedIn: "root" });
|
|
11594
11612
|
GraphqlService.decorators = [
|
|
11595
11613
|
{ type: Injectable, args: [{
|
|
11596
11614
|
providedIn: 'root'
|
|
@@ -11607,7 +11625,7 @@ GraphqlService.ctorParameters = () => [
|
|
|
11607
11625
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
|
|
11608
11626
|
];
|
|
11609
11627
|
|
|
11610
|
-
const sha256
|
|
11628
|
+
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
11611
11629
|
class BaseGraphqlServiceOptions {
|
|
11612
11630
|
}
|
|
11613
11631
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
@@ -11757,8 +11775,8 @@ class BaseGraphqlService {
|
|
|
11757
11775
|
}
|
|
11758
11776
|
/* -- protected methods -- */
|
|
11759
11777
|
computeMutableWatchQueryId(opts) {
|
|
11760
|
-
const queryName = opts.queryName || sha256
|
|
11761
|
-
const variablesKey = opts.variables && sha256
|
|
11778
|
+
const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
|
|
11779
|
+
const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
|
|
11762
11780
|
return [queryName, opts.arrayFieldName, variablesKey].join('|');
|
|
11763
11781
|
}
|
|
11764
11782
|
findMutableWatchQueries(opts) {
|
|
@@ -11821,7 +11839,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
|
|
|
11821
11839
|
/* ------------------------------------
|
|
11822
11840
|
* GraphQL queries
|
|
11823
11841
|
* ------------------------------------*/
|
|
11824
|
-
const Fragments = {
|
|
11842
|
+
const Fragments$1 = {
|
|
11825
11843
|
account: gql `
|
|
11826
11844
|
fragment AccountFragment on AccountVO {
|
|
11827
11845
|
id
|
|
@@ -11854,13 +11872,13 @@ const Fragments = {
|
|
|
11854
11872
|
`
|
|
11855
11873
|
};
|
|
11856
11874
|
// Load account query
|
|
11857
|
-
const LoadQuery = gql `
|
|
11875
|
+
const LoadQuery$1 = gql `
|
|
11858
11876
|
query Account {
|
|
11859
11877
|
account {
|
|
11860
11878
|
...AccountFragment
|
|
11861
11879
|
}
|
|
11862
11880
|
}
|
|
11863
|
-
${Fragments.account}
|
|
11881
|
+
${Fragments$1.account}
|
|
11864
11882
|
`;
|
|
11865
11883
|
// Check email query
|
|
11866
11884
|
const IsEmailExistsQuery = gql `
|
|
@@ -11869,13 +11887,13 @@ const IsEmailExistsQuery = gql `
|
|
|
11869
11887
|
}
|
|
11870
11888
|
`;
|
|
11871
11889
|
// Save (create or update) account mutation
|
|
11872
|
-
const SaveMutation = gql `
|
|
11890
|
+
const SaveMutation$1 = gql `
|
|
11873
11891
|
mutation SaveAccount($account:AccountVOInput){
|
|
11874
11892
|
saveAccount(account: $account){
|
|
11875
11893
|
...AccountFragment
|
|
11876
11894
|
}
|
|
11877
11895
|
}
|
|
11878
|
-
${Fragments.account}
|
|
11896
|
+
${Fragments$1.account}
|
|
11879
11897
|
`;
|
|
11880
11898
|
// Create account mutation
|
|
11881
11899
|
const CreateMutation = gql `
|
|
@@ -11884,7 +11902,7 @@ const CreateMutation = gql `
|
|
|
11884
11902
|
...AccountFragment
|
|
11885
11903
|
}
|
|
11886
11904
|
}
|
|
11887
|
-
${Fragments.account}
|
|
11905
|
+
${Fragments$1.account}
|
|
11888
11906
|
`;
|
|
11889
11907
|
// Sent confirmation email
|
|
11890
11908
|
const SendConfirmEmailMutation = gql `
|
|
@@ -12223,7 +12241,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12223
12241
|
catch (error) {
|
|
12224
12242
|
console.error(error);
|
|
12225
12243
|
this.resetData();
|
|
12226
|
-
throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
|
|
12244
|
+
throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
|
|
12227
12245
|
}
|
|
12228
12246
|
// Store pubkey+keypair
|
|
12229
12247
|
this.data.pubkey = Base58.encode(keypair.publicKey);
|
|
@@ -12257,7 +12275,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12257
12275
|
}
|
|
12258
12276
|
catch (err) {
|
|
12259
12277
|
// If account not found, check if email is valid
|
|
12260
|
-
if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
|
|
12278
|
+
if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
|
|
12261
12279
|
// Check email exists
|
|
12262
12280
|
if (data.username.indexOf('@') !== -1) {
|
|
12263
12281
|
let isEmailExists;
|
|
@@ -12269,11 +12287,11 @@ class AccountService extends BaseGraphqlService {
|
|
|
12269
12287
|
}
|
|
12270
12288
|
// Email not exists (no account)
|
|
12271
12289
|
if (!isEmailExists) {
|
|
12272
|
-
throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
|
|
12290
|
+
throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
|
|
12273
12291
|
}
|
|
12274
12292
|
}
|
|
12275
12293
|
// Email exists, so error = 'bad password'
|
|
12276
|
-
throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
|
|
12294
|
+
throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
|
|
12277
12295
|
}
|
|
12278
12296
|
throw err; // resend the first error
|
|
12279
12297
|
}
|
|
@@ -12334,7 +12352,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12334
12352
|
throw error;
|
|
12335
12353
|
console.error(error);
|
|
12336
12354
|
throw {
|
|
12337
|
-
code: ErrorCodes.LOAD_ACCOUNT_ERROR,
|
|
12355
|
+
code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
|
|
12338
12356
|
message: 'ERROR.LOAD_ACCOUNT_ERROR'
|
|
12339
12357
|
};
|
|
12340
12358
|
}
|
|
@@ -12546,8 +12564,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
12546
12564
|
}
|
|
12547
12565
|
else {
|
|
12548
12566
|
const res = yield this.graphql.query({
|
|
12549
|
-
query: LoadQuery,
|
|
12550
|
-
error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
|
|
12567
|
+
query: LoadQuery$1,
|
|
12568
|
+
error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
|
|
12551
12569
|
fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
|
|
12552
12570
|
});
|
|
12553
12571
|
accountJson = res && res.account;
|
|
@@ -12581,7 +12599,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12581
12599
|
if (!isNew) {
|
|
12582
12600
|
const existingAccount = yield this.loadAccount({ fetchPolicy: 'network-only' });
|
|
12583
12601
|
if (!existingAccount || !existingAccount.updateDate) {
|
|
12584
|
-
throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
|
|
12602
|
+
throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
|
|
12585
12603
|
}
|
|
12586
12604
|
account.updateDate = existingAccount.updateDate || account.updateDate;
|
|
12587
12605
|
if (account.settings && existingAccount.settings) {
|
|
@@ -12594,12 +12612,12 @@ class AccountService extends BaseGraphqlService {
|
|
|
12594
12612
|
delete json.mainProfile; // Not known on server
|
|
12595
12613
|
// Execute mutation
|
|
12596
12614
|
const res = yield this.graphql.mutate({
|
|
12597
|
-
mutation: isNew ? CreateMutation : SaveMutation,
|
|
12615
|
+
mutation: isNew ? CreateMutation : SaveMutation$1,
|
|
12598
12616
|
variables: {
|
|
12599
12617
|
account: json
|
|
12600
12618
|
},
|
|
12601
12619
|
error: {
|
|
12602
|
-
code: ErrorCodes.SAVE_ACCOUNT_ERROR,
|
|
12620
|
+
code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
|
|
12603
12621
|
message: 'ERROR.SAVE_ACCOUNT_ERROR'
|
|
12604
12622
|
}
|
|
12605
12623
|
});
|
|
@@ -12624,7 +12642,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12624
12642
|
return __awaiter(this, void 0, void 0, function* () {
|
|
12625
12643
|
const isEmailExists = yield this.isEmailExists(email);
|
|
12626
12644
|
if (isEmailExists) {
|
|
12627
|
-
throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
|
|
12645
|
+
throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
|
|
12628
12646
|
}
|
|
12629
12647
|
});
|
|
12630
12648
|
}
|
|
@@ -12660,7 +12678,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12660
12678
|
locale
|
|
12661
12679
|
},
|
|
12662
12680
|
error: {
|
|
12663
|
-
code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
|
|
12681
|
+
code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
|
|
12664
12682
|
message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
|
|
12665
12683
|
}
|
|
12666
12684
|
});
|
|
@@ -12676,7 +12694,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12676
12694
|
code
|
|
12677
12695
|
},
|
|
12678
12696
|
error: {
|
|
12679
|
-
code: ErrorCodes.CONFIRM_EMAIL_FAILED,
|
|
12697
|
+
code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
|
|
12680
12698
|
message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
|
|
12681
12699
|
}
|
|
12682
12700
|
});
|
|
@@ -12694,7 +12712,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12694
12712
|
interval: 10
|
|
12695
12713
|
},
|
|
12696
12714
|
error: {
|
|
12697
|
-
code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
|
|
12715
|
+
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
12698
12716
|
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
12699
12717
|
}
|
|
12700
12718
|
}).subscribe({
|
|
@@ -12773,7 +12791,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12773
12791
|
if (counter > 4) {
|
|
12774
12792
|
if (this._debug)
|
|
12775
12793
|
console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
|
|
12776
|
-
throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
|
|
12794
|
+
throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
|
|
12777
12795
|
}
|
|
12778
12796
|
// Check if valid
|
|
12779
12797
|
if (token) {
|
|
@@ -12783,7 +12801,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12783
12801
|
token
|
|
12784
12802
|
},
|
|
12785
12803
|
error: {
|
|
12786
|
-
code: ErrorCodes.UNAUTHORIZED,
|
|
12804
|
+
code: ErrorCodes$2.UNAUTHORIZED,
|
|
12787
12805
|
message: 'ERROR.UNAUTHORIZED'
|
|
12788
12806
|
},
|
|
12789
12807
|
fetchPolicy: 'no-cache'
|
|
@@ -12799,7 +12817,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12799
12817
|
}
|
|
12800
12818
|
// Generate a new token
|
|
12801
12819
|
const challengeError = {
|
|
12802
|
-
code: ErrorCodes.AUTH_CHALLENGE_ERROR,
|
|
12820
|
+
code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
|
|
12803
12821
|
message: 'ERROR.AUTH_CHALLENGE_ERROR'
|
|
12804
12822
|
};
|
|
12805
12823
|
const data = yield this.graphql.query({
|
|
@@ -12825,7 +12843,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12825
12843
|
});
|
|
12826
12844
|
}
|
|
12827
12845
|
}
|
|
12828
|
-
AccountService.ɵprov =
|
|
12846
|
+
AccountService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(i0.ɵɵinject(CryptoService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(FileService), i0.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
|
|
12829
12847
|
AccountService.decorators = [
|
|
12830
12848
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
12831
12849
|
];
|
|
@@ -13075,7 +13093,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
|
|
|
13075
13093
|
/* ------------------------------------
|
|
13076
13094
|
* GraphQL queries
|
|
13077
13095
|
* ------------------------------------*/
|
|
13078
|
-
const Fragments
|
|
13096
|
+
const Fragments = {
|
|
13079
13097
|
config: gql `
|
|
13080
13098
|
fragment ConfigFragment on ConfigurationVO {
|
|
13081
13099
|
id
|
|
@@ -13102,22 +13120,22 @@ const Fragments$1 = {
|
|
|
13102
13120
|
}
|
|
13103
13121
|
`
|
|
13104
13122
|
};
|
|
13105
|
-
const LoadQuery
|
|
13123
|
+
const LoadQuery = gql `
|
|
13106
13124
|
query Configuration{
|
|
13107
13125
|
data: configuration{
|
|
13108
13126
|
...ConfigFragment
|
|
13109
13127
|
}
|
|
13110
13128
|
}
|
|
13111
|
-
${Fragments
|
|
13129
|
+
${Fragments.config}
|
|
13112
13130
|
`;
|
|
13113
13131
|
// Save (create or update) account mutation
|
|
13114
|
-
const SaveMutation
|
|
13132
|
+
const SaveMutation = gql `
|
|
13115
13133
|
mutation SaveConfiguration($data: ConfigurationVOInput){
|
|
13116
13134
|
data: saveConfiguration(config: $data){
|
|
13117
13135
|
...ConfigFragment
|
|
13118
13136
|
}
|
|
13119
13137
|
}
|
|
13120
|
-
${Fragments
|
|
13138
|
+
${Fragments.config}
|
|
13121
13139
|
`;
|
|
13122
13140
|
const ClearCache = gql `
|
|
13123
13141
|
query ClearCache($name: String) {
|
|
@@ -13205,12 +13223,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13205
13223
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13206
13224
|
const now = Date.now();
|
|
13207
13225
|
console.debug('[config] Loading Pod configuration...');
|
|
13208
|
-
const query = opts && opts.query || LoadQuery
|
|
13226
|
+
const query = opts && opts.query || LoadQuery;
|
|
13209
13227
|
const variables = opts && opts.variables || undefined;
|
|
13210
13228
|
const res = yield this.graphql.query({
|
|
13211
13229
|
query,
|
|
13212
13230
|
variables,
|
|
13213
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13231
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13214
13232
|
fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
|
|
13215
13233
|
});
|
|
13216
13234
|
const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
|
|
@@ -13235,12 +13253,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13235
13253
|
const json = config.asObject();
|
|
13236
13254
|
// Execute mutation
|
|
13237
13255
|
const res = yield this.graphql.mutate({
|
|
13238
|
-
mutation: SaveMutation
|
|
13256
|
+
mutation: SaveMutation,
|
|
13239
13257
|
variables: {
|
|
13240
13258
|
data: json
|
|
13241
13259
|
},
|
|
13242
13260
|
error: {
|
|
13243
|
-
code: ErrorCodes.SAVE_CONFIG_ERROR,
|
|
13261
|
+
code: ErrorCodes$2.SAVE_CONFIG_ERROR,
|
|
13244
13262
|
message: 'ERROR.SAVE_CONFIG_ERROR'
|
|
13245
13263
|
}
|
|
13246
13264
|
});
|
|
@@ -13266,7 +13284,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13266
13284
|
const res = yield this.graphql.query({
|
|
13267
13285
|
query: CacheStatistics,
|
|
13268
13286
|
variables: null,
|
|
13269
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13287
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13270
13288
|
fetchPolicy: 'network-only'
|
|
13271
13289
|
});
|
|
13272
13290
|
const data = res && res.cacheStatistics || undefined;
|
|
@@ -13282,7 +13300,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13282
13300
|
const res = yield this.graphql.query({
|
|
13283
13301
|
query: ClearCache,
|
|
13284
13302
|
variables,
|
|
13285
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13303
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13286
13304
|
fetchPolicy: 'network-only'
|
|
13287
13305
|
});
|
|
13288
13306
|
const data = res && res.clearCache || undefined;
|
|
@@ -13441,7 +13459,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13441
13459
|
});
|
|
13442
13460
|
}
|
|
13443
13461
|
}
|
|
13444
|
-
ConfigService.ɵprov =
|
|
13462
|
+
ConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(NetworkService), i0.ɵɵinject(FileService), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
|
|
13445
13463
|
ConfigService.decorators = [
|
|
13446
13464
|
{ type: Injectable, args: [{
|
|
13447
13465
|
providedIn: 'root',
|
|
@@ -13460,7 +13478,7 @@ ConfigService.ctorParameters = () => [
|
|
|
13460
13478
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
|
|
13461
13479
|
];
|
|
13462
13480
|
|
|
13463
|
-
const moment$
|
|
13481
|
+
const moment$2 = momentImported;
|
|
13464
13482
|
class PlatformService {
|
|
13465
13483
|
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser) {
|
|
13466
13484
|
this.platform = platform;
|
|
@@ -13625,16 +13643,16 @@ class PlatformService {
|
|
|
13625
13643
|
}
|
|
13626
13644
|
// config moment lib
|
|
13627
13645
|
try {
|
|
13628
|
-
moment$
|
|
13646
|
+
moment$2.locale(event.lang);
|
|
13629
13647
|
console.debug('[platform] Use locale {' + event.lang + '}');
|
|
13630
13648
|
}
|
|
13631
13649
|
// If error, fallback to en
|
|
13632
13650
|
catch (err) {
|
|
13633
|
-
moment$
|
|
13651
|
+
moment$2.locale('en');
|
|
13634
13652
|
console.warn('[platform] Unknown local for moment lib. Using default [en]');
|
|
13635
13653
|
}
|
|
13636
13654
|
// Config date adapter
|
|
13637
|
-
this.dateAdapter.setLocale(moment$
|
|
13655
|
+
this.dateAdapter.setLocale(moment$2.locale());
|
|
13638
13656
|
}
|
|
13639
13657
|
});
|
|
13640
13658
|
this.settings.onChange.subscribe(data => {
|
|
@@ -13771,7 +13789,7 @@ class PlatformService {
|
|
|
13771
13789
|
});
|
|
13772
13790
|
}
|
|
13773
13791
|
}
|
|
13774
|
-
PlatformService.ɵprov =
|
|
13792
|
+
PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$4.Platform), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(EntitiesStorage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ConfigService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(AudioProvider), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i14.StatusBar, 8), i0.ɵɵinject(i15.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i17.InAppBrowser, 8)); }, token: PlatformService, providedIn: "root" });
|
|
13775
13793
|
PlatformService.decorators = [
|
|
13776
13794
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
13777
13795
|
];
|
|
@@ -13786,14 +13804,14 @@ PlatformService.ctorParameters = () => [
|
|
|
13786
13804
|
{ type: NetworkService },
|
|
13787
13805
|
{ type: AccountService },
|
|
13788
13806
|
{ type: ConfigService },
|
|
13789
|
-
{ type: CacheService
|
|
13807
|
+
{ type: CacheService },
|
|
13790
13808
|
{ type: Storage },
|
|
13791
13809
|
{ type: AudioProvider },
|
|
13792
13810
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
13793
|
-
{ type: StatusBar
|
|
13811
|
+
{ type: StatusBar, decorators: [{ type: Optional }] },
|
|
13794
13812
|
{ type: Keyboard, decorators: [{ type: Optional }] },
|
|
13795
|
-
{ type: SplashScreen
|
|
13796
|
-
{ type: InAppBrowser
|
|
13813
|
+
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
13814
|
+
{ type: InAppBrowser, decorators: [{ type: Optional }] }
|
|
13797
13815
|
];
|
|
13798
13816
|
|
|
13799
13817
|
class AppHelpModal {
|
|
@@ -13857,7 +13875,7 @@ class MatStepperI18n extends MatStepperIntl {
|
|
|
13857
13875
|
this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
|
|
13858
13876
|
}
|
|
13859
13877
|
}
|
|
13860
|
-
MatStepperI18n.ɵprov =
|
|
13878
|
+
MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
|
|
13861
13879
|
MatStepperI18n.decorators = [
|
|
13862
13880
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
13863
13881
|
];
|
|
@@ -14765,7 +14783,7 @@ function state2side(state) {
|
|
|
14765
14783
|
return 1;
|
|
14766
14784
|
}
|
|
14767
14785
|
}
|
|
14768
|
-
const ɵ0$
|
|
14786
|
+
const ɵ0$1 = (defaultStateSize) => [
|
|
14769
14787
|
Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
|
|
14770
14788
|
Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
|
|
14771
14789
|
Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
|
|
@@ -14773,7 +14791,7 @@ const ɵ0$9 = (defaultStateSize) => [
|
|
|
14773
14791
|
const SCALE_OPTIONS_DEFAULT = {
|
|
14774
14792
|
startColor: rgbArrayMap.red,
|
|
14775
14793
|
startStates: [0, 2, 3],
|
|
14776
|
-
startStepsFn: ɵ0$
|
|
14794
|
+
startStepsFn: ɵ0$1
|
|
14777
14795
|
};
|
|
14778
14796
|
/**
|
|
14779
14797
|
* Internal function, that create a colors scale, using iteration
|
|
@@ -14865,21 +14883,21 @@ function linearColorGradient(count, options) {
|
|
|
14865
14883
|
return result;
|
|
14866
14884
|
}
|
|
14867
14885
|
|
|
14868
|
-
class EntityTestClass {
|
|
14886
|
+
class EntityTestClass$1 {
|
|
14869
14887
|
}
|
|
14870
|
-
const FAKE_ENTITIES = [
|
|
14888
|
+
const FAKE_ENTITIES$1 = [
|
|
14871
14889
|
{ id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
|
|
14872
14890
|
{ id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
|
|
14873
14891
|
{ id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
|
|
14874
14892
|
];
|
|
14875
|
-
function deepCopy(values, size) {
|
|
14893
|
+
function deepCopy$1(values, size) {
|
|
14876
14894
|
if (isNil(size)) {
|
|
14877
|
-
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
14895
|
+
return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
|
|
14878
14896
|
}
|
|
14879
14897
|
let result = [];
|
|
14880
14898
|
let i = 1;
|
|
14881
14899
|
while (result.length < size) {
|
|
14882
|
-
result = result.concat((values || FAKE_ENTITIES).map(entity => {
|
|
14900
|
+
result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
|
|
14883
14901
|
const name = entity.name + ' #' + i;
|
|
14884
14902
|
return Object.assign(Object.assign({}, entity), { id: i++, name });
|
|
14885
14903
|
}));
|
|
@@ -14889,7 +14907,7 @@ function deepCopy(values, size) {
|
|
|
14889
14907
|
class AutocompleteTestPage {
|
|
14890
14908
|
constructor(formBuilder) {
|
|
14891
14909
|
this.formBuilder = formBuilder;
|
|
14892
|
-
this._items = deepCopy(FAKE_ENTITIES, 100);
|
|
14910
|
+
this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
|
|
14893
14911
|
this.$items = new BehaviorSubject(undefined);
|
|
14894
14912
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
14895
14913
|
this.memoryHide = false;
|
|
@@ -14933,7 +14951,7 @@ class AutocompleteTestPage {
|
|
|
14933
14951
|
});
|
|
14934
14952
|
// From items
|
|
14935
14953
|
this.autocompleteFields.add('entity-items-large', {
|
|
14936
|
-
items: FAKE_ENTITIES.slice(),
|
|
14954
|
+
items: FAKE_ENTITIES$1.slice(),
|
|
14937
14955
|
attributes: ['label', 'name', 'description', 'comments'],
|
|
14938
14956
|
displayWith: this.entityToString
|
|
14939
14957
|
});
|
|
@@ -14943,12 +14961,12 @@ class AutocompleteTestPage {
|
|
|
14943
14961
|
loadData() {
|
|
14944
14962
|
return __awaiter(this, void 0, void 0, function* () {
|
|
14945
14963
|
const data = {
|
|
14946
|
-
entity: deepCopy(FAKE_ENTITIES)[1],
|
|
14964
|
+
entity: deepCopy$1(FAKE_ENTITIES$1)[1],
|
|
14947
14965
|
// This item is NOT in the items list => i should be displayed anyway
|
|
14948
14966
|
missingEntity: {
|
|
14949
14967
|
id: -1, label: '??', name: 'Missing item'
|
|
14950
14968
|
},
|
|
14951
|
-
disableEntity: deepCopy(FAKE_ENTITIES)[2]
|
|
14969
|
+
disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
|
|
14952
14970
|
};
|
|
14953
14971
|
this.form.setValue(data);
|
|
14954
14972
|
// Load observables
|
|
@@ -15118,13 +15136,13 @@ MaterialTestingPage.ctorParameters = () => [
|
|
|
15118
15136
|
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
|
|
15119
15137
|
];
|
|
15120
15138
|
|
|
15121
|
-
const moment$
|
|
15139
|
+
const moment$1 = momentImported;
|
|
15122
15140
|
class SwipeTestPage {
|
|
15123
15141
|
constructor(formBuilder, dateFormatPipe) {
|
|
15124
15142
|
this.formBuilder = formBuilder;
|
|
15125
15143
|
this.dateFormatPipe = dateFormatPipe;
|
|
15126
15144
|
this.$dates = new BehaviorSubject(undefined);
|
|
15127
|
-
this._today = moment$
|
|
15145
|
+
this._today = moment$1().startOf('day');
|
|
15128
15146
|
this.form = formBuilder.group({
|
|
15129
15147
|
empty: [null, Validators.required],
|
|
15130
15148
|
date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
|
|
@@ -15137,7 +15155,7 @@ class SwipeTestPage {
|
|
|
15137
15155
|
ngOnInit() {
|
|
15138
15156
|
const dates = [];
|
|
15139
15157
|
for (let d = 0; d < 7; d++) {
|
|
15140
|
-
dates[d] = moment$
|
|
15158
|
+
dates[d] = moment$1(this._today).add(d - 3, 'day');
|
|
15141
15159
|
}
|
|
15142
15160
|
this.$dates.next(dates);
|
|
15143
15161
|
this.loadData();
|
|
@@ -15738,7 +15756,7 @@ class FormArrayHelper {
|
|
|
15738
15756
|
}
|
|
15739
15757
|
}
|
|
15740
15758
|
|
|
15741
|
-
const moment
|
|
15759
|
+
const moment = momentImported;
|
|
15742
15760
|
class DateTimeTestPage {
|
|
15743
15761
|
constructor(platform, formBuilder, cd) {
|
|
15744
15762
|
this.platform = platform;
|
|
@@ -15769,7 +15787,7 @@ class DateTimeTestPage {
|
|
|
15769
15787
|
// Load the form with data
|
|
15770
15788
|
loadData() {
|
|
15771
15789
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15772
|
-
const now = moment
|
|
15790
|
+
const now = moment();
|
|
15773
15791
|
const data = {
|
|
15774
15792
|
empty: toDateISOString(now.clone().add(2, 'hours')),
|
|
15775
15793
|
enable: toDateISOString(now),
|
|
@@ -15829,20 +15847,20 @@ DateTimeTestPage.ctorParameters = () => [
|
|
|
15829
15847
|
{ type: ChangeDetectorRef }
|
|
15830
15848
|
];
|
|
15831
15849
|
|
|
15832
|
-
class EntityTestClass
|
|
15850
|
+
class EntityTestClass {
|
|
15833
15851
|
}
|
|
15834
|
-
const FAKE_ENTITIES
|
|
15852
|
+
const FAKE_ENTITIES = [
|
|
15835
15853
|
{ id: 1, label: 'AAA', name: 'Item A' },
|
|
15836
15854
|
{ id: 2, label: 'BBB', name: 'Item B' },
|
|
15837
15855
|
{ id: 3, label: 'CCC', name: 'Item C' }
|
|
15838
15856
|
];
|
|
15839
|
-
function deepCopy
|
|
15840
|
-
return (values || FAKE_ENTITIES
|
|
15857
|
+
function deepCopy(values) {
|
|
15858
|
+
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
15841
15859
|
}
|
|
15842
15860
|
class ChipsTestPage {
|
|
15843
15861
|
constructor(formBuilder) {
|
|
15844
15862
|
this.formBuilder = formBuilder;
|
|
15845
|
-
this._items = deepCopy
|
|
15863
|
+
this._items = deepCopy(FAKE_ENTITIES);
|
|
15846
15864
|
this._$items = new BehaviorSubject(undefined);
|
|
15847
15865
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
15848
15866
|
this.form = formBuilder.group({
|
|
@@ -15861,7 +15879,7 @@ class ChipsTestPage {
|
|
|
15861
15879
|
});
|
|
15862
15880
|
// From items
|
|
15863
15881
|
this.autocompleteFields.add('entity-items', {
|
|
15864
|
-
items: FAKE_ENTITIES
|
|
15882
|
+
items: FAKE_ENTITIES.slice(),
|
|
15865
15883
|
attributes: ['label', 'name'],
|
|
15866
15884
|
displayWith: this.entityToString
|
|
15867
15885
|
});
|
|
@@ -15882,15 +15900,15 @@ class ChipsTestPage {
|
|
|
15882
15900
|
const data = {
|
|
15883
15901
|
entity: [],
|
|
15884
15902
|
// THis item is NOT in the items list => i should be displayed anyway
|
|
15885
|
-
entityInitial: FAKE_ENTITIES
|
|
15886
|
-
disableEntity: FAKE_ENTITIES
|
|
15903
|
+
entityInitial: FAKE_ENTITIES.slice(1, 2),
|
|
15904
|
+
disableEntity: FAKE_ENTITIES.slice(1, 2)
|
|
15887
15905
|
};
|
|
15888
15906
|
this.form.setValue(data);
|
|
15889
15907
|
});
|
|
15890
15908
|
}
|
|
15891
15909
|
loadItems() {
|
|
15892
15910
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15893
|
-
this._$items.next(deepCopy
|
|
15911
|
+
this._$items.next(deepCopy(FAKE_ENTITIES));
|
|
15894
15912
|
});
|
|
15895
15913
|
}
|
|
15896
15914
|
entityToString(item) {
|
|
@@ -15922,7 +15940,7 @@ ChipsTestPage.ctorParameters = () => [
|
|
|
15922
15940
|
{ type: FormBuilder }
|
|
15923
15941
|
];
|
|
15924
15942
|
|
|
15925
|
-
const routes = [
|
|
15943
|
+
const routes$1 = [
|
|
15926
15944
|
{
|
|
15927
15945
|
path: '',
|
|
15928
15946
|
pathMatch: 'full',
|
|
@@ -15969,7 +15987,7 @@ MaterialTestingModule.decorators = [
|
|
|
15969
15987
|
ReactiveFormsModule,
|
|
15970
15988
|
SharedMaterialModule,
|
|
15971
15989
|
TranslateModule.forChild(),
|
|
15972
|
-
RouterModule.forChild(routes)
|
|
15990
|
+
RouterModule.forChild(routes$1)
|
|
15973
15991
|
],
|
|
15974
15992
|
declarations: [
|
|
15975
15993
|
MaterialTestingPage,
|
|
@@ -16870,7 +16888,7 @@ class UserSettingsValidatorService extends AppValidatorService {
|
|
|
16870
16888
|
});
|
|
16871
16889
|
}
|
|
16872
16890
|
}
|
|
16873
|
-
UserSettingsValidatorService.ɵprov =
|
|
16891
|
+
UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
|
|
16874
16892
|
UserSettingsValidatorService.decorators = [
|
|
16875
16893
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
16876
16894
|
];
|
|
@@ -16914,7 +16932,7 @@ class AccountValidatorService extends AppValidatorService {
|
|
|
16914
16932
|
return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
|
|
16915
16933
|
}
|
|
16916
16934
|
}
|
|
16917
|
-
AccountValidatorService.ɵprov =
|
|
16935
|
+
AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
|
|
16918
16936
|
AccountValidatorService.decorators = [
|
|
16919
16937
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
16920
16938
|
];
|
|
@@ -17443,7 +17461,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
|
|
|
17443
17461
|
});
|
|
17444
17462
|
}
|
|
17445
17463
|
}
|
|
17446
|
-
LocalSettingsValidatorService.ɵprov =
|
|
17464
|
+
LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
|
|
17447
17465
|
LocalSettingsValidatorService.decorators = [
|
|
17448
17466
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17449
17467
|
];
|
|
@@ -18051,7 +18069,7 @@ class IsOnFieldModePipe {
|
|
|
18051
18069
|
return value === 'FIELD';
|
|
18052
18070
|
}
|
|
18053
18071
|
}
|
|
18054
|
-
IsOnFieldModePipe.ɵprov =
|
|
18072
|
+
IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
|
|
18055
18073
|
IsOnFieldModePipe.decorators = [
|
|
18056
18074
|
{ type: Pipe, args: [{
|
|
18057
18075
|
name: 'isOnField'
|
|
@@ -18063,7 +18081,7 @@ class IsNotOnFieldModePipe {
|
|
|
18063
18081
|
return value !== 'FIELD';
|
|
18064
18082
|
}
|
|
18065
18083
|
}
|
|
18066
|
-
IsNotOnFieldModePipe.ɵprov =
|
|
18084
|
+
IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
|
|
18067
18085
|
IsNotOnFieldModePipe.decorators = [
|
|
18068
18086
|
{ type: Pipe, args: [{
|
|
18069
18087
|
name: 'isNotOnField'
|
|
@@ -18078,7 +18096,7 @@ class PersonToStringPipe {
|
|
|
18078
18096
|
return PersonUtils.personToString(value);
|
|
18079
18097
|
}
|
|
18080
18098
|
}
|
|
18081
|
-
PersonToStringPipe.ɵprov =
|
|
18099
|
+
PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
|
|
18082
18100
|
PersonToStringPipe.decorators = [
|
|
18083
18101
|
{ type: Pipe, args: [{
|
|
18084
18102
|
name: 'personToString'
|
|
@@ -18295,7 +18313,7 @@ class IsLoginAccountPipe {
|
|
|
18295
18313
|
return value && value.pubkey && true;
|
|
18296
18314
|
}
|
|
18297
18315
|
}
|
|
18298
|
-
IsLoginAccountPipe.ɵprov =
|
|
18316
|
+
IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
|
|
18299
18317
|
IsLoginAccountPipe.decorators = [
|
|
18300
18318
|
{ type: Pipe, args: [{
|
|
18301
18319
|
name: 'isLogin'
|
|
@@ -18307,7 +18325,7 @@ class AccountToStringPipe {
|
|
|
18307
18325
|
return accountToString(value);
|
|
18308
18326
|
}
|
|
18309
18327
|
}
|
|
18310
|
-
AccountToStringPipe.ɵprov =
|
|
18328
|
+
AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
|
|
18311
18329
|
AccountToStringPipe.decorators = [
|
|
18312
18330
|
{ type: Pipe, args: [{
|
|
18313
18331
|
name: 'accountToString'
|
|
@@ -18322,7 +18340,7 @@ class DepartmentToStringPipe {
|
|
|
18322
18340
|
return departmentToString(value);
|
|
18323
18341
|
}
|
|
18324
18342
|
}
|
|
18325
|
-
DepartmentToStringPipe.ɵprov =
|
|
18343
|
+
DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
|
|
18326
18344
|
DepartmentToStringPipe.decorators = [
|
|
18327
18345
|
{ type: Pipe, args: [{
|
|
18328
18346
|
name: 'departmentToString'
|
|
@@ -18348,7 +18366,7 @@ class MenuService {
|
|
|
18348
18366
|
this._visibleSubject.next(value);
|
|
18349
18367
|
}
|
|
18350
18368
|
}
|
|
18351
|
-
MenuService.ɵprov =
|
|
18369
|
+
MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
|
|
18352
18370
|
MenuService.decorators = [
|
|
18353
18371
|
{ type: Injectable, args: [{
|
|
18354
18372
|
providedIn: 'root'
|
|
@@ -18842,7 +18860,7 @@ class AuthGuardService {
|
|
|
18842
18860
|
}));
|
|
18843
18861
|
}
|
|
18844
18862
|
}
|
|
18845
|
-
AuthGuardService.ɵprov =
|
|
18863
|
+
AuthGuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(i0.ɵɵinject(AccountService), i0.ɵɵinject(i1$4.ModalController), i0.ɵɵinject(i3$3.Router), i0.ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
|
|
18846
18864
|
AuthGuardService.decorators = [
|
|
18847
18865
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
18848
18866
|
];
|
|
@@ -18890,7 +18908,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
18890
18908
|
query,
|
|
18891
18909
|
variables: { id },
|
|
18892
18910
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
18893
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
18911
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
18894
18912
|
})
|
|
18895
18913
|
.pipe(map(({ data }) => (!opts || opts.toEntity !== false)
|
|
18896
18914
|
? (data && this.fromObject(data))
|
|
@@ -18905,7 +18923,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
18905
18923
|
query,
|
|
18906
18924
|
variables: { id },
|
|
18907
18925
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
18908
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
18926
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
18909
18927
|
});
|
|
18910
18928
|
// Convert to entity
|
|
18911
18929
|
return (!opts || opts.toEntity !== false)
|
|
@@ -18936,7 +18954,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
18936
18954
|
totalFieldName: withTotal ? 'total' : undefined,
|
|
18937
18955
|
insertFilterFn: filter && filter.asFilterFn(),
|
|
18938
18956
|
variables,
|
|
18939
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
|
|
18957
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
|
|
18940
18958
|
fetchPolicy: opts && opts.fetchPolicy || undefined
|
|
18941
18959
|
})
|
|
18942
18960
|
.pipe(map(({ data, total }) => {
|
|
@@ -18972,7 +18990,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
18972
18990
|
const { data, total } = yield this.graphql.query({
|
|
18973
18991
|
query,
|
|
18974
18992
|
variables,
|
|
18975
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
|
|
18993
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
|
|
18976
18994
|
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
18977
18995
|
});
|
|
18978
18996
|
const entities = (!opts || opts.toEntity !== false) ?
|
|
@@ -18994,6 +19012,29 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
18994
19012
|
return res;
|
|
18995
19013
|
});
|
|
18996
19014
|
}
|
|
19015
|
+
countAll(filter, opts) {
|
|
19016
|
+
var _a;
|
|
19017
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19018
|
+
// If no countAll query
|
|
19019
|
+
if (!this.queries.countAll) {
|
|
19020
|
+
// Fail if no loadAll (cannot count)
|
|
19021
|
+
if (!this.queries.loadAllWithTotal)
|
|
19022
|
+
throw new Error('Not implemented');
|
|
19023
|
+
// Use loadAll query, with size = 0;
|
|
19024
|
+
return ((_a = (yield this.loadAll(0, 1, null, null, filter, { withTotal: true }))) === null || _a === void 0 ? void 0 : _a.total) || 0;
|
|
19025
|
+
}
|
|
19026
|
+
filter = this.asFilter(filter);
|
|
19027
|
+
const res = yield this.graphql.query({
|
|
19028
|
+
query: this.queries.countAll,
|
|
19029
|
+
variables: {
|
|
19030
|
+
filter: filter && filter.asPodObject()
|
|
19031
|
+
},
|
|
19032
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
|
|
19033
|
+
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
19034
|
+
});
|
|
19035
|
+
return res.total;
|
|
19036
|
+
});
|
|
19037
|
+
}
|
|
18997
19038
|
saveAll(entities, opts) {
|
|
18998
19039
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18999
19040
|
if (isEmptyArray(entities))
|
|
@@ -19021,7 +19062,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19021
19062
|
variables: {
|
|
19022
19063
|
data: json
|
|
19023
19064
|
},
|
|
19024
|
-
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19065
|
+
error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19025
19066
|
update: (proxy, { data }) => {
|
|
19026
19067
|
const savedEntities = data && data.data;
|
|
19027
19068
|
if (savedEntities) {
|
|
@@ -19077,7 +19118,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19077
19118
|
variables: {
|
|
19078
19119
|
data: json
|
|
19079
19120
|
},
|
|
19080
|
-
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19121
|
+
error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19081
19122
|
update: (cache, { data }) => {
|
|
19082
19123
|
// Update entity
|
|
19083
19124
|
const savedEntity = data && data.data;
|
|
@@ -19125,7 +19166,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19125
19166
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19126
19167
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19127
19168
|
variables: { ids },
|
|
19128
|
-
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19169
|
+
error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19129
19170
|
update: (cache, res) => {
|
|
19130
19171
|
// Remove from cache
|
|
19131
19172
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19166,7 +19207,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19166
19207
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19167
19208
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19168
19209
|
variables: { id },
|
|
19169
|
-
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19210
|
+
error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19170
19211
|
update: (proxy, res) => {
|
|
19171
19212
|
// Remove from cache
|
|
19172
19213
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19199,7 +19240,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19199
19240
|
query: opts && opts.query || this.subscriptions.listenChanges,
|
|
19200
19241
|
variables,
|
|
19201
19242
|
error: {
|
|
19202
|
-
code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
|
|
19243
|
+
code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
|
|
19203
19244
|
message: 'ERROR.SUBSCRIBE_DATA_ERROR'
|
|
19204
19245
|
}
|
|
19205
19246
|
})
|
|
@@ -19361,7 +19402,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
19361
19402
|
if (this._debug)
|
|
19362
19403
|
invalidRows.forEach(this.logRowErrors);
|
|
19363
19404
|
// Stop with an error
|
|
19364
|
-
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
19405
|
+
throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
19365
19406
|
}
|
|
19366
19407
|
this._editingRowCount = 0;
|
|
19367
19408
|
let data;
|
|
@@ -19484,8 +19525,10 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
19484
19525
|
throw error;
|
|
19485
19526
|
}
|
|
19486
19527
|
delete(id) {
|
|
19487
|
-
|
|
19488
|
-
|
|
19528
|
+
// If new row: not need to propagate to the dataService
|
|
19529
|
+
if (id === -1) {
|
|
19530
|
+
return super.delete(id);
|
|
19531
|
+
}
|
|
19489
19532
|
const row = this.getRow(id);
|
|
19490
19533
|
if (!row) {
|
|
19491
19534
|
console.error(`[table-datasource] Row to delete with id=${id} not found`);
|
|
@@ -20176,13 +20219,13 @@ class AppTable {
|
|
|
20176
20219
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20177
20220
|
opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
|
|
20178
20221
|
if (this.readOnly) {
|
|
20179
|
-
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20222
|
+
throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20180
20223
|
}
|
|
20181
20224
|
this.resetError();
|
|
20182
20225
|
// Keep edited row id (should be done BEFORE confirmEditCreate() )
|
|
20183
20226
|
this.previouslySavedEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
|
|
20184
20227
|
if (!this.confirmEditCreate()) {
|
|
20185
|
-
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
20228
|
+
throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
20186
20229
|
}
|
|
20187
20230
|
try {
|
|
20188
20231
|
// Mark as saving
|
|
@@ -20307,7 +20350,7 @@ class AppTable {
|
|
|
20307
20350
|
deleteRows(event, rows, opts) {
|
|
20308
20351
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20309
20352
|
if (this.readOnly) {
|
|
20310
|
-
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20353
|
+
throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20311
20354
|
}
|
|
20312
20355
|
if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
|
|
20313
20356
|
return 0; // SKip
|
|
@@ -20320,11 +20363,16 @@ class AppTable {
|
|
|
20320
20363
|
const canDelete = yield this.canDeleteRows(rows, opts);
|
|
20321
20364
|
if (!canDelete)
|
|
20322
20365
|
return 0; // Cannot delete
|
|
20323
|
-
|
|
20324
|
-
|
|
20325
|
-
|
|
20326
|
-
|
|
20327
|
-
|
|
20366
|
+
if (this.saveBeforeDelete) {
|
|
20367
|
+
// Cancel invalid rows (because of save() will failed if there is invalid rows)
|
|
20368
|
+
rows.filter(row => { var _a; return !((_a = row.validator) === null || _a === void 0 ? void 0 : _a.valid); })
|
|
20369
|
+
.forEach(row => row.cancelOrDelete());
|
|
20370
|
+
// If data need to be saved first: do it
|
|
20371
|
+
const saved = yield this.saveBeforeAction('delete');
|
|
20372
|
+
if (!saved) {
|
|
20373
|
+
// Stop if save cancelled or save failed
|
|
20374
|
+
return;
|
|
20375
|
+
}
|
|
20328
20376
|
}
|
|
20329
20377
|
if (this.debug)
|
|
20330
20378
|
console.debug('[table] Delete selection...');
|
|
@@ -21014,6 +21062,7 @@ AppTable.ctorParameters = () => [
|
|
|
21014
21062
|
{ type: Injector }
|
|
21015
21063
|
];
|
|
21016
21064
|
AppTable.propDecorators = {
|
|
21065
|
+
settingsId: [{ type: Input }],
|
|
21017
21066
|
debug: [{ type: Input }],
|
|
21018
21067
|
i18nColumnPrefix: [{ type: Input }],
|
|
21019
21068
|
i18nColumnSuffix: [{ type: Input }],
|
|
@@ -21578,7 +21627,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
21578
21627
|
this.onUpdateView = new EventEmitter();
|
|
21579
21628
|
options = Object.assign({
|
|
21580
21629
|
// Default options
|
|
21581
|
-
enableListenChanges: (injector.get(ENVIRONMENT).listenRemoteChanges === true), pathIdAttribute: 'id', autoLoad: true,
|
|
21630
|
+
enableListenChanges: (injector.get(ENVIRONMENT).listenRemoteChanges === true), pathIdAttribute: 'id', autoLoad: true, autoUpdateRoute: true, i18nPrefix: '' }, options);
|
|
21582
21631
|
this.settings = injector.get(LocalSettingsService);
|
|
21583
21632
|
this.cd = injector.get(ChangeDetectorRef);
|
|
21584
21633
|
this.dateFormat = injector.get(DateFormatPipe);
|
|
@@ -21692,7 +21741,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
21692
21741
|
const data = new this.dataType();
|
|
21693
21742
|
this._usageMode = this.computeUsageMode(data);
|
|
21694
21743
|
yield this.onNewEntity(data, opts);
|
|
21695
|
-
this.updateView(data, Object.assign({ openTabIndex: 0 }, opts));
|
|
21744
|
+
yield this.updateView(data, Object.assign({ openTabIndex: 0 }, opts));
|
|
21696
21745
|
this.markAsLoaded({ emitEvent: false });
|
|
21697
21746
|
}
|
|
21698
21747
|
// Load existing data
|
|
@@ -21700,10 +21749,10 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
21700
21749
|
try {
|
|
21701
21750
|
const data = yield this.dataService.load(id, opts);
|
|
21702
21751
|
if (!data)
|
|
21703
|
-
throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
|
|
21752
|
+
throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
|
|
21704
21753
|
this._usageMode = this.computeUsageMode(data);
|
|
21705
21754
|
yield this.onEntityLoaded(data, opts);
|
|
21706
|
-
this.updateView(data, opts);
|
|
21755
|
+
yield this.updateView(data, opts);
|
|
21707
21756
|
this.markAsLoaded({ emitEvent: false });
|
|
21708
21757
|
this.startListenRemoteChanges();
|
|
21709
21758
|
}
|
|
@@ -21739,31 +21788,35 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
21739
21788
|
.add(() => this.hasRemoteListener = false));
|
|
21740
21789
|
}
|
|
21741
21790
|
updateView(data, opts) {
|
|
21742
|
-
|
|
21743
|
-
|
|
21744
|
-
|
|
21745
|
-
|
|
21746
|
-
|
|
21747
|
-
|
|
21748
|
-
|
|
21749
|
-
|
|
21750
|
-
|
|
21751
|
-
|
|
21752
|
-
|
|
21753
|
-
|
|
21754
|
-
|
|
21755
|
-
this.
|
|
21756
|
-
|
|
21757
|
-
|
|
21758
|
-
|
|
21759
|
-
|
|
21760
|
-
|
|
21761
|
-
|
|
21762
|
-
|
|
21763
|
-
|
|
21791
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21792
|
+
const idChanged = isNotNil(data.id)
|
|
21793
|
+
&& this.previousDataId !== undefined // Ignore if first loading (=undefined)
|
|
21794
|
+
&& this.previousDataId !== data.id;
|
|
21795
|
+
opts = Object.assign({ updateRoute: this._autoUpdateRoute && idChanged && !this.loading, openTabIndex: this._autoOpenNextTab && idChanged && isNil(this.previousDataId) && this.selectedTabIndex < this.tabCount - 1 ? this.selectedTabIndex + 1 : undefined }, opts);
|
|
21796
|
+
this.data = data;
|
|
21797
|
+
this.previousDataId = data.id || null;
|
|
21798
|
+
const promiseOrVoid = this.setValue(data);
|
|
21799
|
+
if (promiseOrVoid)
|
|
21800
|
+
yield promiseOrVoid;
|
|
21801
|
+
if (!opts || opts.emitEvent !== false) {
|
|
21802
|
+
this.markAsPristine();
|
|
21803
|
+
this.markAsUntouched();
|
|
21804
|
+
this.updateViewState(data);
|
|
21805
|
+
// Need to update route
|
|
21806
|
+
if (opts.updateRoute === true) {
|
|
21807
|
+
this.updateTabAndRoute(data, opts)
|
|
21808
|
+
// Update the title - should be executed AFTER updateRoute because of path change - fix #185
|
|
21809
|
+
.then(() => this.updateTitle(data));
|
|
21810
|
+
}
|
|
21811
|
+
else {
|
|
21812
|
+
// Update the tag group index
|
|
21813
|
+
this.updateTabIndex(opts.openTabIndex);
|
|
21814
|
+
// Update the title.
|
|
21815
|
+
this.updateTitle(data);
|
|
21816
|
+
}
|
|
21817
|
+
this.onUpdateView.emit(data);
|
|
21764
21818
|
}
|
|
21765
|
-
|
|
21766
|
-
}
|
|
21819
|
+
});
|
|
21767
21820
|
}
|
|
21768
21821
|
/**
|
|
21769
21822
|
* Enable or disable state
|
|
@@ -22001,6 +22054,11 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
22001
22054
|
this.saving = false;
|
|
22002
22055
|
});
|
|
22003
22056
|
}
|
|
22057
|
+
onBeforeEntityLoad() {
|
|
22058
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22059
|
+
// can be overwrite by subclasses
|
|
22060
|
+
});
|
|
22061
|
+
}
|
|
22004
22062
|
onNewEntity(data, options) {
|
|
22005
22063
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22006
22064
|
// can be overwrite by subclasses
|
|
@@ -22592,7 +22650,7 @@ class UserEventService extends BaseGraphqlService {
|
|
|
22592
22650
|
EntityUtils.copyIdAndUpdateDate(source, target);
|
|
22593
22651
|
}
|
|
22594
22652
|
}
|
|
22595
|
-
UserEventService.ɵprov =
|
|
22653
|
+
UserEventService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserEventService_Factory() { return new UserEventService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(AccountService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(ENVIRONMENT)); }, token: UserEventService, providedIn: "root" });
|
|
22596
22654
|
UserEventService.decorators = [
|
|
22597
22655
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
22598
22656
|
];
|
|
@@ -22974,7 +23032,7 @@ class PersonService extends BaseEntityService {
|
|
|
22974
23032
|
return target;
|
|
22975
23033
|
}
|
|
22976
23034
|
}
|
|
22977
|
-
PersonService.ɵprov =
|
|
23035
|
+
PersonService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(PlatformService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
|
|
22978
23036
|
PersonService.decorators = [
|
|
22979
23037
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
22980
23038
|
];
|
|
@@ -23005,7 +23063,7 @@ class PersonValidatorService {
|
|
|
23005
23063
|
return this.formBuilder.group(formConfig);
|
|
23006
23064
|
}
|
|
23007
23065
|
}
|
|
23008
|
-
PersonValidatorService.ɵprov =
|
|
23066
|
+
PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
|
|
23009
23067
|
PersonValidatorService.decorators = [
|
|
23010
23068
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23011
23069
|
];
|
|
@@ -23161,7 +23219,7 @@ UsersPage.decorators = [
|
|
|
23161
23219
|
],
|
|
23162
23220
|
animations: [slideUpDownAnimation],
|
|
23163
23221
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
23164
|
-
styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:100%}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
|
|
23222
|
+
styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:calc(100%)}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
|
|
23165
23223
|
},] }
|
|
23166
23224
|
];
|
|
23167
23225
|
UsersPage.ctorParameters = () => [
|
|
@@ -23209,16 +23267,16 @@ AdminModule.decorators = [
|
|
|
23209
23267
|
];
|
|
23210
23268
|
AdminModule.ctorParameters = () => [];
|
|
23211
23269
|
|
|
23212
|
-
const ɵ0
|
|
23270
|
+
const ɵ0 = {
|
|
23213
23271
|
profile: 'ADMIN'
|
|
23214
23272
|
};
|
|
23215
|
-
const routes
|
|
23273
|
+
const routes = [
|
|
23216
23274
|
{
|
|
23217
23275
|
path: 'users',
|
|
23218
23276
|
pathMatch: 'full',
|
|
23219
23277
|
component: UsersPage,
|
|
23220
23278
|
canActivate: [AuthGuardService],
|
|
23221
|
-
data: ɵ0
|
|
23279
|
+
data: ɵ0
|
|
23222
23280
|
}
|
|
23223
23281
|
];
|
|
23224
23282
|
class AdminRoutingModule {
|
|
@@ -23228,13 +23286,13 @@ AdminRoutingModule.decorators = [
|
|
|
23228
23286
|
imports: [
|
|
23229
23287
|
SharedRoutingModule,
|
|
23230
23288
|
AdminModule,
|
|
23231
|
-
RouterModule.forChild(routes
|
|
23289
|
+
RouterModule.forChild(routes)
|
|
23232
23290
|
],
|
|
23233
23291
|
exports: [RouterModule]
|
|
23234
23292
|
},] }
|
|
23235
23293
|
];
|
|
23236
23294
|
|
|
23237
|
-
const ErrorCodes
|
|
23295
|
+
const ErrorCodes = {
|
|
23238
23296
|
LOAD_PERSONS_ERROR: 100,
|
|
23239
23297
|
SAVE_PERSONS_ERROR: 101,
|
|
23240
23298
|
DELETE_PERSONS_ERROR: 102,
|
|
@@ -23246,5 +23304,5 @@ const ErrorCodes$2 = {
|
|
|
23246
23304
|
* Generated bundle index. Do not edit.
|
|
23247
23305
|
*/
|
|
23248
23306
|
|
|
23249
|
-
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormHolder, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes
|
|
23307
|
+
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormHolder, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, copyForm2Entity, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
|
|
23250
23308
|
//# sourceMappingURL=ngx-sumaris-components.js.map
|