@sumaris-net/ngx-components 0.25.14 → 0.25.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sumaris-net.ngx-components.umd.js +267 -291
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/esm2015/public_api.js +2 -1
- package/esm2015/src/app/core/form/form.utils.js +1 -1
- package/esm2015/src/app/core/services/model/entity.model.js +1 -1
- package/esm2015/src/app/core/table/table.class.js +6 -6
- package/esm2015/src/app/shared/material/autocomplete/testing/autocomplete.test.js +2 -2
- package/esm2015/src/app/shared/pipes/form.pipes.js +1 -1
- package/esm2015/src/app/shared/validator/form-error-adapter.class.js +1 -1
- package/fesm2015/sumaris-net.ngx-components.js +263 -278
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -0
- package/src/app/core/services/model/entity.model.d.ts +2 -2
- package/src/app/core/table/table.class.d.ts +2 -1
- package/src/app/shared/pipes/form.pipes.d.ts +2 -2
- package/src/app/shared/validator/form-error-adapter.class.d.ts +3 -3
- package/src/theme/_ngx-components.scss +6 -0
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, Injector, Renderer2 } from '@angular/core';
|
|
3
|
-
import * as i1$3 from '@angular/common';
|
|
1
|
+
import { InjectionToken, EventEmitter, forwardRef, Component, ChangeDetectionStrategy, ChangeDetectorRef, Optional, Input, HostBinding, Output, ViewChild, ɵɵdefineInjectable, ɵɵinject, Pipe, Injectable, Directive, Inject, NgModule, ElementRef, ViewChildren, HostListener, ComponentFactoryResolver, ApplicationRef, INJECTOR, Injector, Renderer2 } from '@angular/core';
|
|
4
2
|
import { CommonModule, DOCUMENT, Location } from '@angular/common';
|
|
5
3
|
import { CdkTableModule } from '@angular/cdk/table';
|
|
6
4
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
7
5
|
import { OverlayModule, OverlayContainer, FullscreenOverlayContainer, Overlay } from '@angular/cdk/overlay';
|
|
8
6
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
9
|
-
import * as i1$2 from '@angular/material/core';
|
|
10
7
|
import { DateAdapter, MatCommonModule, MatRippleModule } from '@angular/material/core';
|
|
11
8
|
import { MatTableModule, MatTable, MatColumnDef } from '@angular/material/table';
|
|
12
9
|
import { MatSortModule, MatSort } from '@angular/material/sort';
|
|
@@ -30,21 +27,16 @@ import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
|
30
27
|
import { MatRadioModule } from '@angular/material/radio';
|
|
31
28
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
32
29
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
33
|
-
import * as i2$1 from '@angular/material/dialog';
|
|
34
30
|
import { MatDialogModule, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
|
|
35
31
|
import { MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteModule, MAT_AUTOCOMPLETE_SCROLL_STRATEGY, MAT_AUTOCOMPLETE_DEFAULT_OPTIONS } from '@angular/material/autocomplete';
|
|
36
32
|
import { __awaiter, __decorate } from 'tslib';
|
|
37
|
-
import * as i1$6 from '@angular/forms';
|
|
38
33
|
import { NG_VALUE_ACCESSOR, FormGroupDirective, AbstractControl, FormGroup, FormArray, FormControl, ReactiveFormsModule, Validators, FormBuilder } from '@angular/forms';
|
|
39
34
|
import { timer, merge, fromEvent, Subscription, BehaviorSubject, Subject, isObservable, of, noop as noop$8, Observable, defer, from, combineLatest, EMPTY } from 'rxjs';
|
|
40
35
|
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';
|
|
42
36
|
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
43
|
-
import * as i1$4 from '@ionic/angular';
|
|
44
37
|
import { IonicModule, Platform, IonRouterOutlet, ModalController, IonicSafeString, createAnimation, ToastController, AlertController, IonicRouteStrategy, NavParams, MenuController, IonContent } from '@ionic/angular';
|
|
45
38
|
import * as momentImported from 'moment';
|
|
46
39
|
import { isMoment } from 'moment';
|
|
47
|
-
import * as i1 from '@angular/material-moment-adapter';
|
|
48
40
|
import { MomentDateAdapter, MatMomentDateModule } from '@angular/material-moment-adapter';
|
|
49
41
|
import { Keyboard } from '@ionic-native/keyboard/ngx';
|
|
50
42
|
import { TextMaskModule } from 'angular2-text-mask';
|
|
@@ -54,38 +46,32 @@ import { trigger, state, style, transition, animate } from '@angular/animations'
|
|
|
54
46
|
import { MatDividerModule } from '@angular/material/divider';
|
|
55
47
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
56
48
|
import { MatChipsModule } from '@angular/material/chips';
|
|
57
|
-
import * as i3$3 from '@angular/router';
|
|
58
49
|
import { Router, RouterModule, RouteReuseStrategy, ActivatedRoute } from '@angular/router';
|
|
59
|
-
import * as i1$5 from '@angular/platform-browser';
|
|
60
50
|
import { HammerGestureConfig, EventManager } from '@angular/platform-browser';
|
|
61
|
-
import * as i2$2 from '@angular/common/http';
|
|
62
51
|
import { HttpResponse, HttpClient, HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
|
|
63
52
|
import { ColorPickerModule } from 'ngx-color-picker';
|
|
64
|
-
import { NativeAudio } from '@ionic-native/native-audio/ngx';
|
|
65
|
-
import { Vibration } from '@ionic-native/vibration/ngx';
|
|
53
|
+
import { NativeAudio as NativeAudio$1 } from '@ionic-native/native-audio/ngx';
|
|
54
|
+
import { Vibration as Vibration$1 } from '@ionic-native/vibration/ngx';
|
|
66
55
|
import { AudioManagement } from '@ionic-native/audio-management/ngx';
|
|
67
|
-
import
|
|
68
|
-
import
|
|
69
|
-
import
|
|
56
|
+
import { NativeAudio } from '@ionic-native/native-audio/ngx/index';
|
|
57
|
+
import { Vibration } from '@ionic-native/vibration/ngx/index';
|
|
58
|
+
import { AudioManagement as AudioManagement$1 } from '@ionic-native/audio-management/ngx/index';
|
|
70
59
|
import * as uuidv4Imported from 'uuid/v4';
|
|
71
60
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
72
61
|
import { MarkdownModule } from 'ngx-markdown';
|
|
73
62
|
import { sign, box, hash, verify } from 'tweetnacl';
|
|
74
|
-
import * as i3$1 from '@ionic/storage';
|
|
75
63
|
import { Storage, IonicStorageModule } from '@ionic/storage';
|
|
76
64
|
import 'zone.js/dist/zone-error';
|
|
77
|
-
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
|
|
78
|
-
import { Connection, Network } from '@ionic-native/network/ngx';
|
|
79
|
-
import { CacheService, CacheModule } from 'ionic-cache';
|
|
80
|
-
import
|
|
81
|
-
import
|
|
82
|
-
import
|
|
83
|
-
import { StatusBar } from '@ionic-native/status-bar/ngx';
|
|
84
|
-
import * as i2$4 from '@angular/cdk/platform';
|
|
65
|
+
import { SplashScreen as SplashScreen$1 } from '@ionic-native/splash-screen/ngx';
|
|
66
|
+
import { Connection, Network as Network$1 } from '@ionic-native/network/ngx';
|
|
67
|
+
import { CacheService as CacheService$1, CacheModule } from 'ionic-cache';
|
|
68
|
+
import { CacheService } from 'ionic-cache/dist/cache.service';
|
|
69
|
+
import { Network } from '@ionic-native/network/ngx/index';
|
|
70
|
+
import { SplashScreen } from '@ionic-native/splash-screen/ngx/index';
|
|
71
|
+
import { StatusBar as StatusBar$1 } from '@ionic-native/status-bar/ngx';
|
|
85
72
|
import { Platform as Platform$1 } from '@angular/cdk/platform';
|
|
86
|
-
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx';
|
|
73
|
+
import { InAppBrowser as InAppBrowser$1 } from '@ionic-native/in-app-browser/ngx';
|
|
87
74
|
import { ApolloLink, NetworkStatus, InMemoryCache, ApolloClient, gql } from '@apollo/client/core';
|
|
88
|
-
import * as i2$3 from 'apollo-angular';
|
|
89
75
|
import { Apollo } from 'apollo-angular';
|
|
90
76
|
import { WebSocketLink } from '@apollo/client/link/ws';
|
|
91
77
|
import { getMainDefinition } from '@apollo/client/utilities';
|
|
@@ -93,14 +79,13 @@ import { RetryLink } from '@apollo/client/link/retry';
|
|
|
93
79
|
import QueueLink from 'apollo-link-queue';
|
|
94
80
|
import SerializingLink from 'apollo-link-serialize';
|
|
95
81
|
import loggerLink from 'apollo-link-logger';
|
|
96
|
-
import * as i3$2 from 'apollo-angular/http';
|
|
97
82
|
import { HttpLink } from 'apollo-angular/http';
|
|
98
83
|
import { IonicStorageWrapper, persistCache } from 'apollo3-cache-persist';
|
|
99
|
-
import { NotificationVisibility, Downloader } from '@ionic-native/downloader/ngx';
|
|
100
|
-
import
|
|
101
|
-
import
|
|
102
|
-
import
|
|
103
|
-
import
|
|
84
|
+
import { NotificationVisibility, Downloader as Downloader$1 } from '@ionic-native/downloader/ngx';
|
|
85
|
+
import { StatusBar } from '@ionic-native/status-bar/ngx/index';
|
|
86
|
+
import { Keyboard as Keyboard$1 } from '@ionic-native/keyboard/ngx/index';
|
|
87
|
+
import { InAppBrowser } from '@ionic-native/in-app-browser/ngx/index';
|
|
88
|
+
import { Downloader } from '@ionic-native/downloader/ngx/index';
|
|
104
89
|
import { ValidatorService, TableDataSource } from '@e-is/ngx-material-table';
|
|
105
90
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
106
91
|
import { NgxJdenticonModule } from 'ngx-jdenticon';
|
|
@@ -885,19 +870,19 @@ class MatAutocompleteConfigHolder {
|
|
|
885
870
|
return this.fields[fieldName] || this.add(fieldName);
|
|
886
871
|
}
|
|
887
872
|
}
|
|
888
|
-
const DEFAULT_VALUE_ACCESSOR
|
|
873
|
+
const DEFAULT_VALUE_ACCESSOR = {
|
|
889
874
|
provide: NG_VALUE_ACCESSOR,
|
|
890
875
|
useExisting: forwardRef(() => MatAutocompleteField),
|
|
891
876
|
multi: true
|
|
892
877
|
};
|
|
893
|
-
const noop
|
|
894
|
-
const ɵ0
|
|
878
|
+
const noop = () => { };
|
|
879
|
+
const ɵ0 = noop;
|
|
895
880
|
class MatAutocompleteField {
|
|
896
881
|
constructor(cd, formGroupDir) {
|
|
897
882
|
this.cd = cd;
|
|
898
883
|
this.formGroupDir = formGroupDir;
|
|
899
|
-
this._onChangeCallback = noop
|
|
900
|
-
this._onTouchedCallback = noop
|
|
884
|
+
this._onChangeCallback = noop;
|
|
885
|
+
this._onTouchedCallback = noop;
|
|
901
886
|
this._subscription = new Subscription();
|
|
902
887
|
this._filter$ = new BehaviorSubject(undefined);
|
|
903
888
|
this._reload$ = new Subject();
|
|
@@ -1491,7 +1476,7 @@ MatAutocompleteField.decorators = [
|
|
|
1491
1476
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1492
1477
|
selector: 'mat-autocomplete-field',
|
|
1493
1478
|
template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- readonly -->\n <ng-container>\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n </ng-container>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n [compareWith]=\"compareWith\"\n [multiple]=\"multiple\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as isLast\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count \" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
|
|
1494
|
-
providers: [DEFAULT_VALUE_ACCESSOR
|
|
1479
|
+
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
1495
1480
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1496
1481
|
styles: [":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}.fact-scroll-viewport{height:100%;width:100%}.fact-item{height:54px;display:flex}.fact-item .fact-date{min-width:100px;text-align:center;font-size:24pt}.fact-item .fact-date,.fact-item .fact-text{height:100%;align-items:center;justify-content:center;display:flex}.fact-item .fact-text{border-radius:10px}cdk-virtual-scroll-viewport{border:1px solid #000}cdk-virtual-scroll-viewport li{list-style:none}"]
|
|
1497
1482
|
},] }
|
|
@@ -1568,7 +1553,7 @@ class DateFormatPipe {
|
|
|
1568
1553
|
return this.dateAdapter.format(date, displayFormat);
|
|
1569
1554
|
}
|
|
1570
1555
|
}
|
|
1571
|
-
DateFormatPipe.ɵprov =
|
|
1556
|
+
DateFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(ɵɵinject(MomentDateAdapter), ɵɵinject(TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
|
|
1572
1557
|
DateFormatPipe.decorators = [
|
|
1573
1558
|
{ type: Pipe, args: [{
|
|
1574
1559
|
name: 'dateFormat'
|
|
@@ -1580,7 +1565,7 @@ DateFormatPipe.ctorParameters = () => [
|
|
|
1580
1565
|
{ type: TranslateService }
|
|
1581
1566
|
];
|
|
1582
1567
|
|
|
1583
|
-
const moment
|
|
1568
|
+
const moment = momentImported;
|
|
1584
1569
|
class DateDiffDurationPipe {
|
|
1585
1570
|
constructor(dateAdapter, translate) {
|
|
1586
1571
|
this.dateAdapter = dateAdapter;
|
|
@@ -1596,17 +1581,17 @@ class DateDiffDurationPipe {
|
|
|
1596
1581
|
return this.format(startDate, endDate);
|
|
1597
1582
|
}
|
|
1598
1583
|
format(startDate, endDate) {
|
|
1599
|
-
const duration = moment
|
|
1584
|
+
const duration = moment.duration(endDate.diff(startDate));
|
|
1600
1585
|
if (duration.asMinutes() < 0)
|
|
1601
1586
|
return '';
|
|
1602
|
-
const timeDuration = moment
|
|
1587
|
+
const timeDuration = moment(0)
|
|
1603
1588
|
.hour(duration.hours())
|
|
1604
1589
|
.minute(duration.minutes());
|
|
1605
1590
|
const days = Math.floor(duration.asDays());
|
|
1606
1591
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + timeDuration.format('HH:mm');
|
|
1607
1592
|
}
|
|
1608
1593
|
}
|
|
1609
|
-
DateDiffDurationPipe.ɵprov =
|
|
1594
|
+
DateDiffDurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(ɵɵinject(DateAdapter), ɵɵinject(TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
|
|
1610
1595
|
DateDiffDurationPipe.decorators = [
|
|
1611
1596
|
{ type: Pipe, args: [{
|
|
1612
1597
|
name: 'dateDiffDuration'
|
|
@@ -1627,7 +1612,7 @@ class DateFromNowPipe {
|
|
|
1627
1612
|
return date ? date.fromNow(args && args.withoutSuffix) : '';
|
|
1628
1613
|
}
|
|
1629
1614
|
}
|
|
1630
|
-
DateFromNowPipe.ɵprov =
|
|
1615
|
+
DateFromNowPipe.ɵprov = ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(ɵɵinject(MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
|
|
1631
1616
|
DateFromNowPipe.decorators = [
|
|
1632
1617
|
{ type: Pipe, args: [{
|
|
1633
1618
|
name: 'dateFromNow'
|
|
@@ -1696,7 +1681,7 @@ function formatToDD(value, opts) {
|
|
|
1696
1681
|
value *= -1;
|
|
1697
1682
|
}
|
|
1698
1683
|
}
|
|
1699
|
-
let degrees = roundFloat
|
|
1684
|
+
let degrees = roundFloat(value, opts.maxDecimals).toString();
|
|
1700
1685
|
// Add sign
|
|
1701
1686
|
let sign = negative ? '-' : '+';
|
|
1702
1687
|
if (opts.placeholderChar) {
|
|
@@ -1747,7 +1732,7 @@ function formatToDDMMSS(value, opts) {
|
|
|
1747
1732
|
}
|
|
1748
1733
|
let degrees = Math.trunc(value);
|
|
1749
1734
|
let minutes = Math.trunc((value - degrees) * 60);
|
|
1750
|
-
let seconds = roundFloat
|
|
1735
|
+
let seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
|
|
1751
1736
|
while (seconds >= 60) {
|
|
1752
1737
|
seconds -= 60;
|
|
1753
1738
|
minutes += 1;
|
|
@@ -1815,7 +1800,7 @@ function formatToDDMM(value, opts) {
|
|
|
1815
1800
|
}
|
|
1816
1801
|
}
|
|
1817
1802
|
let degrees = Math.trunc(value);
|
|
1818
|
-
let minutes = roundFloat
|
|
1803
|
+
let minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
|
|
1819
1804
|
while (minutes >= 60) {
|
|
1820
1805
|
minutes -= 60;
|
|
1821
1806
|
degrees += 1;
|
|
@@ -1866,15 +1851,15 @@ function parseLatitudeOrLongitude(input, pattern, maxDecimals, placeholderChar)
|
|
|
1866
1851
|
return NaN;
|
|
1867
1852
|
}
|
|
1868
1853
|
if (pattern === 'DD')
|
|
1869
|
-
return roundFloat
|
|
1854
|
+
return roundFloat(degrees, maxDecimals);
|
|
1870
1855
|
const minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
|
|
1871
1856
|
const seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
|
|
1872
1857
|
const direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
|
|
1873
1858
|
const sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
|
|
1874
1859
|
degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
|
|
1875
|
-
return roundFloat
|
|
1860
|
+
return roundFloat(degrees, maxDecimals);
|
|
1876
1861
|
}
|
|
1877
|
-
function roundFloat
|
|
1862
|
+
function roundFloat(input, maxDecimals) {
|
|
1878
1863
|
if (maxDecimals > 0) {
|
|
1879
1864
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
1880
1865
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -1894,7 +1879,7 @@ class LatLongFormatPipe {
|
|
|
1894
1879
|
return ((!args.type || args.type !== 'latitude') ? formatLongitude : formatLatitude)(value, args);
|
|
1895
1880
|
}
|
|
1896
1881
|
}
|
|
1897
|
-
LatLongFormatPipe.ɵprov =
|
|
1882
|
+
LatLongFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
|
|
1898
1883
|
LatLongFormatPipe.decorators = [
|
|
1899
1884
|
{ type: Pipe, args: [{
|
|
1900
1885
|
name: 'latLongFormat'
|
|
@@ -1906,7 +1891,7 @@ class LatitudeFormatPipe {
|
|
|
1906
1891
|
this.transform = formatLatitude;
|
|
1907
1892
|
}
|
|
1908
1893
|
}
|
|
1909
|
-
LatitudeFormatPipe.ɵprov =
|
|
1894
|
+
LatitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
|
|
1910
1895
|
LatitudeFormatPipe.decorators = [
|
|
1911
1896
|
{ type: Pipe, args: [{
|
|
1912
1897
|
name: 'latitudeFormat'
|
|
@@ -1918,7 +1903,7 @@ class LongitudeFormatPipe {
|
|
|
1918
1903
|
this.transform = formatLongitude;
|
|
1919
1904
|
}
|
|
1920
1905
|
}
|
|
1921
|
-
LongitudeFormatPipe.ɵprov =
|
|
1906
|
+
LongitudeFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
|
|
1922
1907
|
LongitudeFormatPipe.decorators = [
|
|
1923
1908
|
{ type: Pipe, args: [{
|
|
1924
1909
|
name: 'longitudeFormat'
|
|
@@ -1938,7 +1923,7 @@ class NumberFormatPipe {
|
|
|
1938
1923
|
}
|
|
1939
1924
|
}
|
|
1940
1925
|
}
|
|
1941
|
-
NumberFormatPipe.ɵprov =
|
|
1926
|
+
NumberFormatPipe.ɵprov = ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
|
|
1942
1927
|
NumberFormatPipe.decorators = [
|
|
1943
1928
|
{ type: Pipe, args: [{
|
|
1944
1929
|
name: 'numberFormat'
|
|
@@ -1978,7 +1963,7 @@ class HighlightPipe {
|
|
|
1978
1963
|
}
|
|
1979
1964
|
}
|
|
1980
1965
|
}
|
|
1981
|
-
HighlightPipe.ɵprov =
|
|
1966
|
+
HighlightPipe.ɵprov = ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
|
|
1982
1967
|
HighlightPipe.decorators = [
|
|
1983
1968
|
{ type: Pipe, args: [{
|
|
1984
1969
|
name: 'highlight'
|
|
@@ -2043,7 +2028,7 @@ FileSizePipe.decorators = [
|
|
|
2043
2028
|
{ type: Pipe, args: [{ name: 'fileSize' },] }
|
|
2044
2029
|
];
|
|
2045
2030
|
|
|
2046
|
-
const moment$
|
|
2031
|
+
const moment$1 = momentImported;
|
|
2047
2032
|
const DATE_UNIX_TIMESTAMP = 'X';
|
|
2048
2033
|
const DATE_UNIX_MS_TIMESTAMP = 'x';
|
|
2049
2034
|
class DateUtils {
|
|
@@ -2077,32 +2062,32 @@ function fromDateISOString(value) {
|
|
|
2077
2062
|
if (!value || isMoment(value))
|
|
2078
2063
|
return value;
|
|
2079
2064
|
// Parse the input value, as a ISO date time
|
|
2080
|
-
const date = moment$
|
|
2065
|
+
const date = moment$1(value, DATE_ISO_PATTERN);
|
|
2081
2066
|
if (date.isValid())
|
|
2082
2067
|
return date;
|
|
2083
2068
|
// Not valid: trying to convert from unix timestamp
|
|
2084
2069
|
if (typeof value === 'string') {
|
|
2085
2070
|
console.warn('Wrong date format - Trying to convert from local time: ' + value);
|
|
2086
2071
|
if (value.length === 10) {
|
|
2087
|
-
return moment$
|
|
2072
|
+
return moment$1(value, DATE_UNIX_TIMESTAMP);
|
|
2088
2073
|
}
|
|
2089
2074
|
else if (value.length === 13) {
|
|
2090
|
-
return moment$
|
|
2075
|
+
return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
|
|
2091
2076
|
}
|
|
2092
2077
|
}
|
|
2093
2078
|
console.warn('Unable to parse date: ' + value);
|
|
2094
2079
|
return undefined;
|
|
2095
2080
|
}
|
|
2096
2081
|
function fromUnixTimestamp(timeInSec) {
|
|
2097
|
-
return moment$
|
|
2082
|
+
return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
|
|
2098
2083
|
}
|
|
2099
2084
|
function fromUnixMsTimestamp(timeInMs) {
|
|
2100
|
-
return moment$
|
|
2085
|
+
return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
|
|
2101
2086
|
}
|
|
2102
2087
|
function toDuration(value, unit) {
|
|
2103
2088
|
if (!value)
|
|
2104
2089
|
return undefined;
|
|
2105
|
-
const duration = moment$
|
|
2090
|
+
const duration = moment$1.duration(value, unit);
|
|
2106
2091
|
// fix 990+ ms
|
|
2107
2092
|
if (duration.milliseconds() >= 990) {
|
|
2108
2093
|
duration.add(1000 - duration.milliseconds(), 'ms');
|
|
@@ -2131,7 +2116,7 @@ class DurationPipe {
|
|
|
2131
2116
|
return (days > 0 ? days.toString() + (this.dayUnit + ' ') : '') + hour + ':' + minute;
|
|
2132
2117
|
}
|
|
2133
2118
|
}
|
|
2134
|
-
DurationPipe.ɵprov =
|
|
2119
|
+
DurationPipe.ɵprov = ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(ɵɵinject(TranslateService)); }, token: DurationPipe, providedIn: "root" });
|
|
2135
2120
|
DurationPipe.decorators = [
|
|
2136
2121
|
{ type: Pipe, args: [{
|
|
2137
2122
|
name: 'duration'
|
|
@@ -2152,7 +2137,7 @@ class MathAbsPipe {
|
|
|
2152
2137
|
}
|
|
2153
2138
|
}
|
|
2154
2139
|
}
|
|
2155
|
-
MathAbsPipe.ɵprov =
|
|
2140
|
+
MathAbsPipe.ɵprov = ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
|
|
2156
2141
|
MathAbsPipe.decorators = [
|
|
2157
2142
|
{ type: Pipe, args: [{
|
|
2158
2143
|
name: 'mathAbs'
|
|
@@ -2164,7 +2149,7 @@ class EvenPipe {
|
|
|
2164
2149
|
return val % 2 === 0;
|
|
2165
2150
|
}
|
|
2166
2151
|
}
|
|
2167
|
-
EvenPipe.ɵprov =
|
|
2152
|
+
EvenPipe.ɵprov = ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
|
|
2168
2153
|
EvenPipe.decorators = [
|
|
2169
2154
|
{ type: Pipe, args: [{
|
|
2170
2155
|
name: 'even'
|
|
@@ -2176,7 +2161,7 @@ class OddPipe {
|
|
|
2176
2161
|
return val % 2 !== 0;
|
|
2177
2162
|
}
|
|
2178
2163
|
}
|
|
2179
|
-
OddPipe.ɵprov =
|
|
2164
|
+
OddPipe.ɵprov = ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
|
|
2180
2165
|
OddPipe.decorators = [
|
|
2181
2166
|
{ type: Pipe, args: [{
|
|
2182
2167
|
name: 'odd'
|
|
@@ -2284,7 +2269,7 @@ class MapGetPipe {
|
|
|
2284
2269
|
return val[key];
|
|
2285
2270
|
}
|
|
2286
2271
|
}
|
|
2287
|
-
MapGetPipe.ɵprov =
|
|
2272
|
+
MapGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
|
|
2288
2273
|
MapGetPipe.decorators = [
|
|
2289
2274
|
{ type: Pipe, args: [{
|
|
2290
2275
|
name: 'mapGet'
|
|
@@ -2298,7 +2283,7 @@ class MapKeysPipe {
|
|
|
2298
2283
|
return Object.keys(map);
|
|
2299
2284
|
}
|
|
2300
2285
|
}
|
|
2301
|
-
MapKeysPipe.ɵprov =
|
|
2286
|
+
MapKeysPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
|
|
2302
2287
|
MapKeysPipe.decorators = [
|
|
2303
2288
|
{ type: Pipe, args: [{
|
|
2304
2289
|
name: 'mapKeys'
|
|
@@ -2312,7 +2297,7 @@ class MapValuesPipe {
|
|
|
2312
2297
|
return Object.values(map);
|
|
2313
2298
|
}
|
|
2314
2299
|
}
|
|
2315
|
-
MapValuesPipe.ɵprov =
|
|
2300
|
+
MapValuesPipe.ɵprov = ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
|
|
2316
2301
|
MapValuesPipe.decorators = [
|
|
2317
2302
|
{ type: Pipe, args: [{
|
|
2318
2303
|
name: 'mapValues'
|
|
@@ -2325,7 +2310,7 @@ class IsNotNilOrBlankPipe {
|
|
|
2325
2310
|
return isNotNilOrBlank(value);
|
|
2326
2311
|
}
|
|
2327
2312
|
}
|
|
2328
|
-
IsNotNilOrBlankPipe.ɵprov =
|
|
2313
|
+
IsNotNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
|
|
2329
2314
|
IsNotNilOrBlankPipe.decorators = [
|
|
2330
2315
|
{ type: Pipe, args: [{
|
|
2331
2316
|
name: 'isNotNilOrBlank'
|
|
@@ -2337,7 +2322,7 @@ class IsNilOrBlankPipe {
|
|
|
2337
2322
|
return isNilOrBlank(value);
|
|
2338
2323
|
}
|
|
2339
2324
|
}
|
|
2340
|
-
IsNilOrBlankPipe.ɵprov =
|
|
2325
|
+
IsNilOrBlankPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
|
|
2341
2326
|
IsNilOrBlankPipe.decorators = [
|
|
2342
2327
|
{ type: Pipe, args: [{
|
|
2343
2328
|
name: 'isNilOrBlank'
|
|
@@ -2349,7 +2334,7 @@ class ToStringPipe {
|
|
|
2349
2334
|
return (value !== null && value !== undefined) ? value.toString() : '';
|
|
2350
2335
|
}
|
|
2351
2336
|
}
|
|
2352
|
-
ToStringPipe.ɵprov =
|
|
2337
|
+
ToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
|
|
2353
2338
|
ToStringPipe.decorators = [
|
|
2354
2339
|
{ type: Pipe, args: [{
|
|
2355
2340
|
name: 'toString'
|
|
@@ -2361,7 +2346,7 @@ class StrLengthPipe {
|
|
|
2361
2346
|
return value && value.length || 0;
|
|
2362
2347
|
}
|
|
2363
2348
|
}
|
|
2364
|
-
StrLengthPipe.ɵprov =
|
|
2349
|
+
StrLengthPipe.ɵprov = ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
|
|
2365
2350
|
StrLengthPipe.decorators = [
|
|
2366
2351
|
{ type: Pipe, args: [{
|
|
2367
2352
|
name: 'strLength'
|
|
@@ -2412,7 +2397,7 @@ class TranslateContextService {
|
|
|
2412
2397
|
: parts.slice(0, parts.length - 1).concat(context + parts[parts.length - 1]).join('.');
|
|
2413
2398
|
}
|
|
2414
2399
|
}
|
|
2415
|
-
TranslateContextService.ɵprov =
|
|
2400
|
+
TranslateContextService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(ɵɵinject(TranslateService)); }, token: TranslateContextService, providedIn: "root" });
|
|
2416
2401
|
TranslateContextService.decorators = [
|
|
2417
2402
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
2418
2403
|
];
|
|
@@ -2428,7 +2413,7 @@ class TranslateContextPipe {
|
|
|
2428
2413
|
return this.translateContext.instant(key, context);
|
|
2429
2414
|
}
|
|
2430
2415
|
}
|
|
2431
|
-
TranslateContextPipe.ɵprov =
|
|
2416
|
+
TranslateContextPipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
|
|
2432
2417
|
TranslateContextPipe.decorators = [
|
|
2433
2418
|
{ type: Pipe, args: [{
|
|
2434
2419
|
name: 'translateContext'
|
|
@@ -2445,7 +2430,7 @@ class TranslatablePipe {
|
|
|
2445
2430
|
return (_a = changeCaseToUnderscore(value)) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
2446
2431
|
}
|
|
2447
2432
|
}
|
|
2448
|
-
TranslatablePipe.ɵprov =
|
|
2433
|
+
TranslatablePipe.ɵprov = ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
|
|
2449
2434
|
TranslatablePipe.decorators = [
|
|
2450
2435
|
{ type: Pipe, args: [{
|
|
2451
2436
|
name: 'translatable'
|
|
@@ -2462,7 +2447,7 @@ class PropertyGetPipe {
|
|
|
2462
2447
|
args && args.defaultValue);
|
|
2463
2448
|
}
|
|
2464
2449
|
}
|
|
2465
|
-
PropertyGetPipe.ɵprov =
|
|
2450
|
+
PropertyGetPipe.ɵprov = ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
|
|
2466
2451
|
PropertyGetPipe.decorators = [
|
|
2467
2452
|
{ type: Pipe, args: [{
|
|
2468
2453
|
name: 'propertyGet'
|
|
@@ -2487,12 +2472,12 @@ NgInitDirective.propDecorators = {
|
|
|
2487
2472
|
ngInit: [{ type: Output }]
|
|
2488
2473
|
};
|
|
2489
2474
|
|
|
2490
|
-
const moment$
|
|
2475
|
+
const moment$2 = momentImported;
|
|
2491
2476
|
// @dynamic
|
|
2492
2477
|
class SharedValidators {
|
|
2493
2478
|
static validDate(control) {
|
|
2494
2479
|
const value = control.value;
|
|
2495
|
-
const date = !value || moment$
|
|
2480
|
+
const date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
|
|
2496
2481
|
if (date && (!date.isValid() || date.year() < 1970)) {
|
|
2497
2482
|
return { validDate: true };
|
|
2498
2483
|
}
|
|
@@ -3528,7 +3513,7 @@ class FormErrorAdapter {
|
|
|
3528
3513
|
return errorKey;
|
|
3529
3514
|
}
|
|
3530
3515
|
}
|
|
3531
|
-
FormErrorAdapter.ɵprov =
|
|
3516
|
+
FormErrorAdapter.ɵprov = ɵɵdefineInjectable({ factory: function FormErrorAdapter_Factory() { return new FormErrorAdapter(ɵɵinject(TranslateService), ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorAdapter, providedIn: "root" });
|
|
3532
3517
|
FormErrorAdapter.decorators = [
|
|
3533
3518
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
3534
3519
|
];
|
|
@@ -3797,9 +3782,9 @@ function parseDuration(input, maxDecimals, placeholderChar) {
|
|
|
3797
3782
|
const hour = parseInt(durationParts[0] || '0');
|
|
3798
3783
|
const minute = parseInt(durationParts[1] || '0');
|
|
3799
3784
|
const value = hour + (minute + 0.5) / 60;
|
|
3800
|
-
return roundFloat(value, maxDecimals);
|
|
3785
|
+
return roundFloat$1(value, maxDecimals);
|
|
3801
3786
|
}
|
|
3802
|
-
function roundFloat(input, maxDecimals) {
|
|
3787
|
+
function roundFloat$1(input, maxDecimals) {
|
|
3803
3788
|
if (maxDecimals > 0) {
|
|
3804
3789
|
const powDecimal = Math.pow(10, maxDecimals);
|
|
3805
3790
|
return Math.trunc(input * powDecimal + 0.5) / powDecimal;
|
|
@@ -3823,9 +3808,9 @@ const MASKS = {
|
|
|
3823
3808
|
DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
|
|
3824
3809
|
}
|
|
3825
3810
|
};
|
|
3826
|
-
const noop$
|
|
3811
|
+
const noop$1 = () => {
|
|
3827
3812
|
};
|
|
3828
|
-
const ɵ0$
|
|
3813
|
+
const ɵ0$1 = noop$1;
|
|
3829
3814
|
class MatLatLongField {
|
|
3830
3815
|
constructor(platform, translate, formBuilder, cd, formGroupDir) {
|
|
3831
3816
|
this.platform = platform;
|
|
@@ -3833,8 +3818,8 @@ class MatLatLongField {
|
|
|
3833
3818
|
this.formBuilder = formBuilder;
|
|
3834
3819
|
this.cd = cd;
|
|
3835
3820
|
this.formGroupDir = formGroupDir;
|
|
3836
|
-
this._onChangeCallback = noop$
|
|
3837
|
-
this._onTouchedCallback = noop$
|
|
3821
|
+
this._onChangeCallback = noop$1;
|
|
3822
|
+
this._onTouchedCallback = noop$1;
|
|
3838
3823
|
this._subscription = new Subscription();
|
|
3839
3824
|
this.disabling = false;
|
|
3840
3825
|
this.writing = false;
|
|
@@ -4170,14 +4155,14 @@ SharedMatLatLongModule.decorators = [
|
|
|
4170
4155
|
},] }
|
|
4171
4156
|
];
|
|
4172
4157
|
|
|
4173
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4158
|
+
const DEFAULT_VALUE_ACCESSOR$1 = {
|
|
4174
4159
|
provide: NG_VALUE_ACCESSOR,
|
|
4175
4160
|
useExisting: forwardRef(() => MatDate),
|
|
4176
4161
|
multi: true
|
|
4177
4162
|
};
|
|
4178
|
-
const DAY_MASK
|
|
4179
|
-
const noop$
|
|
4180
|
-
const ɵ0$
|
|
4163
|
+
const DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
4164
|
+
const noop$2 = () => { };
|
|
4165
|
+
const ɵ0$2 = noop$2;
|
|
4181
4166
|
class MatDate {
|
|
4182
4167
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
4183
4168
|
this.dateAdapter = dateAdapter;
|
|
@@ -4186,12 +4171,12 @@ class MatDate {
|
|
|
4186
4171
|
this.cd = cd;
|
|
4187
4172
|
this.keyboard = keyboard;
|
|
4188
4173
|
this.formGroupDir = formGroupDir;
|
|
4189
|
-
this._onChangeCallback = noop$
|
|
4190
|
-
this._onTouchedCallback = noop$
|
|
4174
|
+
this._onChangeCallback = noop$2;
|
|
4175
|
+
this._onTouchedCallback = noop$2;
|
|
4191
4176
|
this._subscription = new Subscription();
|
|
4192
4177
|
this.writing = true;
|
|
4193
4178
|
this.disabling = false;
|
|
4194
|
-
this.dayMask = DAY_MASK
|
|
4179
|
+
this.dayMask = DAY_MASK;
|
|
4195
4180
|
this.disabled = false;
|
|
4196
4181
|
this.floatLabel = 'auto';
|
|
4197
4182
|
this.readonly = false;
|
|
@@ -4428,7 +4413,7 @@ MatDate.decorators = [
|
|
|
4428
4413
|
selector: 'mat-date-field',
|
|
4429
4414
|
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",
|
|
4430
4415
|
providers: [
|
|
4431
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4416
|
+
DEFAULT_VALUE_ACCESSOR$1,
|
|
4432
4417
|
],
|
|
4433
4418
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4434
4419
|
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%}"]
|
|
@@ -4461,17 +4446,17 @@ MatDate.propDecorators = {
|
|
|
4461
4446
|
matInputs: [{ type: ViewChildren, args: ['matInput',] }]
|
|
4462
4447
|
};
|
|
4463
4448
|
|
|
4464
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
4449
|
+
const DEFAULT_VALUE_ACCESSOR$2 = {
|
|
4465
4450
|
provide: NG_VALUE_ACCESSOR,
|
|
4466
4451
|
useExisting: forwardRef(() => MatDateTime),
|
|
4467
4452
|
multi: true
|
|
4468
4453
|
};
|
|
4469
4454
|
const DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
|
|
4470
4455
|
const HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
|
|
4471
|
-
const HOUR_MASK
|
|
4472
|
-
const noop$
|
|
4456
|
+
const HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
|
|
4457
|
+
const noop$3 = () => {
|
|
4473
4458
|
};
|
|
4474
|
-
const ɵ0$
|
|
4459
|
+
const ɵ0$3 = noop$3;
|
|
4475
4460
|
class MatDateTime {
|
|
4476
4461
|
constructor(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
|
|
4477
4462
|
this.platform = platform;
|
|
@@ -4481,14 +4466,14 @@ class MatDateTime {
|
|
|
4481
4466
|
this.keyboard = keyboard;
|
|
4482
4467
|
this.cd = cd;
|
|
4483
4468
|
this.formGroupDir = formGroupDir;
|
|
4484
|
-
this._onChangeCallback = noop$
|
|
4485
|
-
this._onTouchedCallback = noop$
|
|
4469
|
+
this._onChangeCallback = noop$3;
|
|
4470
|
+
this._onTouchedCallback = noop$3;
|
|
4486
4471
|
this._subscription = new Subscription();
|
|
4487
4472
|
this.writing = true;
|
|
4488
4473
|
this.disabling = false;
|
|
4489
4474
|
this._readonly = false;
|
|
4490
4475
|
this.dayMask = DAY_MASK$1;
|
|
4491
|
-
this.hourMask = HOUR_MASK
|
|
4476
|
+
this.hourMask = HOUR_MASK;
|
|
4492
4477
|
this.floatLabel = 'auto';
|
|
4493
4478
|
this.compact = false;
|
|
4494
4479
|
this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
|
|
@@ -4799,7 +4784,7 @@ MatDateTime.decorators = [
|
|
|
4799
4784
|
selector: 'mat-date-time-field',
|
|
4800
4785
|
template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker)\"\n (keyup.escape)=\"preventEvent($event)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [appAutofocus]=\"autofocus\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [disabled]=\"formControl.disabled\">\n <div *ngIf=\"mobile; then iconDate; else iconDesktop\"></div>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n <div class=\"mat-form-field-subscript mat-form-field-subscript-wrapper\" >\n <!-- errors -->\n <ng-container [ngSwitch]=\"formControl.touched && formControl.errors|mapKeys|arrayFirst\">\n <mat-error *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</mat-error>\n <mat-error *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngSwitchCase=\"'msg'\">{{(formControl.errors.msg?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</mat-error>\n </ng-container>\n <ng-content select=\"mat-error\"></ng-content>\n\n <!-- mat hint -->\n <div class=\"mat-form-field-hint-wrapper\" [class.cdk-visually-hidden]=\"formControl.invalid\">\n <div class=\"mat-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint\"></ng-content>\n </div>\n </div>\n\n </ion-col>\n\n <!-- hour -->\n <ion-col class=\"hour ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && (timeFormControl.invalid || formControl.invalid)\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n <input matInput #matInput type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"timeFormControl\"\n autocomplete=\"off\"\n min=\"0\" max=\"23\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.TIME_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keyup.arrowdown)=\"openTimePicker($event)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n <input matInput #matInput type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\n hidden\n [ngxTimepicker]=\"timePicker\"\n [format]=\"24\">\n\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && !mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePicker($event)\" >\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button\n tabindex=\"-1\"\n *ngIf=\"!compact && mobile\"\n [disabled]=\"formControl.disabled\"\n (click)=\"openTimePickerIfMobile($event)\">\n <mat-icon>access_time</mat-icon>\n </button>\n\n <ngx-material-timepicker #timePicker [@.disabled]=\"true\"\n (timeSet)=\"onTimePickerChange($event)\"\n [ESC]=\"!mobile\"\n [defaultTime]=\"'00:00'\"\n [cancelBtnTmpl]=\"timePickerCancelButton\"\n [confirmBtnTmpl]=\"timePickerOkButton\"\n [preventOverlayClick]=\"mobile\"\n [enableKeyboardInput]=\"false\"\n [disableAnimation]=\"true\">\n <!-- cancel button -->\n <ng-template #timePickerCancelButton>\n <ion-button fill=\"clear\" color=\"dark\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n </ng-template>\n\n <!-- confirm button -->\n <ng-template #timePickerOkButton>\n <ion-button fill=\"solid\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_VALIDATE</ion-label>\n </ion-button>\n </ng-template>\n\n </ngx-material-timepicker>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n\n</ng-template>\n\n<ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n</ng-template>\n\n<ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n",
|
|
4801
4786
|
providers: [
|
|
4802
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
4787
|
+
DEFAULT_VALUE_ACCESSOR$2,
|
|
4803
4788
|
],
|
|
4804
4789
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4805
4790
|
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%}"]
|
|
@@ -4838,10 +4823,10 @@ const DEFAULT_VALUE_ACCESSOR$3 = {
|
|
|
4838
4823
|
useExisting: forwardRef(() => MatDateShort),
|
|
4839
4824
|
multi: true
|
|
4840
4825
|
};
|
|
4841
|
-
const DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
|
|
4842
|
-
const noop$
|
|
4826
|
+
const DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
|
|
4827
|
+
const noop$4 = () => {
|
|
4843
4828
|
};
|
|
4844
|
-
const ɵ0$
|
|
4829
|
+
const ɵ0$4 = noop$4;
|
|
4845
4830
|
class MatDateShort {
|
|
4846
4831
|
constructor(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
|
|
4847
4832
|
this.dateAdapter = dateAdapter;
|
|
@@ -4850,11 +4835,11 @@ class MatDateShort {
|
|
|
4850
4835
|
this.cd = cd;
|
|
4851
4836
|
this.keyboard = keyboard;
|
|
4852
4837
|
this.formGroupDir = formGroupDir;
|
|
4853
|
-
this._onChangeCallback = noop$
|
|
4854
|
-
this._onTouchedCallback = noop$
|
|
4838
|
+
this._onChangeCallback = noop$4;
|
|
4839
|
+
this._onTouchedCallback = noop$4;
|
|
4855
4840
|
this.writing = true;
|
|
4856
4841
|
this.disabling = false;
|
|
4857
|
-
this.dayMask = DAY_MASK;
|
|
4842
|
+
this.dayMask = DAY_MASK$2;
|
|
4858
4843
|
this.disabled = false;
|
|
4859
4844
|
this.floatLabel = 'auto';
|
|
4860
4845
|
this.readonly = false;
|
|
@@ -5167,16 +5152,16 @@ SharedMatDateTimeModule.decorators = [
|
|
|
5167
5152
|
},] }
|
|
5168
5153
|
];
|
|
5169
5154
|
|
|
5170
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
5155
|
+
const DEFAULT_VALUE_ACCESSOR$4 = {
|
|
5171
5156
|
provide: NG_VALUE_ACCESSOR,
|
|
5172
5157
|
useExisting: forwardRef(() => MatDuration),
|
|
5173
5158
|
multi: true
|
|
5174
5159
|
};
|
|
5175
5160
|
const HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
|
|
5176
|
-
const HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
|
|
5177
|
-
const noop$
|
|
5161
|
+
const HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
|
|
5162
|
+
const noop$5 = () => {
|
|
5178
5163
|
};
|
|
5179
|
-
const ɵ0$5 = noop$
|
|
5164
|
+
const ɵ0$5 = noop$5;
|
|
5180
5165
|
class MatDuration {
|
|
5181
5166
|
constructor(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
|
|
5182
5167
|
this.dateAdapter = dateAdapter;
|
|
@@ -5185,11 +5170,11 @@ class MatDuration {
|
|
|
5185
5170
|
this.cd = cd;
|
|
5186
5171
|
this.formGroupDir = formGroupDir;
|
|
5187
5172
|
this._subscription = new Subscription();
|
|
5188
|
-
this._onChangeCallback = noop$
|
|
5189
|
-
this._onTouchedCallback = noop$
|
|
5173
|
+
this._onChangeCallback = noop$5;
|
|
5174
|
+
this._onTouchedCallback = noop$5;
|
|
5190
5175
|
this.writing = true;
|
|
5191
5176
|
this.disabling = false;
|
|
5192
|
-
this.hourMask = HOUR_MASK;
|
|
5177
|
+
this.hourMask = HOUR_MASK$1;
|
|
5193
5178
|
this.disabled = false;
|
|
5194
5179
|
this.floatLabel = 'auto';
|
|
5195
5180
|
this.readonly = false;
|
|
@@ -5369,7 +5354,7 @@ MatDuration.decorators = [
|
|
|
5369
5354
|
selector: 'mat-duration-field',
|
|
5370
5355
|
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",
|
|
5371
5356
|
providers: [
|
|
5372
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
5357
|
+
DEFAULT_VALUE_ACCESSOR$4,
|
|
5373
5358
|
],
|
|
5374
5359
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5375
5360
|
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%}"]
|
|
@@ -5426,22 +5411,22 @@ SharedMatDurationModule.decorators = [
|
|
|
5426
5411
|
},] }
|
|
5427
5412
|
];
|
|
5428
5413
|
|
|
5429
|
-
const DEFAULT_VALUE_ACCESSOR$
|
|
5414
|
+
const DEFAULT_VALUE_ACCESSOR$5 = {
|
|
5430
5415
|
provide: NG_VALUE_ACCESSOR,
|
|
5431
5416
|
useExisting: forwardRef(() => MatBooleanField),
|
|
5432
5417
|
multi: true
|
|
5433
5418
|
};
|
|
5434
|
-
const noop$
|
|
5419
|
+
const noop$6 = () => {
|
|
5435
5420
|
};
|
|
5436
|
-
const ɵ0$
|
|
5421
|
+
const ɵ0$6 = noop$6;
|
|
5437
5422
|
class MatBooleanField {
|
|
5438
5423
|
constructor(translate, formBuilder, cd, formGroupDir) {
|
|
5439
5424
|
this.translate = translate;
|
|
5440
5425
|
this.formBuilder = formBuilder;
|
|
5441
5426
|
this.cd = cd;
|
|
5442
5427
|
this.formGroupDir = formGroupDir;
|
|
5443
|
-
this._onChangeCallback = noop$
|
|
5444
|
-
this._onTouchedCallback = noop$
|
|
5428
|
+
this._onChangeCallback = noop$6;
|
|
5429
|
+
this._onTouchedCallback = noop$6;
|
|
5445
5430
|
this._writing = false;
|
|
5446
5431
|
this.showRadio = false;
|
|
5447
5432
|
this.disabled = false;
|
|
@@ -5614,7 +5599,7 @@ MatBooleanField.decorators = [
|
|
|
5614
5599
|
selector: 'mat-boolean-field',
|
|
5615
5600
|
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",
|
|
5616
5601
|
providers: [
|
|
5617
|
-
DEFAULT_VALUE_ACCESSOR$
|
|
5602
|
+
DEFAULT_VALUE_ACCESSOR$5
|
|
5618
5603
|
],
|
|
5619
5604
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5620
5605
|
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}"]
|
|
@@ -5862,7 +5847,7 @@ class MatNumpadDomService {
|
|
|
5862
5847
|
this.appRef.detachView(this.componentRef.hostView);
|
|
5863
5848
|
}
|
|
5864
5849
|
}
|
|
5865
|
-
MatNumpadDomService.ɵprov =
|
|
5850
|
+
MatNumpadDomService.ɵprov = ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(ɵɵinject(ComponentFactoryResolver), ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
|
|
5866
5851
|
MatNumpadDomService.decorators = [
|
|
5867
5852
|
{ type: Injectable, args: [{
|
|
5868
5853
|
providedIn: 'root'
|
|
@@ -6226,7 +6211,7 @@ SharedMatNumpadModule.decorators = [
|
|
|
6226
6211
|
},] }
|
|
6227
6212
|
];
|
|
6228
6213
|
|
|
6229
|
-
const DEFAULT_VALUE_ACCESSOR = {
|
|
6214
|
+
const DEFAULT_VALUE_ACCESSOR$6 = {
|
|
6230
6215
|
provide: NG_VALUE_ACCESSOR,
|
|
6231
6216
|
useExisting: forwardRef(() => MatSwipeField),
|
|
6232
6217
|
multi: true
|
|
@@ -6489,7 +6474,7 @@ MatSwipeField.decorators = [
|
|
|
6489
6474
|
{ type: Component, args: [{
|
|
6490
6475
|
selector: 'mat-swipe-field',
|
|
6491
6476
|
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",
|
|
6492
|
-
providers: [DEFAULT_VALUE_ACCESSOR],
|
|
6477
|
+
providers: [DEFAULT_VALUE_ACCESSOR$6],
|
|
6493
6478
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
6494
6479
|
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}"]
|
|
6495
6480
|
},] }
|
|
@@ -6984,7 +6969,7 @@ class ProgressBarService {
|
|
|
6984
6969
|
}
|
|
6985
6970
|
}
|
|
6986
6971
|
}
|
|
6987
|
-
ProgressBarService.ɵprov =
|
|
6972
|
+
ProgressBarService.ɵprov = ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
|
|
6988
6973
|
ProgressBarService.decorators = [
|
|
6989
6974
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
6990
6975
|
];
|
|
@@ -7028,7 +7013,7 @@ class AppGestureConfig extends HammerGestureConfig {
|
|
|
7028
7013
|
return mc;
|
|
7029
7014
|
}
|
|
7030
7015
|
}
|
|
7031
|
-
AppGestureConfig.ɵprov =
|
|
7016
|
+
AppGestureConfig.ɵprov = ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
|
|
7032
7017
|
AppGestureConfig.decorators = [
|
|
7033
7018
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7034
7019
|
];
|
|
@@ -7251,7 +7236,7 @@ class MatPaginatorI18n extends MatPaginatorIntl {
|
|
|
7251
7236
|
this.previousPageLabel = this.translate.instant('COMMON.PAGINATOR.PREVIOUS_PAGE');
|
|
7252
7237
|
}
|
|
7253
7238
|
}
|
|
7254
|
-
MatPaginatorI18n.ɵprov =
|
|
7239
|
+
MatPaginatorI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(ɵɵinject(TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
|
|
7255
7240
|
MatPaginatorI18n.decorators = [
|
|
7256
7241
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7257
7242
|
];
|
|
@@ -7341,17 +7326,17 @@ function getColorContrast(color, bw) {
|
|
|
7341
7326
|
return rgbArrayToHex(rgb.map(v => 255 - v));
|
|
7342
7327
|
}
|
|
7343
7328
|
|
|
7344
|
-
const noop = () => {
|
|
7329
|
+
const noop$7 = () => {
|
|
7345
7330
|
};
|
|
7346
|
-
const ɵ0$
|
|
7331
|
+
const ɵ0$7 = noop$7;
|
|
7347
7332
|
class AppFormField {
|
|
7348
7333
|
constructor(translate, cd, injector, formGroupDir) {
|
|
7349
7334
|
this.translate = translate;
|
|
7350
7335
|
this.cd = cd;
|
|
7351
7336
|
this.injector = injector;
|
|
7352
7337
|
this.formGroupDir = formGroupDir;
|
|
7353
|
-
this._onChangeCallback = noop;
|
|
7354
|
-
this._onTouchedCallback = noop;
|
|
7338
|
+
this._onChangeCallback = noop$7;
|
|
7339
|
+
this._onTouchedCallback = noop$7;
|
|
7355
7340
|
this.readonly = false;
|
|
7356
7341
|
this.compact = false;
|
|
7357
7342
|
this.floatLabel = 'auto';
|
|
@@ -7767,14 +7752,14 @@ class AudioProvider extends StartableService {
|
|
|
7767
7752
|
});
|
|
7768
7753
|
}
|
|
7769
7754
|
}
|
|
7770
|
-
AudioProvider.ɵprov =
|
|
7755
|
+
AudioProvider.ɵprov = ɵɵdefineInjectable({ factory: function AudioProvider_Factory() { return new AudioProvider(ɵɵinject(Platform), ɵɵinject(NativeAudio, 8), ɵɵinject(Vibration, 8), ɵɵinject(AudioManagement$1, 8)); }, token: AudioProvider, providedIn: "root" });
|
|
7771
7756
|
AudioProvider.decorators = [
|
|
7772
7757
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
7773
7758
|
];
|
|
7774
7759
|
AudioProvider.ctorParameters = () => [
|
|
7775
7760
|
{ type: Platform },
|
|
7776
|
-
{ type: NativeAudio, decorators: [{ type: Optional }] },
|
|
7777
|
-
{ type: Vibration, decorators: [{ type: Optional }] },
|
|
7761
|
+
{ type: NativeAudio$1, decorators: [{ type: Optional }] },
|
|
7762
|
+
{ type: Vibration$1, decorators: [{ type: Optional }] },
|
|
7778
7763
|
{ type: AudioManagement, decorators: [{ type: Optional }] }
|
|
7779
7764
|
];
|
|
7780
7765
|
|
|
@@ -7856,7 +7841,7 @@ class Hotkeys {
|
|
|
7856
7841
|
});
|
|
7857
7842
|
}
|
|
7858
7843
|
}
|
|
7859
|
-
Hotkeys.ɵprov =
|
|
7844
|
+
Hotkeys.ɵprov = ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(ɵɵinject(EventManager), ɵɵinject(MatDialog), ɵɵinject(DOCUMENT), ɵɵinject(ModalController)); }, token: Hotkeys, providedIn: "root" });
|
|
7860
7845
|
Hotkeys.decorators = [
|
|
7861
7846
|
{ type: Injectable, args: [{
|
|
7862
7847
|
providedIn: 'root'
|
|
@@ -8030,7 +8015,7 @@ class Base64ImageReader {
|
|
|
8030
8015
|
}
|
|
8031
8016
|
}
|
|
8032
8017
|
|
|
8033
|
-
const uuidv4
|
|
8018
|
+
const uuidv4 = uuidv4Imported;
|
|
8034
8019
|
class FileService {
|
|
8035
8020
|
constructor(platform,
|
|
8036
8021
|
//private transfer: FileTransfer,
|
|
@@ -8067,7 +8052,7 @@ class FileService {
|
|
|
8067
8052
|
const lastSlashIndex = source.lastIndexOf('/');
|
|
8068
8053
|
if (lastSlashIndex === -1)
|
|
8069
8054
|
throw new Error('Invalid URL: ' + source);
|
|
8070
|
-
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4
|
|
8055
|
+
const fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
|
|
8071
8056
|
// Download into the file system
|
|
8072
8057
|
if (responseType === 'file' && this.canUseFileSystem) {
|
|
8073
8058
|
console.warn(`WARN: [file] Fetching image {${source}} in local file...`);
|
|
@@ -8123,7 +8108,7 @@ class FileService {
|
|
|
8123
8108
|
this._started = true;
|
|
8124
8109
|
}
|
|
8125
8110
|
}
|
|
8126
|
-
FileService.ɵprov =
|
|
8111
|
+
FileService.ɵprov = ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(ɵɵinject(Platform), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
|
|
8127
8112
|
FileService.decorators = [
|
|
8128
8113
|
{ type: Injectable, args: [{
|
|
8129
8114
|
providedIn: 'root',
|
|
@@ -8285,7 +8270,7 @@ class Base58 {
|
|
|
8285
8270
|
Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
8286
8271
|
|
|
8287
8272
|
const scrypt = require('scrypt-async');
|
|
8288
|
-
const sha256
|
|
8273
|
+
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
8289
8274
|
const sha512 = require('hash.js/lib/hash/sha/512');
|
|
8290
8275
|
const nacl = {
|
|
8291
8276
|
sign,
|
|
@@ -8389,7 +8374,7 @@ class CryptoService {
|
|
|
8389
8374
|
* Hash (using SHA256) a message
|
|
8390
8375
|
*/
|
|
8391
8376
|
sha256(message) {
|
|
8392
|
-
return sha256
|
|
8377
|
+
return sha256().update(message).digest('hex');
|
|
8393
8378
|
}
|
|
8394
8379
|
/**
|
|
8395
8380
|
* Hash (using SHA512) a message
|
|
@@ -8402,7 +8387,7 @@ class CryptoService {
|
|
|
8402
8387
|
return nacl.util.encodeBase64(m);
|
|
8403
8388
|
}
|
|
8404
8389
|
}
|
|
8405
|
-
CryptoService.ɵprov =
|
|
8390
|
+
CryptoService.ɵprov = ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
|
|
8406
8391
|
CryptoService.decorators = [
|
|
8407
8392
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
8408
8393
|
];
|
|
@@ -9623,7 +9608,7 @@ class LocalSettingsService extends StartableService {
|
|
|
9623
9608
|
return page;
|
|
9624
9609
|
}
|
|
9625
9610
|
}
|
|
9626
|
-
LocalSettingsService.ɵprov =
|
|
9611
|
+
LocalSettingsService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsService_Factory() { return new LocalSettingsService(ɵɵinject(TranslateService), ɵɵinject(Platform), ɵɵinject(Storage), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_LOCAL_SETTINGS, 8), ɵɵinject(APP_LOCAL_SETTINGS_OPTIONS, 8)); }, token: LocalSettingsService, providedIn: "root" });
|
|
9627
9612
|
LocalSettingsService.decorators = [
|
|
9628
9613
|
{ type: Injectable, args: [{
|
|
9629
9614
|
providedIn: 'root',
|
|
@@ -10283,7 +10268,7 @@ class NetworkService extends StartableService {
|
|
|
10283
10268
|
});
|
|
10284
10269
|
}
|
|
10285
10270
|
}
|
|
10286
|
-
NetworkService.ɵprov =
|
|
10271
|
+
NetworkService.ɵprov = ɵɵdefineInjectable({ factory: function NetworkService_Factory() { return new NetworkService(ɵɵinject(DOCUMENT), ɵɵinject(Platform), ɵɵinject(ModalController), ɵɵinject(CryptoService), ɵɵinject(Storage), ɵɵinject(LocalSettingsService), ɵɵinject(CacheService), ɵɵinject(HttpClient), ɵɵinject(ENVIRONMENT), ɵɵinject(Network, 8), ɵɵinject(SplashScreen, 8), ɵɵinject(TranslateService, 8), ɵɵinject(ToastController, 8)); }, token: NetworkService, providedIn: "root" });
|
|
10287
10272
|
NetworkService.decorators = [
|
|
10288
10273
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
10289
10274
|
];
|
|
@@ -10294,16 +10279,16 @@ NetworkService.ctorParameters = () => [
|
|
|
10294
10279
|
{ type: CryptoService },
|
|
10295
10280
|
{ type: Storage },
|
|
10296
10281
|
{ type: LocalSettingsService },
|
|
10297
|
-
{ type: CacheService },
|
|
10282
|
+
{ type: CacheService$1 },
|
|
10298
10283
|
{ type: HttpClient },
|
|
10299
10284
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
10300
|
-
{ type: Network, decorators: [{ type: Optional }] },
|
|
10301
|
-
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
10285
|
+
{ type: Network$1, decorators: [{ type: Optional }] },
|
|
10286
|
+
{ type: SplashScreen$1, decorators: [{ type: Optional }] },
|
|
10302
10287
|
{ type: TranslateService, decorators: [{ type: Optional }] },
|
|
10303
10288
|
{ type: ToastController, decorators: [{ type: Optional }] }
|
|
10304
10289
|
];
|
|
10305
10290
|
|
|
10306
|
-
const ErrorCodes
|
|
10291
|
+
const ErrorCodes = {
|
|
10307
10292
|
UNKNOWN_ERROR: 0,
|
|
10308
10293
|
LOAD_ACCOUNT_ERROR: 1,
|
|
10309
10294
|
BAD_PASSWORD: 2,
|
|
@@ -10650,7 +10635,7 @@ class EntityStore {
|
|
|
10650
10635
|
}
|
|
10651
10636
|
catch (err) {
|
|
10652
10637
|
console.error(err);
|
|
10653
|
-
throw { code: ErrorCodes
|
|
10638
|
+
throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err };
|
|
10654
10639
|
}
|
|
10655
10640
|
}
|
|
10656
10641
|
// Emit update event
|
|
@@ -11221,7 +11206,7 @@ class EntitiesStorage extends StartableService {
|
|
|
11221
11206
|
}
|
|
11222
11207
|
EntitiesStorage.TRASH_PREFIX = 'Trash#';
|
|
11223
11208
|
EntitiesStorage.REMOTE_PREFIX = 'Remote#';
|
|
11224
|
-
EntitiesStorage.ɵprov =
|
|
11209
|
+
EntitiesStorage.ɵprov = ɵɵdefineInjectable({ factory: function EntitiesStorage_Factory() { return new EntitiesStorage(ɵɵinject(Platform), ɵɵinject(ProgressBarService), ɵɵinject(Storage), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_LOCAL_STORAGE_TYPE_POLICIES, 8)); }, token: EntitiesStorage, providedIn: "root" });
|
|
11225
11210
|
EntitiesStorage.decorators = [
|
|
11226
11211
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
11227
11212
|
];
|
|
@@ -11321,10 +11306,10 @@ function referentialToString(obj, properties) {
|
|
|
11321
11306
|
function referentialsToString(values, properties, separator) {
|
|
11322
11307
|
return (values || []).map(v => referentialToString(v, properties)).join(separator || ', ');
|
|
11323
11308
|
}
|
|
11324
|
-
const ɵ0$
|
|
11309
|
+
const ɵ0$8 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
|
|
11325
11310
|
const StatusList = Object.freeze([
|
|
11326
11311
|
{
|
|
11327
|
-
id: ɵ0$
|
|
11312
|
+
id: ɵ0$8,
|
|
11328
11313
|
icon: 'checkmark',
|
|
11329
11314
|
label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
|
|
11330
11315
|
},
|
|
@@ -11599,7 +11584,7 @@ function accountToString(data) {
|
|
|
11599
11584
|
(data.lastName || '')) || '';
|
|
11600
11585
|
}
|
|
11601
11586
|
|
|
11602
|
-
const uuidv4 = uuidv4Imported;
|
|
11587
|
+
const uuidv4$1 = uuidv4Imported;
|
|
11603
11588
|
const _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
|
|
11604
11589
|
const NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
|
|
11605
11590
|
/**
|
|
@@ -11643,7 +11628,7 @@ function createTrackerLink(opts) {
|
|
|
11643
11628
|
// Skip if not tracked
|
|
11644
11629
|
if (!context || !context.tracked)
|
|
11645
11630
|
return forward(operation);
|
|
11646
|
-
const id = context.serializationKey || uuidv4();
|
|
11631
|
+
const id = context.serializationKey || uuidv4$1();
|
|
11647
11632
|
console.debug(`[apollo-tracker-link] Watching tracked query {${operation.operationName}#${id}}`);
|
|
11648
11633
|
// Clean context, before calling JSON.stringify (remove unused attributes)
|
|
11649
11634
|
const cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
|
|
@@ -12312,7 +12297,7 @@ class GraphqlService extends StartableService {
|
|
|
12312
12297
|
(err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
|
|
12313
12298
|
|| this.toAppError(err.networkError)
|
|
12314
12299
|
|| (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
|
|
12315
|
-
|| this.createAppErrorByCode(ErrorCodes
|
|
12300
|
+
|| this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
|
|
12316
12301
|
// If graphQL: try to convert the first error found
|
|
12317
12302
|
|| (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
|
|
12318
12303
|
|| this.toAppError(err)
|
|
@@ -12320,7 +12305,7 @@ class GraphqlService extends StartableService {
|
|
|
12320
12305
|
|| (err.graphQLErrors && err.graphQLErrors[0])
|
|
12321
12306
|
|| err;
|
|
12322
12307
|
console.error('[graphql] ' + (error && error.message || error), error.stack || '');
|
|
12323
|
-
if (error && error.code === ErrorCodes
|
|
12308
|
+
if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
|
|
12324
12309
|
console.error('[graphql] original error: ' + err.networkError.message);
|
|
12325
12310
|
this.onNetworkError.next(error);
|
|
12326
12311
|
}
|
|
@@ -12356,7 +12341,7 @@ class GraphqlService extends StartableService {
|
|
|
12356
12341
|
return 'ERROR.UNAUTHORIZED';
|
|
12357
12342
|
case ServerErrorCodes.FORBIDDEN:
|
|
12358
12343
|
return 'ERROR.FORBIDDEN';
|
|
12359
|
-
case ErrorCodes
|
|
12344
|
+
case ErrorCodes.UNKNOWN_NETWORK_ERROR:
|
|
12360
12345
|
return 'ERROR.UNKNOWN_NETWORK_ERROR';
|
|
12361
12346
|
case ServerErrorCodes.BAD_UPDATE_DATE:
|
|
12362
12347
|
return 'ERROR.BAD_UPDATE_DATE';
|
|
@@ -12384,7 +12369,7 @@ class GraphqlService extends StartableService {
|
|
|
12384
12369
|
return undefined;
|
|
12385
12370
|
}
|
|
12386
12371
|
}
|
|
12387
|
-
GraphqlService.ɵprov =
|
|
12372
|
+
GraphqlService.ɵprov = ɵɵdefineInjectable({ factory: function GraphqlService_Factory() { return new GraphqlService(ɵɵinject(Platform), ɵɵinject(Apollo), ɵɵinject(HttpLink), ɵɵinject(NetworkService), ɵɵinject(Storage), ɵɵinject(CryptoService), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_GRAPHQL_TYPE_POLICIES, 8)); }, token: GraphqlService, providedIn: "root" });
|
|
12388
12373
|
GraphqlService.decorators = [
|
|
12389
12374
|
{ type: Injectable, args: [{
|
|
12390
12375
|
providedIn: 'root'
|
|
@@ -12401,7 +12386,7 @@ GraphqlService.ctorParameters = () => [
|
|
|
12401
12386
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
|
|
12402
12387
|
];
|
|
12403
12388
|
|
|
12404
|
-
const sha256 = require('hash.js/lib/hash/sha/256');
|
|
12389
|
+
const sha256$1 = require('hash.js/lib/hash/sha/256');
|
|
12405
12390
|
class BaseGraphqlServiceOptions {
|
|
12406
12391
|
}
|
|
12407
12392
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
@@ -12551,8 +12536,8 @@ class BaseGraphqlService {
|
|
|
12551
12536
|
}
|
|
12552
12537
|
/* -- protected methods -- */
|
|
12553
12538
|
computeMutableWatchQueryId(opts) {
|
|
12554
|
-
const queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
|
|
12555
|
-
const variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
|
|
12539
|
+
const queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
|
|
12540
|
+
const variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
|
|
12556
12541
|
return [queryName, opts.arrayFieldName, variablesKey].join('|');
|
|
12557
12542
|
}
|
|
12558
12543
|
findMutableWatchQueries(opts) {
|
|
@@ -12615,7 +12600,7 @@ const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
|
|
|
12615
12600
|
/* ------------------------------------
|
|
12616
12601
|
* GraphQL queries
|
|
12617
12602
|
* ------------------------------------*/
|
|
12618
|
-
const Fragments
|
|
12603
|
+
const Fragments = {
|
|
12619
12604
|
account: gql `
|
|
12620
12605
|
fragment AccountFragment on AccountVO {
|
|
12621
12606
|
id
|
|
@@ -12648,13 +12633,13 @@ const Fragments$1 = {
|
|
|
12648
12633
|
`
|
|
12649
12634
|
};
|
|
12650
12635
|
// Load account query
|
|
12651
|
-
const LoadQuery
|
|
12636
|
+
const LoadQuery = gql `
|
|
12652
12637
|
query Account {
|
|
12653
12638
|
data: account {
|
|
12654
12639
|
...AccountFragment
|
|
12655
12640
|
}
|
|
12656
12641
|
}
|
|
12657
|
-
${Fragments
|
|
12642
|
+
${Fragments.account}
|
|
12658
12643
|
`;
|
|
12659
12644
|
// Check email query
|
|
12660
12645
|
const IsEmailExistsQuery = gql `
|
|
@@ -12663,13 +12648,13 @@ const IsEmailExistsQuery = gql `
|
|
|
12663
12648
|
}
|
|
12664
12649
|
`;
|
|
12665
12650
|
// Save (create or update) account mutation
|
|
12666
|
-
const SaveMutation
|
|
12651
|
+
const SaveMutation = gql `
|
|
12667
12652
|
mutation SaveAccount($data:AccountVOInput){
|
|
12668
12653
|
data: saveAccount(account: $data){
|
|
12669
12654
|
...AccountFragment
|
|
12670
12655
|
}
|
|
12671
12656
|
}
|
|
12672
|
-
${Fragments
|
|
12657
|
+
${Fragments.account}
|
|
12673
12658
|
`;
|
|
12674
12659
|
// Create account mutation
|
|
12675
12660
|
const CreateMutation = gql `
|
|
@@ -12678,7 +12663,7 @@ const CreateMutation = gql `
|
|
|
12678
12663
|
...AccountFragment
|
|
12679
12664
|
}
|
|
12680
12665
|
}
|
|
12681
|
-
${Fragments
|
|
12666
|
+
${Fragments.account}
|
|
12682
12667
|
`;
|
|
12683
12668
|
// Sent confirmation email
|
|
12684
12669
|
const SendConfirmEmailMutation = gql `
|
|
@@ -13016,7 +13001,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13016
13001
|
catch (error) {
|
|
13017
13002
|
console.error(error);
|
|
13018
13003
|
this.resetData();
|
|
13019
|
-
throw { code: ErrorCodes
|
|
13004
|
+
throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
|
|
13020
13005
|
}
|
|
13021
13006
|
// Store pubkey+keypair
|
|
13022
13007
|
this._data.pubkey = Base58.encode(keypair.publicKey);
|
|
@@ -13050,7 +13035,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13050
13035
|
}
|
|
13051
13036
|
catch (err) {
|
|
13052
13037
|
// If account not found, check if email is valid
|
|
13053
|
-
if (err && +(err.code) === ErrorCodes
|
|
13038
|
+
if (err && +(err.code) === ErrorCodes.LOAD_ACCOUNT_ERROR) {
|
|
13054
13039
|
// Check email exists
|
|
13055
13040
|
if (data.username.indexOf('@') !== -1) {
|
|
13056
13041
|
let isEmailExists;
|
|
@@ -13062,11 +13047,11 @@ class AccountService extends BaseGraphqlService {
|
|
|
13062
13047
|
}
|
|
13063
13048
|
// Email not exists (no account)
|
|
13064
13049
|
if (!isEmailExists) {
|
|
13065
|
-
throw { code: ErrorCodes
|
|
13050
|
+
throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
|
|
13066
13051
|
}
|
|
13067
13052
|
}
|
|
13068
13053
|
// Email exists, so error = 'bad password'
|
|
13069
|
-
throw { code: ErrorCodes
|
|
13054
|
+
throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
|
|
13070
13055
|
}
|
|
13071
13056
|
throw err; // resend the first error
|
|
13072
13057
|
}
|
|
@@ -13191,8 +13176,8 @@ class AccountService extends BaseGraphqlService {
|
|
|
13191
13176
|
// Load remotely
|
|
13192
13177
|
else {
|
|
13193
13178
|
const { data } = yield this.graphql.query({
|
|
13194
|
-
query: LoadQuery
|
|
13195
|
-
error: { code: ErrorCodes
|
|
13179
|
+
query: LoadQuery,
|
|
13180
|
+
error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
|
|
13196
13181
|
fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
|
|
13197
13182
|
});
|
|
13198
13183
|
json = data;
|
|
@@ -13219,7 +13204,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13219
13204
|
return __awaiter(this, void 0, void 0, function* () {
|
|
13220
13205
|
const isEmailExists = yield this.isEmailExists(email);
|
|
13221
13206
|
if (isEmailExists) {
|
|
13222
|
-
throw { code: ErrorCodes
|
|
13207
|
+
throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
|
|
13223
13208
|
}
|
|
13224
13209
|
});
|
|
13225
13210
|
}
|
|
@@ -13255,7 +13240,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13255
13240
|
locale
|
|
13256
13241
|
},
|
|
13257
13242
|
error: {
|
|
13258
|
-
code: ErrorCodes
|
|
13243
|
+
code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
|
|
13259
13244
|
message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
|
|
13260
13245
|
}
|
|
13261
13246
|
});
|
|
@@ -13271,7 +13256,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13271
13256
|
code
|
|
13272
13257
|
},
|
|
13273
13258
|
error: {
|
|
13274
|
-
code: ErrorCodes
|
|
13259
|
+
code: ErrorCodes.CONFIRM_EMAIL_FAILED,
|
|
13275
13260
|
message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
|
|
13276
13261
|
}
|
|
13277
13262
|
});
|
|
@@ -13289,7 +13274,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13289
13274
|
interval: 10
|
|
13290
13275
|
},
|
|
13291
13276
|
error: {
|
|
13292
|
-
code: ErrorCodes
|
|
13277
|
+
code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
|
|
13293
13278
|
message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
|
|
13294
13279
|
}
|
|
13295
13280
|
}).subscribe({
|
|
@@ -13398,7 +13383,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13398
13383
|
throw error;
|
|
13399
13384
|
console.error(error);
|
|
13400
13385
|
throw {
|
|
13401
|
-
code: ErrorCodes
|
|
13386
|
+
code: ErrorCodes.LOAD_ACCOUNT_ERROR,
|
|
13402
13387
|
message: 'ERROR.LOAD_ACCOUNT_ERROR'
|
|
13403
13388
|
};
|
|
13404
13389
|
}
|
|
@@ -13543,7 +13528,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13543
13528
|
if (!isNew) {
|
|
13544
13529
|
const existingAccount = yield this.load({ fetchPolicy: 'network-only' });
|
|
13545
13530
|
if (!existingAccount || !existingAccount.updateDate) {
|
|
13546
|
-
throw { code: ErrorCodes
|
|
13531
|
+
throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
|
|
13547
13532
|
}
|
|
13548
13533
|
this.copyIdAndUpdateDate(existingAccount, account);
|
|
13549
13534
|
}
|
|
@@ -13552,10 +13537,10 @@ class AccountService extends BaseGraphqlService {
|
|
|
13552
13537
|
delete json.profiles;
|
|
13553
13538
|
// Execute mutation
|
|
13554
13539
|
const { data } = yield this.graphql.mutate({
|
|
13555
|
-
mutation: isNew ? CreateMutation : SaveMutation
|
|
13540
|
+
mutation: isNew ? CreateMutation : SaveMutation,
|
|
13556
13541
|
variables: { data: json },
|
|
13557
13542
|
error: {
|
|
13558
|
-
code: ErrorCodes
|
|
13543
|
+
code: ErrorCodes.SAVE_ACCOUNT_ERROR,
|
|
13559
13544
|
message: 'ERROR.SAVE_ACCOUNT_ERROR'
|
|
13560
13545
|
}
|
|
13561
13546
|
});
|
|
@@ -13575,7 +13560,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13575
13560
|
if (counter > 4) {
|
|
13576
13561
|
if (this._debug)
|
|
13577
13562
|
console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
|
|
13578
|
-
throw { code: ErrorCodes
|
|
13563
|
+
throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
|
|
13579
13564
|
}
|
|
13580
13565
|
// Check if valid
|
|
13581
13566
|
if (token) {
|
|
@@ -13585,7 +13570,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13585
13570
|
token
|
|
13586
13571
|
},
|
|
13587
13572
|
error: {
|
|
13588
|
-
code: ErrorCodes
|
|
13573
|
+
code: ErrorCodes.UNAUTHORIZED,
|
|
13589
13574
|
message: 'ERROR.UNAUTHORIZED'
|
|
13590
13575
|
},
|
|
13591
13576
|
fetchPolicy: 'no-cache'
|
|
@@ -13601,7 +13586,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13601
13586
|
}
|
|
13602
13587
|
// Generate a new token
|
|
13603
13588
|
const challengeError = {
|
|
13604
|
-
code: ErrorCodes
|
|
13589
|
+
code: ErrorCodes.AUTH_CHALLENGE_ERROR,
|
|
13605
13590
|
message: 'ERROR.AUTH_CHALLENGE_ERROR'
|
|
13606
13591
|
};
|
|
13607
13592
|
const data = yield this.graphql.query({
|
|
@@ -13635,7 +13620,7 @@ class AccountService extends BaseGraphqlService {
|
|
|
13635
13620
|
target.settings.updateDate = source.settings && source.settings.updateDate || target.settings.updateDate;
|
|
13636
13621
|
}
|
|
13637
13622
|
}
|
|
13638
|
-
AccountService.ɵprov =
|
|
13623
|
+
AccountService.ɵprov = ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(ɵɵinject(CryptoService), ɵɵinject(NetworkService), ɵɵinject(GraphqlService), ɵɵinject(LocalSettingsService), ɵɵinject(Storage), ɵɵinject(FileService), ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
|
|
13639
13624
|
AccountService.decorators = [
|
|
13640
13625
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
13641
13626
|
];
|
|
@@ -13895,7 +13880,7 @@ const CONFIGURATION_STORAGE_KEY = 'configuration';
|
|
|
13895
13880
|
/* ------------------------------------
|
|
13896
13881
|
* GraphQL queries
|
|
13897
13882
|
* ------------------------------------*/
|
|
13898
|
-
const Fragments = {
|
|
13883
|
+
const Fragments$1 = {
|
|
13899
13884
|
config: gql `
|
|
13900
13885
|
fragment ConfigFragment on ConfigurationVO {
|
|
13901
13886
|
id
|
|
@@ -13922,22 +13907,22 @@ const Fragments = {
|
|
|
13922
13907
|
}
|
|
13923
13908
|
`
|
|
13924
13909
|
};
|
|
13925
|
-
const LoadQuery = gql `
|
|
13910
|
+
const LoadQuery$1 = gql `
|
|
13926
13911
|
query Configuration{
|
|
13927
13912
|
data: configuration{
|
|
13928
13913
|
...ConfigFragment
|
|
13929
13914
|
}
|
|
13930
13915
|
}
|
|
13931
|
-
${Fragments.config}
|
|
13916
|
+
${Fragments$1.config}
|
|
13932
13917
|
`;
|
|
13933
13918
|
// Save (create or update) account mutation
|
|
13934
|
-
const SaveMutation = gql `
|
|
13919
|
+
const SaveMutation$1 = gql `
|
|
13935
13920
|
mutation SaveConfiguration($data: ConfigurationVOInput){
|
|
13936
13921
|
data: saveConfiguration(config: $data){
|
|
13937
13922
|
...ConfigFragment
|
|
13938
13923
|
}
|
|
13939
13924
|
}
|
|
13940
|
-
${Fragments.config}
|
|
13925
|
+
${Fragments$1.config}
|
|
13941
13926
|
`;
|
|
13942
13927
|
const ClearCache = gql `
|
|
13943
13928
|
query ClearCache($name: String) {
|
|
@@ -14032,12 +14017,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
14032
14017
|
return __awaiter(this, void 0, void 0, function* () {
|
|
14033
14018
|
const now = Date.now();
|
|
14034
14019
|
console.debug('[config] Loading Pod configuration...');
|
|
14035
|
-
const query = opts && opts.query || LoadQuery;
|
|
14020
|
+
const query = opts && opts.query || LoadQuery$1;
|
|
14036
14021
|
const variables = opts && opts.variables || undefined;
|
|
14037
14022
|
const res = yield this.graphql.query({
|
|
14038
14023
|
query,
|
|
14039
14024
|
variables,
|
|
14040
|
-
error: { code: ErrorCodes
|
|
14025
|
+
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
14041
14026
|
fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
|
|
14042
14027
|
});
|
|
14043
14028
|
const data = res && res.data ? Configuration.fromObject(res.data) : undefined;
|
|
@@ -14062,12 +14047,12 @@ class ConfigService extends BaseGraphqlService {
|
|
|
14062
14047
|
const json = config.asObject();
|
|
14063
14048
|
// Execute mutation
|
|
14064
14049
|
const res = yield this.graphql.mutate({
|
|
14065
|
-
mutation: SaveMutation,
|
|
14050
|
+
mutation: SaveMutation$1,
|
|
14066
14051
|
variables: {
|
|
14067
14052
|
data: json
|
|
14068
14053
|
},
|
|
14069
14054
|
error: {
|
|
14070
|
-
code: ErrorCodes
|
|
14055
|
+
code: ErrorCodes.SAVE_CONFIG_ERROR,
|
|
14071
14056
|
message: 'ERROR.SAVE_CONFIG_ERROR'
|
|
14072
14057
|
}
|
|
14073
14058
|
});
|
|
@@ -14093,7 +14078,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
14093
14078
|
const res = yield this.graphql.query({
|
|
14094
14079
|
query: CacheStatistics,
|
|
14095
14080
|
variables: null,
|
|
14096
|
-
error: { code: ErrorCodes
|
|
14081
|
+
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
14097
14082
|
fetchPolicy: 'network-only'
|
|
14098
14083
|
});
|
|
14099
14084
|
const data = res && res.cacheStatistics || undefined;
|
|
@@ -14109,7 +14094,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
14109
14094
|
const res = yield this.graphql.query({
|
|
14110
14095
|
query: ClearCache,
|
|
14111
14096
|
variables,
|
|
14112
|
-
error: { code: ErrorCodes
|
|
14097
|
+
error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
|
|
14113
14098
|
fetchPolicy: 'network-only'
|
|
14114
14099
|
});
|
|
14115
14100
|
const data = res && res.clearCache || undefined;
|
|
@@ -14268,7 +14253,7 @@ class ConfigService extends BaseGraphqlService {
|
|
|
14268
14253
|
});
|
|
14269
14254
|
}
|
|
14270
14255
|
}
|
|
14271
|
-
ConfigService.ɵprov =
|
|
14256
|
+
ConfigService.ɵprov = ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(ɵɵinject(Platform), ɵɵinject(GraphqlService), ɵɵinject(Storage), ɵɵinject(NetworkService), ɵɵinject(FileService), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(ENVIRONMENT), ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
|
|
14272
14257
|
ConfigService.decorators = [
|
|
14273
14258
|
{ type: Injectable, args: [{
|
|
14274
14259
|
providedIn: 'root',
|
|
@@ -14287,7 +14272,7 @@ ConfigService.ctorParameters = () => [
|
|
|
14287
14272
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
|
|
14288
14273
|
];
|
|
14289
14274
|
|
|
14290
|
-
const moment$
|
|
14275
|
+
const moment$4 = momentImported;
|
|
14291
14276
|
class PlatformService {
|
|
14292
14277
|
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
|
|
14293
14278
|
this.platform = platform;
|
|
@@ -14496,16 +14481,16 @@ class PlatformService {
|
|
|
14496
14481
|
}
|
|
14497
14482
|
// config moment lib
|
|
14498
14483
|
try {
|
|
14499
|
-
moment$
|
|
14484
|
+
moment$4.locale(event.lang);
|
|
14500
14485
|
console.debug('[platform] Use locale {' + event.lang + '}');
|
|
14501
14486
|
}
|
|
14502
14487
|
// If error, fallback to en
|
|
14503
14488
|
catch (err) {
|
|
14504
|
-
moment$
|
|
14489
|
+
moment$4.locale('en');
|
|
14505
14490
|
console.warn('[platform] Unknown local for moment lib. Using default [en]');
|
|
14506
14491
|
}
|
|
14507
14492
|
// Config date adapter
|
|
14508
|
-
this.dateAdapter.setLocale(moment$
|
|
14493
|
+
this.dateAdapter.setLocale(moment$4.locale());
|
|
14509
14494
|
}
|
|
14510
14495
|
});
|
|
14511
14496
|
this.settings.onChange.subscribe(data => {
|
|
@@ -14643,7 +14628,7 @@ class PlatformService {
|
|
|
14643
14628
|
});
|
|
14644
14629
|
}
|
|
14645
14630
|
}
|
|
14646
|
-
PlatformService.ɵprov =
|
|
14631
|
+
PlatformService.ɵprov = ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(ɵɵinject(Platform), ɵɵinject(Platform$1), ɵɵinject(ToastController), ɵɵinject(TranslateService), ɵɵinject(MomentDateAdapter), ɵɵinject(EntitiesStorage), ɵɵinject(LocalSettingsService), ɵɵinject(NetworkService), ɵɵinject(AccountService), ɵɵinject(ConfigService), ɵɵinject(CacheService), ɵɵinject(Storage), ɵɵinject(AudioProvider), ɵɵinject(ENVIRONMENT), ɵɵinject(StatusBar, 8), ɵɵinject(Keyboard$1, 8), ɵɵinject(SplashScreen, 8), ɵɵinject(InAppBrowser, 8), ɵɵinject(Downloader, 8)); }, token: PlatformService, providedIn: "root" });
|
|
14647
14632
|
PlatformService.decorators = [
|
|
14648
14633
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
14649
14634
|
];
|
|
@@ -14658,15 +14643,15 @@ PlatformService.ctorParameters = () => [
|
|
|
14658
14643
|
{ type: NetworkService },
|
|
14659
14644
|
{ type: AccountService },
|
|
14660
14645
|
{ type: ConfigService },
|
|
14661
|
-
{ type: CacheService },
|
|
14646
|
+
{ type: CacheService$1 },
|
|
14662
14647
|
{ type: Storage },
|
|
14663
14648
|
{ type: AudioProvider },
|
|
14664
14649
|
{ type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
|
|
14665
|
-
{ type: StatusBar, decorators: [{ type: Optional }] },
|
|
14650
|
+
{ type: StatusBar$1, decorators: [{ type: Optional }] },
|
|
14666
14651
|
{ type: Keyboard, decorators: [{ type: Optional }] },
|
|
14667
|
-
{ type: SplashScreen, decorators: [{ type: Optional }] },
|
|
14668
|
-
{ type: InAppBrowser, decorators: [{ type: Optional }] },
|
|
14669
|
-
{ type: Downloader, decorators: [{ type: Optional }] }
|
|
14652
|
+
{ type: SplashScreen$1, decorators: [{ type: Optional }] },
|
|
14653
|
+
{ type: InAppBrowser$1, decorators: [{ type: Optional }] },
|
|
14654
|
+
{ type: Downloader$1, decorators: [{ type: Optional }] }
|
|
14670
14655
|
];
|
|
14671
14656
|
|
|
14672
14657
|
class AppHelpModal {
|
|
@@ -14730,7 +14715,7 @@ class MatStepperI18n extends MatStepperIntl {
|
|
|
14730
14715
|
this.optionalLabel = this.translate.instant('COMMON.OPTIONAL');
|
|
14731
14716
|
}
|
|
14732
14717
|
}
|
|
14733
|
-
MatStepperI18n.ɵprov =
|
|
14718
|
+
MatStepperI18n.ɵprov = ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(ɵɵinject(TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
|
|
14734
14719
|
MatStepperI18n.decorators = [
|
|
14735
14720
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
14736
14721
|
];
|
|
@@ -15722,7 +15707,7 @@ function state2side(state) {
|
|
|
15722
15707
|
return 1;
|
|
15723
15708
|
}
|
|
15724
15709
|
}
|
|
15725
|
-
const ɵ0$
|
|
15710
|
+
const ɵ0$9 = (defaultStateSize) => [
|
|
15726
15711
|
Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
|
|
15727
15712
|
Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
|
|
15728
15713
|
Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
|
|
@@ -15730,7 +15715,7 @@ const ɵ0$1 = (defaultStateSize) => [
|
|
|
15730
15715
|
const SCALE_OPTIONS_DEFAULT = {
|
|
15731
15716
|
startColor: rgbArrayMap.red,
|
|
15732
15717
|
startStates: [0, 2, 3],
|
|
15733
|
-
startStepsFn: ɵ0$
|
|
15718
|
+
startStepsFn: ɵ0$9
|
|
15734
15719
|
};
|
|
15735
15720
|
/**
|
|
15736
15721
|
* Internal function, that create a colors scale, using iteration
|
|
@@ -15822,21 +15807,21 @@ function linearColorGradient(count, options) {
|
|
|
15822
15807
|
return result;
|
|
15823
15808
|
}
|
|
15824
15809
|
|
|
15825
|
-
class EntityTestClass
|
|
15810
|
+
class EntityTestClass {
|
|
15826
15811
|
}
|
|
15827
|
-
const FAKE_ENTITIES
|
|
15812
|
+
const FAKE_ENTITIES = [
|
|
15828
15813
|
{ id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
|
|
15829
15814
|
{ id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
|
|
15830
15815
|
{ id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
|
|
15831
15816
|
];
|
|
15832
|
-
function deepCopy
|
|
15817
|
+
function deepCopy(values, size) {
|
|
15833
15818
|
if (isNil(size)) {
|
|
15834
|
-
return (values || FAKE_ENTITIES
|
|
15819
|
+
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
15835
15820
|
}
|
|
15836
15821
|
let result = [];
|
|
15837
15822
|
let i = 1;
|
|
15838
15823
|
while (result.length < size) {
|
|
15839
|
-
result = result.concat((values || FAKE_ENTITIES
|
|
15824
|
+
result = result.concat((values || FAKE_ENTITIES).map(entity => {
|
|
15840
15825
|
const name = entity.name + ' #' + i;
|
|
15841
15826
|
return Object.assign(Object.assign({}, entity), { id: i++, name });
|
|
15842
15827
|
}));
|
|
@@ -15846,7 +15831,7 @@ function deepCopy$1(values, size) {
|
|
|
15846
15831
|
class AutocompleteTestPage {
|
|
15847
15832
|
constructor(formBuilder) {
|
|
15848
15833
|
this.formBuilder = formBuilder;
|
|
15849
|
-
this._items = deepCopy
|
|
15834
|
+
this._items = deepCopy(FAKE_ENTITIES, 100);
|
|
15850
15835
|
this.$items = new BehaviorSubject(undefined);
|
|
15851
15836
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
15852
15837
|
this.memoryHide = false;
|
|
@@ -15890,7 +15875,7 @@ class AutocompleteTestPage {
|
|
|
15890
15875
|
});
|
|
15891
15876
|
// From items
|
|
15892
15877
|
this.autocompleteFields.add('entity-items-large', {
|
|
15893
|
-
items: FAKE_ENTITIES
|
|
15878
|
+
items: FAKE_ENTITIES.slice(),
|
|
15894
15879
|
attributes: ['label', 'name', 'description', 'comments'],
|
|
15895
15880
|
displayWith: this.entityToString
|
|
15896
15881
|
});
|
|
@@ -15900,12 +15885,12 @@ class AutocompleteTestPage {
|
|
|
15900
15885
|
loadData() {
|
|
15901
15886
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15902
15887
|
const data = {
|
|
15903
|
-
entity: deepCopy
|
|
15888
|
+
entity: deepCopy(FAKE_ENTITIES)[0],
|
|
15904
15889
|
// This item is NOT in the items list => i should be displayed anyway
|
|
15905
15890
|
missingEntity: {
|
|
15906
15891
|
id: -1, label: '??', name: 'Missing item'
|
|
15907
15892
|
},
|
|
15908
|
-
disableEntity: deepCopy
|
|
15893
|
+
disableEntity: deepCopy(FAKE_ENTITIES)[2]
|
|
15909
15894
|
};
|
|
15910
15895
|
this.form.setValue(data);
|
|
15911
15896
|
// Load observables
|
|
@@ -15975,7 +15960,7 @@ class AutocompleteTestPage {
|
|
|
15975
15960
|
AutocompleteTestPage.decorators = [
|
|
15976
15961
|
{ type: Component, args: [{
|
|
15977
15962
|
selector: 'app-autocomplete-test',
|
|
15978
|
-
template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Autocomplete field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <!-- Tab nav - mobile/desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link\n [active]=\"mode==='mobile'\"\n (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='memory'\"\n (click)=\"toggleMode('memory')\">\n <mat-label>Memory leak debug</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!--<ion-grid *ngIf=\"mode === 'temp'\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable<any[]></pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n </ion-grid>-->\n\n\n <ion-grid *ngIf=\"mode === 'memory'\">\n\n <!-- debugging memory leak -->\n <ion-row><ion-col><ion-text><h4>Debug memory leak</h4></ion-text></ion-col></ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Items type\">\n <mat-select (selectionChange)=\"memoryAutocompleteFieldName=$event.value\" [value]=\"memoryAutocompleteFieldName\">\n <mat-option value=\"entity-$items\">Observable</mat-option>\n <mat-option value=\"entity-suggestFn\">Suggest function</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n <ion-col size=\"1\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"always\" >\n <input matInput type=\"text\" hidden placeholder=\"Mobile ?\">\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [checked]=\"memoryMobile\">\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\" color=\"tertiary\">Start</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\" color=\"tertiary\">Stop</ion-button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n *ngIf=\"!memoryHide && memoryAutocompleteFieldName\"\n [config]=\"autocompleteFields.get(memoryAutocompleteFieldName)\"\n [mobile]=\"memoryMobile\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-memory-leak]'\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n <!-- Mobile mode -->\n <ion-grid *ngIf=\"mode === 'mobile'\">\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Suggest() function\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>mobile: true, suggestFn: (searchText, filter) => any[]</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-1]'\"\n [required]=\"true\"\n placeholder=\"Suggest field\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Items is an Observable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>mobile: true, items: Observable<any[]></pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-observable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>mobile: true, items: Observable<any[]></pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Change filter\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre></pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <ion-button (click)=\"updateFilter('entity-items-filter')\">Filter on: {{autocompleteFields.get('entity-items-filter').filter?.searchAttribute }}</ion-button>\n </ion-col>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-filter]'\"\n ></mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>class=\"min-width-large\"</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"true\"\n class=\"min-width-large\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Desktop mode -->\n <ion-grid *ngIf=\"mode === 'desktop'\">\n <ion-row>\n <ion-col><ion-text><h4>Desktop mode</h4></ion-text></ion-col>\n </ion-row>\n <ion-row>\n\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n items from suggest function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult<any>\nsuggestLengthThreshold: '3'</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n suggestLengthThreshold=\"3\"\n [logPrefix]=\"'[combo-desktop-suggest]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an array\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: [], value: {{stringify(form.controls.entity.value)}}</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [logPrefix]=\"'[combo-desktop-array-1]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable<any[]></pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable<any[]></pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-missing]'\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size panel\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>class: 'mat-autocomplete-panel-full-size'</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [compareWith]=\"compareWithFn\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-disable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\" >\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>class=\"mat-autocomplete-panel-full-size\"</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n class=\"mat-autocomplete-panel-full-size\"\n panelWidth=\"100vw\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\" >\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>panelWidth: string</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n </mat-checkbox>\n\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\">\n <mat-icon matPrefix>keyboard_arrow_right</mat-icon>\n <mat-icon matSuffix>keyboard_arrow_left</mat-icon>\n </mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"
|
|
15963
|
+
template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Autocomplete field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <!-- Tab nav - mobile/desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link\n [active]=\"mode==='mobile'\"\n (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='memory'\"\n (click)=\"toggleMode('memory')\">\n <mat-label>Memory leak debug</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!--<ion-grid *ngIf=\"mode === 'temp'\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable<any[]></pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n </ion-grid>-->\n\n\n <ion-grid *ngIf=\"mode === 'memory'\">\n\n <!-- debugging memory leak -->\n <ion-row>\n <ion-col>\n <ion-text><h4>Debug memory leak</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Items type\">\n <mat-select (selectionChange)=\"memoryAutocompleteFieldName=$event.value\" [value]=\"memoryAutocompleteFieldName\">\n <mat-option value=\"entity-$items\">Observable</mat-option>\n <mat-option value=\"entity-suggestFn\">Suggest function</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n <ion-col size=\"1\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Mobile ?\">\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [checked]=\"memoryMobile\">\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\" color=\"tertiary\">Start</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\" color=\"tertiary\">Stop</ion-button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n *ngIf=\"!memoryHide && memoryAutocompleteFieldName\"\n [config]=\"autocompleteFields.get(memoryAutocompleteFieldName)\"\n [mobile]=\"memoryMobile\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-memory-leak]'\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n <!-- Mobile mode -->\n <ion-grid *ngIf=\"mode === 'mobile'\">\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Suggest() function\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, suggestFn: (searchText, filter) => any[]</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-1]'\"\n [required]=\"true\"\n placeholder=\"Suggest field\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Items is an Observable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable<any[]></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-observable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable<any[]></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Change filter\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <ion-button (click)=\"updateFilter('entity-items-filter')\">Filter on: {{autocompleteFields.get('entity-items-filter').filter?.searchAttribute }}</ion-button>\n </ion-col>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-filter]'\"\n ></mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"min-width-large\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"true\"\n class=\"min-width-large\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Desktop mode -->\n <ion-grid *ngIf=\"mode === 'desktop'\">\n <ion-row>\n <ion-col>\n <ion-text><h4>Desktop mode</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n items from suggest function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult<any>\nsuggestLengthThreshold: '3'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n suggestLengthThreshold=\"3\"\n [logPrefix]=\"'[combo-desktop-suggest]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an array\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: [], value: {{stringify(form.controls.entity.value)}}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [logPrefix]=\"'[combo-desktop-array-1]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable<any[]></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable<any[]></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-missing]'\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size panel\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class: 'mat-autocomplete-panel-full-size'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [compareWith]=\"compareWithFn\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-disable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"mat-autocomplete-panel-full-size\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n class=\"mat-autocomplete-panel-full-size\"\n panelWidth=\"100vw\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>panelWidth: string</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n panelWidth=\"400px\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n <ion-col size=\"3\">\n <mat-checkbox #showIcons [checked]=\"false\">\n Icons ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n <mat-icon matPrefix *ngIf=\"showIcons.checked\">keyboard_arrow_right</mat-icon>\n <mat-icon matSuffix *ngIf=\"showIcons.checked\">keyboard_arrow_left</mat-icon>\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"
|
|
15979
15964
|
},] }
|
|
15980
15965
|
];
|
|
15981
15966
|
AutocompleteTestPage.ctorParameters = () => [
|
|
@@ -16078,13 +16063,13 @@ MaterialTestingPage.ctorParameters = () => [
|
|
|
16078
16063
|
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [APP_TESTING_PAGES,] }] }
|
|
16079
16064
|
];
|
|
16080
16065
|
|
|
16081
|
-
const moment$
|
|
16066
|
+
const moment$5 = momentImported;
|
|
16082
16067
|
class SwipeTestPage {
|
|
16083
16068
|
constructor(formBuilder, dateFormatPipe) {
|
|
16084
16069
|
this.formBuilder = formBuilder;
|
|
16085
16070
|
this.dateFormatPipe = dateFormatPipe;
|
|
16086
16071
|
this.$dates = new BehaviorSubject(undefined);
|
|
16087
|
-
this._today = moment$
|
|
16072
|
+
this._today = moment$5().startOf('day');
|
|
16088
16073
|
this.form = formBuilder.group({
|
|
16089
16074
|
empty: [null, Validators.required],
|
|
16090
16075
|
date: [null, Validators.compose([Validators.required, SharedValidators.validDate])],
|
|
@@ -16097,7 +16082,7 @@ class SwipeTestPage {
|
|
|
16097
16082
|
ngOnInit() {
|
|
16098
16083
|
const dates = [];
|
|
16099
16084
|
for (let d = 0; d < 7; d++) {
|
|
16100
|
-
dates[d] = moment$
|
|
16085
|
+
dates[d] = moment$5(this._today).add(d - 3, 'day');
|
|
16101
16086
|
}
|
|
16102
16087
|
this.$dates.next(dates);
|
|
16103
16088
|
this.loadData();
|
|
@@ -16138,7 +16123,7 @@ SwipeTestPage.ctorParameters = () => [
|
|
|
16138
16123
|
{ type: DateFormatPipe }
|
|
16139
16124
|
];
|
|
16140
16125
|
|
|
16141
|
-
const moment = momentImported;
|
|
16126
|
+
const moment$6 = momentImported;
|
|
16142
16127
|
class DateTimeTestPage {
|
|
16143
16128
|
constructor(platform, formBuilder, cd) {
|
|
16144
16129
|
this.platform = platform;
|
|
@@ -16170,7 +16155,7 @@ class DateTimeTestPage {
|
|
|
16170
16155
|
// Load the form with data
|
|
16171
16156
|
loadData() {
|
|
16172
16157
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16173
|
-
const now = moment();
|
|
16158
|
+
const now = moment$6();
|
|
16174
16159
|
const data = {
|
|
16175
16160
|
empty: toDateISOString(now.clone().add(2, 'hours')),
|
|
16176
16161
|
enable: toDateISOString(now),
|
|
@@ -16231,20 +16216,20 @@ DateTimeTestPage.ctorParameters = () => [
|
|
|
16231
16216
|
{ type: ChangeDetectorRef }
|
|
16232
16217
|
];
|
|
16233
16218
|
|
|
16234
|
-
class EntityTestClass {
|
|
16219
|
+
class EntityTestClass$1 {
|
|
16235
16220
|
}
|
|
16236
|
-
const FAKE_ENTITIES = [
|
|
16221
|
+
const FAKE_ENTITIES$1 = [
|
|
16237
16222
|
{ id: 1, label: 'AAA', name: 'Item A' },
|
|
16238
16223
|
{ id: 2, label: 'BBB', name: 'Item B' },
|
|
16239
16224
|
{ id: 3, label: 'CCC', name: 'Item C' }
|
|
16240
16225
|
];
|
|
16241
|
-
function deepCopy(values) {
|
|
16242
|
-
return (values || FAKE_ENTITIES).map(entity => Object.assign({}, entity));
|
|
16226
|
+
function deepCopy$1(values) {
|
|
16227
|
+
return (values || FAKE_ENTITIES$1).map(entity => Object.assign({}, entity));
|
|
16243
16228
|
}
|
|
16244
16229
|
class ChipsTestPage {
|
|
16245
16230
|
constructor(formBuilder) {
|
|
16246
16231
|
this.formBuilder = formBuilder;
|
|
16247
|
-
this._items = deepCopy(FAKE_ENTITIES);
|
|
16232
|
+
this._items = deepCopy$1(FAKE_ENTITIES$1);
|
|
16248
16233
|
this._$items = new BehaviorSubject(undefined);
|
|
16249
16234
|
this.autocompleteFields = new MatAutocompleteConfigHolder();
|
|
16250
16235
|
this.form = formBuilder.group({
|
|
@@ -16263,7 +16248,7 @@ class ChipsTestPage {
|
|
|
16263
16248
|
});
|
|
16264
16249
|
// From items
|
|
16265
16250
|
this.autocompleteFields.add('entity-items', {
|
|
16266
|
-
items: FAKE_ENTITIES.slice(),
|
|
16251
|
+
items: FAKE_ENTITIES$1.slice(),
|
|
16267
16252
|
attributes: ['label', 'name'],
|
|
16268
16253
|
displayWith: this.entityToString
|
|
16269
16254
|
});
|
|
@@ -16284,15 +16269,15 @@ class ChipsTestPage {
|
|
|
16284
16269
|
const data = {
|
|
16285
16270
|
entity: [],
|
|
16286
16271
|
// THis item is NOT in the items list => i should be displayed anyway
|
|
16287
|
-
entityInitial: FAKE_ENTITIES.slice(1, 2),
|
|
16288
|
-
disableEntity: FAKE_ENTITIES.slice(1, 2)
|
|
16272
|
+
entityInitial: FAKE_ENTITIES$1.slice(1, 2),
|
|
16273
|
+
disableEntity: FAKE_ENTITIES$1.slice(1, 2)
|
|
16289
16274
|
};
|
|
16290
16275
|
this.form.setValue(data);
|
|
16291
16276
|
});
|
|
16292
16277
|
}
|
|
16293
16278
|
loadItems() {
|
|
16294
16279
|
return __awaiter(this, void 0, void 0, function* () {
|
|
16295
|
-
this._$items.next(deepCopy(FAKE_ENTITIES));
|
|
16280
|
+
this._$items.next(deepCopy$1(FAKE_ENTITIES$1));
|
|
16296
16281
|
});
|
|
16297
16282
|
}
|
|
16298
16283
|
entityToString(item) {
|
|
@@ -16324,7 +16309,7 @@ ChipsTestPage.ctorParameters = () => [
|
|
|
16324
16309
|
{ type: FormBuilder }
|
|
16325
16310
|
];
|
|
16326
16311
|
|
|
16327
|
-
const routes
|
|
16312
|
+
const routes = [
|
|
16328
16313
|
{
|
|
16329
16314
|
path: '',
|
|
16330
16315
|
pathMatch: 'full',
|
|
@@ -16371,7 +16356,7 @@ MaterialTestingModule.decorators = [
|
|
|
16371
16356
|
ReactiveFormsModule,
|
|
16372
16357
|
SharedMaterialModule,
|
|
16373
16358
|
TranslateModule.forChild(),
|
|
16374
|
-
RouterModule.forChild(routes
|
|
16359
|
+
RouterModule.forChild(routes)
|
|
16375
16360
|
],
|
|
16376
16361
|
declarations: [
|
|
16377
16362
|
MaterialTestingPage,
|
|
@@ -17314,7 +17299,7 @@ class UserSettingsValidatorService extends AppValidatorService {
|
|
|
17314
17299
|
});
|
|
17315
17300
|
}
|
|
17316
17301
|
}
|
|
17317
|
-
UserSettingsValidatorService.ɵprov =
|
|
17302
|
+
UserSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(ɵɵinject(FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
|
|
17318
17303
|
UserSettingsValidatorService.decorators = [
|
|
17319
17304
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17320
17305
|
];
|
|
@@ -17358,7 +17343,7 @@ class AccountValidatorService extends AppValidatorService {
|
|
|
17358
17343
|
return validatorFns.length ? Validators.compose(validatorFns) : validatorFns.length === 1 ? validatorFns[0] : undefined;
|
|
17359
17344
|
}
|
|
17360
17345
|
}
|
|
17361
|
-
AccountValidatorService.ɵprov =
|
|
17346
|
+
AccountValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
|
|
17362
17347
|
AccountValidatorService.decorators = [
|
|
17363
17348
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17364
17349
|
];
|
|
@@ -17892,7 +17877,7 @@ class LocalSettingsValidatorService extends AppValidatorService {
|
|
|
17892
17877
|
});
|
|
17893
17878
|
}
|
|
17894
17879
|
}
|
|
17895
|
-
LocalSettingsValidatorService.ɵprov =
|
|
17880
|
+
LocalSettingsValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(ɵɵinject(FormBuilder), ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
|
|
17896
17881
|
LocalSettingsValidatorService.decorators = [
|
|
17897
17882
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
17898
17883
|
];
|
|
@@ -18512,7 +18497,7 @@ class IsOnFieldModePipe {
|
|
|
18512
18497
|
return value === 'FIELD';
|
|
18513
18498
|
}
|
|
18514
18499
|
}
|
|
18515
|
-
IsOnFieldModePipe.ɵprov =
|
|
18500
|
+
IsOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
|
|
18516
18501
|
IsOnFieldModePipe.decorators = [
|
|
18517
18502
|
{ type: Pipe, args: [{
|
|
18518
18503
|
name: 'isOnField'
|
|
@@ -18524,7 +18509,7 @@ class IsNotOnFieldModePipe {
|
|
|
18524
18509
|
return value !== 'FIELD';
|
|
18525
18510
|
}
|
|
18526
18511
|
}
|
|
18527
|
-
IsNotOnFieldModePipe.ɵprov =
|
|
18512
|
+
IsNotOnFieldModePipe.ɵprov = ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
|
|
18528
18513
|
IsNotOnFieldModePipe.decorators = [
|
|
18529
18514
|
{ type: Pipe, args: [{
|
|
18530
18515
|
name: 'isNotOnField'
|
|
@@ -18539,7 +18524,7 @@ class PersonToStringPipe {
|
|
|
18539
18524
|
return PersonUtils.personToString(value);
|
|
18540
18525
|
}
|
|
18541
18526
|
}
|
|
18542
|
-
PersonToStringPipe.ɵprov =
|
|
18527
|
+
PersonToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
|
|
18543
18528
|
PersonToStringPipe.decorators = [
|
|
18544
18529
|
{ type: Pipe, args: [{
|
|
18545
18530
|
name: 'personToString'
|
|
@@ -18885,7 +18870,7 @@ class IsLoginAccountPipe {
|
|
|
18885
18870
|
return value && value.pubkey && true;
|
|
18886
18871
|
}
|
|
18887
18872
|
}
|
|
18888
|
-
IsLoginAccountPipe.ɵprov =
|
|
18873
|
+
IsLoginAccountPipe.ɵprov = ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
|
|
18889
18874
|
IsLoginAccountPipe.decorators = [
|
|
18890
18875
|
{ type: Pipe, args: [{
|
|
18891
18876
|
name: 'isLogin'
|
|
@@ -18897,7 +18882,7 @@ class AccountToStringPipe {
|
|
|
18897
18882
|
return accountToString(value);
|
|
18898
18883
|
}
|
|
18899
18884
|
}
|
|
18900
|
-
AccountToStringPipe.ɵprov =
|
|
18885
|
+
AccountToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
|
|
18901
18886
|
AccountToStringPipe.decorators = [
|
|
18902
18887
|
{ type: Pipe, args: [{
|
|
18903
18888
|
name: 'accountToString'
|
|
@@ -18912,7 +18897,7 @@ class DepartmentToStringPipe {
|
|
|
18912
18897
|
return departmentToString(value);
|
|
18913
18898
|
}
|
|
18914
18899
|
}
|
|
18915
|
-
DepartmentToStringPipe.ɵprov =
|
|
18900
|
+
DepartmentToStringPipe.ɵprov = ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
|
|
18916
18901
|
DepartmentToStringPipe.decorators = [
|
|
18917
18902
|
{ type: Pipe, args: [{
|
|
18918
18903
|
name: 'departmentToString'
|
|
@@ -18938,7 +18923,7 @@ class MenuService {
|
|
|
18938
18923
|
this._visibleSubject.next(value);
|
|
18939
18924
|
}
|
|
18940
18925
|
}
|
|
18941
|
-
MenuService.ɵprov =
|
|
18926
|
+
MenuService.ɵprov = ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
|
|
18942
18927
|
MenuService.decorators = [
|
|
18943
18928
|
{ type: Injectable, args: [{
|
|
18944
18929
|
providedIn: 'root'
|
|
@@ -19432,7 +19417,7 @@ class AuthGuardService {
|
|
|
19432
19417
|
}));
|
|
19433
19418
|
}
|
|
19434
19419
|
}
|
|
19435
|
-
AuthGuardService.ɵprov =
|
|
19420
|
+
AuthGuardService.ɵprov = ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(ɵɵinject(AccountService), ɵɵinject(ModalController), ɵɵinject(Router), ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
|
|
19436
19421
|
AuthGuardService.decorators = [
|
|
19437
19422
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
19438
19423
|
];
|
|
@@ -19480,7 +19465,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19480
19465
|
query,
|
|
19481
19466
|
variables: { id },
|
|
19482
19467
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
19483
|
-
error: { code: ErrorCodes
|
|
19468
|
+
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19484
19469
|
})
|
|
19485
19470
|
.pipe(map(({ data }) => (!opts || opts.toEntity !== false)
|
|
19486
19471
|
? (data && this.fromObject(data))
|
|
@@ -19495,7 +19480,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19495
19480
|
query,
|
|
19496
19481
|
variables: { id },
|
|
19497
19482
|
fetchPolicy: opts && opts.fetchPolicy || undefined,
|
|
19498
|
-
error: { code: ErrorCodes
|
|
19483
|
+
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
|
|
19499
19484
|
});
|
|
19500
19485
|
// Convert to entity
|
|
19501
19486
|
return (!opts || opts.toEntity !== false)
|
|
@@ -19526,7 +19511,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19526
19511
|
totalFieldName: withTotal ? 'total' : undefined,
|
|
19527
19512
|
insertFilterFn: filter && filter.asFilterFn(),
|
|
19528
19513
|
variables,
|
|
19529
|
-
error: { code: ErrorCodes
|
|
19514
|
+
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
|
|
19530
19515
|
fetchPolicy: opts && opts.fetchPolicy || undefined
|
|
19531
19516
|
})
|
|
19532
19517
|
.pipe(map(({ data, total }) => {
|
|
@@ -19562,7 +19547,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19562
19547
|
const { data, total } = yield this.graphql.query({
|
|
19563
19548
|
query,
|
|
19564
19549
|
variables,
|
|
19565
|
-
error: { code: ErrorCodes
|
|
19550
|
+
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
|
|
19566
19551
|
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
19567
19552
|
});
|
|
19568
19553
|
const entities = (!opts || opts.toEntity !== false) ?
|
|
@@ -19601,7 +19586,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19601
19586
|
variables: {
|
|
19602
19587
|
filter: filter && filter.asPodObject()
|
|
19603
19588
|
},
|
|
19604
|
-
error: { code: ErrorCodes
|
|
19589
|
+
error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
|
|
19605
19590
|
fetchPolicy: opts && opts.fetchPolicy || 'network-only'
|
|
19606
19591
|
});
|
|
19607
19592
|
return res.total;
|
|
@@ -19634,7 +19619,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19634
19619
|
variables: {
|
|
19635
19620
|
data: json
|
|
19636
19621
|
},
|
|
19637
|
-
error: { code: ErrorCodes
|
|
19622
|
+
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19638
19623
|
update: (proxy, { data }) => {
|
|
19639
19624
|
const savedEntities = data && data.data;
|
|
19640
19625
|
if (savedEntities) {
|
|
@@ -19690,7 +19675,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19690
19675
|
variables: {
|
|
19691
19676
|
data: json
|
|
19692
19677
|
},
|
|
19693
|
-
error: { code: ErrorCodes
|
|
19678
|
+
error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
|
|
19694
19679
|
update: (cache, { data }) => {
|
|
19695
19680
|
// Update entity
|
|
19696
19681
|
const savedEntity = data && data.data;
|
|
@@ -19738,7 +19723,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19738
19723
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19739
19724
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19740
19725
|
variables: { ids },
|
|
19741
|
-
error: { code: ErrorCodes
|
|
19726
|
+
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19742
19727
|
update: (cache, res) => {
|
|
19743
19728
|
// Remove from cache
|
|
19744
19729
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19779,7 +19764,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19779
19764
|
refetchQueries: this.getRefetchQueriesForMutation(opts),
|
|
19780
19765
|
awaitRefetchQueries: opts && opts.awaitRefetchQueries,
|
|
19781
19766
|
variables: { id },
|
|
19782
|
-
error: { code: ErrorCodes
|
|
19767
|
+
error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
|
|
19783
19768
|
update: (proxy, res) => {
|
|
19784
19769
|
// Remove from cache
|
|
19785
19770
|
if (this.watchQueriesUpdatePolicy === 'update-cache') {
|
|
@@ -19812,7 +19797,7 @@ class BaseEntityService extends BaseGraphqlService {
|
|
|
19812
19797
|
query: opts && opts.query || this.subscriptions.listenChanges,
|
|
19813
19798
|
variables,
|
|
19814
19799
|
error: {
|
|
19815
|
-
code: ErrorCodes
|
|
19800
|
+
code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
|
|
19816
19801
|
message: 'ERROR.SUBSCRIBE_DATA_ERROR'
|
|
19817
19802
|
}
|
|
19818
19803
|
})
|
|
@@ -19987,7 +19972,7 @@ class EntitiesTableDataSource extends TableDataSource {
|
|
|
19987
19972
|
if (this._debug)
|
|
19988
19973
|
invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
|
|
19989
19974
|
// Stop with an error
|
|
19990
|
-
throw { code: ErrorCodes
|
|
19975
|
+
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
19991
19976
|
}
|
|
19992
19977
|
this._editingRowCount = 0;
|
|
19993
19978
|
let data;
|
|
@@ -20492,6 +20477,7 @@ class AppTable {
|
|
|
20492
20477
|
this.saveBeforeSort = toBoolean(this.saveBeforeSort, !this.readOnly); // force to false when readonly
|
|
20493
20478
|
this.saveBeforeFilter = toBoolean(this.saveBeforeFilter, !this.readOnly); // force to false when readonly
|
|
20494
20479
|
this.keepEditedRowOnSave = toBoolean(this.keepEditedRowOnSave, this.inlineEdition);
|
|
20480
|
+
this.translateErrorOptions = this.translateErrorOptions || { separator: ', ', pathTranslateService: this }; // Can be override in subclasses constructors
|
|
20495
20481
|
// Check ask user confirmation is possible
|
|
20496
20482
|
if (this.confirmBeforeDelete && !this.alertCtrl)
|
|
20497
20483
|
throw Error('Missing \'alertCtrl\' or \'injector\' in component\'s constructor.');
|
|
@@ -20810,14 +20796,14 @@ class AppTable {
|
|
|
20810
20796
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20811
20797
|
opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
|
|
20812
20798
|
if (this.readOnly) {
|
|
20813
|
-
throw { code: ErrorCodes
|
|
20799
|
+
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20814
20800
|
}
|
|
20815
20801
|
this.resetError();
|
|
20816
20802
|
// Keep edited row id (should be done BEFORE confirmEditCreate() )
|
|
20817
20803
|
this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
|
|
20818
20804
|
const previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
|
|
20819
20805
|
if (!this.confirmEditCreate()) {
|
|
20820
|
-
throw { code: ErrorCodes
|
|
20806
|
+
throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
|
|
20821
20807
|
}
|
|
20822
20808
|
// Mark as saving
|
|
20823
20809
|
this.markAsSaving();
|
|
@@ -20933,7 +20919,7 @@ class AppTable {
|
|
|
20933
20919
|
deleteRows(event, rows, opts) {
|
|
20934
20920
|
return __awaiter(this, void 0, void 0, function* () {
|
|
20935
20921
|
if (this.readOnly) {
|
|
20936
|
-
throw { code: ErrorCodes
|
|
20922
|
+
throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
|
|
20937
20923
|
}
|
|
20938
20924
|
if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
|
|
20939
20925
|
return 0; // SKip
|
|
@@ -20986,7 +20972,7 @@ class AppTable {
|
|
|
20986
20972
|
selectRowById(id) {
|
|
20987
20973
|
if (id === undefined)
|
|
20988
20974
|
return Promise.resolve(false);
|
|
20989
|
-
return this.
|
|
20975
|
+
return firstFalsePromise(this.loadingSubject)
|
|
20990
20976
|
.then(() => this.dataSource.getRow(id))
|
|
20991
20977
|
.then(row => row && this.clickRow(null, row));
|
|
20992
20978
|
}
|
|
@@ -20997,18 +20983,17 @@ class AppTable {
|
|
|
20997
20983
|
selectRowByData(data) {
|
|
20998
20984
|
if (data === undefined)
|
|
20999
20985
|
return Promise.resolve(false);
|
|
21000
|
-
return this.
|
|
20986
|
+
return firstFalsePromise(this.loadingSubject)
|
|
21001
20987
|
.then(() => this.dataSource.getRows())
|
|
21002
20988
|
.then(rows => rows.find(row => this.equals(row.currentData, data)))
|
|
21003
20989
|
.then(row => row && this.clickRow(null, row));
|
|
21004
20990
|
}
|
|
21005
20991
|
clickRow(event, row) {
|
|
21006
|
-
var _a;
|
|
21007
20992
|
if (this.loading) {
|
|
21008
20993
|
// Wait while loading, and loop
|
|
21009
20994
|
if (this.debug)
|
|
21010
20995
|
console.debug("[table] Waiting before apply clickRow() (datasource is busy)...");
|
|
21011
|
-
(
|
|
20996
|
+
firstFalsePromise(this.loadingSubject).then(() => this.clickRow(event, row));
|
|
21012
20997
|
return false;
|
|
21013
20998
|
}
|
|
21014
20999
|
// DEBUG
|
|
@@ -21493,7 +21478,7 @@ class AppTable {
|
|
|
21493
21478
|
row = row || this.editedRow;
|
|
21494
21479
|
if (!row || !this.formErrorAdapter)
|
|
21495
21480
|
return undefined;
|
|
21496
|
-
return this.formErrorAdapter.translateErrors(row.validator, Object.assign({
|
|
21481
|
+
return this.formErrorAdapter.translateErrors(row.validator, Object.assign(Object.assign({}, this.translateErrorOptions), opts));
|
|
21497
21482
|
}
|
|
21498
21483
|
setError(value, opts) {
|
|
21499
21484
|
if (this.errorSubject.value !== value) {
|
|
@@ -22338,7 +22323,7 @@ class AppEntityEditor extends AppTabEditor {
|
|
|
22338
22323
|
try {
|
|
22339
22324
|
const data = yield this.dataService.load(id, opts);
|
|
22340
22325
|
if (!data)
|
|
22341
|
-
throw { code: ErrorCodes
|
|
22326
|
+
throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
|
|
22342
22327
|
this._usageMode = this.computeUsageMode(data);
|
|
22343
22328
|
yield this.onEntityLoaded(data, opts);
|
|
22344
22329
|
yield this.updateView(data, opts);
|
|
@@ -23231,7 +23216,7 @@ class UserEventService extends BaseGraphqlService {
|
|
|
23231
23216
|
EntityUtils.copyIdAndUpdateDate(source, target);
|
|
23232
23217
|
}
|
|
23233
23218
|
}
|
|
23234
|
-
UserEventService.ɵprov =
|
|
23219
|
+
UserEventService.ɵprov = ɵɵdefineInjectable({ factory: function UserEventService_Factory() { return new UserEventService(ɵɵinject(GraphqlService), ɵɵinject(AccountService), ɵɵinject(NetworkService), ɵɵinject(TranslateService), ɵɵinject(ToastController), ɵɵinject(ENVIRONMENT)); }, token: UserEventService, providedIn: "root" });
|
|
23235
23220
|
UserEventService.decorators = [
|
|
23236
23221
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23237
23222
|
];
|
|
@@ -23616,7 +23601,7 @@ class PersonService extends BaseEntityService {
|
|
|
23616
23601
|
return target;
|
|
23617
23602
|
}
|
|
23618
23603
|
}
|
|
23619
|
-
PersonService.ɵprov =
|
|
23604
|
+
PersonService.ɵprov = ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(ɵɵinject(GraphqlService), ɵɵinject(PlatformService), ɵɵinject(NetworkService), ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
|
|
23620
23605
|
PersonService.decorators = [
|
|
23621
23606
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23622
23607
|
];
|
|
@@ -23647,7 +23632,7 @@ class PersonValidatorService {
|
|
|
23647
23632
|
return this.formBuilder.group(formConfig);
|
|
23648
23633
|
}
|
|
23649
23634
|
}
|
|
23650
|
-
PersonValidatorService.ɵprov =
|
|
23635
|
+
PersonValidatorService.ɵprov = ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(ɵɵinject(FormBuilder), ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
|
|
23651
23636
|
PersonValidatorService.decorators = [
|
|
23652
23637
|
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
23653
23638
|
];
|
|
@@ -23853,16 +23838,16 @@ AdminModule.decorators = [
|
|
|
23853
23838
|
];
|
|
23854
23839
|
AdminModule.ctorParameters = () => [];
|
|
23855
23840
|
|
|
23856
|
-
const ɵ0 = {
|
|
23841
|
+
const ɵ0$a = {
|
|
23857
23842
|
profile: 'ADMIN'
|
|
23858
23843
|
};
|
|
23859
|
-
const routes = [
|
|
23844
|
+
const routes$1 = [
|
|
23860
23845
|
{
|
|
23861
23846
|
path: 'users',
|
|
23862
23847
|
pathMatch: 'full',
|
|
23863
23848
|
component: UsersPage,
|
|
23864
23849
|
canActivate: [AuthGuardService],
|
|
23865
|
-
data: ɵ0
|
|
23850
|
+
data: ɵ0$a
|
|
23866
23851
|
}
|
|
23867
23852
|
];
|
|
23868
23853
|
class AdminRoutingModule {
|
|
@@ -23872,13 +23857,13 @@ AdminRoutingModule.decorators = [
|
|
|
23872
23857
|
imports: [
|
|
23873
23858
|
SharedRoutingModule,
|
|
23874
23859
|
AdminModule,
|
|
23875
|
-
RouterModule.forChild(routes)
|
|
23860
|
+
RouterModule.forChild(routes$1)
|
|
23876
23861
|
],
|
|
23877
23862
|
exports: [RouterModule]
|
|
23878
23863
|
},] }
|
|
23879
23864
|
];
|
|
23880
23865
|
|
|
23881
|
-
const ErrorCodes = {
|
|
23866
|
+
const ErrorCodes$2 = {
|
|
23882
23867
|
LOAD_PERSONS_ERROR: 100,
|
|
23883
23868
|
SAVE_PERSONS_ERROR: 101,
|
|
23884
23869
|
DELETE_PERSONS_ERROR: 102,
|
|
@@ -23890,5 +23875,5 @@ const ErrorCodes = {
|
|
|
23890
23875
|
* Generated bundle index. Do not edit.
|
|
23891
23876
|
*/
|
|
23892
23877
|
|
|
23893
|
-
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorAdapter, FormErrorTranslatePipe, FormFieldValuesHolder, Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitIdle, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
|
|
23878
|
+
export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AnimationState, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, ErrorCodes$2 as ErrorCodes, EvenPipe, FileService, FileSizePipe, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorAdapter, FormErrorTranslatePipe, FormFieldValuesHolder, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialChipsModule, MaterialTestingModule, MaterialTestingPage, MathAbsPipe, MenuComponent, MenuItems, MenuService, ModalToolbarComponent, NetworkService, NgInitDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialRef, ReferentialUtils, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBooleanModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedValidators, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UserEvent, UserEventFilter, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isControlHasInput, isEmptyArray, isInputElement, isInstanceOf, isInt, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitIdle, waitWhilePending, ɵ0$5 as ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh };
|
|
23894
23879
|
//# sourceMappingURL=sumaris-net.ngx-components.js.map
|