@sumaris-net/ngx-components 0.23.2-beta → 0.24.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ngx-sumaris-components.umd.js +328 -280
- 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/services/filter/person.filter.js +4 -2
- package/esm2015/src/app/admin/services/person.service.js +4 -3
- package/esm2015/src/app/admin/users/list/users.js +1 -1
- package/esm2015/src/app/core/install/install-upgrade-card.component.js +20 -14
- package/esm2015/src/app/core/services/platform.service.js +28 -8
- package/esm2015/src/app/shared/functions.js +6 -11
- package/esm2015/src/app/shared/material/boolean/material.boolean.js +1 -1
- package/fesm2015/ngx-sumaris-components.js +325 -286
- 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/admin/services/filter/person.filter.d.ts +1 -0
- package/src/app/admin/services/person.service.d.ts +1 -1
- package/src/app/core/install/install-upgrade-card.component.d.ts +8 -5
- package/src/app/core/services/platform.service.d.ts +10 -1
- package/src/app/shared/functions.d.ts +1 -1
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, Pipe, Injectable, Directive, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Inject, Renderer2 } from '@angular/core';
|
|
3
|
+
import * as i1$3 from '@angular/common';
|
|
2
4
|
import { CommonModule, DOCUMENT, Location } from '@angular/common';
|
|
3
5
|
import { CdkTableModule } from '@angular/cdk/table';
|
|
4
6
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
5
7
|
import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
|
|
6
8
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
9
|
+
import * as i1$2 from '@angular/material/core';
|
|
7
10
|
import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
|
|
8
11
|
import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
|
|
9
12
|
import { MatSortModule, MatSort } from '@angular/material/sort';
|
|
@@ -27,16 +30,21 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
|
27
30
|
import { MatRadioModule } from '@angular/material/radio';
|
|
28
31
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
29
32
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
33
|
+
import * as i2$1 from '@angular/material/dialog';
|
|
30
34
|
import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
|
|
31
35
|
import { MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteModule, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
|
|
32
36
|
import { __awaiter, __decorate } from 'tslib';
|
|
37
|
+
import * as i1$6 from '@angular/forms';
|
|
33
38
|
import { NG_VALUE_ACCESSOR, FormGroupDirective, ReactiveFormsModule, AbstractControl, Validators, FormBuilder, FormControl, FormGroup, FormArray } from '@angular/forms';
|
|
34
39
|
import { timer, merge, fromEvent, Subscription, BehaviorSubject, Subject, isObservable, of, noop as noop$8, Observable, defer, concat, combineLatest, EMPTY } from 'rxjs';
|
|
35
40
|
import { filter, first, map, takeUntil, startWith, debounceTime, takeWhile, switchMap, tap, distinctUntilChanged, mergeMap, catchError, throttleTime } from 'rxjs/operators';
|
|
41
|
+
import * as i1$1 from '@ngx-translate/core';
|
|
36
42
|
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
43
|
+
import * as i1$4 from '@ionic/angular';
|
|
37
44
|
import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, AlertController, IonicRouteStrategy, NavParams, MenuController, IonContent } from '@ionic/angular';
|
|
38
45
|
import * as momentImported from 'moment';
|
|
39
46
|
import { isMoment } from 'moment';
|
|
47
|
+
import * as i1 from '@angular/material-moment-adapter';
|
|
40
48
|
import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
|
|
41
49
|
import { Keyboard } from '@ionic-native/keyboard/ngx';
|
|
42
50
|
import { TextMaskModule } from 'angular2-text-mask';
|
|
@@ -46,32 +54,38 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
|
|
|
46
54
|
import { MatDividerModule } from '@angular/material/divider';
|
|
47
55
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
48
56
|
import { MatChipsModule } from '@angular/material/chips';
|
|
57
|
+
import * as i3$3 from '@angular/router';
|
|
49
58
|
import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
|
|
59
|
+
import * as i1$5 from '@angular/platform-browser';
|
|
50
60
|
import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
|
|
61
|
+
import * as i2$2 from '@angular/common/http';
|
|
51
62
|
import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
|
|
52
63
|
import { ColorPickerModule } from 'ngx-color-picker';
|
|
53
|
-
import { NativeAudio
|
|
54
|
-
import { Vibration
|
|
64
|
+
import { NativeAudio } from '@ionic-native/native-audio/ngx';
|
|
65
|
+
import { Vibration } from '@ionic-native/vibration/ngx';
|
|
55
66
|
import { AudioManagement } from '@ionic-native/audio-management/ngx';
|
|
56
|
-
import
|
|
57
|
-
import
|
|
58
|
-
import
|
|
67
|
+
import * as i2 from '@ionic-native/native-audio/ngx/index';
|
|
68
|
+
import * as i3 from '@ionic-native/vibration/ngx/index';
|
|
69
|
+
import * as i4 from '@ionic-native/audio-management/ngx/index';
|
|
59
70
|
import * as uuidv4Imported from 'uuid/v4';
|
|
60
71
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
61
72
|
import { MarkdownModule } from 'ngx-markdown';
|
|
62
73
|
import { sign, box, hash, verify } from 'tweetnacl';
|
|
74
|
+
import * as i3$1 from '@ionic/storage';
|
|
63
75
|
import { Storage, IonicStorageModule } from '@ionic/storage';
|
|
64
76
|
import 'zone.js/dist/zone-error';
|
|
65
|
-
import { SplashScreen
|
|
66
|
-
import { Connection, Network
|
|
67
|
-
import { CacheService
|
|
68
|
-
import
|
|
69
|
-
import
|
|
70
|
-
import
|
|
71
|
-
import { StatusBar
|
|
77
|
+
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
|
|
78
|
+
import { Connection, Network } from '@ionic-native/network/ngx';
|
|
79
|
+
import { CacheService, CacheModule } from 'ionic-cache';
|
|
80
|
+
import * as i6 from 'ionic-cache/dist/cache.service';
|
|
81
|
+
import * as i9 from '@ionic-native/network/ngx/index';
|
|
82
|
+
import * as i10 from '@ionic-native/splash-screen/ngx/index';
|
|
83
|
+
import { StatusBar } from '@ionic-native/status-bar/ngx';
|
|
84
|
+
import * as i2$4 from '@angular/cdk/platform';
|
|
72
85
|
import { Platform as Platform$1 } from '@angular/cdk/platform';
|
|
73
|
-
import { InAppBrowser
|
|
86
|
+
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
|
|
74
87
|
import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
|
|
88
|
+
import * as i2$3 from 'apollo-angular';
|
|
75
89
|
import { Apollo } from 'apollo-angular';
|
|
76
90
|
import { WebSocketLink } from '@apollo/client/link/ws';
|
|
77
91
|
import { getMainDefinition } from '@apollo/client/utilities';
|
|
@@ -79,11 +93,14 @@ import { RetryLink } from '@apollo/client/link/retry';
|
|
|
79
93
|
import QueueLink from 'apollo-link-queue';
|
|
80
94
|
import SerializingLink from 'apollo-link-serialize';
|
|
81
95
|
import loggerLink from 'apollo-link-logger';
|
|
96
|
+
import * as i3$2 from 'apollo-angular/http';
|
|
82
97
|
import { HttpLink } from 'apollo-angular/http';
|
|
83
98
|
import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
|
|
84
|
-
import {
|
|
85
|
-
import
|
|
86
|
-
import
|
|
99
|
+
import { NotificationVisibility, Downloader } from '@ionic-native/downloader/ngx';
|
|
100
|
+
import * as i14 from '@ionic-native/status-bar/ngx/index';
|
|
101
|
+
import * as i15 from '@ionic-native/keyboard/ngx/index';
|
|
102
|
+
import * as i17 from '@ionic-native/in-app-browser/ngx/index';
|
|
103
|
+
import * as i18 from '@ionic-native/downloader/ngx/index';
|
|
87
104
|
import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
|
|
88
105
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
89
106
|
import { NgxJdenticonModule } from 'ngx-jdenticon';
|
|
@@ -251,10 +268,6 @@ function suggestFromArray(items, value, opts) {
|
|
|
251
268
|
}
|
|
252
269
|
// Sort
|
|
253
270
|
items = items.sort(propertiesPathComparator(keys));
|
|
254
|
-
// const sortAttribute = keys && keys[0]
|
|
255
|
-
// if (sortAttribute) {
|
|
256
|
-
// items = sort(items, sortAttribute);
|
|
257
|
-
// }
|
|
258
271
|
// Truncate if need
|
|
259
272
|
const total = (items === null || items === void 0 ? void 0 : items.length) || 0;
|
|
260
273
|
if (opts) {
|
|
@@ -324,16 +337,15 @@ function propertiesPathComparator(keys, defaultValues) {
|
|
|
324
337
|
// Stop if not equals, otherwise continue with the next key
|
|
325
338
|
.find(res => res !== 0) || 0;
|
|
326
339
|
}
|
|
327
|
-
function sort(array, attribute) {
|
|
340
|
+
function sort(array, attribute, opts) {
|
|
328
341
|
if (isEmptyArray(array))
|
|
329
342
|
return array;
|
|
343
|
+
const compareFn = opts
|
|
344
|
+
? new Intl.Collator(undefined, opts).compare
|
|
345
|
+
: (v1, v2) => v1 === v2 ? 0 : v1 > v2 ? 1 : -1;
|
|
330
346
|
return array
|
|
331
347
|
.slice() // copy
|
|
332
|
-
.sort((a, b) =>
|
|
333
|
-
const valueA = a[attribute];
|
|
334
|
-
const valueB = b[attribute];
|
|
335
|
-
return valueA === valueB ? 0 : (valueA > valueB ? 1 : -1);
|
|
336
|
-
});
|
|
348
|
+
.sort((a, b) => compareFn(a[attribute], b[attribute]));
|
|
337
349
|
}
|
|
338
350
|
const INTEGER_REGEXP = /^[-]?\d+$/;
|
|
339
351
|
function isInt(value) {
|
|
@@ -873,19 +885,19 @@ class MatAutocompleteConfigHolder {
|
|
|
873
885
|
return this.fields[fieldName] || this.add(fieldName);
|
|
874
886
|
}
|
|
875
887
|
}
|
|
876
|
-
const DEFAULT_VALUE_ACCESSOR = {
|
|
888
|
+
const DEFAULT_VALUE_ACCESSOR$6 = {
|
|
877
889
|
provide: NG_VALUE_ACCESSOR,
|
|
878
890
|
useExisting: forwardRef(() => MatAutocompleteField),
|
|
879
891
|
multi: true
|
|
880
892
|
};
|
|
881
|
-
const noop = () => { };
|
|
882
|
-
const ɵ0 = noop;
|
|
893
|
+
const noop$7 = () => { };
|
|
894
|
+
const ɵ0$a = noop$7;
|
|
883
895
|
class MatAutocompleteField {
|
|
884
896
|
constructor(cd, formGroupDir) {
|
|
885
897
|
this.cd = cd;
|
|
886
898
|
this.formGroupDir = formGroupDir;
|
|
887
|
-
this._onChangeCallback = noop;
|
|
888
|
-
this._onTouchedCallback = noop;
|
|
899
|
+
this._onChangeCallback = noop$7;
|
|
900
|
+
this._onTouchedCallback = noop$7;
|
|
889
901
|
this._subscription = new Subscription();
|
|
890
902
|
this._filter$ = new BehaviorSubject(undefined);
|
|
891
903
|
this._reload$ = new Subject();
|
|
@@ -1472,7 +1484,7 @@ MatAutocompleteField.decorators = [
|
|
|
1472
1484
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1473
1485
|
selector: 'mat-autocomplete-field',
|
|
1474
1486
|
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\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\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 (keydown.escape)=\"onKeydownEscape.emit($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n </mat-select>\n </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 [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\" >\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\" >\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n\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",
|
|
1475
|
-
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
1487
|
+
providers: [DEFAULT_VALUE_ACCESSOR$6],
|
|
1476
1488
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1477
1489
|
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}"]
|
|
1478
1490
|
},] }
|
|
@@ -1549,7 +1561,7 @@ class DateFormatPipe {
|
|
|
1549
1561
|
return this.dateAdapter.format(date, displayFormat);
|
|
1550
1562
|
}
|
|
1551
1563
|
}
|
|
1552
|
-
DateFormatPipe.ɵprov =
|
|
1564
|
+
DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
|
|
1553
1565
|
DateFormatPipe.decorators = [
|
|
1554
1566
|
{ type: Pipe, args: [{
|
|
1555
1567
|
name: 'dateFormat'
|
|
@@ -1561,7 +1573,7 @@ DateFormatPipe.ctorParameters = () => [
|
|
|
1561
1573
|
{ type: TranslateService }
|
|
1562
1574
|
];
|
|
1563
1575
|
|
|
1564
|
-
const moment = momentImported;
|
|
1576
|
+
const moment$6 = momentImported;
|
|
1565
1577
|
class DateDiffDurationPipe {
|
|
1566
1578
|
constructor(dateAdapter, translate) {
|
|
1567
1579
|
this.dateAdapter = dateAdapter;
|
|
@@ -1577,17 +1589,17 @@ class DateDiffDurationPipe {
|
|
|
1577
1589
|
return this.format(startDate, endDate);
|
|
1578
1590
|
}
|
|
1579
1591
|
format(startDate, endDate) {
|
|
1580
|
-
const duration = moment.duration(endDate.diff(startDate));
|
|
1592
|
+
const duration = moment$6.duration(endDate.diff(startDate));
|
|
1581
1593
|
if (duration.asMinutes() < 0)
|
|
1582
1594
|
return '';
|
|
1583
|
-
const timeDuration = moment(0)
|
|
1595
|
+
const timeDuration = moment$6(0)
|
|
1584
1596
|
.hour(duration.hours())
|
|
1585
1597
|
.minute(duration.minutes());
|
|
1586
1598
|
const days = Math.floor(duration.asDays());
|
|
1587
1599
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
|
|
1588
1600
|
}
|
|
1589
1601
|
}
|
|
1590
|
-
DateDiffDurationPipe.ɵprov =
|
|
1602
|
+
DateDiffDurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(i0.ɵɵinject(i1$2.DateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
|
|
1591
1603
|
DateDiffDurationPipe.decorators = [
|
|
1592
1604
|
{ type: Pipe, args: [{
|
|
1593
1605
|
name: 'dateDiffDuration'
|
|
@@ -1608,7 +1620,7 @@ class DateFromNowPipe {
|
|
|
1608
1620
|
return date ? date.fromNow(args && args.withoutSuffix) : '';
|
|
1609
1621
|
}
|
|
1610
1622
|
}
|
|
1611
|
-
DateFromNowPipe.ɵprov =
|
|
1623
|
+
DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
|
|
1612
1624
|
DateFromNowPipe.decorators = [
|
|
1613
1625
|
{ type: Pipe, args: [{
|
|
1614
1626
|
name: 'dateFromNow'
|
|
@@ -1677,7 +1689,7 @@ function formatToDD(value, opts) {
|
|
|
1677
1689
|
value *= -1;
|
|
1678
1690
|
}
|
|
1679
1691
|
}
|
|
1680
|
-
let degrees = roundFloat(value, opts.maxDecimals).toString();
|
|
1692
|
+
let degrees = roundFloat$1(value, opts.maxDecimals).toString();
|
|
1681
1693
|
// Add sign
|
|
1682
1694
|
let sign = negative ? '-' : '+';
|
|
1683
1695
|
if (opts.placeholderChar) {
|
|
@@ -1728,7 +1740,7 @@ function formatToDDMMSS(value, opts) {
|
|
|
1728
1740
|
}
|
|
1729
1741
|
let degrees = Math.trunc(value);
|
|
1730
1742
|
let minutes = Math.trunc((value - degrees) * 60);
|
|
1731
|
-
let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
|
|
1743
|
+
let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
|
|
1732
1744
|
while (seconds >= 60) {
|
|
1733
1745
|
seconds -= 60;
|
|
1734
1746
|
minutes += 1;
|
|
@@ -1796,7 +1808,7 @@ function formatToDDMM(value, opts) {
|
|
|
1796
1808
|
}
|
|
1797
1809
|
}
|
|
1798
1810
|
let degrees = Math.trunc(value);
|
|
1799
|
-
let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
|
|
1811
|
+
let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
|
|
1800
1812
|
while (minutes >= 60) {
|
|
1801
1813
|
minutes -= 60;
|
|
1802
1814
|
degrees += 1;
|
|
@@ -1847,15 +1859,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
|
|
|
1847
1859
|
return NaN;
|
|
1848
1860
|
}
|
|
1849
1861
|
if (pattern === 'DD')
|
|
1850
|
-
return roundFloat(degrees, maxDecimals);
|
|
1862
|
+
return roundFloat$1(degrees, maxDecimals);
|
|
1851
1863
|
const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
|
|
1852
1864
|
const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
|
|
1853
1865
|
const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
|
|
1854
1866
|
const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
|
|
1855
1867
|
degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
|
|
1856
|
-
return roundFloat(degrees, maxDecimals);
|
|
1868
|
+
return roundFloat$1(degrees, maxDecimals);
|
|
1857
1869
|
}
|
|
1858
|
-
function roundFloat(input, maxDecimals) {
|
|
1870
|
+
function roundFloat$1(input, maxDecimals) {
|
|
1859
1871
|
if (maxDecimals > 0) {
|
|
1860
1872
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
1861
1873
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -1875,7 +1887,7 @@ class LatLongFormatPipe {
|
|
|
1875
1887
|
return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
|
|
1876
1888
|
}
|
|
1877
1889
|
}
|
|
1878
|
-
LatLongFormatPipe.ɵprov =
|
|
1890
|
+
LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
|
|
1879
1891
|
LatLongFormatPipe.decorators = [
|
|
1880
1892
|
{ type: Pipe, args: [{
|
|
1881
1893
|
name: 'latLongFormat'
|
|
@@ -1887,7 +1899,7 @@ class LatitudeFormatPipe {
|
|
|
1887
1899
|
this.transform = formatLatitude;
|
|
1888
1900
|
}
|
|
1889
1901
|
}
|
|
1890
|
-
LatitudeFormatPipe.ɵprov =
|
|
1902
|
+
LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
|
|
1891
1903
|
LatitudeFormatPipe.decorators = [
|
|
1892
1904
|
{ type: Pipe, args: [{
|
|
1893
1905
|
name: 'latitudeFormat'
|
|
@@ -1899,7 +1911,7 @@ class LongitudeFormatPipe {
|
|
|
1899
1911
|
this.transform = formatLongitude;
|
|
1900
1912
|
}
|
|
1901
1913
|
}
|
|
1902
|
-
LongitudeFormatPipe.ɵprov =
|
|
1914
|
+
LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
|
|
1903
1915
|
LongitudeFormatPipe.decorators = [
|
|
1904
1916
|
{ type: Pipe, args: [{
|
|
1905
1917
|
name: 'longitudeFormat'
|
|
@@ -1919,7 +1931,7 @@ class NumberFormatPipe {
|
|
|
1919
1931
|
}
|
|
1920
1932
|
}
|
|
1921
1933
|
}
|
|
1922
|
-
NumberFormatPipe.ɵprov =
|
|
1934
|
+
NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
|
|
1923
1935
|
NumberFormatPipe.decorators = [
|
|
1924
1936
|
{ type: Pipe, args: [{
|
|
1925
1937
|
name: 'numberFormat'
|
|
@@ -1959,7 +1971,7 @@ class HighlightPipe {
|
|
|
1959
1971
|
}
|
|
1960
1972
|
}
|
|
1961
1973
|
}
|
|
1962
|
-
HighlightPipe.ɵprov =
|
|
1974
|
+
HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
|
|
1963
1975
|
HighlightPipe.decorators = [
|
|
1964
1976
|
{ type: Pipe, args: [{
|
|
1965
1977
|
name: 'highlight'
|
|
@@ -2024,7 +2036,7 @@ FileSizePipe.decorators = [
|
|
|
2024
2036
|
{ type: Pipe, args: [{ name: 'fileSize' },] }
|
|
2025
2037
|
];
|
|
2026
2038
|
|
|
2027
|
-
const moment$
|
|
2039
|
+
const moment$5 = momentImported;
|
|
2028
2040
|
const DATE_UNIX_TIMESTAMP = 'X';
|
|
2029
2041
|
const DATE_UNIX_MS_TIMESTAMP = 'x';
|
|
2030
2042
|
class DateUtils {
|
|
@@ -2058,32 +2070,32 @@ function fromDateISOString(value) {
|
|
|
2058
2070
|
if (!value || isMoment(value))
|
|
2059
2071
|
return value;
|
|
2060
2072
|
// Parse the input value, as a ISO date time
|
|
2061
|
-
const date = moment$
|
|
2073
|
+
const date = moment$5(value, DATE_ISO_PATTERN);
|
|
2062
2074
|
if (date.isValid())
|
|
2063
2075
|
return date;
|
|
2064
2076
|
// Not valid: trying to convert from unix timestamp
|
|
2065
2077
|
if (typeof value === 'string') {
|
|
2066
2078
|
console.warn('Wrong date format - Trying to convert from local time: ' + value);
|
|
2067
2079
|
if (value.length === 10) {
|
|
2068
|
-
return moment$
|
|
2080
|
+
return moment$5(value, DATE_UNIX_TIMESTAMP);
|
|
2069
2081
|
}
|
|
2070
2082
|
else if (value.length === 13) {
|
|
2071
|
-
return moment$
|
|
2083
|
+
return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
|
|
2072
2084
|
}
|
|
2073
2085
|
}
|
|
2074
2086
|
console.warn('Unable to parse date: ' + value);
|
|
2075
2087
|
return undefined;
|
|
2076
2088
|
}
|
|
2077
2089
|
function fromUnixTimestamp(timeInSec) {
|
|
2078
|
-
return moment$
|
|
2090
|
+
return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
|
|
2079
2091
|
}
|
|
2080
2092
|
function fromUnixMsTimestamp(timeInMs) {
|
|
2081
|
-
return moment$
|
|
2093
|
+
return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
|
|
2082
2094
|
}
|
|
2083
2095
|
function toDuration(value, unit) {
|
|
2084
2096
|
if (!value)
|
|
2085
2097
|
return undefined;
|
|
2086
|
-
const duration = moment$
|
|
2098
|
+
const duration = moment$5.duration(value, unit);
|
|
2087
2099
|
// fix 990+ ms
|
|
2088
2100
|
if (duration.milliseconds() >= 990) {
|
|
2089
2101
|
duration.add(1000 - duration.milliseconds(), 'ms');
|
|
@@ -2112,7 +2124,7 @@ class DurationPipe {
|
|
|
2112
2124
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
|
|
2113
2125
|
}
|
|
2114
2126
|
}
|
|
2115
|
-
DurationPipe.ɵprov =
|
|
2127
|
+
DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
|
|
2116
2128
|
DurationPipe.decorators = [
|
|
2117
2129
|
{ type: Pipe, args: [{
|
|
2118
2130
|
name: 'duration'
|
|
@@ -2133,7 +2145,7 @@ class MathAbsPipe {
|
|
|
2133
2145
|
}
|
|
2134
2146
|
}
|
|
2135
2147
|
}
|
|
2136
|
-
MathAbsPipe.ɵprov =
|
|
2148
|
+
MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
|
|
2137
2149
|
MathAbsPipe.decorators = [
|
|
2138
2150
|
{ type: Pipe, args: [{
|
|
2139
2151
|
name: 'mathAbs'
|
|
@@ -2145,7 +2157,7 @@ class EvenPipe {
|
|
|
2145
2157
|
return val % 2 === 0;
|
|
2146
2158
|
}
|
|
2147
2159
|
}
|
|
2148
|
-
EvenPipe.ɵprov =
|
|
2160
|
+
EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
|
|
2149
2161
|
EvenPipe.decorators = [
|
|
2150
2162
|
{ type: Pipe, args: [{
|
|
2151
2163
|
name: 'even'
|
|
@@ -2157,7 +2169,7 @@ class OddPipe {
|
|
|
2157
2169
|
return val % 2 !== 0;
|
|
2158
2170
|
}
|
|
2159
2171
|
}
|
|
2160
|
-
OddPipe.ɵprov =
|
|
2172
|
+
OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
|
|
2161
2173
|
OddPipe.decorators = [
|
|
2162
2174
|
{ type: Pipe, args: [{
|
|
2163
2175
|
name: 'odd'
|
|
@@ -2265,7 +2277,7 @@ class MapGetPipe {
|
|
|
2265
2277
|
return val[key];
|
|
2266
2278
|
}
|
|
2267
2279
|
}
|
|
2268
|
-
MapGetPipe.ɵprov =
|
|
2280
|
+
MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
|
|
2269
2281
|
MapGetPipe.decorators = [
|
|
2270
2282
|
{ type: Pipe, args: [{
|
|
2271
2283
|
name: 'mapGet'
|
|
@@ -2279,7 +2291,7 @@ class MapKeysPipe {
|
|
|
2279
2291
|
return Object.keys(map);
|
|
2280
2292
|
}
|
|
2281
2293
|
}
|
|
2282
|
-
MapKeysPipe.ɵprov =
|
|
2294
|
+
MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
|
|
2283
2295
|
MapKeysPipe.decorators = [
|
|
2284
2296
|
{ type: Pipe, args: [{
|
|
2285
2297
|
name: 'mapKeys'
|
|
@@ -2293,7 +2305,7 @@ class MapValuesPipe {
|
|
|
2293
2305
|
return Object.values(map);
|
|
2294
2306
|
}
|
|
2295
2307
|
}
|
|
2296
|
-
MapValuesPipe.ɵprov =
|
|
2308
|
+
MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
|
|
2297
2309
|
MapValuesPipe.decorators = [
|
|
2298
2310
|
{ type: Pipe, args: [{
|
|
2299
2311
|
name: 'mapValues'
|
|
@@ -2306,7 +2318,7 @@ class IsNotNilOrBlankPipe {
|
|
|
2306
2318
|
return isNotNilOrBlank(value);
|
|
2307
2319
|
}
|
|
2308
2320
|
}
|
|
2309
|
-
IsNotNilOrBlankPipe.ɵprov =
|
|
2321
|
+
IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
|
|
2310
2322
|
IsNotNilOrBlankPipe.decorators = [
|
|
2311
2323
|
{ type: Pipe, args: [{
|
|
2312
2324
|
name: 'isNotNilOrBlank'
|
|
@@ -2318,7 +2330,7 @@ class IsNilOrBlankPipe {
|
|
|
2318
2330
|
return isNilOrBlank(value);
|
|
2319
2331
|
}
|
|
2320
2332
|
}
|
|
2321
|
-
IsNilOrBlankPipe.ɵprov =
|
|
2333
|
+
IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
|
|
2322
2334
|
IsNilOrBlankPipe.decorators = [
|
|
2323
2335
|
{ type: Pipe, args: [{
|
|
2324
2336
|
name: 'isNilOrBlank'
|
|
@@ -2330,7 +2342,7 @@ class ToStringPipe {
|
|
|
2330
2342
|
return (value !== null && value !== undefined) ? value.toString() : '';
|
|
2331
2343
|
}
|
|
2332
2344
|
}
|
|
2333
|
-
ToStringPipe.ɵprov =
|
|
2345
|
+
ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
|
|
2334
2346
|
ToStringPipe.decorators = [
|
|
2335
2347
|
{ type: Pipe, args: [{
|
|
2336
2348
|
name: 'toString'
|
|
@@ -2342,7 +2354,7 @@ class StrLengthPipe {
|
|
|
2342
2354
|
return value && value.length || 0;
|
|
2343
2355
|
}
|
|
2344
2356
|
}
|
|
2345
|
-
StrLengthPipe.ɵprov =
|
|
2357
|
+
StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
|
|
2346
2358
|
StrLengthPipe.decorators = [
|
|
2347
2359
|
{ type: Pipe, args: [{
|
|
2348
2360
|
name: 'strLength'
|
|
@@ -2393,7 +2405,7 @@ class TranslateContextService {
|
|
|
2393
2405
|
: parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
|
|
2394
2406
|
}
|
|
2395
2407
|
}
|
|
2396
|
-
TranslateContextService.ɵprov =
|
|
2408
|
+
TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
|
|
2397
2409
|
TranslateContextService.decorators = [
|
|
2398
2410
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
2399
2411
|
];
|
|
@@ -2409,7 +2421,7 @@ class TranslateContextPipe {
|
|
|
2409
2421
|
return this.translateContext.instant(key, context);
|
|
2410
2422
|
}
|
|
2411
2423
|
}
|
|
2412
|
-
TranslateContextPipe.ɵprov =
|
|
2424
|
+
TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
|
|
2413
2425
|
TranslateContextPipe.decorators = [
|
|
2414
2426
|
{ type: Pipe, args: [{
|
|
2415
2427
|
name: 'translateContext'
|
|
@@ -2426,7 +2438,7 @@ class TranslatablePipe {
|
|
|
2426
2438
|
return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
2427
2439
|
}
|
|
2428
2440
|
}
|
|
2429
|
-
TranslatablePipe.ɵprov =
|
|
2441
|
+
TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
|
|
2430
2442
|
TranslatablePipe.decorators = [
|
|
2431
2443
|
{ type: Pipe, args: [{
|
|
2432
2444
|
name: 'translatable'
|
|
@@ -2443,7 +2455,7 @@ class PropertyGetPipe {
|
|
|
2443
2455
|
args && args.defaultValue);
|
|
2444
2456
|
}
|
|
2445
2457
|
}
|
|
2446
|
-
PropertyGetPipe.ɵprov =
|
|
2458
|
+
PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
|
|
2447
2459
|
PropertyGetPipe.decorators = [
|
|
2448
2460
|
{ type: Pipe, args: [{
|
|
2449
2461
|
name: 'propertyGet'
|
|
@@ -2687,12 +2699,12 @@ SharedMatAutocompleteModule.decorators = [
|
|
|
2687
2699
|
},] }
|
|
2688
2700
|
];
|
|
2689
2701
|
|
|
2690
|
-
const moment$
|
|
2702
|
+
const moment$4 = momentImported;
|
|
2691
2703
|
// @dynamic
|
|
2692
2704
|
class SharedValidators {
|
|
2693
2705
|
static validDate(control) {
|
|
2694
2706
|
const value = control.value;
|
|
2695
|
-
const date = !value || moment$
|
|
2707
|
+
const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
|
|
2696
2708
|
if (date && (!date.isValid() || date.year() < 1970)) {
|
|
2697
2709
|
return { validDate: true };
|
|
2698
2710
|
}
|
|
@@ -3134,9 +3146,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
|
|
|
3134
3146
|
const hour = parseInt(durationParts[0] || '0');
|
|
3135
3147
|
const minute = parseInt(durationParts[1] || '0');
|
|
3136
3148
|
const value = hour + (minute + 0.5) / 60;
|
|
3137
|
-
return roundFloat
|
|
3149
|
+
return roundFloat(value, maxDecimals);
|
|
3138
3150
|
}
|
|
3139
|
-
function roundFloat
|
|
3151
|
+
function roundFloat(input, maxDecimals) {
|
|
3140
3152
|
if (maxDecimals > 0) {
|
|
3141
3153
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
3142
3154
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -3160,9 +3172,9 @@ const MASKS = {
|
|
|
3160
3172
|
DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
|
|
3161
3173
|
}
|
|
3162
3174
|
};
|
|
3163
|
-
const noop$
|
|
3175
|
+
const noop$6 = () => {
|
|
3164
3176
|
};
|
|
3165
|
-
const ɵ0$
|
|
3177
|
+
const ɵ0$9 = noop$6;
|
|
3166
3178
|
class MatLatLongField {
|
|
3167
3179
|
constructor(platform, translate, formBuilder, cd, formGroupDir) {
|
|
3168
3180
|
this.platform = platform;
|
|
@@ -3170,8 +3182,8 @@ class MatLatLongField {
|
|
|
3170
3182
|
this.formBuilder = formBuilder;
|
|
3171
3183
|
this.cd = cd;
|
|
3172
3184
|
this.formGroupDir = formGroupDir;
|
|
3173
|
-
this._onChangeCallback = noop$
|
|
3174
|
-
this._onTouchedCallback = noop$
|
|
3185
|
+
this._onChangeCallback = noop$6;
|
|
3186
|
+
this._onTouchedCallback = noop$6;
|
|
3175
3187
|
this._subscription = new Subscription();
|
|
3176
3188
|
this.disabling = false;
|
|
3177
3189
|
this.writing = false;
|
|
@@ -3512,14 +3524,14 @@ SharedMatLatLongModule.decorators = [
|
|
|
3512
3524
|
},] }
|
|
3513
3525
|
];
|
|
3514
3526
|
|
|
3515
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
3527
|
+
const DEFAULT_VALUE_ACCESSOR$5 = {
|
|
3516
3528
|
provide: NG_VALUE_ACCESSOR,
|
|
3517
3529
|
useExisting: forwardRef(() => MatDate),
|
|
3518
3530
|
multi: true
|
|
3519
3531
|
};
|
|
3520
|
-
const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3521
|
-
const noop$
|
|
3522
|
-
const ɵ0$
|
|
3532
|
+
const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3533
|
+
const noop$5 = () => { };
|
|
3534
|
+
const ɵ0$8 = noop$5;
|
|
3523
3535
|
class MatDate {
|
|
3524
3536
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
3525
3537
|
this.dateAdapter = dateAdapter;
|
|
@@ -3528,12 +3540,12 @@ class MatDate {
|
|
|
3528
3540
|
this.cd = cd;
|
|
3529
3541
|
this.keyboard = keyboard;
|
|
3530
3542
|
this.formGroupDir = formGroupDir;
|
|
3531
|
-
this._onChangeCallback = noop$
|
|
3532
|
-
this._onTouchedCallback = noop$
|
|
3543
|
+
this._onChangeCallback = noop$5;
|
|
3544
|
+
this._onTouchedCallback = noop$5;
|
|
3533
3545
|
this._subscription = new Subscription();
|
|
3534
3546
|
this.writing = true;
|
|
3535
3547
|
this.disabling = false;
|
|
3536
|
-
this.dayMask = DAY_MASK;
|
|
3548
|
+
this.dayMask = DAY_MASK$2;
|
|
3537
3549
|
this.disabled = false;
|
|
3538
3550
|
this.floatLabel = 'auto';
|
|
3539
3551
|
this.readonly = false;
|
|
@@ -3770,7 +3782,7 @@ MatDate.decorators = [
|
|
|
3770
3782
|
selector: 'mat-date-field',
|
|
3771
3783
|
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",
|
|
3772
3784
|
providers: [
|
|
3773
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
3785
|
+
DEFAULT_VALUE_ACCESSOR$5,
|
|
3774
3786
|
],
|
|
3775
3787
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3776
3788
|
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%}"]
|
|
@@ -3803,17 +3815,17 @@ MatDate.propDecorators = {
|
|
|
3803
3815
|
matInputs: [{ type: ViewChildren, args: ['matInput',] }]
|
|
3804
3816
|
};
|
|
3805
3817
|
|
|
3806
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
3818
|
+
const DEFAULT_VALUE_ACCESSOR$4 = {
|
|
3807
3819
|
provide: NG_VALUE_ACCESSOR,
|
|
3808
3820
|
useExisting: forwardRef(() => MatDateTime),
|
|
3809
3821
|
multi: true
|
|
3810
3822
|
};
|
|
3811
3823
|
const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3812
3824
|
const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
|
|
3813
|
-
const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
|
|
3814
|
-
const noop$
|
|
3825
|
+
const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
|
|
3826
|
+
const noop$4 = () => {
|
|
3815
3827
|
};
|
|
3816
|
-
const ɵ0$
|
|
3828
|
+
const ɵ0$7 = noop$4;
|
|
3817
3829
|
class MatDateTime {
|
|
3818
3830
|
constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
|
|
3819
3831
|
this.platform = platform;
|
|
@@ -3823,14 +3835,14 @@ class MatDateTime {
|
|
|
3823
3835
|
this.keyboard = keyboard;
|
|
3824
3836
|
this.cd = cd;
|
|
3825
3837
|
this.formGroupDir = formGroupDir;
|
|
3826
|
-
this._onChangeCallback = noop$
|
|
3827
|
-
this._onTouchedCallback = noop$
|
|
3838
|
+
this._onChangeCallback = noop$4;
|
|
3839
|
+
this._onTouchedCallback = noop$4;
|
|
3828
3840
|
this._subscription = new Subscription();
|
|
3829
3841
|
this.writing = true;
|
|
3830
3842
|
this.disabling = false;
|
|
3831
3843
|
this._onDestroy = new EventEmitter();
|
|
3832
3844
|
this.dayMask = DAY_MASK$1;
|
|
3833
|
-
this.hourMask = HOUR_MASK;
|
|
3845
|
+
this.hourMask = HOUR_MASK$1;
|
|
3834
3846
|
this.floatLabel = 'auto';
|
|
3835
3847
|
this.readonly = false;
|
|
3836
3848
|
this.compact = false;
|
|
@@ -4136,7 +4148,7 @@ MatDateTime.decorators = [
|
|
|
4136
4148
|
selector: 'mat-date-time-field',
|
|
4137
4149
|
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?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n",
|
|
4138
4150
|
providers: [
|
|
4139
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4151
|
+
DEFAULT_VALUE_ACCESSOR$4,
|
|
4140
4152
|
],
|
|
4141
4153
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4142
4154
|
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%}"]
|
|
@@ -4175,10 +4187,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
|
|
|
4175
4187
|
useExisting: forwardRef(() => MatDateShort),
|
|
4176
4188
|
multi: true
|
|
4177
4189
|
};
|
|
4178
|
-
const DAY_MASK
|
|
4179
|
-
const noop$
|
|
4190
|
+
const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
|
|
4191
|
+
const noop$3 = () => {
|
|
4180
4192
|
};
|
|
4181
|
-
const ɵ0$
|
|
4193
|
+
const ɵ0$6 = noop$3;
|
|
4182
4194
|
class MatDateShort {
|
|
4183
4195
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
4184
4196
|
this.dateAdapter = dateAdapter;
|
|
@@ -4187,11 +4199,11 @@ class MatDateShort {
|
|
|
4187
4199
|
this.cd = cd;
|
|
4188
4200
|
this.keyboard = keyboard;
|
|
4189
4201
|
this.formGroupDir = formGroupDir;
|
|
4190
|
-
this._onChangeCallback = noop$
|
|
4191
|
-
this._onTouchedCallback = noop$
|
|
4202
|
+
this._onChangeCallback = noop$3;
|
|
4203
|
+
this._onTouchedCallback = noop$3;
|
|
4192
4204
|
this.writing = true;
|
|
4193
4205
|
this.disabling = false;
|
|
4194
|
-
this.dayMask = DAY_MASK
|
|
4206
|
+
this.dayMask = DAY_MASK;
|
|
4195
4207
|
this.disabled = false;
|
|
4196
4208
|
this.floatLabel = 'auto';
|
|
4197
4209
|
this.readonly = false;
|
|
@@ -4504,16 +4516,16 @@ SharedMatDateTimeModule.decorators = [
|
|
|
4504
4516
|
},] }
|
|
4505
4517
|
];
|
|
4506
4518
|
|
|
4507
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4519
|
+
const DEFAULT_VALUE_ACCESSOR$2 = {
|
|
4508
4520
|
provide: NG_VALUE_ACCESSOR,
|
|
4509
4521
|
useExisting: forwardRef(() => MatDuration),
|
|
4510
4522
|
multi: true
|
|
4511
4523
|
};
|
|
4512
4524
|
const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
|
|
4513
|
-
const HOUR_MASK
|
|
4514
|
-
const noop$
|
|
4525
|
+
const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
|
|
4526
|
+
const noop$2 = () => {
|
|
4515
4527
|
};
|
|
4516
|
-
const ɵ0$5 = noop$
|
|
4528
|
+
const ɵ0$5 = noop$2;
|
|
4517
4529
|
class MatDuration {
|
|
4518
4530
|
constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
|
|
4519
4531
|
this.dateAdapter = dateAdapter;
|
|
@@ -4522,11 +4534,11 @@ class MatDuration {
|
|
|
4522
4534
|
this.cd = cd;
|
|
4523
4535
|
this.formGroupDir = formGroupDir;
|
|
4524
4536
|
this._subscription = new Subscription();
|
|
4525
|
-
this._onChangeCallback = noop$
|
|
4526
|
-
this._onTouchedCallback = noop$
|
|
4537
|
+
this._onChangeCallback = noop$2;
|
|
4538
|
+
this._onTouchedCallback = noop$2;
|
|
4527
4539
|
this.writing = true;
|
|
4528
4540
|
this.disabling = false;
|
|
4529
|
-
this.hourMask = HOUR_MASK
|
|
4541
|
+
this.hourMask = HOUR_MASK;
|
|
4530
4542
|
this.disabled = false;
|
|
4531
4543
|
this.floatLabel = 'auto';
|
|
4532
4544
|
this.readonly = false;
|
|
@@ -4706,7 +4718,7 @@ MatDuration.decorators = [
|
|
|
4706
4718
|
selector: 'mat-duration-field',
|
|
4707
4719
|
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",
|
|
4708
4720
|
providers: [
|
|
4709
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4721
|
+
DEFAULT_VALUE_ACCESSOR$2,
|
|
4710
4722
|
],
|
|
4711
4723
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4712
4724
|
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%}"]
|
|
@@ -4763,22 +4775,22 @@ SharedMatDurationModule.decorators = [
|
|
|
4763
4775
|
},] }
|
|
4764
4776
|
];
|
|
4765
4777
|
|
|
4766
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4778
|
+
const DEFAULT_VALUE_ACCESSOR$1 = {
|
|
4767
4779
|
provide: NG_VALUE_ACCESSOR,
|
|
4768
4780
|
useExisting: forwardRef(() => MatBooleanField),
|
|
4769
4781
|
multi: true
|
|
4770
4782
|
};
|
|
4771
|
-
const noop$
|
|
4783
|
+
const noop$1 = () => {
|
|
4772
4784
|
};
|
|
4773
|
-
const ɵ0$
|
|
4785
|
+
const ɵ0$4 = noop$1;
|
|
4774
4786
|
class MatBooleanField {
|
|
4775
4787
|
constructor(translate, formBuilder, cd, formGroupDir) {
|
|
4776
4788
|
this.translate = translate;
|
|
4777
4789
|
this.formBuilder = formBuilder;
|
|
4778
4790
|
this.cd = cd;
|
|
4779
4791
|
this.formGroupDir = formGroupDir;
|
|
4780
|
-
this._onChangeCallback = noop$
|
|
4781
|
-
this._onTouchedCallback = noop$
|
|
4792
|
+
this._onChangeCallback = noop$1;
|
|
4793
|
+
this._onTouchedCallback = noop$1;
|
|
4782
4794
|
this._writing = false;
|
|
4783
4795
|
this.showRadio = false;
|
|
4784
4796
|
this.disabled = false;
|
|
@@ -4951,10 +4963,10 @@ MatBooleanField.decorators = [
|
|
|
4951
4963
|
selector: 'mat-boolean-field',
|
|
4952
4964
|
template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.value === true && yesLabel) || noLabel) | translate }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n\n <!-- Radio -->\n <mat-form-field *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-radio {{classList}}\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n <span [hidden]=\"showRadio\">({{yesLabel|translate}}/{{'COMMON.NO'|translate}})</span>\n </mat-label>\n\n <input matInput #fakeInput type=\"text\" readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\"\n [formControl]=\"formControl\"\n (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{yesLabel|translate}}</span>\n </mat-radio-button> \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n\n <input matInput #matInput\n [formControl]=\"formControl\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\">\n\n <ion-label> </ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <input matInput type=\"text\" hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\">\n <div class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\">\n <!-- yes -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === true) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{yesLabel|translate}}\n </ion-button>\n\n <!-- No button -->\n <ion-button class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? (_tabindex + 1) : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value == null ? 'tertiary' : (_value === false) ? 'accent' : 'light'\">\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{noLabel|translate}}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n",
|
|
4953
4965
|
providers: [
|
|
4954
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4966
|
+
DEFAULT_VALUE_ACCESSOR$1
|
|
4955
4967
|
],
|
|
4956
4968
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4957
|
-
styles: [":host{width:100%}.mat-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-form-field.mat-boolean-field-button{margin-top:-4px}.mat-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis:calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}"]
|
|
4969
|
+
styles: [":host{width:100%}.mat-form-field.mat-boolean-field-radio{margin-top:-2px}.mat-form-field.mat-boolean-field-button{margin-top:-4px}.mat-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis:calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:calc(min(var(--flex-basis), 150px));white-space:normal;padding:0 2px;height:40px}"]
|
|
4958
4970
|
},] }
|
|
4959
4971
|
];
|
|
4960
4972
|
MatBooleanField.ctorParameters = () => [
|
|
@@ -5199,7 +5211,7 @@ class MatNumpadDomService {
|
|
|
5199
5211
|
this.appRef.detachView(this.componentRef.hostView);
|
|
5200
5212
|
}
|
|
5201
5213
|
}
|
|
5202
|
-
MatNumpadDomService.ɵprov =
|
|
5214
|
+
MatNumpadDomService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1$3.DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
|
|
5203
5215
|
MatNumpadDomService.decorators = [
|
|
5204
5216
|
{ type: Injectable, args: [{
|
|
5205
5217
|
providedIn: 'root'
|
|
@@ -5563,7 +5575,7 @@ SharedMatNumpadModule.decorators = [
|
|
|
5563
5575
|
},] }
|
|
5564
5576
|
];
|
|
5565
5577
|
|
|
5566
|
-
const DEFAULT_VALUE_ACCESSOR
|
|
5578
|
+
const DEFAULT_VALUE_ACCESSOR = {
|
|
5567
5579
|
provide: NG_VALUE_ACCESSOR,
|
|
5568
5580
|
useExisting: forwardRef(() => MatSwipeField),
|
|
5569
5581
|
multi: true
|
|
@@ -5826,7 +5838,7 @@ MatSwipeField.decorators = [
|
|
|
5826
5838
|
{ type: Component, args: [{
|
|
5827
5839
|
selector: 'mat-swipe-field',
|
|
5828
5840
|
template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n",
|
|
5829
|
-
providers: [DEFAULT_VALUE_ACCESSOR
|
|
5841
|
+
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
5830
5842
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5831
5843
|
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}"]
|
|
5832
5844
|
},] }
|
|
@@ -6321,7 +6333,7 @@ class ProgressBarService {
|
|
|
6321
6333
|
}
|
|
6322
6334
|
}
|
|
6323
6335
|
}
|
|
6324
|
-
ProgressBarService.ɵprov =
|
|
6336
|
+
ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
|
|
6325
6337
|
ProgressBarService.decorators = [
|
|
6326
6338
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6327
6339
|
];
|
|
@@ -6365,7 +6377,7 @@ class AppGestureConfig extends HammerGestureConfig {
|
|
|
6365
6377
|
return mc;
|
|
6366
6378
|
}
|
|
6367
6379
|
}
|
|
6368
|
-
AppGestureConfig.ɵprov =
|
|
6380
|
+
AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
|
|
6369
6381
|
AppGestureConfig.decorators = [
|
|
6370
6382
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6371
6383
|
];
|
|
@@ -6588,7 +6600,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
|
|
|
6588
6600
|
this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
|
|
6589
6601
|
}
|
|
6590
6602
|
}
|
|
6591
|
-
MatPaginatorI18n.ɵprov =
|
|
6603
|
+
MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
|
|
6592
6604
|
MatPaginatorI18n.decorators = [
|
|
6593
6605
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6594
6606
|
];
|
|
@@ -6678,17 +6690,17 @@ function getColorContrast(color, bw) {
|
|
|
6678
6690
|
return rgbArrayToHex(rgb.map(v => 255 - v));
|
|
6679
6691
|
}
|
|
6680
6692
|
|
|
6681
|
-
const noop
|
|
6693
|
+
const noop = () => {
|
|
6682
6694
|
};
|
|
6683
|
-
const ɵ0$
|
|
6695
|
+
const ɵ0$3 = noop;
|
|
6684
6696
|
class AppFormField {
|
|
6685
6697
|
constructor(translate, cd, injector, formGroupDir) {
|
|
6686
6698
|
this.translate = translate;
|
|
6687
6699
|
this.cd = cd;
|
|
6688
6700
|
this.injector = injector;
|
|
6689
6701
|
this.formGroupDir = formGroupDir;
|
|
6690
|
-
this._onChangeCallback = noop
|
|
6691
|
-
this._onTouchedCallback = noop
|
|
6702
|
+
this._onChangeCallback = noop;
|
|
6703
|
+
this._onTouchedCallback = noop;
|
|
6692
6704
|
this.readonly = false;
|
|
6693
6705
|
this.compact = false;
|
|
6694
6706
|
this.floatLabel = 'auto';
|
|
@@ -7059,14 +7071,14 @@ class AudioProvider {
|
|
|
7059
7071
|
});
|
|
7060
7072
|
}
|
|
7061
7073
|
}
|
|
7062
|
-
AudioProvider.ɵprov =
|
|
7074
|
+
AudioProvider.ɵprov = i0.ɵɵdefineInjectable({ factory: function AudioProvider_Factory() { return new AudioProvider(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2.NativeAudio, 8), i0.ɵɵinject(i3.Vibration, 8), i0.ɵɵinject(i4.AudioManagement, 8)); }, token: AudioProvider, providedIn: "root" });
|
|
7063
7075
|
AudioProvider.decorators = [
|
|
7064
7076
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7065
7077
|
];
|
|
7066
7078
|
AudioProvider.ctorParameters = () => [
|
|
7067
7079
|
{ type: Platform },
|
|
7068
|
-
{ type: NativeAudio
|
|
7069
|
-
{ type: Vibration
|
|
7080
|
+
{ type: NativeAudio, decorators: [{ type: Optional }] },
|
|
7081
|
+
{ type: Vibration, decorators: [{ type: Optional }] },
|
|
7070
7082
|
{ type: AudioManagement, decorators: [{ type: Optional }] }
|
|
7071
7083
|
];
|
|
7072
7084
|
|
|
@@ -7148,7 +7160,7 @@ class Hotkeys {
|
|
|
7148
7160
|
});
|
|
7149
7161
|
}
|
|
7150
7162
|
}
|
|
7151
|
-
Hotkeys.ɵprov =
|
|
7163
|
+
Hotkeys.ɵprov = i0.ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(i0.ɵɵinject(i1$5.EventManager), i0.ɵɵinject(i2$1.MatDialog), i0.ɵɵinject(i1$3.DOCUMENT), i0.ɵɵinject(i1$4.ModalController)); }, token: Hotkeys, providedIn: "root" });
|
|
7152
7164
|
Hotkeys.decorators = [
|
|
7153
7165
|
{ type: Injectable, args: [{
|
|
7154
7166
|
providedIn: 'root'
|
|
@@ -7322,7 +7334,7 @@ class Base64ImageReader {
|
|
|
7322
7334
|
}
|
|
7323
7335
|
}
|
|
7324
7336
|
|
|
7325
|
-
const uuidv4 = uuidv4Imported;
|
|
7337
|
+
const uuidv4$1 = uuidv4Imported;
|
|
7326
7338
|
class FileService {
|
|
7327
7339
|
constructor(platform,
|
|
7328
7340
|
//private transfer: FileTransfer,
|
|
@@ -7359,7 +7371,7 @@ class FileService {
|
|
|
7359
7371
|
const lastSlashIndex = source.lastIndexOf('/');
|
|
7360
7372
|
if (lastSlashIndex === -1)
|
|
7361
7373
|
throw new Error('Invalid URL: ' + source);
|
|
7362
|
-
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
|
|
7374
|
+
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
|
|
7363
7375
|
// Download into the file system
|
|
7364
7376
|
if (responseType === 'file' && this.canUseFileSystem) {
|
|
7365
7377
|
console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
|
|
@@ -7415,7 +7427,7 @@ class FileService {
|
|
|
7415
7427
|
this._started = true;
|
|
7416
7428
|
}
|
|
7417
7429
|
}
|
|
7418
|
-
FileService.ɵprov =
|
|
7430
|
+
FileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$2.HttpClient), i0.ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
|
|
7419
7431
|
FileService.decorators = [
|
|
7420
7432
|
{ type: Injectable, args: [{
|
|
7421
7433
|
providedIn: 'root',
|
|
@@ -7577,7 +7589,7 @@ class Base58 {
|
|
|
7577
7589
|
Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
7578
7590
|
|
|
7579
7591
|
const scrypt = require('scrypt-async');
|
|
7580
|
-
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
7592
|
+
const sha256$1 = require('hash.js/lib/hash/sha/256');
|
|
7581
7593
|
const sha512 = require('hash.js/lib/hash/sha/512');
|
|
7582
7594
|
const nacl = {
|
|
7583
7595
|
sign,
|
|
@@ -7681,7 +7693,7 @@ class CryptoService {
|
|
|
7681
7693
|
* Hash (using SHA256) a message
|
|
7682
7694
|
*/
|
|
7683
7695
|
sha256(message) {
|
|
7684
|
-
return sha256().update(message).digest('hex');
|
|
7696
|
+
return sha256$1().update(message).digest('hex');
|
|
7685
7697
|
}
|
|
7686
7698
|
/**
|
|
7687
7699
|
* Hash (using SHA512) a message
|
|
@@ -7694,7 +7706,7 @@ class CryptoService {
|
|
|
7694
7706
|
return nacl.util.encodeBase64(m);
|
|
7695
7707
|
}
|
|
7696
7708
|
}
|
|
7697
|
-
CryptoService.ɵprov =
|
|
7709
|
+
CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
|
|
7698
7710
|
CryptoService.decorators = [
|
|
7699
7711
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7700
7712
|
];
|
|
@@ -8914,7 +8926,7 @@ class LocalSettingsService {
|
|
|
8914
8926
|
return page;
|
|
8915
8927
|
}
|
|
8916
8928
|
}
|
|
8917
|
-
LocalSettingsService.ɵprov =
|
|
8929
|
+
LocalSettingsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsService_Factory() { return new LocalSettingsService(i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_SETTINGS, 8), i0.ɵɵinject(APP_LOCAL_SETTINGS_OPTIONS, 8)); }, token: LocalSettingsService, providedIn: "root" });
|
|
8918
8930
|
LocalSettingsService.decorators = [
|
|
8919
8931
|
{ type: Injectable, args: [{
|
|
8920
8932
|
providedIn: 'root',
|
|
@@ -9610,7 +9622,7 @@ class NetworkService {
|
|
|
9610
9622
|
});
|
|
9611
9623
|
}
|
|
9612
9624
|
}
|
|
9613
|
-
NetworkService.ɵprov =
|
|
9625
|
+
NetworkService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NetworkService_Factory() { return new NetworkService(i0.ɵɵinject(i1$3.DOCUMENT), i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i1$4.ModalController), i0.ɵɵinject(CryptoService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i2$2.HttpClient), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i9.Network, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i1$1.TranslateService, 8), i0.ɵɵinject(i1$4.ToastController, 8)); }, token: NetworkService, providedIn: "root" });
|
|
9614
9626
|
NetworkService.decorators = [
|
|
9615
9627
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
9616
9628
|
];
|
|
@@ -9621,16 +9633,16 @@ NetworkService.ctorParameters = () => [
|
|
|
9621
9633
|
{ type: CryptoService },
|
|
9622
9634
|
{ type: Storage },
|
|
9623
9635
|
{ type: LocalSettingsService },
|
|
9624
|
-
{ type: CacheService
|
|
9636
|
+
{ type: CacheService },
|
|
9625
9637
|
{ type: HttpClient },
|
|
9626
9638
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
9627
|
-
{ type: Network
|
|
9628
|
-
{ type: SplashScreen
|
|
9639
|
+
{ type: Network, decorators: [{ type: Optional }] },
|
|
9640
|
+
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
9629
9641
|
{ type: TranslateService, decorators: [{ type: Optional }] },
|
|
9630
9642
|
{ type: ToastController, decorators: [{ type: Optional }] }
|
|
9631
9643
|
];
|
|
9632
9644
|
|
|
9633
|
-
const ErrorCodes = {
|
|
9645
|
+
const ErrorCodes$2 = {
|
|
9634
9646
|
UNKNOWN_ERROR: 0,
|
|
9635
9647
|
LOAD_ACCOUNT_ERROR: 1,
|
|
9636
9648
|
BAD_PASSWORD: 2,
|
|
@@ -9977,7 +9989,7 @@ class EntityStore {
|
|
|
9977
9989
|
}
|
|
9978
9990
|
catch (err) {
|
|
9979
9991
|
console.error(err);
|
|
9980
|
-
throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
|
|
9992
|
+
throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
|
|
9981
9993
|
}
|
|
9982
9994
|
}
|
|
9983
9995
|
// Emit update event
|
|
@@ -10554,7 +10566,7 @@ class EntitiesStorage {
|
|
|
10554
10566
|
}
|
|
10555
10567
|
EntitiesStorage.TRASH_PREFIX = 'Trash#';
|
|
10556
10568
|
EntitiesStorage.REMOTE_PREFIX = 'Remote#';
|
|
10557
|
-
EntitiesStorage.ɵprov =
|
|
10569
|
+
EntitiesStorage.ɵprov = i0.ɵɵdefineInjectable({ factory: function EntitiesStorage_Factory() { return new EntitiesStorage(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(ProgressBarService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_STORAGE_TYPE_POLICIES, 8)); }, token: EntitiesStorage, providedIn: "root" });
|
|
10558
10570
|
EntitiesStorage.decorators = [
|
|
10559
10571
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
10560
10572
|
];
|
|
@@ -10654,10 +10666,10 @@ function referentialToString(obj, properties) {
|
|
|
10654
10666
|
function referentialsToString(values, properties, separator) {
|
|
10655
10667
|
return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
|
|
10656
10668
|
}
|
|
10657
|
-
const ɵ0$
|
|
10669
|
+
const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
|
|
10658
10670
|
const StatusList = Object.freeze([
|
|
10659
10671
|
{
|
|
10660
|
-
id: ɵ0$
|
|
10672
|
+
id: ɵ0$2,
|
|
10661
10673
|
icon: 'checkmark',
|
|
10662
10674
|
label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
|
|
10663
10675
|
},
|
|
@@ -10932,7 +10944,7 @@ function accountToString(data) {
|
|
|
10932
10944
|
(data.lastName || '')) || '';
|
|
10933
10945
|
}
|
|
10934
10946
|
|
|
10935
|
-
const uuidv4
|
|
10947
|
+
const uuidv4 = uuidv4Imported;
|
|
10936
10948
|
const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
|
|
10937
10949
|
const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
|
|
10938
10950
|
/**
|
|
@@ -10976,7 +10988,7 @@ function createTrackerLink(opts) {
|
|
|
10976
10988
|
// Skip if not tracked
|
|
10977
10989
|
if (!context || !context.tracked)
|
|
10978
10990
|
return forward(operation);
|
|
10979
|
-
const id = context.serializationKey || uuidv4
|
|
10991
|
+
const id = context.serializationKey || uuidv4();
|
|
10980
10992
|
console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
|
|
10981
10993
|
// Clean context, before calling JSON.stringify (remove unused attributes)
|
|
10982
10994
|
const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
|
|
@@ -11684,7 +11696,7 @@ class GraphqlService {
|
|
|
11684
11696
|
(err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
|
|
11685
11697
|
|| this.toAppError(err.networkError)
|
|
11686
11698
|
|| (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
|
|
11687
|
-
|| this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
|
|
11699
|
+
|| this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
|
|
11688
11700
|
// If graphQL: try to convert the first error found
|
|
11689
11701
|
|| (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
|
|
11690
11702
|
|| this.toAppError(err)
|
|
@@ -11692,7 +11704,7 @@ class GraphqlService {
|
|
|
11692
11704
|
|| (err.graphQLErrors && err.graphQLErrors[0])
|
|
11693
11705
|
|| err;
|
|
11694
11706
|
console.error('[graphql] ' + (error && error.message || error), error.stack || '');
|
|
11695
|
-
if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
|
|
11707
|
+
if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
|
|
11696
11708
|
console.error('[graphql] original error: ' + err.networkError.message);
|
|
11697
11709
|
this.onNetworkError.next(error);
|
|
11698
11710
|
}
|
|
@@ -11728,7 +11740,7 @@ class GraphqlService {
|
|
|
11728
11740
|
return 'ERROR.UNAUTHORIZED';
|
|
11729
11741
|
case ServerErrorCodes.FORBIDDEN:
|
|
11730
11742
|
return 'ERROR.FORBIDDEN';
|
|
11731
|
-
case ErrorCodes.UNKNOWN_NETWORK_ERROR:
|
|
11743
|
+
case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
|
|
11732
11744
|
return 'ERROR.UNKNOWN_NETWORK_ERROR';
|
|
11733
11745
|
case ServerErrorCodes.BAD_UPDATE_DATE:
|
|
11734
11746
|
return 'ERROR.BAD_UPDATE_DATE';
|
|
@@ -11765,7 +11777,7 @@ class GraphqlService {
|
|
|
11765
11777
|
});
|
|
11766
11778
|
}
|
|
11767
11779
|
}
|
|
11768
|
-
GraphqlService.ɵprov =
|
|
11780
|
+
GraphqlService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GraphqlService_Factory() { return new GraphqlService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$3.Apollo), i0.ɵɵinject(i3$2.HttpLink), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(CryptoService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_GRAPHQL_TYPE_POLICIES, 8)); }, token: GraphqlService, providedIn: "root" });
|
|
11769
11781
|
GraphqlService.decorators = [
|
|
11770
11782
|
{ type: Injectable, args: [{
|
|
11771
11783
|
providedIn: 'root'
|
|
@@ -11782,7 +11794,7 @@ GraphqlService.ctorParameters = () => [
|
|
|
11782
11794
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
|
|
11783
11795
|
];
|
|
11784
11796
|
|
|
11785
|
-
const sha256
|
|
11797
|
+
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
11786
11798
|
class BaseGraphqlServiceOptions {
|
|
11787
11799
|
}
|
|
11788
11800
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
@@ -11932,8 +11944,8 @@ class BaseGraphqlService {
|
|
|
11932
11944
|
}
|
|
11933
11945
|
/* -- protected methods -- */
|
|
11934
11946
|
computeMutableWatchQueryId(opts) {
|
|
11935
|
-
const queryName = opts.queryName || sha256
|
|
11936
|
-
const variablesKey = opts.variables && sha256
|
|
11947
|
+
const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
|
|
11948
|
+
const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
|
|
11937
11949
|
return [queryName, opts.arrayFieldName, variablesKey].join('|');
|
|
11938
11950
|
}
|
|
11939
11951
|
findMutableWatchQueries(opts) {
|
|
@@ -11996,7 +12008,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
|
|
|
11996
12008
|
/* ------------------------------------
|
|
11997
12009
|
* GraphQL queries
|
|
11998
12010
|
* ------------------------------------*/
|
|
11999
|
-
const Fragments = {
|
|
12011
|
+
const Fragments$1 = {
|
|
12000
12012
|
account: gql `
|
|
12001
12013
|
fragment AccountFragment on AccountVO {
|
|
12002
12014
|
id
|
|
@@ -12029,13 +12041,13 @@ const Fragments = {
|
|
|
12029
12041
|
`
|
|
12030
12042
|
};
|
|
12031
12043
|
// Load account query
|
|
12032
|
-
const LoadQuery = gql `
|
|
12044
|
+
const LoadQuery$1 = gql `
|
|
12033
12045
|
query Account {
|
|
12034
12046
|
data: account {
|
|
12035
12047
|
...AccountFragment
|
|
12036
12048
|
}
|
|
12037
12049
|
}
|
|
12038
|
-
${Fragments.account}
|
|
12050
|
+
${Fragments$1.account}
|
|
12039
12051
|
`;
|
|
12040
12052
|
// Check email query
|
|
12041
12053
|
const IsEmailExistsQuery = gql `
|
|
@@ -12044,13 +12056,13 @@ const IsEmailExistsQuery = gql `
|
|
|
12044
12056
|
}
|
|
12045
12057
|
`;
|
|
12046
12058
|
// Save (create or update) account mutation
|
|
12047
|
-
const SaveMutation = gql `
|
|
12059
|
+
const SaveMutation$1 = gql `
|
|
12048
12060
|
mutation SaveAccount($data:AccountVOInput){
|
|
12049
12061
|
data: saveAccount(account: $data){
|
|
12050
12062
|
...AccountFragment
|
|
12051
12063
|
}
|
|
12052
12064
|
}
|
|
12053
|
-
${Fragments.account}
|
|
12065
|
+
${Fragments$1.account}
|
|
12054
12066
|
`;
|
|
12055
12067
|
// Create account mutation
|
|
12056
12068
|
const CreateMutation = gql `
|
|
@@ -12059,7 +12071,7 @@ const CreateMutation = gql `
|
|
|
12059
12071
|
...AccountFragment
|
|
12060
12072
|
}
|
|
12061
12073
|
}
|
|
12062
|
-
${Fragments.account}
|
|
12074
|
+
${Fragments$1.account}
|
|
12063
12075
|
`;
|
|
12064
12076
|
// Sent confirmation email
|
|
12065
12077
|
const SendConfirmEmailMutation = gql `
|
|
@@ -12407,7 +12419,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12407
12419
|
catch (error) {
|
|
12408
12420
|
console.error(error);
|
|
12409
12421
|
this.resetData();
|
|
12410
|
-
throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
|
|
12422
|
+
throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
|
|
12411
12423
|
}
|
|
12412
12424
|
// Store pubkey+keypair
|
|
12413
12425
|
this.data.pubkey = Base58.encode(keypair.publicKey);
|
|
@@ -12441,7 +12453,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12441
12453
|
}
|
|
12442
12454
|
catch (err) {
|
|
12443
12455
|
// If account not found, check if email is valid
|
|
12444
|
-
if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
|
|
12456
|
+
if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
|
|
12445
12457
|
// Check email exists
|
|
12446
12458
|
if (data.username.indexOf('@') !== -1) {
|
|
12447
12459
|
let isEmailExists;
|
|
@@ -12453,11 +12465,11 @@ class AccountService extends BaseGraphqlService {
|
|
|
12453
12465
|
}
|
|
12454
12466
|
// Email not exists (no account)
|
|
12455
12467
|
if (!isEmailExists) {
|
|
12456
|
-
throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
|
|
12468
|
+
throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
|
|
12457
12469
|
}
|
|
12458
12470
|
}
|
|
12459
12471
|
// Email exists, so error = 'bad password'
|
|
12460
|
-
throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
|
|
12472
|
+
throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
|
|
12461
12473
|
}
|
|
12462
12474
|
throw err; // resend the first error
|
|
12463
12475
|
}
|
|
@@ -12582,8 +12594,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
12582
12594
|
// Load remotely
|
|
12583
12595
|
else {
|
|
12584
12596
|
const { data } = yield this.graphql.query({
|
|
12585
|
-
query: LoadQuery,
|
|
12586
|
-
error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
|
|
12597
|
+
query: LoadQuery$1,
|
|
12598
|
+
error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
|
|
12587
12599
|
fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
|
|
12588
12600
|
});
|
|
12589
12601
|
json = data;
|
|
@@ -12610,7 +12622,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12610
12622
|
return __awaiter(this, void 0, void 0, function* () {
|
|
12611
12623
|
const isEmailExists = yield this.isEmailExists(email);
|
|
12612
12624
|
if (isEmailExists) {
|
|
12613
|
-
throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
|
|
12625
|
+
throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
|
|
12614
12626
|
}
|
|
12615
12627
|
});
|
|
12616
12628
|
}
|
|
@@ -12646,7 +12658,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12646
12658
|
locale
|
|
12647
12659
|
},
|
|
12648
12660
|
error: {
|
|
12649
|
-
code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
|
|
12661
|
+
code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
|
|
12650
12662
|
message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
|
|
12651
12663
|
}
|
|
12652
12664
|
});
|
|
@@ -12662,7 +12674,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12662
12674
|
code
|
|
12663
12675
|
},
|
|
12664
12676
|
error: {
|
|
12665
|
-
code: ErrorCodes.CONFIRM_EMAIL_FAILED,
|
|
12677
|
+
code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
|
|
12666
12678
|
message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
|
|
12667
12679
|
}
|
|
12668
12680
|
});
|
|
@@ -12680,7 +12692,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12680
12692
|
interval: 10
|
|
12681
12693
|
},
|
|
12682
12694
|
error: {
|
|
12683
|
-
code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
|
|
12695
|
+
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
12684
12696
|
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
12685
12697
|
}
|
|
12686
12698
|
}).subscribe({
|
|
@@ -12782,7 +12794,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12782
12794
|
throw error;
|
|
12783
12795
|
console.error(error);
|
|
12784
12796
|
throw {
|
|
12785
|
-
code: ErrorCodes.LOAD_ACCOUNT_ERROR,
|
|
12797
|
+
code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
|
|
12786
12798
|
message: 'ERROR.LOAD_ACCOUNT_ERROR'
|
|
12787
12799
|
};
|
|
12788
12800
|
}
|
|
@@ -12927,7 +12939,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12927
12939
|
if (!isNew) {
|
|
12928
12940
|
const existingAccount = yield this.load({ fetchPolicy: 'network-only' });
|
|
12929
12941
|
if (!existingAccount || !existingAccount.updateDate) {
|
|
12930
|
-
throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
|
|
12942
|
+
throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
|
|
12931
12943
|
}
|
|
12932
12944
|
this.copyIdAndUpdateDate(existingAccount, account);
|
|
12933
12945
|
}
|
|
@@ -12936,10 +12948,10 @@ class AccountService extends BaseGraphqlService {
|
|
|
12936
12948
|
delete json.profiles;
|
|
12937
12949
|
// Execute mutation
|
|
12938
12950
|
const { data } = yield this.graphql.mutate({
|
|
12939
|
-
mutation: isNew ? CreateMutation : SaveMutation,
|
|
12951
|
+
mutation: isNew ? CreateMutation : SaveMutation$1,
|
|
12940
12952
|
variables: { data: json },
|
|
12941
12953
|
error: {
|
|
12942
|
-
code: ErrorCodes.SAVE_ACCOUNT_ERROR,
|
|
12954
|
+
code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
|
|
12943
12955
|
message: 'ERROR.SAVE_ACCOUNT_ERROR'
|
|
12944
12956
|
}
|
|
12945
12957
|
});
|
|
@@ -12959,7 +12971,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12959
12971
|
if (counter > 4) {
|
|
12960
12972
|
if (this._debug)
|
|
12961
12973
|
console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
|
|
12962
|
-
throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
|
|
12974
|
+
throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
|
|
12963
12975
|
}
|
|
12964
12976
|
// Check if valid
|
|
12965
12977
|
if (token) {
|
|
@@ -12969,7 +12981,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12969
12981
|
token
|
|
12970
12982
|
},
|
|
12971
12983
|
error: {
|
|
12972
|
-
code: ErrorCodes.UNAUTHORIZED,
|
|
12984
|
+
code: ErrorCodes$2.UNAUTHORIZED,
|
|
12973
12985
|
message: 'ERROR.UNAUTHORIZED'
|
|
12974
12986
|
},
|
|
12975
12987
|
fetchPolicy: 'no-cache'
|
|
@@ -12985,7 +12997,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12985
12997
|
}
|
|
12986
12998
|
// Generate a new token
|
|
12987
12999
|
const challengeError = {
|
|
12988
|
-
code: ErrorCodes.AUTH_CHALLENGE_ERROR,
|
|
13000
|
+
code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
|
|
12989
13001
|
message: 'ERROR.AUTH_CHALLENGE_ERROR'
|
|
12990
13002
|
};
|
|
12991
13003
|
const data = yield this.graphql.query({
|
|
@@ -13019,7 +13031,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13019
13031
|
target.settings.updateDate = source.settings && source.settings.updateDate || target.settings.updateDate;
|
|
13020
13032
|
}
|
|
13021
13033
|
}
|
|
13022
|
-
AccountService.ɵprov =
|
|
13034
|
+
AccountService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(i0.ɵɵinject(CryptoService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(FileService), i0.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
|
|
13023
13035
|
AccountService.decorators = [
|
|
13024
13036
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
13025
13037
|
];
|
|
@@ -13279,7 +13291,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
|
|
|
13279
13291
|
/* ------------------------------------
|
|
13280
13292
|
* GraphQL queries
|
|
13281
13293
|
* ------------------------------------*/
|
|
13282
|
-
const Fragments
|
|
13294
|
+
const Fragments = {
|
|
13283
13295
|
config: gql `
|
|
13284
13296
|
fragment ConfigFragment on ConfigurationVO {
|
|
13285
13297
|
id
|
|
@@ -13306,22 +13318,22 @@ const Fragments$1 = {
|
|
|
13306
13318
|
}
|
|
13307
13319
|
`
|
|
13308
13320
|
};
|
|
13309
|
-
const LoadQuery
|
|
13321
|
+
const LoadQuery = gql `
|
|
13310
13322
|
query Configuration{
|
|
13311
13323
|
data: configuration{
|
|
13312
13324
|
...ConfigFragment
|
|
13313
13325
|
}
|
|
13314
13326
|
}
|
|
13315
|
-
${Fragments
|
|
13327
|
+
${Fragments.config}
|
|
13316
13328
|
`;
|
|
13317
13329
|
// Save (create or update) account mutation
|
|
13318
|
-
const SaveMutation
|
|
13330
|
+
const SaveMutation = gql `
|
|
13319
13331
|
mutation SaveConfiguration($data: ConfigurationVOInput){
|
|
13320
13332
|
data: saveConfiguration(config: $data){
|
|
13321
13333
|
...ConfigFragment
|
|
13322
13334
|
}
|
|
13323
13335
|
}
|
|
13324
|
-
${Fragments
|
|
13336
|
+
${Fragments.config}
|
|
13325
13337
|
`;
|
|
13326
13338
|
const ClearCache = gql `
|
|
13327
13339
|
query ClearCache($name: String) {
|
|
@@ -13409,12 +13421,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13409
13421
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13410
13422
|
const now = Date.now();
|
|
13411
13423
|
console.debug('[config] Loading Pod configuration...');
|
|
13412
|
-
const query = opts && opts.query || LoadQuery
|
|
13424
|
+
const query = opts && opts.query || LoadQuery;
|
|
13413
13425
|
const variables = opts && opts.variables || undefined;
|
|
13414
13426
|
const res = yield this.graphql.query({
|
|
13415
13427
|
query,
|
|
13416
13428
|
variables,
|
|
13417
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13429
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13418
13430
|
fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
|
|
13419
13431
|
});
|
|
13420
13432
|
const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
|
|
@@ -13439,12 +13451,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13439
13451
|
const json = config.asObject();
|
|
13440
13452
|
// Execute mutation
|
|
13441
13453
|
const res = yield this.graphql.mutate({
|
|
13442
|
-
mutation: SaveMutation
|
|
13454
|
+
mutation: SaveMutation,
|
|
13443
13455
|
variables: {
|
|
13444
13456
|
data: json
|
|
13445
13457
|
},
|
|
13446
13458
|
error: {
|
|
13447
|
-
code: ErrorCodes.SAVE_CONFIG_ERROR,
|
|
13459
|
+
code: ErrorCodes$2.SAVE_CONFIG_ERROR,
|
|
13448
13460
|
message: 'ERROR.SAVE_CONFIG_ERROR'
|
|
13449
13461
|
}
|
|
13450
13462
|
});
|
|
@@ -13470,7 +13482,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13470
13482
|
const res = yield this.graphql.query({
|
|
13471
13483
|
query: CacheStatistics,
|
|
13472
13484
|
variables: null,
|
|
13473
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13485
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13474
13486
|
fetchPolicy: 'network-only'
|
|
13475
13487
|
});
|
|
13476
13488
|
const data = res && res.cacheStatistics || undefined;
|
|
@@ -13486,7 +13498,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13486
13498
|
const res = yield this.graphql.query({
|
|
13487
13499
|
query: ClearCache,
|
|
13488
13500
|
variables,
|
|
13489
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13501
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13490
13502
|
fetchPolicy: 'network-only'
|
|
13491
13503
|
});
|
|
13492
13504
|
const data = res && res.clearCache || undefined;
|
|
@@ -13645,7 +13657,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13645
13657
|
});
|
|
13646
13658
|
}
|
|
13647
13659
|
}
|
|
13648
|
-
ConfigService.ɵprov =
|
|
13660
|
+
ConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(NetworkService), i0.ɵɵinject(FileService), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
|
|
13649
13661
|
ConfigService.decorators = [
|
|
13650
13662
|
{ type: Injectable, args: [{
|
|
13651
13663
|
providedIn: 'root',
|
|
@@ -13664,9 +13676,9 @@ ConfigService.ctorParameters = () => [
|
|
|
13664
13676
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
|
|
13665
13677
|
];
|
|
13666
13678
|
|
|
13667
|
-
const moment$
|
|
13679
|
+
const moment$2 = momentImported;
|
|
13668
13680
|
class PlatformService {
|
|
13669
|
-
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser) {
|
|
13681
|
+
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
|
|
13670
13682
|
this.platform = platform;
|
|
13671
13683
|
this.cdkPlatform = cdkPlatform;
|
|
13672
13684
|
this.toastController = toastController;
|
|
@@ -13685,6 +13697,7 @@ class PlatformService {
|
|
|
13685
13697
|
this.keyboard = keyboard;
|
|
13686
13698
|
this.splashScreen = splashScreen;
|
|
13687
13699
|
this.browser = browser;
|
|
13700
|
+
this.downloader = downloader;
|
|
13688
13701
|
this._started = false;
|
|
13689
13702
|
this._debug = !environment.production;
|
|
13690
13703
|
if (this._debug)
|
|
@@ -13707,6 +13720,9 @@ class PlatformService {
|
|
|
13707
13720
|
isWebOrDesktop() {
|
|
13708
13721
|
return !this.platform.is('mobile') || this.platform.is('mobileweb');
|
|
13709
13722
|
}
|
|
13723
|
+
isAndroidCordova() {
|
|
13724
|
+
return this._android && this._cordova;
|
|
13725
|
+
}
|
|
13710
13726
|
width() {
|
|
13711
13727
|
return this.platform.width();
|
|
13712
13728
|
}
|
|
@@ -13725,6 +13741,8 @@ class PlatformService {
|
|
|
13725
13741
|
this._startPromise = this.platform.ready()
|
|
13726
13742
|
.then(() => {
|
|
13727
13743
|
this._mobile = this.platform.is('mobile');
|
|
13744
|
+
this._cordova = this.platform.is('cordova');
|
|
13745
|
+
this._android = this.platform.is('android');
|
|
13728
13746
|
this.configureCordovaPlugins(this._mobile);
|
|
13729
13747
|
this.touchUi = this._mobile || this.platform.is('tablet') || this.platform.is('phablet');
|
|
13730
13748
|
// Force mobile in settings
|
|
@@ -13785,6 +13803,7 @@ class PlatformService {
|
|
|
13785
13803
|
filter(() => this._started), first()).toPromise();
|
|
13786
13804
|
}
|
|
13787
13805
|
open(url, target, features, replace) {
|
|
13806
|
+
console.info(`[platform] Opening link: ${url}`);
|
|
13788
13807
|
if (this.browser && this._mobile) {
|
|
13789
13808
|
this.browser.create(url, target, features).show();
|
|
13790
13809
|
}
|
|
@@ -13792,10 +13811,20 @@ class PlatformService {
|
|
|
13792
13811
|
window.open(url, target, features, replace);
|
|
13793
13812
|
}
|
|
13794
13813
|
}
|
|
13795
|
-
|
|
13796
|
-
|
|
13797
|
-
|
|
13798
|
-
|
|
13814
|
+
download(request) {
|
|
13815
|
+
if (!request || !request.uri)
|
|
13816
|
+
throw new Error('Missing argument \'request\' or \'request.uri\'');
|
|
13817
|
+
if (this._android && this._cordova) {
|
|
13818
|
+
request = Object.assign(Object.assign({ visibleInDownloadsUi: true, notificationVisibility: NotificationVisibility.VisibleNotifyCompleted, title: request.filename || '' }, request), { destinationInExternalFilesDir: Object.assign({ dirType: 'Downloads', subPath: request.filename || request.title || '' }, request.destinationInExternalFilesDir) });
|
|
13819
|
+
this.downloader.download(request)
|
|
13820
|
+
.then((location) => console.info('[platform] File successfully downloaded at:' + location))
|
|
13821
|
+
.catch((error) => console.error(error));
|
|
13822
|
+
}
|
|
13823
|
+
// Web mode: open URI using the browser
|
|
13824
|
+
else {
|
|
13825
|
+
this.open(request.uri, '_system', 'location=yes');
|
|
13826
|
+
}
|
|
13827
|
+
}
|
|
13799
13828
|
/* -- protected methods -- */
|
|
13800
13829
|
configureCordovaPlugins(mobile) {
|
|
13801
13830
|
console.info('[platform] Configuring Cordova plugins...');
|
|
@@ -13829,16 +13858,16 @@ class PlatformService {
|
|
|
13829
13858
|
}
|
|
13830
13859
|
// config moment lib
|
|
13831
13860
|
try {
|
|
13832
|
-
moment$
|
|
13861
|
+
moment$2.locale(event.lang);
|
|
13833
13862
|
console.debug('[platform] Use locale {' + event.lang + '}');
|
|
13834
13863
|
}
|
|
13835
13864
|
// If error, fallback to en
|
|
13836
13865
|
catch (err) {
|
|
13837
|
-
moment$
|
|
13866
|
+
moment$2.locale('en');
|
|
13838
13867
|
console.warn('[platform] Unknown local for moment lib. Using default [en]');
|
|
13839
13868
|
}
|
|
13840
13869
|
// Config date adapter
|
|
13841
|
-
this.dateAdapter.setLocale(moment$
|
|
13870
|
+
this.dateAdapter.setLocale(moment$2.locale());
|
|
13842
13871
|
}
|
|
13843
13872
|
});
|
|
13844
13873
|
this.settings.onChange.subscribe(data => {
|
|
@@ -13975,7 +14004,7 @@ class PlatformService {
|
|
|
13975
14004
|
});
|
|
13976
14005
|
}
|
|
13977
14006
|
}
|
|
13978
|
-
PlatformService.ɵprov =
|
|
14007
|
+
PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$4.Platform), i0.ɵɵinject(i2$4.Platform), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(EntitiesStorage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ConfigService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i3$1.Storage), i0.ɵɵinject(AudioProvider), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i14.StatusBar, 8), i0.ɵɵinject(i15.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i17.InAppBrowser, 8), i0.ɵɵinject(i18.Downloader, 8)); }, token: PlatformService, providedIn: "root" });
|
|
13979
14008
|
PlatformService.decorators = [
|
|
13980
14009
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
13981
14010
|
];
|
|
@@ -13990,14 +14019,15 @@ PlatformService.ctorParameters = () => [
|
|
|
13990
14019
|
{ type: NetworkService },
|
|
13991
14020
|
{ type: AccountService },
|
|
13992
14021
|
{ type: ConfigService },
|
|
13993
|
-
{ type: CacheService
|
|
14022
|
+
{ type: CacheService },
|
|
13994
14023
|
{ type: Storage },
|
|
13995
14024
|
{ type: AudioProvider },
|
|
13996
14025
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
13997
|
-
{ type: StatusBar
|
|
14026
|
+
{ type: StatusBar, decorators: [{ type: Optional }] },
|
|
13998
14027
|
{ type: Keyboard, decorators: [{ type: Optional }] },
|
|
13999
|
-
{ type: SplashScreen
|
|
14000
|
-
{ type: InAppBrowser
|
|
14028
|
+
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
14029
|
+
{ type: InAppBrowser, decorators: [{ type: Optional }] },
|
|
14030
|
+
{ type: Downloader, decorators: [{ type: Optional }] }
|
|
14001
14031
|
];
|
|
14002
14032
|
|
|
14003
14033
|
class AppHelpModal {
|
|
@@ -14061,7 +14091,7 @@ class MatStepperI18n extends MatStepperIntl {
|
|
|
14061
14091
|
this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
|
|
14062
14092
|
}
|
|
14063
14093
|
}
|
|
14064
|
-
MatStepperI18n.ɵprov =
|
|
14094
|
+
MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
|
|
14065
14095
|
MatStepperI18n.decorators = [
|
|
14066
14096
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
14067
14097
|
];
|
|
@@ -15053,7 +15083,7 @@ function state2side(state) {
|
|
|
15053
15083
|
return 1;
|
|
15054
15084
|
}
|
|
15055
15085
|
}
|
|
15056
|
-
const ɵ0$
|
|
15086
|
+
const ɵ0$1 = (defaultStateSize) => [
|
|
15057
15087
|
Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
|
|
15058
15088
|
Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
|
|
15059
15089
|
Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
|
|
@@ -15061,7 +15091,7 @@ const ɵ0$9 = (defaultStateSize) => [
|
|
|
15061
15091
|
const SCALE_OPTIONS_DEFAULT = {
|
|
15062
15092
|
startColor: rgbArrayMap.red,
|
|
15063
15093
|
startStates: [0, 2, 3],
|
|
15064
|
-
startStepsFn: ɵ0$
|
|
15094
|
+
startStepsFn: ɵ0$1
|
|
15065
15095
|
};
|
|
15066
15096
|
/**
|
|
15067
15097
|
* Internal function, that create a colors scale, using iteration
|
|
@@ -15153,21 +15183,21 @@ function linearColorGradient(count, options) {
|
|
|
15153
15183
|
return result;
|
|
15154
15184
|
}
|
|
15155
15185
|
|
|
15156
|
-
class EntityTestClass {
|
|
15186
|
+
class EntityTestClass$1 {
|
|
15157
15187
|
}
|
|
15158
|
-
const FAKE_ENTITIES = [
|
|
15188
|
+
const FAKE_ENTITIES$1 = [
|
|
15159
15189
|
{ id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
|
|
15160
15190
|
{ id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
|
|
15161
15191
|
{ id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
|
|
15162
15192
|
];
|
|
15163
|
-
function deepCopy(values, size) {
|
|
15193
|
+
function deepCopy$1(values, size) {
|
|
15164
15194
|
if (isNil(size)) {
|
|
15165
|
-
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
15195
|
+
return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
|
|
15166
15196
|
}
|
|
15167
15197
|
let result = [];
|
|
15168
15198
|
let i = 1;
|
|
15169
15199
|
while (result.length < size) {
|
|
15170
|
-
result = result.concat((values || FAKE_ENTITIES).map(entity => {
|
|
15200
|
+
result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
|
|
15171
15201
|
const name = entity.name + ' #' + i;
|
|
15172
15202
|
return Object.assign(Object.assign({}, entity), { id: i++, name });
|
|
15173
15203
|
}));
|
|
@@ -15177,7 +15207,7 @@ function deepCopy(values, size) {
|
|
|
15177
15207
|
class AutocompleteTestPage {
|
|
15178
15208
|
constructor(formBuilder) {
|
|
15179
15209
|
this.formBuilder = formBuilder;
|
|
15180
|
-
this._items = deepCopy(FAKE_ENTITIES, 100);
|
|
15210
|
+
this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
|
|
15181
15211
|
this.$items = new BehaviorSubject(undefined);
|
|
15182
15212
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
15183
15213
|
this.memoryHide = false;
|
|
@@ -15221,7 +15251,7 @@ class AutocompleteTestPage {
|
|
|
15221
15251
|
});
|
|
15222
15252
|
// From items
|
|
15223
15253
|
this.autocompleteFields.add('entity-items-large', {
|
|
15224
|
-
items: FAKE_ENTITIES.slice(),
|
|
15254
|
+
items: FAKE_ENTITIES$1.slice(),
|
|
15225
15255
|
attributes: ['label', 'name', 'description', 'comments'],
|
|
15226
15256
|
displayWith: this.entityToString
|
|
15227
15257
|
});
|
|
@@ -15231,12 +15261,12 @@ class AutocompleteTestPage {
|
|
|
15231
15261
|
loadData() {
|
|
15232
15262
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15233
15263
|
const data = {
|
|
15234
|
-
entity: deepCopy(FAKE_ENTITIES)[0],
|
|
15264
|
+
entity: deepCopy$1(FAKE_ENTITIES$1)[0],
|
|
15235
15265
|
// This item is NOT in the items list => i should be displayed anyway
|
|
15236
15266
|
missingEntity: {
|
|
15237
15267
|
id: -1, label: '??', name: 'Missing item'
|
|
15238
15268
|
},
|
|
15239
|
-
disableEntity: deepCopy(FAKE_ENTITIES)[2]
|
|
15269
|
+
disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
|
|
15240
15270
|
};
|
|
15241
15271
|
this.form.setValue(data);
|
|
15242
15272
|
// Load observables
|
|
@@ -15409,13 +15439,13 @@ MaterialTestingPage.ctorParameters = () => [
|
|
|
15409
15439
|
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
|
|
15410
15440
|
];
|
|
15411
15441
|
|
|
15412
|
-
const moment$
|
|
15442
|
+
const moment$1 = momentImported;
|
|
15413
15443
|
class SwipeTestPage {
|
|
15414
15444
|
constructor(formBuilder, dateFormatPipe) {
|
|
15415
15445
|
this.formBuilder = formBuilder;
|
|
15416
15446
|
this.dateFormatPipe = dateFormatPipe;
|
|
15417
15447
|
this.$dates = new BehaviorSubject(undefined);
|
|
15418
|
-
this._today = moment$
|
|
15448
|
+
this._today = moment$1().startOf('day');
|
|
15419
15449
|
this.form = formBuilder.group({
|
|
15420
15450
|
empty: [null, Validators.required],
|
|
15421
15451
|
date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
|
|
@@ -15428,7 +15458,7 @@ class SwipeTestPage {
|
|
|
15428
15458
|
ngOnInit() {
|
|
15429
15459
|
const dates = [];
|
|
15430
15460
|
for (let d = 0; d < 7; d++) {
|
|
15431
|
-
dates[d] = moment$
|
|
15461
|
+
dates[d] = moment$1(this._today).add(d - 3, 'day');
|
|
15432
15462
|
}
|
|
15433
15463
|
this.$dates.next(dates);
|
|
15434
15464
|
this.loadData();
|
|
@@ -16045,7 +16075,7 @@ class FormArrayHelper {
|
|
|
16045
16075
|
}
|
|
16046
16076
|
}
|
|
16047
16077
|
|
|
16048
|
-
const moment
|
|
16078
|
+
const moment = momentImported;
|
|
16049
16079
|
class DateTimeTestPage {
|
|
16050
16080
|
constructor(platform, formBuilder, cd) {
|
|
16051
16081
|
this.platform = platform;
|
|
@@ -16076,7 +16106,7 @@ class DateTimeTestPage {
|
|
|
16076
16106
|
// Load the form with data
|
|
16077
16107
|
loadData() {
|
|
16078
16108
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16079
|
-
const now = moment
|
|
16109
|
+
const now = moment();
|
|
16080
16110
|
const data = {
|
|
16081
16111
|
empty: toDateISOString(now.clone().add(2, 'hours')),
|
|
16082
16112
|
enable: toDateISOString(now),
|
|
@@ -16136,20 +16166,20 @@ DateTimeTestPage.ctorParameters = () => [
|
|
|
16136
16166
|
{ type: ChangeDetectorRef }
|
|
16137
16167
|
];
|
|
16138
16168
|
|
|
16139
|
-
class EntityTestClass
|
|
16169
|
+
class EntityTestClass {
|
|
16140
16170
|
}
|
|
16141
|
-
const FAKE_ENTITIES
|
|
16171
|
+
const FAKE_ENTITIES = [
|
|
16142
16172
|
{ id: 1, label: 'AAA', name: 'Item A' },
|
|
16143
16173
|
{ id: 2, label: 'BBB', name: 'Item B' },
|
|
16144
16174
|
{ id: 3, label: 'CCC', name: 'Item C' }
|
|
16145
16175
|
];
|
|
16146
|
-
function deepCopy
|
|
16147
|
-
return (values || FAKE_ENTITIES
|
|
16176
|
+
function deepCopy(values) {
|
|
16177
|
+
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
16148
16178
|
}
|
|
16149
16179
|
class ChipsTestPage {
|
|
16150
16180
|
constructor(formBuilder) {
|
|
16151
16181
|
this.formBuilder = formBuilder;
|
|
16152
|
-
this._items = deepCopy
|
|
16182
|
+
this._items = deepCopy(FAKE_ENTITIES);
|
|
16153
16183
|
this._$items = new BehaviorSubject(undefined);
|
|
16154
16184
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
16155
16185
|
this.form = formBuilder.group({
|
|
@@ -16168,7 +16198,7 @@ class ChipsTestPage {
|
|
|
16168
16198
|
});
|
|
16169
16199
|
// From items
|
|
16170
16200
|
this.autocompleteFields.add('entity-items', {
|
|
16171
|
-
items: FAKE_ENTITIES
|
|
16201
|
+
items: FAKE_ENTITIES.slice(),
|
|
16172
16202
|
attributes: ['label', 'name'],
|
|
16173
16203
|
displayWith: this.entityToString
|
|
16174
16204
|
});
|
|
@@ -16189,15 +16219,15 @@ class ChipsTestPage {
|
|
|
16189
16219
|
const data = {
|
|
16190
16220
|
entity: [],
|
|
16191
16221
|
// THis item is NOT in the items list => i should be displayed anyway
|
|
16192
|
-
entityInitial: FAKE_ENTITIES
|
|
16193
|
-
disableEntity: FAKE_ENTITIES
|
|
16222
|
+
entityInitial: FAKE_ENTITIES.slice(1, 2),
|
|
16223
|
+
disableEntity: FAKE_ENTITIES.slice(1, 2)
|
|
16194
16224
|
};
|
|
16195
16225
|
this.form.setValue(data);
|
|
16196
16226
|
});
|
|
16197
16227
|
}
|
|
16198
16228
|
loadItems() {
|
|
16199
16229
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16200
|
-
this._$items.next(deepCopy
|
|
16230
|
+
this._$items.next(deepCopy(FAKE_ENTITIES));
|
|
16201
16231
|
});
|
|
16202
16232
|
}
|
|
16203
16233
|
entityToString(item) {
|
|
@@ -16229,7 +16259,7 @@ ChipsTestPage.ctorParameters = () => [
|
|
|
16229
16259
|
{ type: FormBuilder }
|
|
16230
16260
|
];
|
|
16231
16261
|
|
|
16232
|
-
const routes = [
|
|
16262
|
+
const routes$1 = [
|
|
16233
16263
|
{
|
|
16234
16264
|
path: '',
|
|
16235
16265
|
pathMatch: 'full',
|
|
@@ -16276,7 +16306,7 @@ MaterialTestingModule.decorators = [
|
|
|
16276
16306
|
ReactiveFormsModule,
|
|
16277
16307
|
SharedMaterialModule,
|
|
16278
16308
|
TranslateModule.forChild(),
|
|
16279
|
-
RouterModule.forChild(routes)
|
|
16309
|
+
RouterModule.forChild(routes$1)
|
|
16280
16310
|
],
|
|
16281
16311
|
declarations: [
|
|
16282
16312
|
MaterialTestingPage,
|
|
@@ -17219,7 +17249,7 @@ class UserSettingsValidatorService extends AppValidatorService {
|
|
|
17219
17249
|
});
|
|
17220
17250
|
}
|
|
17221
17251
|
}
|
|
17222
|
-
UserSettingsValidatorService.ɵprov =
|
|
17252
|
+
UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
|
|
17223
17253
|
UserSettingsValidatorService.decorators = [
|
|
17224
17254
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17225
17255
|
];
|
|
@@ -17263,7 +17293,7 @@ class AccountValidatorService extends AppValidatorService {
|
|
|
17263
17293
|
return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
|
|
17264
17294
|
}
|
|
17265
17295
|
}
|
|
17266
|
-
AccountValidatorService.ɵprov =
|
|
17296
|
+
AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
|
|
17267
17297
|
AccountValidatorService.decorators = [
|
|
17268
17298
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17269
17299
|
];
|
|
@@ -17797,7 +17827,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
|
|
|
17797
17827
|
});
|
|
17798
17828
|
}
|
|
17799
17829
|
}
|
|
17800
|
-
LocalSettingsValidatorService.ɵprov =
|
|
17830
|
+
LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
|
|
17801
17831
|
LocalSettingsValidatorService.decorators = [
|
|
17802
17832
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17803
17833
|
];
|
|
@@ -18417,7 +18447,7 @@ class IsOnFieldModePipe {
|
|
|
18417
18447
|
return value === 'FIELD';
|
|
18418
18448
|
}
|
|
18419
18449
|
}
|
|
18420
|
-
IsOnFieldModePipe.ɵprov =
|
|
18450
|
+
IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
|
|
18421
18451
|
IsOnFieldModePipe.decorators = [
|
|
18422
18452
|
{ type: Pipe, args: [{
|
|
18423
18453
|
name: 'isOnField'
|
|
@@ -18429,7 +18459,7 @@ class IsNotOnFieldModePipe {
|
|
|
18429
18459
|
return value !== 'FIELD';
|
|
18430
18460
|
}
|
|
18431
18461
|
}
|
|
18432
|
-
IsNotOnFieldModePipe.ɵprov =
|
|
18462
|
+
IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
|
|
18433
18463
|
IsNotOnFieldModePipe.decorators = [
|
|
18434
18464
|
{ type: Pipe, args: [{
|
|
18435
18465
|
name: 'isNotOnField'
|
|
@@ -18444,7 +18474,7 @@ class PersonToStringPipe {
|
|
|
18444
18474
|
return PersonUtils.personToString(value);
|
|
18445
18475
|
}
|
|
18446
18476
|
}
|
|
18447
|
-
PersonToStringPipe.ɵprov =
|
|
18477
|
+
PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
|
|
18448
18478
|
PersonToStringPipe.decorators = [
|
|
18449
18479
|
{ type: Pipe, args: [{
|
|
18450
18480
|
name: 'personToString'
|
|
@@ -18452,6 +18482,9 @@ PersonToStringPipe.decorators = [
|
|
|
18452
18482
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
18453
18483
|
];
|
|
18454
18484
|
|
|
18485
|
+
const MimeTypes = Object.freeze({
|
|
18486
|
+
ANDROID_APK: 'application/vnd.android.package-archive'
|
|
18487
|
+
});
|
|
18455
18488
|
class AppInstallUpgradeCard {
|
|
18456
18489
|
constructor(modalCtrl, configService, platform, cd, network, environment) {
|
|
18457
18490
|
this.modalCtrl = modalCtrl;
|
|
@@ -18468,6 +18501,7 @@ class AppInstallUpgradeCard {
|
|
|
18468
18501
|
this.showOfflineWarning = true;
|
|
18469
18502
|
this.showInstallButton = false;
|
|
18470
18503
|
this.onUpdateOfflineModeClick = new EventEmitter();
|
|
18504
|
+
this.isAndroidCordova = platform.isAndroidCordova();
|
|
18471
18505
|
}
|
|
18472
18506
|
set showUpdateOfflineFeature(value) {
|
|
18473
18507
|
if (value === this._showUpdateOfflineFeature)
|
|
@@ -18511,15 +18545,14 @@ class AppInstallUpgradeCard {
|
|
|
18511
18545
|
ngOnDestroy() {
|
|
18512
18546
|
this._subscription.unsubscribe();
|
|
18513
18547
|
}
|
|
18514
|
-
|
|
18515
|
-
if (!url)
|
|
18548
|
+
downloadLink(event, link) {
|
|
18549
|
+
if (!link || !link.url)
|
|
18516
18550
|
return; // Skip
|
|
18517
|
-
|
|
18518
|
-
|
|
18519
|
-
|
|
18520
|
-
|
|
18521
|
-
|
|
18522
|
-
return false;
|
|
18551
|
+
this.platform.download({
|
|
18552
|
+
uri: link.url,
|
|
18553
|
+
filename: link.downloadFilename,
|
|
18554
|
+
mimeType: link.mimeType
|
|
18555
|
+
});
|
|
18523
18556
|
}
|
|
18524
18557
|
tryOnline() {
|
|
18525
18558
|
this.waitingNetwork = true;
|
|
@@ -18544,10 +18577,10 @@ class AppInstallUpgradeCard {
|
|
|
18544
18577
|
return '';
|
|
18545
18578
|
}
|
|
18546
18579
|
}
|
|
18547
|
-
|
|
18548
|
-
return;
|
|
18580
|
+
asLink(value) {
|
|
18581
|
+
return value;
|
|
18549
18582
|
}
|
|
18550
|
-
/* --
|
|
18583
|
+
/* -- private method -- */
|
|
18551
18584
|
getCompatibleInstallLinks(installLinks) {
|
|
18552
18585
|
// Cordova already running: not need to install
|
|
18553
18586
|
if (this.platform.is('cordova'))
|
|
@@ -18584,11 +18617,14 @@ class AppInstallUpgradeCard {
|
|
|
18584
18617
|
if (url) {
|
|
18585
18618
|
let downloadFilename;
|
|
18586
18619
|
let version;
|
|
18620
|
+
let mimeType;
|
|
18587
18621
|
// Get file name
|
|
18588
18622
|
const filename = this.getFilename(url);
|
|
18589
18623
|
version = config.getProperty(CORE_CONFIG_OPTIONS.APP_MIN_VERSION);
|
|
18590
18624
|
// OK, this is a downloadable APK file (e.g. NOT a link to a playstore)
|
|
18591
18625
|
if (filename === null || filename === void 0 ? void 0 : filename.endsWith('.apk')) {
|
|
18626
|
+
// Define mime type
|
|
18627
|
+
mimeType = MimeTypes.ANDROID_APK;
|
|
18592
18628
|
// Get the file version (if any)
|
|
18593
18629
|
const versionMatches = /-v([1-9][0-9]*\.[0-9]+\.(:?(:?alpha|beta|rc)?[0-9]*))/i.exec(filename);
|
|
18594
18630
|
version = versionMatches && versionMatches[1] || version;
|
|
@@ -18605,7 +18641,7 @@ class AppInstallUpgradeCard {
|
|
|
18605
18641
|
}
|
|
18606
18642
|
}
|
|
18607
18643
|
}
|
|
18608
|
-
result.push({ name, url, platform: 'android', version, downloadFilename });
|
|
18644
|
+
result.push({ name, url, platform: 'android', version, downloadFilename, mimeType });
|
|
18609
18645
|
}
|
|
18610
18646
|
}
|
|
18611
18647
|
// iOS - TODO
|
|
@@ -18633,7 +18669,7 @@ class AppInstallUpgradeCard {
|
|
|
18633
18669
|
AppInstallUpgradeCard.decorators = [
|
|
18634
18670
|
{ type: Component, args: [{
|
|
18635
18671
|
selector: 'app-install-upgrade-card',
|
|
18636
|
-
template: "\n\n<!-- Offline mode card-->\n<ion-card *ngIf=\"showOfflineWarning && (!loading && offline || waitingNetwork)\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\" *ngIf=\"!waitingNetwork; else waitingNetworkText\">\n <h4>\n <b *ngIf=\"isLogin; else notLogin\" [innerHTML]=\"'NETWORK.INFO.OFFLINE_OR_UNAUTHORIZED'| translate\"></b>\n <ng-template #notLogin>\n <b [innerHTML]=\"'NETWORK.INFO.OFFLINE'| translate\"></b>\n </ng-template>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.OFFLINE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n <ng-template #waitingNetworkText>\n <ion-text class=\"ion-text-wrap\" [innerHTML]=\"'NETWORK.INFO.RETRY_TO_CONNECT'| translate\"></ion-text>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button *ngIf=\"!waitingNetwork; else waitingSpinner\" color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"tryOnline()\">\n <span translate>NETWORK.BTN_CHECK_ALIVE</span>\n </ion-button>\n\n <!-- Waiting spinner -->\n <ng-template #waitingSpinner>\n <ion-spinner *ngIf=\"waitingNetwork\" color=\"light\"></ion-spinner>\n </ng-template>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Upgrade links -->\n<ion-card *ngIf=\"showUpgradeWarning && !loading && !offline && updateLinks\"\n color=\"accent\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of updateLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3>\n <span *ngIf=\"link.version\" [innerHTML]=\"'INFO.UPDATE_APP_TO_VERSION'| translate: link\"></span>\n <span *ngIf=\"!link.version\" [innerHTML]=\"'INFO.UPDATE_APP'| translate: link\"></span>\n </h3>\n <h4>\n <small *ngIf=\"last\" [innerHTML]=\"'INFO.UPDATE_APP_HELP'|translate\"></small>\n </h4>\n </ion-text>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <!-- Download button -->\n <ion-button *ngIf=\"link.downloadFilename; else redirectButton\"\n [download]=\"link.downloadFilename\"\n [href]=\"link.url\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n\n <!-- Redirect button -->\n <ng-template #redirectButton>\n <ion-button [href]=\"link.url\" rel=\"external\" color=\"tertiary\" class=\"ion-float-end\" target=\"_blank\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n </ion-button>\n </ng-template>\n\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Install links -->\n<ion-card *ngIf=\"showInstallButton && !loading && !offline && installLinks\"\n color=\"secondary\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of installLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3 [innerHTML]=\"'INFO.DOWNLOAD_APP_TITLE'| translate: {name: link.name, platform: getPlatformName(link.platform) }\"></h3>\n <h4><small *ngIf=\"last\" [innerHTML]=\"'INFO.DOWNLOAD_APP_HELP'|translate\"></small></h4>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n
|
|
18672
|
+
template: "\n\n<!-- Offline mode card-->\n<ion-card *ngIf=\"showOfflineWarning && (!loading && offline || waitingNetwork)\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\" *ngIf=\"!waitingNetwork; else waitingNetworkText\">\n <h4>\n <b *ngIf=\"isLogin; else notLogin\" [innerHTML]=\"'NETWORK.INFO.OFFLINE_OR_UNAUTHORIZED'| translate\"></b>\n <ng-template #notLogin>\n <b [innerHTML]=\"'NETWORK.INFO.OFFLINE'| translate\"></b>\n </ng-template>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.OFFLINE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n <ng-template #waitingNetworkText>\n <ion-text class=\"ion-text-wrap\" [innerHTML]=\"'NETWORK.INFO.RETRY_TO_CONNECT'| translate\"></ion-text>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button *ngIf=\"!waitingNetwork; else waitingSpinner\" color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"tryOnline()\">\n <span translate>NETWORK.BTN_CHECK_ALIVE</span>\n </ion-button>\n\n <!-- Waiting spinner -->\n <ng-template #waitingSpinner>\n <ion-spinner *ngIf=\"waitingNetwork\" color=\"light\"></ion-spinner>\n </ng-template>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Upgrade links -->\n<ion-card *ngIf=\"showUpgradeWarning && !loading && !offline && updateLinks\"\n color=\"accent\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of updateLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3>\n <span *ngIf=\"link.version\" [innerHTML]=\"'INFO.UPDATE_APP_TO_VERSION'| translate: link\"></span>\n <span *ngIf=\"!link.version\" [innerHTML]=\"'INFO.UPDATE_APP'| translate: link\"></span>\n </h3>\n <h4>\n <small *ngIf=\"last\" [innerHTML]=\"'INFO.UPDATE_APP_HELP'|translate\"></small>\n </h4>\n </ion-text>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <!-- Download button -->\n <ion-button *ngIf=\"link.downloadFilename; else redirectButton\"\n [download]=\"link.downloadFilename\"\n [href]=\"link.url\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n\n <!-- Redirect button -->\n <ng-template #redirectButton>\n <ion-button [href]=\"link.url\" rel=\"external\" color=\"tertiary\" class=\"ion-float-end\" target=\"_blank\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n </ion-button>\n </ng-template>\n\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Install links -->\n<ion-card *ngIf=\"showInstallButton && !loading && !offline && installLinks\"\n color=\"secondary\"\n class=\"ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row *ngFor=\"let link of installLinks; last as last\">\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h3 [innerHTML]=\"'INFO.DOWNLOAD_APP_TITLE'| translate: {name: link.name, platform: getPlatformName(link.platform) }\"></h3>\n <h4><small *ngIf=\"last\" [innerHTML]=\"'INFO.DOWNLOAD_APP_HELP'|translate\"></small></h4>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n <ng-container *ngTemplateOutlet=\"downloadButton; context: { $implicit: link }\"></ng-container>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Update offline feature card-->\n<ion-card *ngIf=\"showUpdateOfflineFeature && !loading && !offline\"\n color=\"accent\"\n class=\"main ion-no-margin\"\n @slideUpDownAnimation>\n <ion-card-content class=\"ion-no-padding\">\n <ion-grid>\n <ion-row>\n <ion-col>\n <ion-text class=\"ion-text-wrap\">\n <h4>\n <b [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE'| translate\"></b>\n </h4>\n <h3>\n <small [innerHTML]=\"'NETWORK.INFO.UPDATE_OFFLINE_MODE_HELP'|translate\"></small>\n </h3>\n </ion-text>\n </ion-col>\n <ion-col size=\"auto\">\n\n <!-- Retry button -->\n <ion-button color=\"tertiary\" class=\"ion-float-end\"\n (click)=\"onUpdateOfflineModeClick.emit($event)\">\n <span translate>NETWORK.BTN_UPDATE</span>\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n</ion-card>\n\n<!-- Display a download button, depending on the link URL, and the device platform -->\n<ng-template #downloadButton let-link>\n\n <ng-container *ngIf=\"link.downloadFilename; else redirectButton\">\n\n <!-- Cordova download button -->\n <ion-button *ngIf=\"isAndroidCordova; else webDownloadButton\"\n (click)=\"downloadLink($event, asLink(link))\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n\n <!-- Web download button -->\n <ng-template #webDownloadButton>\n <ion-button [download]=\"link.downloadFilename\"\n [href]=\"link.url\"\n color=\"tertiary\" class=\"ion-float-end\" >\n <ion-label translate>COMMON.BTN_DOWNLOAD</ion-label>\n </ion-button>\n </ng-template>\n </ng-container>\n\n <!-- Web redirect button -->\n <ng-template #redirectButton>\n <ion-button [href]=\"link.url\" rel=\"external\" color=\"tertiary\" class=\"ion-float-end\" target=\"_blank\">\n <ion-label translate>COMMON.BTN_SHOW_MORE</ion-label>\n </ion-button>\n </ng-template>\n</ng-template>\n",
|
|
18637
18673
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18638
18674
|
animations: [slideUpDownAnimation],
|
|
18639
18675
|
styles: ["ion-text small{font-size:85%}"]
|
|
@@ -18661,7 +18697,7 @@ class IsLoginAccountPipe {
|
|
|
18661
18697
|
return value && value.pubkey && true;
|
|
18662
18698
|
}
|
|
18663
18699
|
}
|
|
18664
|
-
IsLoginAccountPipe.ɵprov =
|
|
18700
|
+
IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
|
|
18665
18701
|
IsLoginAccountPipe.decorators = [
|
|
18666
18702
|
{ type: Pipe, args: [{
|
|
18667
18703
|
name: 'isLogin'
|
|
@@ -18673,7 +18709,7 @@ class AccountToStringPipe {
|
|
|
18673
18709
|
return accountToString(value);
|
|
18674
18710
|
}
|
|
18675
18711
|
}
|
|
18676
|
-
AccountToStringPipe.ɵprov =
|
|
18712
|
+
AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
|
|
18677
18713
|
AccountToStringPipe.decorators = [
|
|
18678
18714
|
{ type: Pipe, args: [{
|
|
18679
18715
|
name: 'accountToString'
|
|
@@ -18688,7 +18724,7 @@ class DepartmentToStringPipe {
|
|
|
18688
18724
|
return departmentToString(value);
|
|
18689
18725
|
}
|
|
18690
18726
|
}
|
|
18691
|
-
DepartmentToStringPipe.ɵprov =
|
|
18727
|
+
DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
|
|
18692
18728
|
DepartmentToStringPipe.decorators = [
|
|
18693
18729
|
{ type: Pipe, args: [{
|
|
18694
18730
|
name: 'departmentToString'
|
|
@@ -18714,7 +18750,7 @@ class MenuService {
|
|
|
18714
18750
|
this._visibleSubject.next(value);
|
|
18715
18751
|
}
|
|
18716
18752
|
}
|
|
18717
|
-
MenuService.ɵprov =
|
|
18753
|
+
MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
|
|
18718
18754
|
MenuService.decorators = [
|
|
18719
18755
|
{ type: Injectable, args: [{
|
|
18720
18756
|
providedIn: 'root'
|
|
@@ -19208,7 +19244,7 @@ class AuthGuardService {
|
|
|
19208
19244
|
}));
|
|
19209
19245
|
}
|
|
19210
19246
|
}
|
|
19211
|
-
AuthGuardService.ɵprov =
|
|
19247
|
+
AuthGuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(i0.ɵɵinject(AccountService), i0.ɵɵinject(i1$4.ModalController), i0.ɵɵinject(i3$3.Router), i0.ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
|
|
19212
19248
|
AuthGuardService.decorators = [
|
|
19213
19249
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
19214
19250
|
];
|
|
@@ -19256,7 +19292,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19256
19292
|
query,
|
|
19257
19293
|
variables: { id },
|
|
19258
19294
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
19259
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19295
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19260
19296
|
})
|
|
19261
19297
|
.pipe(map(({ data }) => (!opts || opts.toEntity !== false)
|
|
19262
19298
|
? (data && this.fromObject(data))
|
|
@@ -19271,7 +19307,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19271
19307
|
query,
|
|
19272
19308
|
variables: { id },
|
|
19273
19309
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
19274
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19310
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19275
19311
|
});
|
|
19276
19312
|
// Convert to entity
|
|
19277
19313
|
return (!opts || opts.toEntity !== false)
|
|
@@ -19302,7 +19338,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19302
19338
|
totalFieldName: withTotal ? 'total' : undefined,
|
|
19303
19339
|
insertFilterFn: filter && filter.asFilterFn(),
|
|
19304
19340
|
variables,
|
|
19305
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
|
|
19341
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
|
|
19306
19342
|
fetchPolicy: opts && opts.fetchPolicy || undefined
|
|
19307
19343
|
})
|
|
19308
19344
|
.pipe(map(({ data, total }) => {
|
|
@@ -19338,7 +19374,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19338
19374
|
const { data, total } = yield this.graphql.query({
|
|
19339
19375
|
query,
|
|
19340
19376
|
variables,
|
|
19341
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
|
|
19377
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
|
|
19342
19378
|
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
19343
19379
|
});
|
|
19344
19380
|
const entities = (!opts || opts.toEntity !== false) ?
|
|
@@ -19377,7 +19413,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19377
19413
|
variables: {
|
|
19378
19414
|
filter: filter && filter.asPodObject()
|
|
19379
19415
|
},
|
|
19380
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
|
|
19416
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
|
|
19381
19417
|
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
19382
19418
|
});
|
|
19383
19419
|
return res.total;
|
|
@@ -19410,7 +19446,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19410
19446
|
variables: {
|
|
19411
19447
|
data: json
|
|
19412
19448
|
},
|
|
19413
|
-
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19449
|
+
error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19414
19450
|
update: (proxy, { data }) => {
|
|
19415
19451
|
const savedEntities = data && data.data;
|
|
19416
19452
|
if (savedEntities) {
|
|
@@ -19466,7 +19502,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19466
19502
|
variables: {
|
|
19467
19503
|
data: json
|
|
19468
19504
|
},
|
|
19469
|
-
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19505
|
+
error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19470
19506
|
update: (cache, { data }) => {
|
|
19471
19507
|
// Update entity
|
|
19472
19508
|
const savedEntity = data && data.data;
|
|
@@ -19514,7 +19550,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19514
19550
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19515
19551
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19516
19552
|
variables: { ids },
|
|
19517
|
-
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19553
|
+
error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19518
19554
|
update: (cache, res) => {
|
|
19519
19555
|
// Remove from cache
|
|
19520
19556
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19555,7 +19591,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19555
19591
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19556
19592
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19557
19593
|
variables: { id },
|
|
19558
|
-
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19594
|
+
error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19559
19595
|
update: (proxy, res) => {
|
|
19560
19596
|
// Remove from cache
|
|
19561
19597
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19588,7 +19624,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19588
19624
|
query: opts && opts.query || this.subscriptions.listenChanges,
|
|
19589
19625
|
variables,
|
|
19590
19626
|
error: {
|
|
19591
|
-
code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
|
|
19627
|
+
code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
|
|
19592
19628
|
message: 'ERROR.SUBSCRIBE_DATA_ERROR'
|
|
19593
19629
|
}
|
|
19594
19630
|
})
|
|
@@ -19763,7 +19799,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
19763
19799
|
if (this._debug)
|
|
19764
19800
|
invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
|
|
19765
19801
|
// Stop with an error
|
|
19766
|
-
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
19802
|
+
throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
19767
19803
|
}
|
|
19768
19804
|
this._editingRowCount = 0;
|
|
19769
19805
|
let data;
|
|
@@ -20585,14 +20621,14 @@ class AppTable {
|
|
|
20585
20621
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20586
20622
|
opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
|
|
20587
20623
|
if (this.readOnly) {
|
|
20588
|
-
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20624
|
+
throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20589
20625
|
}
|
|
20590
20626
|
this.resetError();
|
|
20591
20627
|
// Keep edited row id (should be done BEFORE confirmEditCreate() )
|
|
20592
20628
|
this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
|
|
20593
20629
|
const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
|
|
20594
20630
|
if (!this.confirmEditCreate()) {
|
|
20595
|
-
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
20631
|
+
throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
20596
20632
|
}
|
|
20597
20633
|
// Mark as saving
|
|
20598
20634
|
this.markAsSaving();
|
|
@@ -20708,7 +20744,7 @@ class AppTable {
|
|
|
20708
20744
|
deleteRows(event, rows, opts) {
|
|
20709
20745
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20710
20746
|
if (this.readOnly) {
|
|
20711
|
-
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20747
|
+
throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20712
20748
|
}
|
|
20713
20749
|
if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
|
|
20714
20750
|
return 0; // SKip
|
|
@@ -22139,7 +22175,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
22139
22175
|
try {
|
|
22140
22176
|
const data = yield this.dataService.load(id, opts);
|
|
22141
22177
|
if (!data)
|
|
22142
|
-
throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
|
|
22178
|
+
throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
|
|
22143
22179
|
this._usageMode = this.computeUsageMode(data);
|
|
22144
22180
|
yield this.onEntityLoaded(data, opts);
|
|
22145
22181
|
yield this.updateView(data, opts);
|
|
@@ -23032,7 +23068,7 @@ class UserEventService extends BaseGraphqlService {
|
|
|
23032
23068
|
EntityUtils.copyIdAndUpdateDate(source, target);
|
|
23033
23069
|
}
|
|
23034
23070
|
}
|
|
23035
|
-
UserEventService.ɵprov =
|
|
23071
|
+
UserEventService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserEventService_Factory() { return new UserEventService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(AccountService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i1$1.TranslateService), i0.ɵɵinject(i1$4.ToastController), i0.ɵɵinject(ENVIRONMENT)); }, token: UserEventService, providedIn: "root" });
|
|
23036
23072
|
UserEventService.decorators = [
|
|
23037
23073
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23038
23074
|
];
|
|
@@ -23234,6 +23270,7 @@ let PersonFilter = PersonFilter_1 = class PersonFilter extends EntityFilter {
|
|
|
23234
23270
|
this.userProfiles = source.userProfiles;
|
|
23235
23271
|
this.excludedIds = source.excludedIds;
|
|
23236
23272
|
this.searchAttribute = source.searchAttribute;
|
|
23273
|
+
this.searchAttributes = source.searchAttributes;
|
|
23237
23274
|
}
|
|
23238
23275
|
asObject(opts) {
|
|
23239
23276
|
const target = super.asObject(opts);
|
|
@@ -23244,6 +23281,7 @@ let PersonFilter = PersonFilter_1 = class PersonFilter extends EntityFilter {
|
|
|
23244
23281
|
target.userProfiles = this.userProfiles;
|
|
23245
23282
|
target.excludedIds = this.excludedIds;
|
|
23246
23283
|
target.searchAttribute = this.searchAttribute;
|
|
23284
|
+
target.searchAttributes = this.searchAttributes;
|
|
23247
23285
|
return target;
|
|
23248
23286
|
}
|
|
23249
23287
|
buildFilter() {
|
|
@@ -23257,7 +23295,7 @@ let PersonFilter = PersonFilter_1 = class PersonFilter extends EntityFilter {
|
|
|
23257
23295
|
filterFns.push(e => isNil(e.id) || !this.excludedIds.includes(e.id));
|
|
23258
23296
|
}
|
|
23259
23297
|
// Search text
|
|
23260
|
-
const searchTextFilter = EntityUtils.searchTextFilter(this.searchAttribute || ['lastName', 'firstName', 'department.name'], this.searchText);
|
|
23298
|
+
const searchTextFilter = EntityUtils.searchTextFilter(this.searchAttribute || this.searchAttributes || ['lastName', 'firstName', 'department.name'], this.searchText);
|
|
23261
23299
|
if (searchTextFilter)
|
|
23262
23300
|
filterFns.push(searchTextFilter);
|
|
23263
23301
|
return filterFns;
|
|
@@ -23369,12 +23407,13 @@ class PersonService extends BaseEntityService {
|
|
|
23369
23407
|
};
|
|
23370
23408
|
});
|
|
23371
23409
|
}
|
|
23372
|
-
suggest(value, filter) {
|
|
23410
|
+
suggest(value, filter, sortBy, sortDirection) {
|
|
23373
23411
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23374
23412
|
if (ReferentialUtils.isNotEmpty(value))
|
|
23375
23413
|
return { data: [value] };
|
|
23376
23414
|
value = (typeof value === 'string' && value !== '*') && value || undefined;
|
|
23377
|
-
|
|
23415
|
+
sortBy = sortBy || filter.searchAttribute || (filter.searchAttributes && filter.searchAttributes[0]);
|
|
23416
|
+
return this.loadAll(0, !value ? 30 : 10, sortBy, sortDirection, Object.assign(Object.assign({}, filter), { searchText: value, statusIds: filter && filter.statusIds || [StatusIds.ENABLE], userProfiles: filter && filter.userProfiles }), { withTotal: true /* need by autocomplete */ });
|
|
23378
23417
|
});
|
|
23379
23418
|
}
|
|
23380
23419
|
executeImport(progression, opts) {
|
|
@@ -23414,7 +23453,7 @@ class PersonService extends BaseEntityService {
|
|
|
23414
23453
|
return target;
|
|
23415
23454
|
}
|
|
23416
23455
|
}
|
|
23417
|
-
PersonService.ɵprov =
|
|
23456
|
+
PersonService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(PlatformService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
|
|
23418
23457
|
PersonService.decorators = [
|
|
23419
23458
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23420
23459
|
];
|
|
@@ -23445,7 +23484,7 @@ class PersonValidatorService {
|
|
|
23445
23484
|
return this.formBuilder.group(formConfig);
|
|
23446
23485
|
}
|
|
23447
23486
|
}
|
|
23448
|
-
PersonValidatorService.ɵprov =
|
|
23487
|
+
PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
|
|
23449
23488
|
PersonValidatorService.decorators = [
|
|
23450
23489
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23451
23490
|
];
|
|
@@ -23601,7 +23640,7 @@ UsersPage.decorators = [
|
|
|
23601
23640
|
],
|
|
23602
23641
|
animations: [slideUpDownAnimation],
|
|
23603
23642
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
23604
|
-
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}"]
|
|
23643
|
+
styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:calc(100%)}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
|
|
23605
23644
|
},] }
|
|
23606
23645
|
];
|
|
23607
23646
|
UsersPage.ctorParameters = () => [
|
|
@@ -23649,16 +23688,16 @@ AdminModule.decorators = [
|
|
|
23649
23688
|
];
|
|
23650
23689
|
AdminModule.ctorParameters = () => [];
|
|
23651
23690
|
|
|
23652
|
-
const ɵ0
|
|
23691
|
+
const ɵ0 = {
|
|
23653
23692
|
profile: 'ADMIN'
|
|
23654
23693
|
};
|
|
23655
|
-
const routes
|
|
23694
|
+
const routes = [
|
|
23656
23695
|
{
|
|
23657
23696
|
path: 'users',
|
|
23658
23697
|
pathMatch: 'full',
|
|
23659
23698
|
component: UsersPage,
|
|
23660
23699
|
canActivate: [AuthGuardService],
|
|
23661
|
-
data: ɵ0
|
|
23700
|
+
data: ɵ0
|
|
23662
23701
|
}
|
|
23663
23702
|
];
|
|
23664
23703
|
class AdminRoutingModule {
|
|
@@ -23668,13 +23707,13 @@ AdminRoutingModule.decorators = [
|
|
|
23668
23707
|
imports: [
|
|
23669
23708
|
SharedRoutingModule,
|
|
23670
23709
|
AdminModule,
|
|
23671
|
-
RouterModule.forChild(routes
|
|
23710
|
+
RouterModule.forChild(routes)
|
|
23672
23711
|
],
|
|
23673
23712
|
exports: [RouterModule]
|
|
23674
23713
|
},] }
|
|
23675
23714
|
];
|
|
23676
23715
|
|
|
23677
|
-
const ErrorCodes
|
|
23716
|
+
const ErrorCodes = {
|
|
23678
23717
|
LOAD_PERSONS_ERROR: 100,
|
|
23679
23718
|
SAVE_PERSONS_ERROR: 101,
|
|
23680
23719
|
DELETE_PERSONS_ERROR: 102,
|
|
@@ -23686,5 +23725,5 @@ const ErrorCodes$2 = {
|
|
|
23686
23725
|
* Generated bundle index. Do not edit.
|
|
23687
23726
|
*/
|
|
23688
23727
|
|
|
23689
|
-
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, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes
|
|
23728
|
+
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, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, 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, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitIdle, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
|
|
23690
23729
|
//# sourceMappingURL=ngx-sumaris-components.js.map
|