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