@sumaris-net/ngx-components 0.23.2 → 0.24.0
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 +319 -269
- 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/doc/changelog.md +4 -0
- package/esm2015/src/app/admin/services/person.service.js +3 -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/material/boolean/material.boolean.js +1 -1
- package/fesm2015/ngx-sumaris-components.js +316 -275
- 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/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
|
@@ -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';
|
|
@@ -869,19 +886,19 @@ class MatAutocompleteConfigHolder {
|
|
|
869
886
|
return this.fields[fieldName] || this.add(fieldName);
|
|
870
887
|
}
|
|
871
888
|
}
|
|
872
|
-
const DEFAULT_VALUE_ACCESSOR = {
|
|
889
|
+
const DEFAULT_VALUE_ACCESSOR$6 = {
|
|
873
890
|
provide: NG_VALUE_ACCESSOR,
|
|
874
891
|
useExisting: forwardRef(() => MatAutocompleteField),
|
|
875
892
|
multi: true
|
|
876
893
|
};
|
|
877
|
-
const noop = () => { };
|
|
878
|
-
const ɵ0 = noop;
|
|
894
|
+
const noop$7 = () => { };
|
|
895
|
+
const ɵ0$a = noop$7;
|
|
879
896
|
class MatAutocompleteField {
|
|
880
897
|
constructor(cd, formGroupDir) {
|
|
881
898
|
this.cd = cd;
|
|
882
899
|
this.formGroupDir = formGroupDir;
|
|
883
|
-
this._onChangeCallback = noop;
|
|
884
|
-
this._onTouchedCallback = noop;
|
|
900
|
+
this._onChangeCallback = noop$7;
|
|
901
|
+
this._onTouchedCallback = noop$7;
|
|
885
902
|
this._subscription = new Subscription();
|
|
886
903
|
this._filter$ = new BehaviorSubject(undefined);
|
|
887
904
|
this._reload$ = new Subject();
|
|
@@ -1468,7 +1485,7 @@ MatAutocompleteField.decorators = [
|
|
|
1468
1485
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1469
1486
|
selector: 'mat-autocomplete-field',
|
|
1470
1487
|
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",
|
|
1471
|
-
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
1488
|
+
providers: [DEFAULT_VALUE_ACCESSOR$6],
|
|
1472
1489
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1473
1490
|
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}"]
|
|
1474
1491
|
},] }
|
|
@@ -1545,7 +1562,7 @@ class DateFormatPipe {
|
|
|
1545
1562
|
return this.dateAdapter.format(date, displayFormat);
|
|
1546
1563
|
}
|
|
1547
1564
|
}
|
|
1548
|
-
DateFormatPipe.ɵprov =
|
|
1565
|
+
DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1.MomentDateAdapter), i0.ɵɵinject(i1$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
|
|
1549
1566
|
DateFormatPipe.decorators = [
|
|
1550
1567
|
{ type: Pipe, args: [{
|
|
1551
1568
|
name: 'dateFormat'
|
|
@@ -1557,7 +1574,7 @@ DateFormatPipe.ctorParameters = () => [
|
|
|
1557
1574
|
{ type: TranslateService }
|
|
1558
1575
|
];
|
|
1559
1576
|
|
|
1560
|
-
const moment = momentImported;
|
|
1577
|
+
const moment$6 = momentImported;
|
|
1561
1578
|
class DateDiffDurationPipe {
|
|
1562
1579
|
constructor(dateAdapter, translate) {
|
|
1563
1580
|
this.dateAdapter = dateAdapter;
|
|
@@ -1573,17 +1590,17 @@ class DateDiffDurationPipe {
|
|
|
1573
1590
|
return this.format(startDate, endDate);
|
|
1574
1591
|
}
|
|
1575
1592
|
format(startDate, endDate) {
|
|
1576
|
-
const duration = moment.duration(endDate.diff(startDate));
|
|
1593
|
+
const duration = moment$6.duration(endDate.diff(startDate));
|
|
1577
1594
|
if (duration.asMinutes() < 0)
|
|
1578
1595
|
return '';
|
|
1579
|
-
const timeDuration = moment(0)
|
|
1596
|
+
const timeDuration = moment$6(0)
|
|
1580
1597
|
.hour(duration.hours())
|
|
1581
1598
|
.minute(duration.minutes());
|
|
1582
1599
|
const days = Math.floor(duration.asDays());
|
|
1583
1600
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
|
|
1584
1601
|
}
|
|
1585
1602
|
}
|
|
1586
|
-
DateDiffDurationPipe.ɵprov =
|
|
1603
|
+
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" });
|
|
1587
1604
|
DateDiffDurationPipe.decorators = [
|
|
1588
1605
|
{ type: Pipe, args: [{
|
|
1589
1606
|
name: 'dateDiffDuration'
|
|
@@ -1604,7 +1621,7 @@ class DateFromNowPipe {
|
|
|
1604
1621
|
return date ? date.fromNow(args && args.withoutSuffix) : '';
|
|
1605
1622
|
}
|
|
1606
1623
|
}
|
|
1607
|
-
DateFromNowPipe.ɵprov =
|
|
1624
|
+
DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
|
|
1608
1625
|
DateFromNowPipe.decorators = [
|
|
1609
1626
|
{ type: Pipe, args: [{
|
|
1610
1627
|
name: 'dateFromNow'
|
|
@@ -1673,7 +1690,7 @@ function formatToDD(value, opts) {
|
|
|
1673
1690
|
value *= -1;
|
|
1674
1691
|
}
|
|
1675
1692
|
}
|
|
1676
|
-
let degrees = roundFloat(value, opts.maxDecimals).toString();
|
|
1693
|
+
let degrees = roundFloat$1(value, opts.maxDecimals).toString();
|
|
1677
1694
|
// Add sign
|
|
1678
1695
|
let sign = negative ? '-' : '+';
|
|
1679
1696
|
if (opts.placeholderChar) {
|
|
@@ -1724,7 +1741,7 @@ function formatToDDMMSS(value, opts) {
|
|
|
1724
1741
|
}
|
|
1725
1742
|
let degrees = Math.trunc(value);
|
|
1726
1743
|
let minutes = Math.trunc((value - degrees) * 60);
|
|
1727
|
-
let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
|
|
1744
|
+
let seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
|
|
1728
1745
|
while (seconds >= 60) {
|
|
1729
1746
|
seconds -= 60;
|
|
1730
1747
|
minutes += 1;
|
|
@@ -1792,7 +1809,7 @@ function formatToDDMM(value, opts) {
|
|
|
1792
1809
|
}
|
|
1793
1810
|
}
|
|
1794
1811
|
let degrees = Math.trunc(value);
|
|
1795
|
-
let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
|
|
1812
|
+
let minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
|
|
1796
1813
|
while (minutes >= 60) {
|
|
1797
1814
|
minutes -= 60;
|
|
1798
1815
|
degrees += 1;
|
|
@@ -1843,15 +1860,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
|
|
|
1843
1860
|
return NaN;
|
|
1844
1861
|
}
|
|
1845
1862
|
if (pattern === 'DD')
|
|
1846
|
-
return roundFloat(degrees, maxDecimals);
|
|
1863
|
+
return roundFloat$1(degrees, maxDecimals);
|
|
1847
1864
|
const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
|
|
1848
1865
|
const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
|
|
1849
1866
|
const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
|
|
1850
1867
|
const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
|
|
1851
1868
|
degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
|
|
1852
|
-
return roundFloat(degrees, maxDecimals);
|
|
1869
|
+
return roundFloat$1(degrees, maxDecimals);
|
|
1853
1870
|
}
|
|
1854
|
-
function roundFloat(input, maxDecimals) {
|
|
1871
|
+
function roundFloat$1(input, maxDecimals) {
|
|
1855
1872
|
if (maxDecimals > 0) {
|
|
1856
1873
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
1857
1874
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -1871,7 +1888,7 @@ class LatLongFormatPipe {
|
|
|
1871
1888
|
return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
|
|
1872
1889
|
}
|
|
1873
1890
|
}
|
|
1874
|
-
LatLongFormatPipe.ɵprov =
|
|
1891
|
+
LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
|
|
1875
1892
|
LatLongFormatPipe.decorators = [
|
|
1876
1893
|
{ type: Pipe, args: [{
|
|
1877
1894
|
name: 'latLongFormat'
|
|
@@ -1883,7 +1900,7 @@ class LatitudeFormatPipe {
|
|
|
1883
1900
|
this.transform = formatLatitude;
|
|
1884
1901
|
}
|
|
1885
1902
|
}
|
|
1886
|
-
LatitudeFormatPipe.ɵprov =
|
|
1903
|
+
LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
|
|
1887
1904
|
LatitudeFormatPipe.decorators = [
|
|
1888
1905
|
{ type: Pipe, args: [{
|
|
1889
1906
|
name: 'latitudeFormat'
|
|
@@ -1895,7 +1912,7 @@ class LongitudeFormatPipe {
|
|
|
1895
1912
|
this.transform = formatLongitude;
|
|
1896
1913
|
}
|
|
1897
1914
|
}
|
|
1898
|
-
LongitudeFormatPipe.ɵprov =
|
|
1915
|
+
LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
|
|
1899
1916
|
LongitudeFormatPipe.decorators = [
|
|
1900
1917
|
{ type: Pipe, args: [{
|
|
1901
1918
|
name: 'longitudeFormat'
|
|
@@ -1915,7 +1932,7 @@ class NumberFormatPipe {
|
|
|
1915
1932
|
}
|
|
1916
1933
|
}
|
|
1917
1934
|
}
|
|
1918
|
-
NumberFormatPipe.ɵprov =
|
|
1935
|
+
NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
|
|
1919
1936
|
NumberFormatPipe.decorators = [
|
|
1920
1937
|
{ type: Pipe, args: [{
|
|
1921
1938
|
name: 'numberFormat'
|
|
@@ -1955,7 +1972,7 @@ class HighlightPipe {
|
|
|
1955
1972
|
}
|
|
1956
1973
|
}
|
|
1957
1974
|
}
|
|
1958
|
-
HighlightPipe.ɵprov =
|
|
1975
|
+
HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
|
|
1959
1976
|
HighlightPipe.decorators = [
|
|
1960
1977
|
{ type: Pipe, args: [{
|
|
1961
1978
|
name: 'highlight'
|
|
@@ -2020,7 +2037,7 @@ FileSizePipe.decorators = [
|
|
|
2020
2037
|
{ type: Pipe, args: [{ name: 'fileSize' },] }
|
|
2021
2038
|
];
|
|
2022
2039
|
|
|
2023
|
-
const moment$
|
|
2040
|
+
const moment$5 = momentImported;
|
|
2024
2041
|
const DATE_UNIX_TIMESTAMP = 'X';
|
|
2025
2042
|
const DATE_UNIX_MS_TIMESTAMP = 'x';
|
|
2026
2043
|
class DateUtils {
|
|
@@ -2054,32 +2071,32 @@ function fromDateISOString(value) {
|
|
|
2054
2071
|
if (!value || isMoment(value))
|
|
2055
2072
|
return value;
|
|
2056
2073
|
// Parse the input value, as a ISO date time
|
|
2057
|
-
const date = moment$
|
|
2074
|
+
const date = moment$5(value, DATE_ISO_PATTERN);
|
|
2058
2075
|
if (date.isValid())
|
|
2059
2076
|
return date;
|
|
2060
2077
|
// Not valid: trying to convert from unix timestamp
|
|
2061
2078
|
if (typeof value === 'string') {
|
|
2062
2079
|
console.warn('Wrong date format - Trying to convert from local time: ' + value);
|
|
2063
2080
|
if (value.length === 10) {
|
|
2064
|
-
return moment$
|
|
2081
|
+
return moment$5(value, DATE_UNIX_TIMESTAMP);
|
|
2065
2082
|
}
|
|
2066
2083
|
else if (value.length === 13) {
|
|
2067
|
-
return moment$
|
|
2084
|
+
return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
|
|
2068
2085
|
}
|
|
2069
2086
|
}
|
|
2070
2087
|
console.warn('Unable to parse date: ' + value);
|
|
2071
2088
|
return undefined;
|
|
2072
2089
|
}
|
|
2073
2090
|
function fromUnixTimestamp(timeInSec) {
|
|
2074
|
-
return moment$
|
|
2091
|
+
return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
|
|
2075
2092
|
}
|
|
2076
2093
|
function fromUnixMsTimestamp(timeInMs) {
|
|
2077
|
-
return moment$
|
|
2094
|
+
return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
|
|
2078
2095
|
}
|
|
2079
2096
|
function toDuration(value, unit) {
|
|
2080
2097
|
if (!value)
|
|
2081
2098
|
return undefined;
|
|
2082
|
-
const duration = moment$
|
|
2099
|
+
const duration = moment$5.duration(value, unit);
|
|
2083
2100
|
// fix 990+ ms
|
|
2084
2101
|
if (duration.milliseconds() >= 990) {
|
|
2085
2102
|
duration.add(1000 - duration.milliseconds(), 'ms');
|
|
@@ -2108,7 +2125,7 @@ class DurationPipe {
|
|
|
2108
2125
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
|
|
2109
2126
|
}
|
|
2110
2127
|
}
|
|
2111
|
-
DurationPipe.ɵprov =
|
|
2128
|
+
DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
|
|
2112
2129
|
DurationPipe.decorators = [
|
|
2113
2130
|
{ type: Pipe, args: [{
|
|
2114
2131
|
name: 'duration'
|
|
@@ -2129,7 +2146,7 @@ class MathAbsPipe {
|
|
|
2129
2146
|
}
|
|
2130
2147
|
}
|
|
2131
2148
|
}
|
|
2132
|
-
MathAbsPipe.ɵprov =
|
|
2149
|
+
MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
|
|
2133
2150
|
MathAbsPipe.decorators = [
|
|
2134
2151
|
{ type: Pipe, args: [{
|
|
2135
2152
|
name: 'mathAbs'
|
|
@@ -2141,7 +2158,7 @@ class EvenPipe {
|
|
|
2141
2158
|
return val % 2 === 0;
|
|
2142
2159
|
}
|
|
2143
2160
|
}
|
|
2144
|
-
EvenPipe.ɵprov =
|
|
2161
|
+
EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
|
|
2145
2162
|
EvenPipe.decorators = [
|
|
2146
2163
|
{ type: Pipe, args: [{
|
|
2147
2164
|
name: 'even'
|
|
@@ -2153,7 +2170,7 @@ class OddPipe {
|
|
|
2153
2170
|
return val % 2 !== 0;
|
|
2154
2171
|
}
|
|
2155
2172
|
}
|
|
2156
|
-
OddPipe.ɵprov =
|
|
2173
|
+
OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
|
|
2157
2174
|
OddPipe.decorators = [
|
|
2158
2175
|
{ type: Pipe, args: [{
|
|
2159
2176
|
name: 'odd'
|
|
@@ -2261,7 +2278,7 @@ class MapGetPipe {
|
|
|
2261
2278
|
return val[key];
|
|
2262
2279
|
}
|
|
2263
2280
|
}
|
|
2264
|
-
MapGetPipe.ɵprov =
|
|
2281
|
+
MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
|
|
2265
2282
|
MapGetPipe.decorators = [
|
|
2266
2283
|
{ type: Pipe, args: [{
|
|
2267
2284
|
name: 'mapGet'
|
|
@@ -2275,7 +2292,7 @@ class MapKeysPipe {
|
|
|
2275
2292
|
return Object.keys(map);
|
|
2276
2293
|
}
|
|
2277
2294
|
}
|
|
2278
|
-
MapKeysPipe.ɵprov =
|
|
2295
|
+
MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
|
|
2279
2296
|
MapKeysPipe.decorators = [
|
|
2280
2297
|
{ type: Pipe, args: [{
|
|
2281
2298
|
name: 'mapKeys'
|
|
@@ -2289,7 +2306,7 @@ class MapValuesPipe {
|
|
|
2289
2306
|
return Object.values(map);
|
|
2290
2307
|
}
|
|
2291
2308
|
}
|
|
2292
|
-
MapValuesPipe.ɵprov =
|
|
2309
|
+
MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
|
|
2293
2310
|
MapValuesPipe.decorators = [
|
|
2294
2311
|
{ type: Pipe, args: [{
|
|
2295
2312
|
name: 'mapValues'
|
|
@@ -2302,7 +2319,7 @@ class IsNotNilOrBlankPipe {
|
|
|
2302
2319
|
return isNotNilOrBlank(value);
|
|
2303
2320
|
}
|
|
2304
2321
|
}
|
|
2305
|
-
IsNotNilOrBlankPipe.ɵprov =
|
|
2322
|
+
IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
|
|
2306
2323
|
IsNotNilOrBlankPipe.decorators = [
|
|
2307
2324
|
{ type: Pipe, args: [{
|
|
2308
2325
|
name: 'isNotNilOrBlank'
|
|
@@ -2314,7 +2331,7 @@ class IsNilOrBlankPipe {
|
|
|
2314
2331
|
return isNilOrBlank(value);
|
|
2315
2332
|
}
|
|
2316
2333
|
}
|
|
2317
|
-
IsNilOrBlankPipe.ɵprov =
|
|
2334
|
+
IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
|
|
2318
2335
|
IsNilOrBlankPipe.decorators = [
|
|
2319
2336
|
{ type: Pipe, args: [{
|
|
2320
2337
|
name: 'isNilOrBlank'
|
|
@@ -2326,7 +2343,7 @@ class ToStringPipe {
|
|
|
2326
2343
|
return (value !== null && value !== undefined) ? value.toString() : '';
|
|
2327
2344
|
}
|
|
2328
2345
|
}
|
|
2329
|
-
ToStringPipe.ɵprov =
|
|
2346
|
+
ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
|
|
2330
2347
|
ToStringPipe.decorators = [
|
|
2331
2348
|
{ type: Pipe, args: [{
|
|
2332
2349
|
name: 'toString'
|
|
@@ -2338,7 +2355,7 @@ class StrLengthPipe {
|
|
|
2338
2355
|
return value && value.length || 0;
|
|
2339
2356
|
}
|
|
2340
2357
|
}
|
|
2341
|
-
StrLengthPipe.ɵprov =
|
|
2358
|
+
StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
|
|
2342
2359
|
StrLengthPipe.decorators = [
|
|
2343
2360
|
{ type: Pipe, args: [{
|
|
2344
2361
|
name: 'strLength'
|
|
@@ -2389,7 +2406,7 @@ class TranslateContextService {
|
|
|
2389
2406
|
: parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
|
|
2390
2407
|
}
|
|
2391
2408
|
}
|
|
2392
|
-
TranslateContextService.ɵprov =
|
|
2409
|
+
TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
|
|
2393
2410
|
TranslateContextService.decorators = [
|
|
2394
2411
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
2395
2412
|
];
|
|
@@ -2405,7 +2422,7 @@ class TranslateContextPipe {
|
|
|
2405
2422
|
return this.translateContext.instant(key, context);
|
|
2406
2423
|
}
|
|
2407
2424
|
}
|
|
2408
|
-
TranslateContextPipe.ɵprov =
|
|
2425
|
+
TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
|
|
2409
2426
|
TranslateContextPipe.decorators = [
|
|
2410
2427
|
{ type: Pipe, args: [{
|
|
2411
2428
|
name: 'translateContext'
|
|
@@ -2422,7 +2439,7 @@ class TranslatablePipe {
|
|
|
2422
2439
|
return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
2423
2440
|
}
|
|
2424
2441
|
}
|
|
2425
|
-
TranslatablePipe.ɵprov =
|
|
2442
|
+
TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
|
|
2426
2443
|
TranslatablePipe.decorators = [
|
|
2427
2444
|
{ type: Pipe, args: [{
|
|
2428
2445
|
name: 'translatable'
|
|
@@ -2439,7 +2456,7 @@ class PropertyGetPipe {
|
|
|
2439
2456
|
args && args.defaultValue);
|
|
2440
2457
|
}
|
|
2441
2458
|
}
|
|
2442
|
-
PropertyGetPipe.ɵprov =
|
|
2459
|
+
PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
|
|
2443
2460
|
PropertyGetPipe.decorators = [
|
|
2444
2461
|
{ type: Pipe, args: [{
|
|
2445
2462
|
name: 'propertyGet'
|
|
@@ -2683,12 +2700,12 @@ SharedMatAutocompleteModule.decorators = [
|
|
|
2683
2700
|
},] }
|
|
2684
2701
|
];
|
|
2685
2702
|
|
|
2686
|
-
const moment$
|
|
2703
|
+
const moment$4 = momentImported;
|
|
2687
2704
|
// @dynamic
|
|
2688
2705
|
class SharedValidators {
|
|
2689
2706
|
static validDate(control) {
|
|
2690
2707
|
const value = control.value;
|
|
2691
|
-
const date = !value || moment$
|
|
2708
|
+
const date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
|
|
2692
2709
|
if (date && (!date.isValid() || date.year() < 1970)) {
|
|
2693
2710
|
return { validDate: true };
|
|
2694
2711
|
}
|
|
@@ -3130,9 +3147,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
|
|
|
3130
3147
|
const hour = parseInt(durationParts[0] || '0');
|
|
3131
3148
|
const minute = parseInt(durationParts[1] || '0');
|
|
3132
3149
|
const value = hour + (minute + 0.5) / 60;
|
|
3133
|
-
return roundFloat
|
|
3150
|
+
return roundFloat(value, maxDecimals);
|
|
3134
3151
|
}
|
|
3135
|
-
function roundFloat
|
|
3152
|
+
function roundFloat(input, maxDecimals) {
|
|
3136
3153
|
if (maxDecimals > 0) {
|
|
3137
3154
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
3138
3155
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -3156,9 +3173,9 @@ const MASKS = {
|
|
|
3156
3173
|
DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
|
|
3157
3174
|
}
|
|
3158
3175
|
};
|
|
3159
|
-
const noop$
|
|
3176
|
+
const noop$6 = () => {
|
|
3160
3177
|
};
|
|
3161
|
-
const ɵ0$
|
|
3178
|
+
const ɵ0$9 = noop$6;
|
|
3162
3179
|
class MatLatLongField {
|
|
3163
3180
|
constructor(platform, translate, formBuilder, cd, formGroupDir) {
|
|
3164
3181
|
this.platform = platform;
|
|
@@ -3166,8 +3183,8 @@ class MatLatLongField {
|
|
|
3166
3183
|
this.formBuilder = formBuilder;
|
|
3167
3184
|
this.cd = cd;
|
|
3168
3185
|
this.formGroupDir = formGroupDir;
|
|
3169
|
-
this._onChangeCallback = noop$
|
|
3170
|
-
this._onTouchedCallback = noop$
|
|
3186
|
+
this._onChangeCallback = noop$6;
|
|
3187
|
+
this._onTouchedCallback = noop$6;
|
|
3171
3188
|
this._subscription = new Subscription();
|
|
3172
3189
|
this.disabling = false;
|
|
3173
3190
|
this.writing = false;
|
|
@@ -3508,14 +3525,14 @@ SharedMatLatLongModule.decorators = [
|
|
|
3508
3525
|
},] }
|
|
3509
3526
|
];
|
|
3510
3527
|
|
|
3511
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
3528
|
+
const DEFAULT_VALUE_ACCESSOR$5 = {
|
|
3512
3529
|
provide: NG_VALUE_ACCESSOR,
|
|
3513
3530
|
useExisting: forwardRef(() => MatDate),
|
|
3514
3531
|
multi: true
|
|
3515
3532
|
};
|
|
3516
|
-
const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3517
|
-
const noop$
|
|
3518
|
-
const ɵ0$
|
|
3533
|
+
const DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3534
|
+
const noop$5 = () => { };
|
|
3535
|
+
const ɵ0$8 = noop$5;
|
|
3519
3536
|
class MatDate {
|
|
3520
3537
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
3521
3538
|
this.dateAdapter = dateAdapter;
|
|
@@ -3524,12 +3541,12 @@ class MatDate {
|
|
|
3524
3541
|
this.cd = cd;
|
|
3525
3542
|
this.keyboard = keyboard;
|
|
3526
3543
|
this.formGroupDir = formGroupDir;
|
|
3527
|
-
this._onChangeCallback = noop$
|
|
3528
|
-
this._onTouchedCallback = noop$
|
|
3544
|
+
this._onChangeCallback = noop$5;
|
|
3545
|
+
this._onTouchedCallback = noop$5;
|
|
3529
3546
|
this._subscription = new Subscription();
|
|
3530
3547
|
this.writing = true;
|
|
3531
3548
|
this.disabling = false;
|
|
3532
|
-
this.dayMask = DAY_MASK;
|
|
3549
|
+
this.dayMask = DAY_MASK$2;
|
|
3533
3550
|
this.disabled = false;
|
|
3534
3551
|
this.floatLabel = 'auto';
|
|
3535
3552
|
this.readonly = false;
|
|
@@ -3766,7 +3783,7 @@ MatDate.decorators = [
|
|
|
3766
3783
|
selector: 'mat-date-field',
|
|
3767
3784
|
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",
|
|
3768
3785
|
providers: [
|
|
3769
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
3786
|
+
DEFAULT_VALUE_ACCESSOR$5,
|
|
3770
3787
|
],
|
|
3771
3788
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3772
3789
|
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%}"]
|
|
@@ -3799,17 +3816,17 @@ MatDate.propDecorators = {
|
|
|
3799
3816
|
matInputs: [{ type: ViewChildren, args: ['matInput',] }]
|
|
3800
3817
|
};
|
|
3801
3818
|
|
|
3802
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
3819
|
+
const DEFAULT_VALUE_ACCESSOR$4 = {
|
|
3803
3820
|
provide: NG_VALUE_ACCESSOR,
|
|
3804
3821
|
useExisting: forwardRef(() => MatDateTime),
|
|
3805
3822
|
multi: true
|
|
3806
3823
|
};
|
|
3807
3824
|
const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
3808
3825
|
const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
|
|
3809
|
-
const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
|
|
3810
|
-
const noop$
|
|
3826
|
+
const HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
|
|
3827
|
+
const noop$4 = () => {
|
|
3811
3828
|
};
|
|
3812
|
-
const ɵ0$
|
|
3829
|
+
const ɵ0$7 = noop$4;
|
|
3813
3830
|
class MatDateTime {
|
|
3814
3831
|
constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
|
|
3815
3832
|
this.platform = platform;
|
|
@@ -3819,14 +3836,14 @@ class MatDateTime {
|
|
|
3819
3836
|
this.keyboard = keyboard;
|
|
3820
3837
|
this.cd = cd;
|
|
3821
3838
|
this.formGroupDir = formGroupDir;
|
|
3822
|
-
this._onChangeCallback = noop$
|
|
3823
|
-
this._onTouchedCallback = noop$
|
|
3839
|
+
this._onChangeCallback = noop$4;
|
|
3840
|
+
this._onTouchedCallback = noop$4;
|
|
3824
3841
|
this._subscription = new Subscription();
|
|
3825
3842
|
this.writing = true;
|
|
3826
3843
|
this.disabling = false;
|
|
3827
3844
|
this._onDestroy = new EventEmitter();
|
|
3828
3845
|
this.dayMask = DAY_MASK$1;
|
|
3829
|
-
this.hourMask = HOUR_MASK;
|
|
3846
|
+
this.hourMask = HOUR_MASK$1;
|
|
3830
3847
|
this.floatLabel = 'auto';
|
|
3831
3848
|
this.readonly = false;
|
|
3832
3849
|
this.compact = false;
|
|
@@ -4132,7 +4149,7 @@ MatDateTime.decorators = [
|
|
|
4132
4149
|
selector: 'mat-date-time-field',
|
|
4133
4150
|
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",
|
|
4134
4151
|
providers: [
|
|
4135
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4152
|
+
DEFAULT_VALUE_ACCESSOR$4,
|
|
4136
4153
|
],
|
|
4137
4154
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4138
4155
|
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%}"]
|
|
@@ -4171,10 +4188,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
|
|
|
4171
4188
|
useExisting: forwardRef(() => MatDateShort),
|
|
4172
4189
|
multi: true
|
|
4173
4190
|
};
|
|
4174
|
-
const DAY_MASK
|
|
4175
|
-
const noop$
|
|
4191
|
+
const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
|
|
4192
|
+
const noop$3 = () => {
|
|
4176
4193
|
};
|
|
4177
|
-
const ɵ0$
|
|
4194
|
+
const ɵ0$6 = noop$3;
|
|
4178
4195
|
class MatDateShort {
|
|
4179
4196
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
4180
4197
|
this.dateAdapter = dateAdapter;
|
|
@@ -4183,11 +4200,11 @@ class MatDateShort {
|
|
|
4183
4200
|
this.cd = cd;
|
|
4184
4201
|
this.keyboard = keyboard;
|
|
4185
4202
|
this.formGroupDir = formGroupDir;
|
|
4186
|
-
this._onChangeCallback = noop$
|
|
4187
|
-
this._onTouchedCallback = noop$
|
|
4203
|
+
this._onChangeCallback = noop$3;
|
|
4204
|
+
this._onTouchedCallback = noop$3;
|
|
4188
4205
|
this.writing = true;
|
|
4189
4206
|
this.disabling = false;
|
|
4190
|
-
this.dayMask = DAY_MASK
|
|
4207
|
+
this.dayMask = DAY_MASK;
|
|
4191
4208
|
this.disabled = false;
|
|
4192
4209
|
this.floatLabel = 'auto';
|
|
4193
4210
|
this.readonly = false;
|
|
@@ -4500,16 +4517,16 @@ SharedMatDateTimeModule.decorators = [
|
|
|
4500
4517
|
},] }
|
|
4501
4518
|
];
|
|
4502
4519
|
|
|
4503
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4520
|
+
const DEFAULT_VALUE_ACCESSOR$2 = {
|
|
4504
4521
|
provide: NG_VALUE_ACCESSOR,
|
|
4505
4522
|
useExisting: forwardRef(() => MatDuration),
|
|
4506
4523
|
multi: true
|
|
4507
4524
|
};
|
|
4508
4525
|
const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
|
|
4509
|
-
const HOUR_MASK
|
|
4510
|
-
const noop$
|
|
4526
|
+
const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
|
|
4527
|
+
const noop$2 = () => {
|
|
4511
4528
|
};
|
|
4512
|
-
const ɵ0$5 = noop$
|
|
4529
|
+
const ɵ0$5 = noop$2;
|
|
4513
4530
|
class MatDuration {
|
|
4514
4531
|
constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
|
|
4515
4532
|
this.dateAdapter = dateAdapter;
|
|
@@ -4518,11 +4535,11 @@ class MatDuration {
|
|
|
4518
4535
|
this.cd = cd;
|
|
4519
4536
|
this.formGroupDir = formGroupDir;
|
|
4520
4537
|
this._subscription = new Subscription();
|
|
4521
|
-
this._onChangeCallback = noop$
|
|
4522
|
-
this._onTouchedCallback = noop$
|
|
4538
|
+
this._onChangeCallback = noop$2;
|
|
4539
|
+
this._onTouchedCallback = noop$2;
|
|
4523
4540
|
this.writing = true;
|
|
4524
4541
|
this.disabling = false;
|
|
4525
|
-
this.hourMask = HOUR_MASK
|
|
4542
|
+
this.hourMask = HOUR_MASK;
|
|
4526
4543
|
this.disabled = false;
|
|
4527
4544
|
this.floatLabel = 'auto';
|
|
4528
4545
|
this.readonly = false;
|
|
@@ -4702,7 +4719,7 @@ MatDuration.decorators = [
|
|
|
4702
4719
|
selector: 'mat-duration-field',
|
|
4703
4720
|
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",
|
|
4704
4721
|
providers: [
|
|
4705
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4722
|
+
DEFAULT_VALUE_ACCESSOR$2,
|
|
4706
4723
|
],
|
|
4707
4724
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4708
4725
|
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%}"]
|
|
@@ -4759,22 +4776,22 @@ SharedMatDurationModule.decorators = [
|
|
|
4759
4776
|
},] }
|
|
4760
4777
|
];
|
|
4761
4778
|
|
|
4762
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4779
|
+
const DEFAULT_VALUE_ACCESSOR$1 = {
|
|
4763
4780
|
provide: NG_VALUE_ACCESSOR,
|
|
4764
4781
|
useExisting: forwardRef(() => MatBooleanField),
|
|
4765
4782
|
multi: true
|
|
4766
4783
|
};
|
|
4767
|
-
const noop$
|
|
4784
|
+
const noop$1 = () => {
|
|
4768
4785
|
};
|
|
4769
|
-
const ɵ0$
|
|
4786
|
+
const ɵ0$4 = noop$1;
|
|
4770
4787
|
class MatBooleanField {
|
|
4771
4788
|
constructor(translate, formBuilder, cd, formGroupDir) {
|
|
4772
4789
|
this.translate = translate;
|
|
4773
4790
|
this.formBuilder = formBuilder;
|
|
4774
4791
|
this.cd = cd;
|
|
4775
4792
|
this.formGroupDir = formGroupDir;
|
|
4776
|
-
this._onChangeCallback = noop$
|
|
4777
|
-
this._onTouchedCallback = noop$
|
|
4793
|
+
this._onChangeCallback = noop$1;
|
|
4794
|
+
this._onTouchedCallback = noop$1;
|
|
4778
4795
|
this._writing = false;
|
|
4779
4796
|
this.showRadio = false;
|
|
4780
4797
|
this.disabled = false;
|
|
@@ -4947,10 +4964,10 @@ MatBooleanField.decorators = [
|
|
|
4947
4964
|
selector: 'mat-boolean-field',
|
|
4948
4965
|
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",
|
|
4949
4966
|
providers: [
|
|
4950
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4967
|
+
DEFAULT_VALUE_ACCESSOR$1
|
|
4951
4968
|
],
|
|
4952
4969
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4953
|
-
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}"]
|
|
4970
|
+
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}"]
|
|
4954
4971
|
},] }
|
|
4955
4972
|
];
|
|
4956
4973
|
MatBooleanField.ctorParameters = () => [
|
|
@@ -5195,7 +5212,7 @@ class MatNumpadDomService {
|
|
|
5195
5212
|
this.appRef.detachView(this.componentRef.hostView);
|
|
5196
5213
|
}
|
|
5197
5214
|
}
|
|
5198
|
-
MatNumpadDomService.ɵprov =
|
|
5215
|
+
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" });
|
|
5199
5216
|
MatNumpadDomService.decorators = [
|
|
5200
5217
|
{ type: Injectable, args: [{
|
|
5201
5218
|
providedIn: 'root'
|
|
@@ -5559,7 +5576,7 @@ SharedMatNumpadModule.decorators = [
|
|
|
5559
5576
|
},] }
|
|
5560
5577
|
];
|
|
5561
5578
|
|
|
5562
|
-
const DEFAULT_VALUE_ACCESSOR
|
|
5579
|
+
const DEFAULT_VALUE_ACCESSOR = {
|
|
5563
5580
|
provide: NG_VALUE_ACCESSOR,
|
|
5564
5581
|
useExisting: forwardRef(() => MatSwipeField),
|
|
5565
5582
|
multi: true
|
|
@@ -5822,7 +5839,7 @@ MatSwipeField.decorators = [
|
|
|
5822
5839
|
{ type: Component, args: [{
|
|
5823
5840
|
selector: 'mat-swipe-field',
|
|
5824
5841
|
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",
|
|
5825
|
-
providers: [DEFAULT_VALUE_ACCESSOR
|
|
5842
|
+
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
5826
5843
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5827
5844
|
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}"]
|
|
5828
5845
|
},] }
|
|
@@ -6317,7 +6334,7 @@ class ProgressBarService {
|
|
|
6317
6334
|
}
|
|
6318
6335
|
}
|
|
6319
6336
|
}
|
|
6320
|
-
ProgressBarService.ɵprov =
|
|
6337
|
+
ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
|
|
6321
6338
|
ProgressBarService.decorators = [
|
|
6322
6339
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6323
6340
|
];
|
|
@@ -6361,7 +6378,7 @@ class AppGestureConfig extends HammerGestureConfig {
|
|
|
6361
6378
|
return mc;
|
|
6362
6379
|
}
|
|
6363
6380
|
}
|
|
6364
|
-
AppGestureConfig.ɵprov =
|
|
6381
|
+
AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
|
|
6365
6382
|
AppGestureConfig.decorators = [
|
|
6366
6383
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6367
6384
|
];
|
|
@@ -6584,7 +6601,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
|
|
|
6584
6601
|
this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
|
|
6585
6602
|
}
|
|
6586
6603
|
}
|
|
6587
|
-
MatPaginatorI18n.ɵprov =
|
|
6604
|
+
MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
|
|
6588
6605
|
MatPaginatorI18n.decorators = [
|
|
6589
6606
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6590
6607
|
];
|
|
@@ -6674,17 +6691,17 @@ function getColorContrast(color, bw) {
|
|
|
6674
6691
|
return rgbArrayToHex(rgb.map(v => 255 - v));
|
|
6675
6692
|
}
|
|
6676
6693
|
|
|
6677
|
-
const noop
|
|
6694
|
+
const noop = () => {
|
|
6678
6695
|
};
|
|
6679
|
-
const ɵ0$
|
|
6696
|
+
const ɵ0$3 = noop;
|
|
6680
6697
|
class AppFormField {
|
|
6681
6698
|
constructor(translate, cd, injector, formGroupDir) {
|
|
6682
6699
|
this.translate = translate;
|
|
6683
6700
|
this.cd = cd;
|
|
6684
6701
|
this.injector = injector;
|
|
6685
6702
|
this.formGroupDir = formGroupDir;
|
|
6686
|
-
this._onChangeCallback = noop
|
|
6687
|
-
this._onTouchedCallback = noop
|
|
6703
|
+
this._onChangeCallback = noop;
|
|
6704
|
+
this._onTouchedCallback = noop;
|
|
6688
6705
|
this.readonly = false;
|
|
6689
6706
|
this.compact = false;
|
|
6690
6707
|
this.floatLabel = 'auto';
|
|
@@ -7055,14 +7072,14 @@ class AudioProvider {
|
|
|
7055
7072
|
});
|
|
7056
7073
|
}
|
|
7057
7074
|
}
|
|
7058
|
-
AudioProvider.ɵprov =
|
|
7075
|
+
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" });
|
|
7059
7076
|
AudioProvider.decorators = [
|
|
7060
7077
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7061
7078
|
];
|
|
7062
7079
|
AudioProvider.ctorParameters = () => [
|
|
7063
7080
|
{ type: Platform },
|
|
7064
|
-
{ type: NativeAudio
|
|
7065
|
-
{ type: Vibration
|
|
7081
|
+
{ type: NativeAudio, decorators: [{ type: Optional }] },
|
|
7082
|
+
{ type: Vibration, decorators: [{ type: Optional }] },
|
|
7066
7083
|
{ type: AudioManagement, decorators: [{ type: Optional }] }
|
|
7067
7084
|
];
|
|
7068
7085
|
|
|
@@ -7144,7 +7161,7 @@ class Hotkeys {
|
|
|
7144
7161
|
});
|
|
7145
7162
|
}
|
|
7146
7163
|
}
|
|
7147
|
-
Hotkeys.ɵprov =
|
|
7164
|
+
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" });
|
|
7148
7165
|
Hotkeys.decorators = [
|
|
7149
7166
|
{ type: Injectable, args: [{
|
|
7150
7167
|
providedIn: 'root'
|
|
@@ -7318,7 +7335,7 @@ class Base64ImageReader {
|
|
|
7318
7335
|
}
|
|
7319
7336
|
}
|
|
7320
7337
|
|
|
7321
|
-
const uuidv4 = uuidv4Imported;
|
|
7338
|
+
const uuidv4$1 = uuidv4Imported;
|
|
7322
7339
|
class FileService {
|
|
7323
7340
|
constructor(platform,
|
|
7324
7341
|
//private transfer: FileTransfer,
|
|
@@ -7355,7 +7372,7 @@ class FileService {
|
|
|
7355
7372
|
const lastSlashIndex = source.lastIndexOf('/');
|
|
7356
7373
|
if (lastSlashIndex === -1)
|
|
7357
7374
|
throw new Error('Invalid URL: ' + source);
|
|
7358
|
-
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
|
|
7375
|
+
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
|
|
7359
7376
|
// Download into the file system
|
|
7360
7377
|
if (responseType === 'file' && this.canUseFileSystem) {
|
|
7361
7378
|
console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
|
|
@@ -7411,7 +7428,7 @@ class FileService {
|
|
|
7411
7428
|
this._started = true;
|
|
7412
7429
|
}
|
|
7413
7430
|
}
|
|
7414
|
-
FileService.ɵprov =
|
|
7431
|
+
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" });
|
|
7415
7432
|
FileService.decorators = [
|
|
7416
7433
|
{ type: Injectable, args: [{
|
|
7417
7434
|
providedIn: 'root',
|
|
@@ -7573,7 +7590,7 @@ class Base58 {
|
|
|
7573
7590
|
Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
7574
7591
|
|
|
7575
7592
|
const scrypt = require('scrypt-async');
|
|
7576
|
-
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
7593
|
+
const sha256$1 = require('hash.js/lib/hash/sha/256');
|
|
7577
7594
|
const sha512 = require('hash.js/lib/hash/sha/512');
|
|
7578
7595
|
const nacl = {
|
|
7579
7596
|
sign,
|
|
@@ -7677,7 +7694,7 @@ class CryptoService {
|
|
|
7677
7694
|
* Hash (using SHA256) a message
|
|
7678
7695
|
*/
|
|
7679
7696
|
sha256(message) {
|
|
7680
|
-
return sha256().update(message).digest('hex');
|
|
7697
|
+
return sha256$1().update(message).digest('hex');
|
|
7681
7698
|
}
|
|
7682
7699
|
/**
|
|
7683
7700
|
* Hash (using SHA512) a message
|
|
@@ -7690,7 +7707,7 @@ class CryptoService {
|
|
|
7690
7707
|
return nacl.util.encodeBase64(m);
|
|
7691
7708
|
}
|
|
7692
7709
|
}
|
|
7693
|
-
CryptoService.ɵprov =
|
|
7710
|
+
CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
|
|
7694
7711
|
CryptoService.decorators = [
|
|
7695
7712
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7696
7713
|
];
|
|
@@ -8910,7 +8927,7 @@ class LocalSettingsService {
|
|
|
8910
8927
|
return page;
|
|
8911
8928
|
}
|
|
8912
8929
|
}
|
|
8913
|
-
LocalSettingsService.ɵprov =
|
|
8930
|
+
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" });
|
|
8914
8931
|
LocalSettingsService.decorators = [
|
|
8915
8932
|
{ type: Injectable, args: [{
|
|
8916
8933
|
providedIn: 'root',
|
|
@@ -9606,7 +9623,7 @@ class NetworkService {
|
|
|
9606
9623
|
});
|
|
9607
9624
|
}
|
|
9608
9625
|
}
|
|
9609
|
-
NetworkService.ɵprov =
|
|
9626
|
+
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" });
|
|
9610
9627
|
NetworkService.decorators = [
|
|
9611
9628
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
9612
9629
|
];
|
|
@@ -9617,16 +9634,16 @@ NetworkService.ctorParameters = () => [
|
|
|
9617
9634
|
{ type: CryptoService },
|
|
9618
9635
|
{ type: Storage },
|
|
9619
9636
|
{ type: LocalSettingsService },
|
|
9620
|
-
{ type: CacheService
|
|
9637
|
+
{ type: CacheService },
|
|
9621
9638
|
{ type: HttpClient },
|
|
9622
9639
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
9623
|
-
{ type: Network
|
|
9624
|
-
{ type: SplashScreen
|
|
9640
|
+
{ type: Network, decorators: [{ type: Optional }] },
|
|
9641
|
+
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
9625
9642
|
{ type: TranslateService, decorators: [{ type: Optional }] },
|
|
9626
9643
|
{ type: ToastController, decorators: [{ type: Optional }] }
|
|
9627
9644
|
];
|
|
9628
9645
|
|
|
9629
|
-
const ErrorCodes = {
|
|
9646
|
+
const ErrorCodes$2 = {
|
|
9630
9647
|
UNKNOWN_ERROR: 0,
|
|
9631
9648
|
LOAD_ACCOUNT_ERROR: 1,
|
|
9632
9649
|
BAD_PASSWORD: 2,
|
|
@@ -9973,7 +9990,7 @@ class EntityStore {
|
|
|
9973
9990
|
}
|
|
9974
9991
|
catch (err) {
|
|
9975
9992
|
console.error(err);
|
|
9976
|
-
throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
|
|
9993
|
+
throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
|
|
9977
9994
|
}
|
|
9978
9995
|
}
|
|
9979
9996
|
// Emit update event
|
|
@@ -10550,7 +10567,7 @@ class EntitiesStorage {
|
|
|
10550
10567
|
}
|
|
10551
10568
|
EntitiesStorage.TRASH_PREFIX = 'Trash#';
|
|
10552
10569
|
EntitiesStorage.REMOTE_PREFIX = 'Remote#';
|
|
10553
|
-
EntitiesStorage.ɵprov =
|
|
10570
|
+
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" });
|
|
10554
10571
|
EntitiesStorage.decorators = [
|
|
10555
10572
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
10556
10573
|
];
|
|
@@ -10650,10 +10667,10 @@ function referentialToString(obj, properties) {
|
|
|
10650
10667
|
function referentialsToString(values, properties, separator) {
|
|
10651
10668
|
return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
|
|
10652
10669
|
}
|
|
10653
|
-
const ɵ0$
|
|
10670
|
+
const ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
|
|
10654
10671
|
const StatusList = Object.freeze([
|
|
10655
10672
|
{
|
|
10656
|
-
id: ɵ0$
|
|
10673
|
+
id: ɵ0$2,
|
|
10657
10674
|
icon: 'checkmark',
|
|
10658
10675
|
label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
|
|
10659
10676
|
},
|
|
@@ -10928,7 +10945,7 @@ function accountToString(data) {
|
|
|
10928
10945
|
(data.lastName || '')) || '';
|
|
10929
10946
|
}
|
|
10930
10947
|
|
|
10931
|
-
const uuidv4
|
|
10948
|
+
const uuidv4 = uuidv4Imported;
|
|
10932
10949
|
const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
|
|
10933
10950
|
const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
|
|
10934
10951
|
/**
|
|
@@ -10972,7 +10989,7 @@ function createTrackerLink(opts) {
|
|
|
10972
10989
|
// Skip if not tracked
|
|
10973
10990
|
if (!context || !context.tracked)
|
|
10974
10991
|
return forward(operation);
|
|
10975
|
-
const id = context.serializationKey || uuidv4
|
|
10992
|
+
const id = context.serializationKey || uuidv4();
|
|
10976
10993
|
console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
|
|
10977
10994
|
// Clean context, before calling JSON.stringify (remove unused attributes)
|
|
10978
10995
|
const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
|
|
@@ -11680,7 +11697,7 @@ class GraphqlService {
|
|
|
11680
11697
|
(err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
|
|
11681
11698
|
|| this.toAppError(err.networkError)
|
|
11682
11699
|
|| (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
|
|
11683
|
-
|| this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
|
|
11700
|
+
|| this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
|
|
11684
11701
|
// If graphQL: try to convert the first error found
|
|
11685
11702
|
|| (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
|
|
11686
11703
|
|| this.toAppError(err)
|
|
@@ -11688,7 +11705,7 @@ class GraphqlService {
|
|
|
11688
11705
|
|| (err.graphQLErrors && err.graphQLErrors[0])
|
|
11689
11706
|
|| err;
|
|
11690
11707
|
console.error('[graphql] ' + (error && error.message || error), error.stack || '');
|
|
11691
|
-
if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
|
|
11708
|
+
if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
|
|
11692
11709
|
console.error('[graphql] original error: ' + err.networkError.message);
|
|
11693
11710
|
this.onNetworkError.next(error);
|
|
11694
11711
|
}
|
|
@@ -11724,7 +11741,7 @@ class GraphqlService {
|
|
|
11724
11741
|
return 'ERROR.UNAUTHORIZED';
|
|
11725
11742
|
case ServerErrorCodes.FORBIDDEN:
|
|
11726
11743
|
return 'ERROR.FORBIDDEN';
|
|
11727
|
-
case ErrorCodes.UNKNOWN_NETWORK_ERROR:
|
|
11744
|
+
case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
|
|
11728
11745
|
return 'ERROR.UNKNOWN_NETWORK_ERROR';
|
|
11729
11746
|
case ServerErrorCodes.BAD_UPDATE_DATE:
|
|
11730
11747
|
return 'ERROR.BAD_UPDATE_DATE';
|
|
@@ -11761,7 +11778,7 @@ class GraphqlService {
|
|
|
11761
11778
|
});
|
|
11762
11779
|
}
|
|
11763
11780
|
}
|
|
11764
|
-
GraphqlService.ɵprov =
|
|
11781
|
+
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" });
|
|
11765
11782
|
GraphqlService.decorators = [
|
|
11766
11783
|
{ type: Injectable, args: [{
|
|
11767
11784
|
providedIn: 'root'
|
|
@@ -11778,7 +11795,7 @@ GraphqlService.ctorParameters = () => [
|
|
|
11778
11795
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
|
|
11779
11796
|
];
|
|
11780
11797
|
|
|
11781
|
-
const sha256
|
|
11798
|
+
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
11782
11799
|
class BaseGraphqlServiceOptions {
|
|
11783
11800
|
}
|
|
11784
11801
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
@@ -11928,8 +11945,8 @@ class BaseGraphqlService {
|
|
|
11928
11945
|
}
|
|
11929
11946
|
/* -- protected methods -- */
|
|
11930
11947
|
computeMutableWatchQueryId(opts) {
|
|
11931
|
-
const queryName = opts.queryName || sha256
|
|
11932
|
-
const variablesKey = opts.variables && sha256
|
|
11948
|
+
const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
|
|
11949
|
+
const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
|
|
11933
11950
|
return [queryName, opts.arrayFieldName, variablesKey].join('|');
|
|
11934
11951
|
}
|
|
11935
11952
|
findMutableWatchQueries(opts) {
|
|
@@ -11992,7 +12009,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
|
|
|
11992
12009
|
/* ------------------------------------
|
|
11993
12010
|
* GraphQL queries
|
|
11994
12011
|
* ------------------------------------*/
|
|
11995
|
-
const Fragments = {
|
|
12012
|
+
const Fragments$1 = {
|
|
11996
12013
|
account: gql `
|
|
11997
12014
|
fragment AccountFragment on AccountVO {
|
|
11998
12015
|
id
|
|
@@ -12025,13 +12042,13 @@ const Fragments = {
|
|
|
12025
12042
|
`
|
|
12026
12043
|
};
|
|
12027
12044
|
// Load account query
|
|
12028
|
-
const LoadQuery = gql `
|
|
12045
|
+
const LoadQuery$1 = gql `
|
|
12029
12046
|
query Account {
|
|
12030
12047
|
data: account {
|
|
12031
12048
|
...AccountFragment
|
|
12032
12049
|
}
|
|
12033
12050
|
}
|
|
12034
|
-
${Fragments.account}
|
|
12051
|
+
${Fragments$1.account}
|
|
12035
12052
|
`;
|
|
12036
12053
|
// Check email query
|
|
12037
12054
|
const IsEmailExistsQuery = gql `
|
|
@@ -12040,13 +12057,13 @@ const IsEmailExistsQuery = gql `
|
|
|
12040
12057
|
}
|
|
12041
12058
|
`;
|
|
12042
12059
|
// Save (create or update) account mutation
|
|
12043
|
-
const SaveMutation = gql `
|
|
12060
|
+
const SaveMutation$1 = gql `
|
|
12044
12061
|
mutation SaveAccount($data:AccountVOInput){
|
|
12045
12062
|
data: saveAccount(account: $data){
|
|
12046
12063
|
...AccountFragment
|
|
12047
12064
|
}
|
|
12048
12065
|
}
|
|
12049
|
-
${Fragments.account}
|
|
12066
|
+
${Fragments$1.account}
|
|
12050
12067
|
`;
|
|
12051
12068
|
// Create account mutation
|
|
12052
12069
|
const CreateMutation = gql `
|
|
@@ -12055,7 +12072,7 @@ const CreateMutation = gql `
|
|
|
12055
12072
|
...AccountFragment
|
|
12056
12073
|
}
|
|
12057
12074
|
}
|
|
12058
|
-
${Fragments.account}
|
|
12075
|
+
${Fragments$1.account}
|
|
12059
12076
|
`;
|
|
12060
12077
|
// Sent confirmation email
|
|
12061
12078
|
const SendConfirmEmailMutation = gql `
|
|
@@ -12403,7 +12420,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12403
12420
|
catch (error) {
|
|
12404
12421
|
console.error(error);
|
|
12405
12422
|
this.resetData();
|
|
12406
|
-
throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
|
|
12423
|
+
throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
|
|
12407
12424
|
}
|
|
12408
12425
|
// Store pubkey+keypair
|
|
12409
12426
|
this.data.pubkey = Base58.encode(keypair.publicKey);
|
|
@@ -12437,7 +12454,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12437
12454
|
}
|
|
12438
12455
|
catch (err) {
|
|
12439
12456
|
// If account not found, check if email is valid
|
|
12440
|
-
if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
|
|
12457
|
+
if (err && +(err.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR) {
|
|
12441
12458
|
// Check email exists
|
|
12442
12459
|
if (data.username.indexOf('@') !== -1) {
|
|
12443
12460
|
let isEmailExists;
|
|
@@ -12449,11 +12466,11 @@ class AccountService extends BaseGraphqlService {
|
|
|
12449
12466
|
}
|
|
12450
12467
|
// Email not exists (no account)
|
|
12451
12468
|
if (!isEmailExists) {
|
|
12452
|
-
throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
|
|
12469
|
+
throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
|
|
12453
12470
|
}
|
|
12454
12471
|
}
|
|
12455
12472
|
// Email exists, so error = 'bad password'
|
|
12456
|
-
throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
|
|
12473
|
+
throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
|
|
12457
12474
|
}
|
|
12458
12475
|
throw err; // resend the first error
|
|
12459
12476
|
}
|
|
@@ -12578,8 +12595,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
12578
12595
|
// Load remotely
|
|
12579
12596
|
else {
|
|
12580
12597
|
const { data } = yield this.graphql.query({
|
|
12581
|
-
query: LoadQuery,
|
|
12582
|
-
error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
|
|
12598
|
+
query: LoadQuery$1,
|
|
12599
|
+
error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
|
|
12583
12600
|
fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
|
|
12584
12601
|
});
|
|
12585
12602
|
json = data;
|
|
@@ -12606,7 +12623,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12606
12623
|
return __awaiter(this, void 0, void 0, function* () {
|
|
12607
12624
|
const isEmailExists = yield this.isEmailExists(email);
|
|
12608
12625
|
if (isEmailExists) {
|
|
12609
|
-
throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
|
|
12626
|
+
throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
|
|
12610
12627
|
}
|
|
12611
12628
|
});
|
|
12612
12629
|
}
|
|
@@ -12642,7 +12659,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12642
12659
|
locale
|
|
12643
12660
|
},
|
|
12644
12661
|
error: {
|
|
12645
|
-
code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
|
|
12662
|
+
code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
|
|
12646
12663
|
message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
|
|
12647
12664
|
}
|
|
12648
12665
|
});
|
|
@@ -12658,7 +12675,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12658
12675
|
code
|
|
12659
12676
|
},
|
|
12660
12677
|
error: {
|
|
12661
|
-
code: ErrorCodes.CONFIRM_EMAIL_FAILED,
|
|
12678
|
+
code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
|
|
12662
12679
|
message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
|
|
12663
12680
|
}
|
|
12664
12681
|
});
|
|
@@ -12676,7 +12693,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12676
12693
|
interval: 10
|
|
12677
12694
|
},
|
|
12678
12695
|
error: {
|
|
12679
|
-
code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
|
|
12696
|
+
code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
|
|
12680
12697
|
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
12681
12698
|
}
|
|
12682
12699
|
}).subscribe({
|
|
@@ -12778,7 +12795,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12778
12795
|
throw error;
|
|
12779
12796
|
console.error(error);
|
|
12780
12797
|
throw {
|
|
12781
|
-
code: ErrorCodes.LOAD_ACCOUNT_ERROR,
|
|
12798
|
+
code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
|
|
12782
12799
|
message: 'ERROR.LOAD_ACCOUNT_ERROR'
|
|
12783
12800
|
};
|
|
12784
12801
|
}
|
|
@@ -12923,7 +12940,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12923
12940
|
if (!isNew) {
|
|
12924
12941
|
const existingAccount = yield this.load({ fetchPolicy: 'network-only' });
|
|
12925
12942
|
if (!existingAccount || !existingAccount.updateDate) {
|
|
12926
|
-
throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
|
|
12943
|
+
throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
|
|
12927
12944
|
}
|
|
12928
12945
|
this.copyIdAndUpdateDate(existingAccount, account);
|
|
12929
12946
|
}
|
|
@@ -12932,10 +12949,10 @@ class AccountService extends BaseGraphqlService {
|
|
|
12932
12949
|
delete json.profiles;
|
|
12933
12950
|
// Execute mutation
|
|
12934
12951
|
const { data } = yield this.graphql.mutate({
|
|
12935
|
-
mutation: isNew ? CreateMutation : SaveMutation,
|
|
12952
|
+
mutation: isNew ? CreateMutation : SaveMutation$1,
|
|
12936
12953
|
variables: { data: json },
|
|
12937
12954
|
error: {
|
|
12938
|
-
code: ErrorCodes.SAVE_ACCOUNT_ERROR,
|
|
12955
|
+
code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
|
|
12939
12956
|
message: 'ERROR.SAVE_ACCOUNT_ERROR'
|
|
12940
12957
|
}
|
|
12941
12958
|
});
|
|
@@ -12955,7 +12972,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12955
12972
|
if (counter > 4) {
|
|
12956
12973
|
if (this._debug)
|
|
12957
12974
|
console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
|
|
12958
|
-
throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
|
|
12975
|
+
throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
|
|
12959
12976
|
}
|
|
12960
12977
|
// Check if valid
|
|
12961
12978
|
if (token) {
|
|
@@ -12965,7 +12982,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12965
12982
|
token
|
|
12966
12983
|
},
|
|
12967
12984
|
error: {
|
|
12968
|
-
code: ErrorCodes.UNAUTHORIZED,
|
|
12985
|
+
code: ErrorCodes$2.UNAUTHORIZED,
|
|
12969
12986
|
message: 'ERROR.UNAUTHORIZED'
|
|
12970
12987
|
},
|
|
12971
12988
|
fetchPolicy: 'no-cache'
|
|
@@ -12981,7 +12998,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
12981
12998
|
}
|
|
12982
12999
|
// Generate a new token
|
|
12983
13000
|
const challengeError = {
|
|
12984
|
-
code: ErrorCodes.AUTH_CHALLENGE_ERROR,
|
|
13001
|
+
code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
|
|
12985
13002
|
message: 'ERROR.AUTH_CHALLENGE_ERROR'
|
|
12986
13003
|
};
|
|
12987
13004
|
const data = yield this.graphql.query({
|
|
@@ -13015,7 +13032,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13015
13032
|
target.settings.updateDate = source.settings && source.settings.updateDate || target.settings.updateDate;
|
|
13016
13033
|
}
|
|
13017
13034
|
}
|
|
13018
|
-
AccountService.ɵprov =
|
|
13035
|
+
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" });
|
|
13019
13036
|
AccountService.decorators = [
|
|
13020
13037
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
13021
13038
|
];
|
|
@@ -13275,7 +13292,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
|
|
|
13275
13292
|
/* ------------------------------------
|
|
13276
13293
|
* GraphQL queries
|
|
13277
13294
|
* ------------------------------------*/
|
|
13278
|
-
const Fragments
|
|
13295
|
+
const Fragments = {
|
|
13279
13296
|
config: gql `
|
|
13280
13297
|
fragment ConfigFragment on ConfigurationVO {
|
|
13281
13298
|
id
|
|
@@ -13302,22 +13319,22 @@ const Fragments$1 = {
|
|
|
13302
13319
|
}
|
|
13303
13320
|
`
|
|
13304
13321
|
};
|
|
13305
|
-
const LoadQuery
|
|
13322
|
+
const LoadQuery = gql `
|
|
13306
13323
|
query Configuration{
|
|
13307
13324
|
data: configuration{
|
|
13308
13325
|
...ConfigFragment
|
|
13309
13326
|
}
|
|
13310
13327
|
}
|
|
13311
|
-
${Fragments
|
|
13328
|
+
${Fragments.config}
|
|
13312
13329
|
`;
|
|
13313
13330
|
// Save (create or update) account mutation
|
|
13314
|
-
const SaveMutation
|
|
13331
|
+
const SaveMutation = gql `
|
|
13315
13332
|
mutation SaveConfiguration($data: ConfigurationVOInput){
|
|
13316
13333
|
data: saveConfiguration(config: $data){
|
|
13317
13334
|
...ConfigFragment
|
|
13318
13335
|
}
|
|
13319
13336
|
}
|
|
13320
|
-
${Fragments
|
|
13337
|
+
${Fragments.config}
|
|
13321
13338
|
`;
|
|
13322
13339
|
const ClearCache = gql `
|
|
13323
13340
|
query ClearCache($name: String) {
|
|
@@ -13405,12 +13422,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13405
13422
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13406
13423
|
const now = Date.now();
|
|
13407
13424
|
console.debug('[config] Loading Pod configuration...');
|
|
13408
|
-
const query = opts && opts.query || LoadQuery
|
|
13425
|
+
const query = opts && opts.query || LoadQuery;
|
|
13409
13426
|
const variables = opts && opts.variables || undefined;
|
|
13410
13427
|
const res = yield this.graphql.query({
|
|
13411
13428
|
query,
|
|
13412
13429
|
variables,
|
|
13413
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13430
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13414
13431
|
fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
|
|
13415
13432
|
});
|
|
13416
13433
|
const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
|
|
@@ -13435,12 +13452,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13435
13452
|
const json = config.asObject();
|
|
13436
13453
|
// Execute mutation
|
|
13437
13454
|
const res = yield this.graphql.mutate({
|
|
13438
|
-
mutation: SaveMutation
|
|
13455
|
+
mutation: SaveMutation,
|
|
13439
13456
|
variables: {
|
|
13440
13457
|
data: json
|
|
13441
13458
|
},
|
|
13442
13459
|
error: {
|
|
13443
|
-
code: ErrorCodes.SAVE_CONFIG_ERROR,
|
|
13460
|
+
code: ErrorCodes$2.SAVE_CONFIG_ERROR,
|
|
13444
13461
|
message: 'ERROR.SAVE_CONFIG_ERROR'
|
|
13445
13462
|
}
|
|
13446
13463
|
});
|
|
@@ -13466,7 +13483,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13466
13483
|
const res = yield this.graphql.query({
|
|
13467
13484
|
query: CacheStatistics,
|
|
13468
13485
|
variables: null,
|
|
13469
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13486
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13470
13487
|
fetchPolicy: 'network-only'
|
|
13471
13488
|
});
|
|
13472
13489
|
const data = res && res.cacheStatistics || undefined;
|
|
@@ -13482,7 +13499,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13482
13499
|
const res = yield this.graphql.query({
|
|
13483
13500
|
query: ClearCache,
|
|
13484
13501
|
variables,
|
|
13485
|
-
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13502
|
+
error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
13486
13503
|
fetchPolicy: 'network-only'
|
|
13487
13504
|
});
|
|
13488
13505
|
const data = res && res.clearCache || undefined;
|
|
@@ -13641,7 +13658,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
13641
13658
|
});
|
|
13642
13659
|
}
|
|
13643
13660
|
}
|
|
13644
|
-
ConfigService.ɵprov =
|
|
13661
|
+
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" });
|
|
13645
13662
|
ConfigService.decorators = [
|
|
13646
13663
|
{ type: Injectable, args: [{
|
|
13647
13664
|
providedIn: 'root',
|
|
@@ -13660,9 +13677,9 @@ ConfigService.ctorParameters = () => [
|
|
|
13660
13677
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
|
|
13661
13678
|
];
|
|
13662
13679
|
|
|
13663
|
-
const moment$
|
|
13680
|
+
const moment$2 = momentImported;
|
|
13664
13681
|
class PlatformService {
|
|
13665
|
-
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser) {
|
|
13682
|
+
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
|
|
13666
13683
|
this.platform = platform;
|
|
13667
13684
|
this.cdkPlatform = cdkPlatform;
|
|
13668
13685
|
this.toastController = toastController;
|
|
@@ -13681,6 +13698,7 @@ class PlatformService {
|
|
|
13681
13698
|
this.keyboard = keyboard;
|
|
13682
13699
|
this.splashScreen = splashScreen;
|
|
13683
13700
|
this.browser = browser;
|
|
13701
|
+
this.downloader = downloader;
|
|
13684
13702
|
this._started = false;
|
|
13685
13703
|
this._debug = !environment.production;
|
|
13686
13704
|
if (this._debug)
|
|
@@ -13703,6 +13721,9 @@ class PlatformService {
|
|
|
13703
13721
|
isWebOrDesktop() {
|
|
13704
13722
|
return !this.platform.is('mobile') || this.platform.is('mobileweb');
|
|
13705
13723
|
}
|
|
13724
|
+
isAndroidCordova() {
|
|
13725
|
+
return this._android && this._cordova;
|
|
13726
|
+
}
|
|
13706
13727
|
width() {
|
|
13707
13728
|
return this.platform.width();
|
|
13708
13729
|
}
|
|
@@ -13721,6 +13742,8 @@ class PlatformService {
|
|
|
13721
13742
|
this._startPromise = this.platform.ready()
|
|
13722
13743
|
.then(() => {
|
|
13723
13744
|
this._mobile = this.platform.is('mobile');
|
|
13745
|
+
this._cordova = this.platform.is('cordova');
|
|
13746
|
+
this._android = this.platform.is('android');
|
|
13724
13747
|
this.configureCordovaPlugins(this._mobile);
|
|
13725
13748
|
this.touchUi = this._mobile || this.platform.is('tablet') || this.platform.is('phablet');
|
|
13726
13749
|
// Force mobile in settings
|
|
@@ -13781,6 +13804,7 @@ class PlatformService {
|
|
|
13781
13804
|
filter(() => this._started), first()).toPromise();
|
|
13782
13805
|
}
|
|
13783
13806
|
open(url, target, features, replace) {
|
|
13807
|
+
console.info(`[platform] Opening link: ${url}`);
|
|
13784
13808
|
if (this.browser && this._mobile) {
|
|
13785
13809
|
this.browser.create(url, target, features).show();
|
|
13786
13810
|
}
|
|
@@ -13788,10 +13812,20 @@ class PlatformService {
|
|
|
13788
13812
|
window.open(url, target, features, replace);
|
|
13789
13813
|
}
|
|
13790
13814
|
}
|
|
13791
|
-
|
|
13792
|
-
|
|
13793
|
-
|
|
13794
|
-
|
|
13815
|
+
download(request) {
|
|
13816
|
+
if (!request || !request.uri)
|
|
13817
|
+
throw new Error('Missing argument \'request\' or \'request.uri\'');
|
|
13818
|
+
if (this._android && this._cordova) {
|
|
13819
|
+
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) });
|
|
13820
|
+
this.downloader.download(request)
|
|
13821
|
+
.then((location) => console.info('[platform] File successfully downloaded at:' + location))
|
|
13822
|
+
.catch((error) => console.error(error));
|
|
13823
|
+
}
|
|
13824
|
+
// Web mode: open URI using the browser
|
|
13825
|
+
else {
|
|
13826
|
+
this.open(request.uri, '_system', 'location=yes');
|
|
13827
|
+
}
|
|
13828
|
+
}
|
|
13795
13829
|
/* -- protected methods -- */
|
|
13796
13830
|
configureCordovaPlugins(mobile) {
|
|
13797
13831
|
console.info('[platform] Configuring Cordova plugins...');
|
|
@@ -13825,16 +13859,16 @@ class PlatformService {
|
|
|
13825
13859
|
}
|
|
13826
13860
|
// config moment lib
|
|
13827
13861
|
try {
|
|
13828
|
-
moment$
|
|
13862
|
+
moment$2.locale(event.lang);
|
|
13829
13863
|
console.debug('[platform] Use locale {' + event.lang + '}');
|
|
13830
13864
|
}
|
|
13831
13865
|
// If error, fallback to en
|
|
13832
13866
|
catch (err) {
|
|
13833
|
-
moment$
|
|
13867
|
+
moment$2.locale('en');
|
|
13834
13868
|
console.warn('[platform] Unknown local for moment lib. Using default [en]');
|
|
13835
13869
|
}
|
|
13836
13870
|
// Config date adapter
|
|
13837
|
-
this.dateAdapter.setLocale(moment$
|
|
13871
|
+
this.dateAdapter.setLocale(moment$2.locale());
|
|
13838
13872
|
}
|
|
13839
13873
|
});
|
|
13840
13874
|
this.settings.onChange.subscribe(data => {
|
|
@@ -13971,7 +14005,7 @@ class PlatformService {
|
|
|
13971
14005
|
});
|
|
13972
14006
|
}
|
|
13973
14007
|
}
|
|
13974
|
-
PlatformService.ɵprov =
|
|
14008
|
+
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" });
|
|
13975
14009
|
PlatformService.decorators = [
|
|
13976
14010
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
13977
14011
|
];
|
|
@@ -13986,14 +14020,15 @@ PlatformService.ctorParameters = () => [
|
|
|
13986
14020
|
{ type: NetworkService },
|
|
13987
14021
|
{ type: AccountService },
|
|
13988
14022
|
{ type: ConfigService },
|
|
13989
|
-
{ type: CacheService
|
|
14023
|
+
{ type: CacheService },
|
|
13990
14024
|
{ type: Storage },
|
|
13991
14025
|
{ type: AudioProvider },
|
|
13992
14026
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
13993
|
-
{ type: StatusBar
|
|
14027
|
+
{ type: StatusBar, decorators: [{ type: Optional }] },
|
|
13994
14028
|
{ type: Keyboard, decorators: [{ type: Optional }] },
|
|
13995
|
-
{ type: SplashScreen
|
|
13996
|
-
{ type: InAppBrowser
|
|
14029
|
+
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
14030
|
+
{ type: InAppBrowser, decorators: [{ type: Optional }] },
|
|
14031
|
+
{ type: Downloader, decorators: [{ type: Optional }] }
|
|
13997
14032
|
];
|
|
13998
14033
|
|
|
13999
14034
|
class AppHelpModal {
|
|
@@ -14057,7 +14092,7 @@ class MatStepperI18n extends MatStepperIntl {
|
|
|
14057
14092
|
this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
|
|
14058
14093
|
}
|
|
14059
14094
|
}
|
|
14060
|
-
MatStepperI18n.ɵprov =
|
|
14095
|
+
MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
|
|
14061
14096
|
MatStepperI18n.decorators = [
|
|
14062
14097
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
14063
14098
|
];
|
|
@@ -15049,7 +15084,7 @@ function state2side(state) {
|
|
|
15049
15084
|
return 1;
|
|
15050
15085
|
}
|
|
15051
15086
|
}
|
|
15052
|
-
const ɵ0$
|
|
15087
|
+
const ɵ0$1 = (defaultStateSize) => [
|
|
15053
15088
|
Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
|
|
15054
15089
|
Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
|
|
15055
15090
|
Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
|
|
@@ -15057,7 +15092,7 @@ const ɵ0$9 = (defaultStateSize) => [
|
|
|
15057
15092
|
const SCALE_OPTIONS_DEFAULT = {
|
|
15058
15093
|
startColor: rgbArrayMap.red,
|
|
15059
15094
|
startStates: [0, 2, 3],
|
|
15060
|
-
startStepsFn: ɵ0$
|
|
15095
|
+
startStepsFn: ɵ0$1
|
|
15061
15096
|
};
|
|
15062
15097
|
/**
|
|
15063
15098
|
* Internal function, that create a colors scale, using iteration
|
|
@@ -15149,21 +15184,21 @@ function linearColorGradient(count, options) {
|
|
|
15149
15184
|
return result;
|
|
15150
15185
|
}
|
|
15151
15186
|
|
|
15152
|
-
class EntityTestClass {
|
|
15187
|
+
class EntityTestClass$1 {
|
|
15153
15188
|
}
|
|
15154
|
-
const FAKE_ENTITIES = [
|
|
15189
|
+
const FAKE_ENTITIES$1 = [
|
|
15155
15190
|
{ id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
|
|
15156
15191
|
{ id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
|
|
15157
15192
|
{ id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
|
|
15158
15193
|
];
|
|
15159
|
-
function deepCopy(values, size) {
|
|
15194
|
+
function deepCopy$1(values, size) {
|
|
15160
15195
|
if (isNil(size)) {
|
|
15161
|
-
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
15196
|
+
return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
|
|
15162
15197
|
}
|
|
15163
15198
|
let result = [];
|
|
15164
15199
|
let i = 1;
|
|
15165
15200
|
while (result.length < size) {
|
|
15166
|
-
result = result.concat((values || FAKE_ENTITIES).map(entity => {
|
|
15201
|
+
result = result.concat((values || FAKE_ENTITIES$1).map(entity => {
|
|
15167
15202
|
const name = entity.name + ' #' + i;
|
|
15168
15203
|
return Object.assign(Object.assign({}, entity), { id: i++, name });
|
|
15169
15204
|
}));
|
|
@@ -15173,7 +15208,7 @@ function deepCopy(values, size) {
|
|
|
15173
15208
|
class AutocompleteTestPage {
|
|
15174
15209
|
constructor(formBuilder) {
|
|
15175
15210
|
this.formBuilder = formBuilder;
|
|
15176
|
-
this._items = deepCopy(FAKE_ENTITIES, 100);
|
|
15211
|
+
this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
|
|
15177
15212
|
this.$items = new BehaviorSubject(undefined);
|
|
15178
15213
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
15179
15214
|
this.memoryHide = false;
|
|
@@ -15217,7 +15252,7 @@ class AutocompleteTestPage {
|
|
|
15217
15252
|
});
|
|
15218
15253
|
// From items
|
|
15219
15254
|
this.autocompleteFields.add('entity-items-large', {
|
|
15220
|
-
items: FAKE_ENTITIES.slice(),
|
|
15255
|
+
items: FAKE_ENTITIES$1.slice(),
|
|
15221
15256
|
attributes: ['label', 'name', 'description', 'comments'],
|
|
15222
15257
|
displayWith: this.entityToString
|
|
15223
15258
|
});
|
|
@@ -15227,12 +15262,12 @@ class AutocompleteTestPage {
|
|
|
15227
15262
|
loadData() {
|
|
15228
15263
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15229
15264
|
const data = {
|
|
15230
|
-
entity: deepCopy(FAKE_ENTITIES)[0],
|
|
15265
|
+
entity: deepCopy$1(FAKE_ENTITIES$1)[0],
|
|
15231
15266
|
// This item is NOT in the items list => i should be displayed anyway
|
|
15232
15267
|
missingEntity: {
|
|
15233
15268
|
id: -1, label: '??', name: 'Missing item'
|
|
15234
15269
|
},
|
|
15235
|
-
disableEntity: deepCopy(FAKE_ENTITIES)[2]
|
|
15270
|
+
disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
|
|
15236
15271
|
};
|
|
15237
15272
|
this.form.setValue(data);
|
|
15238
15273
|
// Load observables
|
|
@@ -15405,13 +15440,13 @@ MaterialTestingPage.ctorParameters = () => [
|
|
|
15405
15440
|
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
|
|
15406
15441
|
];
|
|
15407
15442
|
|
|
15408
|
-
const moment$
|
|
15443
|
+
const moment$1 = momentImported;
|
|
15409
15444
|
class SwipeTestPage {
|
|
15410
15445
|
constructor(formBuilder, dateFormatPipe) {
|
|
15411
15446
|
this.formBuilder = formBuilder;
|
|
15412
15447
|
this.dateFormatPipe = dateFormatPipe;
|
|
15413
15448
|
this.$dates = new BehaviorSubject(undefined);
|
|
15414
|
-
this._today = moment$
|
|
15449
|
+
this._today = moment$1().startOf('day');
|
|
15415
15450
|
this.form = formBuilder.group({
|
|
15416
15451
|
empty: [null, Validators.required],
|
|
15417
15452
|
date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
|
|
@@ -15424,7 +15459,7 @@ class SwipeTestPage {
|
|
|
15424
15459
|
ngOnInit() {
|
|
15425
15460
|
const dates = [];
|
|
15426
15461
|
for (let d = 0; d < 7; d++) {
|
|
15427
|
-
dates[d] = moment$
|
|
15462
|
+
dates[d] = moment$1(this._today).add(d - 3, 'day');
|
|
15428
15463
|
}
|
|
15429
15464
|
this.$dates.next(dates);
|
|
15430
15465
|
this.loadData();
|
|
@@ -16041,7 +16076,7 @@ class FormArrayHelper {
|
|
|
16041
16076
|
}
|
|
16042
16077
|
}
|
|
16043
16078
|
|
|
16044
|
-
const moment
|
|
16079
|
+
const moment = momentImported;
|
|
16045
16080
|
class DateTimeTestPage {
|
|
16046
16081
|
constructor(platform, formBuilder, cd) {
|
|
16047
16082
|
this.platform = platform;
|
|
@@ -16072,7 +16107,7 @@ class DateTimeTestPage {
|
|
|
16072
16107
|
// Load the form with data
|
|
16073
16108
|
loadData() {
|
|
16074
16109
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16075
|
-
const now = moment
|
|
16110
|
+
const now = moment();
|
|
16076
16111
|
const data = {
|
|
16077
16112
|
empty: toDateISOString(now.clone().add(2, 'hours')),
|
|
16078
16113
|
enable: toDateISOString(now),
|
|
@@ -16132,20 +16167,20 @@ DateTimeTestPage.ctorParameters = () => [
|
|
|
16132
16167
|
{ type: ChangeDetectorRef }
|
|
16133
16168
|
];
|
|
16134
16169
|
|
|
16135
|
-
class EntityTestClass
|
|
16170
|
+
class EntityTestClass {
|
|
16136
16171
|
}
|
|
16137
|
-
const FAKE_ENTITIES
|
|
16172
|
+
const FAKE_ENTITIES = [
|
|
16138
16173
|
{ id: 1, label: 'AAA', name: 'Item A' },
|
|
16139
16174
|
{ id: 2, label: 'BBB', name: 'Item B' },
|
|
16140
16175
|
{ id: 3, label: 'CCC', name: 'Item C' }
|
|
16141
16176
|
];
|
|
16142
|
-
function deepCopy
|
|
16143
|
-
return (values || FAKE_ENTITIES
|
|
16177
|
+
function deepCopy(values) {
|
|
16178
|
+
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
16144
16179
|
}
|
|
16145
16180
|
class ChipsTestPage {
|
|
16146
16181
|
constructor(formBuilder) {
|
|
16147
16182
|
this.formBuilder = formBuilder;
|
|
16148
|
-
this._items = deepCopy
|
|
16183
|
+
this._items = deepCopy(FAKE_ENTITIES);
|
|
16149
16184
|
this._$items = new BehaviorSubject(undefined);
|
|
16150
16185
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
16151
16186
|
this.form = formBuilder.group({
|
|
@@ -16164,7 +16199,7 @@ class ChipsTestPage {
|
|
|
16164
16199
|
});
|
|
16165
16200
|
// From items
|
|
16166
16201
|
this.autocompleteFields.add('entity-items', {
|
|
16167
|
-
items: FAKE_ENTITIES
|
|
16202
|
+
items: FAKE_ENTITIES.slice(),
|
|
16168
16203
|
attributes: ['label', 'name'],
|
|
16169
16204
|
displayWith: this.entityToString
|
|
16170
16205
|
});
|
|
@@ -16185,15 +16220,15 @@ class ChipsTestPage {
|
|
|
16185
16220
|
const data = {
|
|
16186
16221
|
entity: [],
|
|
16187
16222
|
// THis item is NOT in the items list => i should be displayed anyway
|
|
16188
|
-
entityInitial: FAKE_ENTITIES
|
|
16189
|
-
disableEntity: FAKE_ENTITIES
|
|
16223
|
+
entityInitial: FAKE_ENTITIES.slice(1, 2),
|
|
16224
|
+
disableEntity: FAKE_ENTITIES.slice(1, 2)
|
|
16190
16225
|
};
|
|
16191
16226
|
this.form.setValue(data);
|
|
16192
16227
|
});
|
|
16193
16228
|
}
|
|
16194
16229
|
loadItems() {
|
|
16195
16230
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16196
|
-
this._$items.next(deepCopy
|
|
16231
|
+
this._$items.next(deepCopy(FAKE_ENTITIES));
|
|
16197
16232
|
});
|
|
16198
16233
|
}
|
|
16199
16234
|
entityToString(item) {
|
|
@@ -16225,7 +16260,7 @@ ChipsTestPage.ctorParameters = () => [
|
|
|
16225
16260
|
{ type: FormBuilder }
|
|
16226
16261
|
];
|
|
16227
16262
|
|
|
16228
|
-
const routes = [
|
|
16263
|
+
const routes$1 = [
|
|
16229
16264
|
{
|
|
16230
16265
|
path: '',
|
|
16231
16266
|
pathMatch: 'full',
|
|
@@ -16272,7 +16307,7 @@ MaterialTestingModule.decorators = [
|
|
|
16272
16307
|
ReactiveFormsModule,
|
|
16273
16308
|
SharedMaterialModule,
|
|
16274
16309
|
TranslateModule.forChild(),
|
|
16275
|
-
RouterModule.forChild(routes)
|
|
16310
|
+
RouterModule.forChild(routes$1)
|
|
16276
16311
|
],
|
|
16277
16312
|
declarations: [
|
|
16278
16313
|
MaterialTestingPage,
|
|
@@ -17215,7 +17250,7 @@ class UserSettingsValidatorService extends AppValidatorService {
|
|
|
17215
17250
|
});
|
|
17216
17251
|
}
|
|
17217
17252
|
}
|
|
17218
|
-
UserSettingsValidatorService.ɵprov =
|
|
17253
|
+
UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
|
|
17219
17254
|
UserSettingsValidatorService.decorators = [
|
|
17220
17255
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17221
17256
|
];
|
|
@@ -17259,7 +17294,7 @@ class AccountValidatorService extends AppValidatorService {
|
|
|
17259
17294
|
return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
|
|
17260
17295
|
}
|
|
17261
17296
|
}
|
|
17262
|
-
AccountValidatorService.ɵprov =
|
|
17297
|
+
AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
|
|
17263
17298
|
AccountValidatorService.decorators = [
|
|
17264
17299
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17265
17300
|
];
|
|
@@ -17793,7 +17828,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
|
|
|
17793
17828
|
});
|
|
17794
17829
|
}
|
|
17795
17830
|
}
|
|
17796
|
-
LocalSettingsValidatorService.ɵprov =
|
|
17831
|
+
LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
|
|
17797
17832
|
LocalSettingsValidatorService.decorators = [
|
|
17798
17833
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17799
17834
|
];
|
|
@@ -18413,7 +18448,7 @@ class IsOnFieldModePipe {
|
|
|
18413
18448
|
return value === 'FIELD';
|
|
18414
18449
|
}
|
|
18415
18450
|
}
|
|
18416
|
-
IsOnFieldModePipe.ɵprov =
|
|
18451
|
+
IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
|
|
18417
18452
|
IsOnFieldModePipe.decorators = [
|
|
18418
18453
|
{ type: Pipe, args: [{
|
|
18419
18454
|
name: 'isOnField'
|
|
@@ -18425,7 +18460,7 @@ class IsNotOnFieldModePipe {
|
|
|
18425
18460
|
return value !== 'FIELD';
|
|
18426
18461
|
}
|
|
18427
18462
|
}
|
|
18428
|
-
IsNotOnFieldModePipe.ɵprov =
|
|
18463
|
+
IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
|
|
18429
18464
|
IsNotOnFieldModePipe.decorators = [
|
|
18430
18465
|
{ type: Pipe, args: [{
|
|
18431
18466
|
name: 'isNotOnField'
|
|
@@ -18440,7 +18475,7 @@ class PersonToStringPipe {
|
|
|
18440
18475
|
return PersonUtils.personToString(value);
|
|
18441
18476
|
}
|
|
18442
18477
|
}
|
|
18443
|
-
PersonToStringPipe.ɵprov =
|
|
18478
|
+
PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
|
|
18444
18479
|
PersonToStringPipe.decorators = [
|
|
18445
18480
|
{ type: Pipe, args: [{
|
|
18446
18481
|
name: 'personToString'
|
|
@@ -18448,6 +18483,9 @@ PersonToStringPipe.decorators = [
|
|
|
18448
18483
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
18449
18484
|
];
|
|
18450
18485
|
|
|
18486
|
+
const MimeTypes = Object.freeze({
|
|
18487
|
+
ANDROID_APK: 'application/vnd.android.package-archive'
|
|
18488
|
+
});
|
|
18451
18489
|
class AppInstallUpgradeCard {
|
|
18452
18490
|
constructor(modalCtrl, configService, platform, cd, network, environment) {
|
|
18453
18491
|
this.modalCtrl = modalCtrl;
|
|
@@ -18464,6 +18502,7 @@ class AppInstallUpgradeCard {
|
|
|
18464
18502
|
this.showOfflineWarning = true;
|
|
18465
18503
|
this.showInstallButton = false;
|
|
18466
18504
|
this.onUpdateOfflineModeClick = new EventEmitter();
|
|
18505
|
+
this.isAndroidCordova = platform.isAndroidCordova();
|
|
18467
18506
|
}
|
|
18468
18507
|
set showUpdateOfflineFeature(value) {
|
|
18469
18508
|
if (value === this._showUpdateOfflineFeature)
|
|
@@ -18507,15 +18546,14 @@ class AppInstallUpgradeCard {
|
|
|
18507
18546
|
ngOnDestroy() {
|
|
18508
18547
|
this._subscription.unsubscribe();
|
|
18509
18548
|
}
|
|
18510
|
-
|
|
18511
|
-
if (!url)
|
|
18549
|
+
downloadLink(event, link) {
|
|
18550
|
+
if (!link || !link.url)
|
|
18512
18551
|
return; // Skip
|
|
18513
|
-
|
|
18514
|
-
|
|
18515
|
-
|
|
18516
|
-
|
|
18517
|
-
|
|
18518
|
-
return false;
|
|
18552
|
+
this.platform.download({
|
|
18553
|
+
uri: link.url,
|
|
18554
|
+
filename: link.downloadFilename,
|
|
18555
|
+
mimeType: link.mimeType
|
|
18556
|
+
});
|
|
18519
18557
|
}
|
|
18520
18558
|
tryOnline() {
|
|
18521
18559
|
this.waitingNetwork = true;
|
|
@@ -18540,10 +18578,10 @@ class AppInstallUpgradeCard {
|
|
|
18540
18578
|
return '';
|
|
18541
18579
|
}
|
|
18542
18580
|
}
|
|
18543
|
-
|
|
18544
|
-
return;
|
|
18581
|
+
asLink(value) {
|
|
18582
|
+
return value;
|
|
18545
18583
|
}
|
|
18546
|
-
/* --
|
|
18584
|
+
/* -- private method -- */
|
|
18547
18585
|
getCompatibleInstallLinks(installLinks) {
|
|
18548
18586
|
// Cordova already running: not need to install
|
|
18549
18587
|
if (this.platform.is('cordova'))
|
|
@@ -18580,11 +18618,14 @@ class AppInstallUpgradeCard {
|
|
|
18580
18618
|
if (url) {
|
|
18581
18619
|
let downloadFilename;
|
|
18582
18620
|
let version;
|
|
18621
|
+
let mimeType;
|
|
18583
18622
|
// Get file name
|
|
18584
18623
|
const filename = this.getFilename(url);
|
|
18585
18624
|
version = config.getProperty(CORE_CONFIG_OPTIONS.APP_MIN_VERSION);
|
|
18586
18625
|
// OK, this is a downloadable APK file (e.g. NOT a link to a playstore)
|
|
18587
18626
|
if (filename === null || filename === void 0 ? void 0 : filename.endsWith('.apk')) {
|
|
18627
|
+
// Define mime type
|
|
18628
|
+
mimeType = MimeTypes.ANDROID_APK;
|
|
18588
18629
|
// Get the file version (if any)
|
|
18589
18630
|
const versionMatches = /-v([1-9][0-9]*\.[0-9]+\.(:?(:?alpha|beta|rc)?[0-9]*))/i.exec(filename);
|
|
18590
18631
|
version = versionMatches && versionMatches[1] || version;
|
|
@@ -18601,7 +18642,7 @@ class AppInstallUpgradeCard {
|
|
|
18601
18642
|
}
|
|
18602
18643
|
}
|
|
18603
18644
|
}
|
|
18604
|
-
result.push({ name, url, platform: 'android', version, downloadFilename });
|
|
18645
|
+
result.push({ name, url, platform: 'android', version, downloadFilename, mimeType });
|
|
18605
18646
|
}
|
|
18606
18647
|
}
|
|
18607
18648
|
// iOS - TODO
|
|
@@ -18629,7 +18670,7 @@ class AppInstallUpgradeCard {
|
|
|
18629
18670
|
AppInstallUpgradeCard.decorators = [
|
|
18630
18671
|
{ type: Component, args: [{
|
|
18631
18672
|
selector: 'app-install-upgrade-card',
|
|
18632
|
-
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
|
|
18673
|
+
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",
|
|
18633
18674
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18634
18675
|
animations: [slideUpDownAnimation],
|
|
18635
18676
|
styles: ["ion-text small{font-size:85%}"]
|
|
@@ -18657,7 +18698,7 @@ class IsLoginAccountPipe {
|
|
|
18657
18698
|
return value && value.pubkey && true;
|
|
18658
18699
|
}
|
|
18659
18700
|
}
|
|
18660
|
-
IsLoginAccountPipe.ɵprov =
|
|
18701
|
+
IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
|
|
18661
18702
|
IsLoginAccountPipe.decorators = [
|
|
18662
18703
|
{ type: Pipe, args: [{
|
|
18663
18704
|
name: 'isLogin'
|
|
@@ -18669,7 +18710,7 @@ class AccountToStringPipe {
|
|
|
18669
18710
|
return accountToString(value);
|
|
18670
18711
|
}
|
|
18671
18712
|
}
|
|
18672
|
-
AccountToStringPipe.ɵprov =
|
|
18713
|
+
AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
|
|
18673
18714
|
AccountToStringPipe.decorators = [
|
|
18674
18715
|
{ type: Pipe, args: [{
|
|
18675
18716
|
name: 'accountToString'
|
|
@@ -18684,7 +18725,7 @@ class DepartmentToStringPipe {
|
|
|
18684
18725
|
return departmentToString(value);
|
|
18685
18726
|
}
|
|
18686
18727
|
}
|
|
18687
|
-
DepartmentToStringPipe.ɵprov =
|
|
18728
|
+
DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
|
|
18688
18729
|
DepartmentToStringPipe.decorators = [
|
|
18689
18730
|
{ type: Pipe, args: [{
|
|
18690
18731
|
name: 'departmentToString'
|
|
@@ -18710,7 +18751,7 @@ class MenuService {
|
|
|
18710
18751
|
this._visibleSubject.next(value);
|
|
18711
18752
|
}
|
|
18712
18753
|
}
|
|
18713
|
-
MenuService.ɵprov =
|
|
18754
|
+
MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
|
|
18714
18755
|
MenuService.decorators = [
|
|
18715
18756
|
{ type: Injectable, args: [{
|
|
18716
18757
|
providedIn: 'root'
|
|
@@ -19204,7 +19245,7 @@ class AuthGuardService {
|
|
|
19204
19245
|
}));
|
|
19205
19246
|
}
|
|
19206
19247
|
}
|
|
19207
|
-
AuthGuardService.ɵprov =
|
|
19248
|
+
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" });
|
|
19208
19249
|
AuthGuardService.decorators = [
|
|
19209
19250
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
19210
19251
|
];
|
|
@@ -19252,7 +19293,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19252
19293
|
query,
|
|
19253
19294
|
variables: { id },
|
|
19254
19295
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
19255
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19296
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19256
19297
|
})
|
|
19257
19298
|
.pipe(map(({ data }) => (!opts || opts.toEntity !== false)
|
|
19258
19299
|
? (data && this.fromObject(data))
|
|
@@ -19267,7 +19308,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19267
19308
|
query,
|
|
19268
19309
|
variables: { id },
|
|
19269
19310
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
19270
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19311
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19271
19312
|
});
|
|
19272
19313
|
// Convert to entity
|
|
19273
19314
|
return (!opts || opts.toEntity !== false)
|
|
@@ -19298,7 +19339,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19298
19339
|
totalFieldName: withTotal ? 'total' : undefined,
|
|
19299
19340
|
insertFilterFn: filter && filter.asFilterFn(),
|
|
19300
19341
|
variables,
|
|
19301
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
|
|
19342
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
|
|
19302
19343
|
fetchPolicy: opts && opts.fetchPolicy || undefined
|
|
19303
19344
|
})
|
|
19304
19345
|
.pipe(map(({ data, total }) => {
|
|
@@ -19334,7 +19375,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19334
19375
|
const { data, total } = yield this.graphql.query({
|
|
19335
19376
|
query,
|
|
19336
19377
|
variables,
|
|
19337
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
|
|
19378
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
|
|
19338
19379
|
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
19339
19380
|
});
|
|
19340
19381
|
const entities = (!opts || opts.toEntity !== false) ?
|
|
@@ -19373,7 +19414,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19373
19414
|
variables: {
|
|
19374
19415
|
filter: filter && filter.asPodObject()
|
|
19375
19416
|
},
|
|
19376
|
-
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
|
|
19417
|
+
error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
|
|
19377
19418
|
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
19378
19419
|
});
|
|
19379
19420
|
return res.total;
|
|
@@ -19406,7 +19447,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19406
19447
|
variables: {
|
|
19407
19448
|
data: json
|
|
19408
19449
|
},
|
|
19409
|
-
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19450
|
+
error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19410
19451
|
update: (proxy, { data }) => {
|
|
19411
19452
|
const savedEntities = data && data.data;
|
|
19412
19453
|
if (savedEntities) {
|
|
@@ -19462,7 +19503,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19462
19503
|
variables: {
|
|
19463
19504
|
data: json
|
|
19464
19505
|
},
|
|
19465
|
-
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19506
|
+
error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19466
19507
|
update: (cache, { data }) => {
|
|
19467
19508
|
// Update entity
|
|
19468
19509
|
const savedEntity = data && data.data;
|
|
@@ -19510,7 +19551,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19510
19551
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19511
19552
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19512
19553
|
variables: { ids },
|
|
19513
|
-
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19554
|
+
error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19514
19555
|
update: (cache, res) => {
|
|
19515
19556
|
// Remove from cache
|
|
19516
19557
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19551,7 +19592,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19551
19592
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19552
19593
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19553
19594
|
variables: { id },
|
|
19554
|
-
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19595
|
+
error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19555
19596
|
update: (proxy, res) => {
|
|
19556
19597
|
// Remove from cache
|
|
19557
19598
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19584,7 +19625,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19584
19625
|
query: opts && opts.query || this.subscriptions.listenChanges,
|
|
19585
19626
|
variables,
|
|
19586
19627
|
error: {
|
|
19587
|
-
code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
|
|
19628
|
+
code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
|
|
19588
19629
|
message: 'ERROR.SUBSCRIBE_DATA_ERROR'
|
|
19589
19630
|
}
|
|
19590
19631
|
})
|
|
@@ -19759,7 +19800,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
19759
19800
|
if (this._debug)
|
|
19760
19801
|
invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
|
|
19761
19802
|
// Stop with an error
|
|
19762
|
-
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
19803
|
+
throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
19763
19804
|
}
|
|
19764
19805
|
this._editingRowCount = 0;
|
|
19765
19806
|
let data;
|
|
@@ -20581,14 +20622,14 @@ class AppTable {
|
|
|
20581
20622
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20582
20623
|
opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
|
|
20583
20624
|
if (this.readOnly) {
|
|
20584
|
-
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20625
|
+
throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20585
20626
|
}
|
|
20586
20627
|
this.resetError();
|
|
20587
20628
|
// Keep edited row id (should be done BEFORE confirmEditCreate() )
|
|
20588
20629
|
this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
|
|
20589
20630
|
const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
|
|
20590
20631
|
if (!this.confirmEditCreate()) {
|
|
20591
|
-
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
20632
|
+
throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
20592
20633
|
}
|
|
20593
20634
|
// Mark as saving
|
|
20594
20635
|
this.markAsSaving();
|
|
@@ -20704,7 +20745,7 @@ class AppTable {
|
|
|
20704
20745
|
deleteRows(event, rows, opts) {
|
|
20705
20746
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20706
20747
|
if (this.readOnly) {
|
|
20707
|
-
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20748
|
+
throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20708
20749
|
}
|
|
20709
20750
|
if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
|
|
20710
20751
|
return 0; // SKip
|
|
@@ -22135,7 +22176,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
22135
22176
|
try {
|
|
22136
22177
|
const data = yield this.dataService.load(id, opts);
|
|
22137
22178
|
if (!data)
|
|
22138
|
-
throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
|
|
22179
|
+
throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
|
|
22139
22180
|
this._usageMode = this.computeUsageMode(data);
|
|
22140
22181
|
yield this.onEntityLoaded(data, opts);
|
|
22141
22182
|
yield this.updateView(data, opts);
|
|
@@ -23028,7 +23069,7 @@ class UserEventService extends BaseGraphqlService {
|
|
|
23028
23069
|
EntityUtils.copyIdAndUpdateDate(source, target);
|
|
23029
23070
|
}
|
|
23030
23071
|
}
|
|
23031
|
-
UserEventService.ɵprov =
|
|
23072
|
+
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" });
|
|
23032
23073
|
UserEventService.decorators = [
|
|
23033
23074
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23034
23075
|
];
|
|
@@ -23365,12 +23406,12 @@ class PersonService extends BaseEntityService {
|
|
|
23365
23406
|
};
|
|
23366
23407
|
});
|
|
23367
23408
|
}
|
|
23368
|
-
suggest(value, filter) {
|
|
23409
|
+
suggest(value, filter, sortBy, sortDirection) {
|
|
23369
23410
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23370
23411
|
if (ReferentialUtils.isNotEmpty(value))
|
|
23371
23412
|
return { data: [value] };
|
|
23372
23413
|
value = (typeof value === 'string' && value !== '*') && value || undefined;
|
|
23373
|
-
return this.loadAll(0, !value ? 30 : 10,
|
|
23414
|
+
return this.loadAll(0, !value ? 30 : 10, sortBy || (filter === null || filter === void 0 ? void 0 : filter.searchAttribute), sortDirection, Object.assign(Object.assign({}, filter), { searchText: value, statusIds: filter && filter.statusIds || [StatusIds.ENABLE], userProfiles: filter && filter.userProfiles }), { withTotal: true /* need by autocomplete */ });
|
|
23374
23415
|
});
|
|
23375
23416
|
}
|
|
23376
23417
|
executeImport(progression, opts) {
|
|
@@ -23410,7 +23451,7 @@ class PersonService extends BaseEntityService {
|
|
|
23410
23451
|
return target;
|
|
23411
23452
|
}
|
|
23412
23453
|
}
|
|
23413
|
-
PersonService.ɵprov =
|
|
23454
|
+
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" });
|
|
23414
23455
|
PersonService.decorators = [
|
|
23415
23456
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23416
23457
|
];
|
|
@@ -23441,7 +23482,7 @@ class PersonValidatorService {
|
|
|
23441
23482
|
return this.formBuilder.group(formConfig);
|
|
23442
23483
|
}
|
|
23443
23484
|
}
|
|
23444
|
-
PersonValidatorService.ɵprov =
|
|
23485
|
+
PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1$6.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
|
|
23445
23486
|
PersonValidatorService.decorators = [
|
|
23446
23487
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23447
23488
|
];
|
|
@@ -23597,7 +23638,7 @@ UsersPage.decorators = [
|
|
|
23597
23638
|
],
|
|
23598
23639
|
animations: [slideUpDownAnimation],
|
|
23599
23640
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
23600
|
-
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}"]
|
|
23641
|
+
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}"]
|
|
23601
23642
|
},] }
|
|
23602
23643
|
];
|
|
23603
23644
|
UsersPage.ctorParameters = () => [
|
|
@@ -23645,16 +23686,16 @@ AdminModule.decorators = [
|
|
|
23645
23686
|
];
|
|
23646
23687
|
AdminModule.ctorParameters = () => [];
|
|
23647
23688
|
|
|
23648
|
-
const ɵ0
|
|
23689
|
+
const ɵ0 = {
|
|
23649
23690
|
profile: 'ADMIN'
|
|
23650
23691
|
};
|
|
23651
|
-
const routes
|
|
23692
|
+
const routes = [
|
|
23652
23693
|
{
|
|
23653
23694
|
path: 'users',
|
|
23654
23695
|
pathMatch: 'full',
|
|
23655
23696
|
component: UsersPage,
|
|
23656
23697
|
canActivate: [AuthGuardService],
|
|
23657
|
-
data: ɵ0
|
|
23698
|
+
data: ɵ0
|
|
23658
23699
|
}
|
|
23659
23700
|
];
|
|
23660
23701
|
class AdminRoutingModule {
|
|
@@ -23664,13 +23705,13 @@ AdminRoutingModule.decorators = [
|
|
|
23664
23705
|
imports: [
|
|
23665
23706
|
SharedRoutingModule,
|
|
23666
23707
|
AdminModule,
|
|
23667
|
-
RouterModule.forChild(routes
|
|
23708
|
+
RouterModule.forChild(routes)
|
|
23668
23709
|
],
|
|
23669
23710
|
exports: [RouterModule]
|
|
23670
23711
|
},] }
|
|
23671
23712
|
];
|
|
23672
23713
|
|
|
23673
|
-
const ErrorCodes
|
|
23714
|
+
const ErrorCodes = {
|
|
23674
23715
|
LOAD_PERSONS_ERROR: 100,
|
|
23675
23716
|
SAVE_PERSONS_ERROR: 101,
|
|
23676
23717
|
DELETE_PERSONS_ERROR: 102,
|
|
@@ -23682,5 +23723,5 @@ const ErrorCodes$2 = {
|
|
|
23682
23723
|
* Generated bundle index. Do not edit.
|
|
23683
23724
|
*/
|
|
23684
23725
|
|
|
23685
|
-
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
|
|
23726
|
+
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 };
|
|
23686
23727
|
//# sourceMappingURL=ngx-sumaris-components.js.map
|