@sumaris-net/ngx-components 0.26.7 → 0.27.3
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 +409 -308
- 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/src/app/core/form/editor.class.js +174 -127
- package/esm2015/src/app/core/form/entity-editor.class.js +1 -1
- package/esm2015/src/app/core/form/form.class.js +17 -1
- package/esm2015/src/app/core/form/form.utils.js +14 -1
- package/esm2015/src/app/core/graphql/graphql.service.js +1 -2
- package/esm2015/src/app/core/services/config.service.js +1 -1
- package/esm2015/src/app/core/services/platform.service.js +65 -84
- package/esm2015/src/app/core/table/table.class.js +14 -2
- package/esm2015/src/app/shared/pipes/number-format.pipe.js +3 -3
- package/esm2015/src/app/shared/services/startable-service.class.js +12 -5
- package/fesm2015/sumaris-net.ngx-components.js +286 -215
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +3 -3
- package/src/app/core/form/editor.class.d.ts +43 -26
- package/src/app/core/form/form.class.d.ts +10 -0
- package/src/app/core/form/form.utils.d.ts +16 -0
- package/src/app/core/services/platform.service.d.ts +3 -15
- package/src/app/core/table/table.class.d.ts +5 -0
- package/src/app/shared/pipes/number-format.pipe.d.ts +1 -1
- package/src/app/shared/services/startable-service.class.d.ts +2 -1
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -37,7 +37,7 @@ import { __awaiter, __decorate } from 'tslib';
|
|
|
37
37
|
import * as i1$6 from '@angular/forms';
|
|
38
38
|
import { NG_VALUE_ACCESSOR, FormGroupDirective, AbstractControl, FormGroup, FormArray, FormControl, ReactiveFormsModule, Validators, FormBuilder } from '@angular/forms';
|
|
39
39
|
import { timer, merge, fromEvent, Subscription, BehaviorSubject, Subject, isObservable, of, noop as noop$8, Observable, defer, from, combineLatest, EMPTY } from 'rxjs';
|
|
40
|
-
import { filter, first, map, takeUntil, startWith, debounceTime, takeWhile, switchMap, tap, distinctUntilChanged, mergeMap, catchError, throttleTime } from 'rxjs/operators';
|
|
40
|
+
import { filter, first, map, takeUntil, startWith, debounceTime, takeWhile, switchMap, tap, distinctUntilChanged, mergeMap, catchError, throttleTime, skip } from 'rxjs/operators';
|
|
41
41
|
import * as i1$1 from '@ngx-translate/core';
|
|
42
42
|
import { TranslateService, TranslateModule } from '@ngx-translate/core';
|
|
43
43
|
import * as i1$4 from '@ionic/angular';
|
|
@@ -1927,11 +1927,11 @@ LongitudeFormatPipe.decorators = [
|
|
|
1927
1927
|
];
|
|
1928
1928
|
|
|
1929
1929
|
class NumberFormatPipe {
|
|
1930
|
-
transform(val) {
|
|
1930
|
+
transform(val, numberFormatOptions) {
|
|
1931
1931
|
// Format the output to display any way you want here.
|
|
1932
1932
|
// For instance:
|
|
1933
1933
|
if (val !== undefined && val !== null) {
|
|
1934
|
-
return val.toLocaleString(
|
|
1934
|
+
return val.toLocaleString(undefined, numberFormatOptions);
|
|
1935
1935
|
}
|
|
1936
1936
|
else {
|
|
1937
1937
|
return '';
|
|
@@ -2918,6 +2918,13 @@ class AppNullForm {
|
|
|
2918
2918
|
markAsDirty(opts) { }
|
|
2919
2919
|
markAsLoading(opts) { }
|
|
2920
2920
|
markAsLoaded(opts) { }
|
|
2921
|
+
markAsReady(opts) { }
|
|
2922
|
+
waitIdle(opts) {
|
|
2923
|
+
return Promise.reject(false);
|
|
2924
|
+
}
|
|
2925
|
+
ready() {
|
|
2926
|
+
return Promise.reject(true);
|
|
2927
|
+
}
|
|
2921
2928
|
}
|
|
2922
2929
|
class AppFormProvider {
|
|
2923
2930
|
constructor(getterFn) {
|
|
@@ -2961,6 +2968,9 @@ class AppFormProvider {
|
|
|
2961
2968
|
get loading() {
|
|
2962
2969
|
return this.delegate.loading;
|
|
2963
2970
|
}
|
|
2971
|
+
ready() {
|
|
2972
|
+
return this.delegate.ready();
|
|
2973
|
+
}
|
|
2964
2974
|
disable(opts) {
|
|
2965
2975
|
return this.delegate.disable(opts);
|
|
2966
2976
|
}
|
|
@@ -2988,6 +2998,9 @@ class AppFormProvider {
|
|
|
2988
2998
|
markAsLoaded(opts) {
|
|
2989
2999
|
return this.delegate.markAsLoaded(opts);
|
|
2990
3000
|
}
|
|
3001
|
+
markAsReady(opts) {
|
|
3002
|
+
return this.delegate.markAsReady(opts);
|
|
3003
|
+
}
|
|
2991
3004
|
}
|
|
2992
3005
|
AppFormProvider.NULL_FORM = new AppNullForm();
|
|
2993
3006
|
// TODO continue to use this kind of declaration ?
|
|
@@ -7619,13 +7632,14 @@ AppFormField.propDecorators = {
|
|
|
7619
7632
|
};
|
|
7620
7633
|
|
|
7621
7634
|
class StartableService {
|
|
7622
|
-
constructor(
|
|
7635
|
+
constructor(prerequisiteService) {
|
|
7623
7636
|
this.onStart = new Subject();
|
|
7624
7637
|
this._debug = false;
|
|
7638
|
+
this._startByReadyFunction = true; // should start when calling ready() ?
|
|
7625
7639
|
this._data = null;
|
|
7626
7640
|
this._started = false;
|
|
7627
|
-
this._startPrerequisite =
|
|
7628
|
-
? () =>
|
|
7641
|
+
this._startPrerequisite = prerequisiteService
|
|
7642
|
+
? () => prerequisiteService.ready()
|
|
7629
7643
|
: () => Promise.resolve();
|
|
7630
7644
|
}
|
|
7631
7645
|
start() {
|
|
@@ -7680,7 +7694,12 @@ class StartableService {
|
|
|
7680
7694
|
ready() {
|
|
7681
7695
|
if (this._started)
|
|
7682
7696
|
return Promise.resolve(this._data);
|
|
7683
|
-
|
|
7697
|
+
if (this._startPromise)
|
|
7698
|
+
return this._startPromise;
|
|
7699
|
+
if (this._startByReadyFunction)
|
|
7700
|
+
return this.start();
|
|
7701
|
+
return waitFor(() => this._started)
|
|
7702
|
+
.then(() => this._data);
|
|
7684
7703
|
}
|
|
7685
7704
|
ngOnStop() {
|
|
7686
7705
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -12260,7 +12279,6 @@ class GraphqlService extends StartableService {
|
|
|
12260
12279
|
.append('Authorization', authorization);
|
|
12261
12280
|
//.append('X-App-Name', environment.name)
|
|
12262
12281
|
//.append('X-App-Version', environment.version)
|
|
12263
|
-
;
|
|
12264
12282
|
// Use the setContext method to set the HTTP headers.
|
|
12265
12283
|
operation.setContext(Object.assign(Object.assign({}, operation.getContext()), { headers }));
|
|
12266
12284
|
// Call the next link in the middleware chain.
|
|
@@ -14371,8 +14389,9 @@ ConfigService.ctorParameters = () => [
|
|
|
14371
14389
|
];
|
|
14372
14390
|
|
|
14373
14391
|
const moment$2 = momentImported;
|
|
14374
|
-
class PlatformService {
|
|
14392
|
+
class PlatformService extends StartableService {
|
|
14375
14393
|
constructor(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser, downloader) {
|
|
14394
|
+
super(platform);
|
|
14376
14395
|
this.platform = platform;
|
|
14377
14396
|
this.cdkPlatform = cdkPlatform;
|
|
14378
14397
|
this.toastController = toastController;
|
|
@@ -14392,15 +14411,10 @@ class PlatformService {
|
|
|
14392
14411
|
this.splashScreen = splashScreen;
|
|
14393
14412
|
this.browser = browser;
|
|
14394
14413
|
this.downloader = downloader;
|
|
14395
|
-
this._started = false;
|
|
14396
14414
|
this._downloadingJobs = new Map();
|
|
14397
14415
|
this._debug = !environment.production;
|
|
14398
14416
|
if (this._debug)
|
|
14399
14417
|
console.debug('[platform] Creating service');
|
|
14400
|
-
this.start();
|
|
14401
|
-
}
|
|
14402
|
-
get started() {
|
|
14403
|
-
return this._started;
|
|
14404
14418
|
}
|
|
14405
14419
|
get mobile() {
|
|
14406
14420
|
return isNotNil(this._mobile) ? this._mobile : this.platform.is('mobile');
|
|
@@ -14419,7 +14433,7 @@ class PlatformService {
|
|
|
14419
14433
|
return this._android && this._cordova;
|
|
14420
14434
|
}
|
|
14421
14435
|
get canDownload() {
|
|
14422
|
-
return this.
|
|
14436
|
+
return isNotNil(this.downloader);
|
|
14423
14437
|
}
|
|
14424
14438
|
width() {
|
|
14425
14439
|
return this.platform.width();
|
|
@@ -14427,78 +14441,62 @@ class PlatformService {
|
|
|
14427
14441
|
height() {
|
|
14428
14442
|
return this.platform.height();
|
|
14429
14443
|
}
|
|
14430
|
-
|
|
14431
|
-
|
|
14432
|
-
|
|
14433
|
-
|
|
14434
|
-
|
|
14435
|
-
|
|
14436
|
-
|
|
14437
|
-
|
|
14438
|
-
|
|
14439
|
-
|
|
14440
|
-
|
|
14441
|
-
|
|
14442
|
-
|
|
14443
|
-
|
|
14444
|
-
|
|
14445
|
-
|
|
14446
|
-
|
|
14447
|
-
|
|
14448
|
-
|
|
14449
|
-
|
|
14450
|
-
|
|
14451
|
-
|
|
14452
|
-
|
|
14453
|
-
|
|
14454
|
-
|
|
14455
|
-
|
|
14456
|
-
|
|
14457
|
-
|
|
14458
|
-
|
|
14459
|
-
|
|
14460
|
-
|
|
14461
|
-
|
|
14462
|
-
|
|
14463
|
-
|
|
14464
|
-
|
|
14465
|
-
|
|
14466
|
-
|
|
14467
|
-
|
|
14468
|
-
|
|
14469
|
-
|
|
14470
|
-
|
|
14471
|
-
|
|
14472
|
-
|
|
14473
|
-
|
|
14474
|
-
|
|
14475
|
-
|
|
14476
|
-
|
|
14477
|
-
|
|
14478
|
-
|
|
14479
|
-
|
|
14480
|
-
|
|
14481
|
-
|
|
14482
|
-
|
|
14483
|
-
|
|
14484
|
-
|
|
14485
|
-
|
|
14486
|
-
}
|
|
14487
|
-
/**
|
|
14488
|
-
* Wait platform is ready.<br/>
|
|
14489
|
-
* Important: this will NOT start the platform, has it should be started by the AppComponent
|
|
14490
|
-
*
|
|
14491
|
-
* @param opts
|
|
14492
|
-
*/
|
|
14493
|
-
ready(opts) {
|
|
14494
|
-
const period = opts && opts.checkPeriod || 300;
|
|
14495
|
-
if (this._started)
|
|
14496
|
-
return Promise.resolve();
|
|
14497
|
-
return timer(period, period)
|
|
14498
|
-
.pipe(
|
|
14499
|
-
// For DEBUG :
|
|
14500
|
-
//tap(() => this._debug && console.debug("Waiting platform ready...")),
|
|
14501
|
-
filter(() => this._started), first()).toPromise();
|
|
14444
|
+
ngOnStart() {
|
|
14445
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
14446
|
+
const now = Date.now();
|
|
14447
|
+
this.accountService.tokenType = undefined;
|
|
14448
|
+
console.info('[platform] Starting platform...');
|
|
14449
|
+
try {
|
|
14450
|
+
this._mobile = this.platform.is('mobile');
|
|
14451
|
+
this._cordova = this.platform.is('cordova');
|
|
14452
|
+
this._android = this.platform.is('android');
|
|
14453
|
+
this.configureCordovaPlugins(this._mobile);
|
|
14454
|
+
this.touchUi = this._mobile || this.platform.is('tablet') || this.platform.is('phablet');
|
|
14455
|
+
// Force mobile in settings
|
|
14456
|
+
if (this._mobile) {
|
|
14457
|
+
this.settings.mobile = this._mobile;
|
|
14458
|
+
this.settings.touchUi = this.touchUi;
|
|
14459
|
+
}
|
|
14460
|
+
// Configure translation
|
|
14461
|
+
yield this.configureTranslate();
|
|
14462
|
+
// Configure storage
|
|
14463
|
+
const forage = yield this.storageReady();
|
|
14464
|
+
yield this.migrateStorage(forage);
|
|
14465
|
+
// Start root services
|
|
14466
|
+
yield Promise.all([
|
|
14467
|
+
this.entitiesStorage.ready(),
|
|
14468
|
+
this.cache.ready().then(() => this.configureCache()),
|
|
14469
|
+
this.settings.ready(),
|
|
14470
|
+
this.networkService.ready(),
|
|
14471
|
+
this.audioProvider.ready()
|
|
14472
|
+
]);
|
|
14473
|
+
console.info(`[platform] Starting platform [OK] {mobile: ${this._mobile}, touchUi: ${this.touchUi}, downloader: ${this.canDownload}} in ${Date.now() - now}ms`);
|
|
14474
|
+
// Update cache configuration when network changed
|
|
14475
|
+
this.networkService.onNetworkStatusChanges
|
|
14476
|
+
.pipe(skip(1)) // Skip the first event (behavior subject send event immediately)
|
|
14477
|
+
.subscribe(type => this.configureCache(type !== 'none'));
|
|
14478
|
+
// Update authentication type
|
|
14479
|
+
this.configService.config
|
|
14480
|
+
.pipe(map(config => config === null || config === void 0 ? void 0 : config.getProperty(CORE_CONFIG_OPTIONS.AUTH_TOKEN_TYPE)), filter(isNotNilOrBlank), distinctUntilChanged())
|
|
14481
|
+
.subscribe(tokenType => {
|
|
14482
|
+
console.info(`[platform] Using auth token type {${tokenType}}`);
|
|
14483
|
+
this.accountService.tokenType = tokenType;
|
|
14484
|
+
});
|
|
14485
|
+
// Hide the splashscreen (if mobile) - after 1s
|
|
14486
|
+
if (this.mobile) {
|
|
14487
|
+
setTimeout(() => {
|
|
14488
|
+
var _a;
|
|
14489
|
+
(_a = this.splashScreen) === null || _a === void 0 ? void 0 : _a.hide();
|
|
14490
|
+
// Play startup sound
|
|
14491
|
+
this.audioProvider.playStartupSound();
|
|
14492
|
+
}, 1000);
|
|
14493
|
+
}
|
|
14494
|
+
}
|
|
14495
|
+
catch (err) {
|
|
14496
|
+
// Manage startup error
|
|
14497
|
+
return this.onStartupError(err);
|
|
14498
|
+
}
|
|
14499
|
+
});
|
|
14502
14500
|
}
|
|
14503
14501
|
open(url, target, features, replace) {
|
|
14504
14502
|
console.info(`[platform] Opening link: ${url}`);
|
|
@@ -14609,9 +14607,9 @@ class PlatformService {
|
|
|
14609
14607
|
});
|
|
14610
14608
|
}
|
|
14611
14609
|
configureCache(online) {
|
|
14612
|
-
online =
|
|
14610
|
+
online = toBoolean(online, this.cache.isOnline());
|
|
14613
14611
|
const cacheTTL = online ? 3600 /* 1h */ : 3600 * 24 * 30; /* 1 month */
|
|
14614
|
-
console.info(`[platform] Configuring cache [OK] {online: ${online}
|
|
14612
|
+
console.info(`[platform] Configuring cache [OK] {online: ${online}, timeToLive: ${cacheTTL / 3600}h, offlineInvalidate: false}`);
|
|
14615
14613
|
this.cache.setDefaultTTL(cacheTTL);
|
|
14616
14614
|
this.cache.setOfflineInvalidate(false); // Do not invalidate cache when offline
|
|
14617
14615
|
}
|
|
@@ -16566,6 +16564,7 @@ class AppForm {
|
|
|
16566
16564
|
this.error = null;
|
|
16567
16565
|
this._enable = false;
|
|
16568
16566
|
this._loading = true;
|
|
16567
|
+
this._ready = true;
|
|
16569
16568
|
this.i18nFieldPrefix = null;
|
|
16570
16569
|
this._subscription = new Subscription();
|
|
16571
16570
|
this.debug = false;
|
|
@@ -16735,6 +16734,20 @@ class AppForm {
|
|
|
16735
16734
|
this.markForCheck();
|
|
16736
16735
|
}
|
|
16737
16736
|
}
|
|
16737
|
+
markAsReady(opts) {
|
|
16738
|
+
if (!this._ready) {
|
|
16739
|
+
this._ready = true;
|
|
16740
|
+
if (!opts || opts.emitEvent !== false)
|
|
16741
|
+
this.markForCheck();
|
|
16742
|
+
}
|
|
16743
|
+
}
|
|
16744
|
+
/**
|
|
16745
|
+
* Wait form is ready
|
|
16746
|
+
* @param opts
|
|
16747
|
+
*/
|
|
16748
|
+
ready(opts) {
|
|
16749
|
+
return waitFor(() => this._ready, opts);
|
|
16750
|
+
}
|
|
16738
16751
|
/**
|
|
16739
16752
|
* Wait form is idle (not loading)
|
|
16740
16753
|
* @param opts
|
|
@@ -20349,6 +20362,7 @@ class AppTable {
|
|
|
20349
20362
|
this.allowRowDetail = true;
|
|
20350
20363
|
this.excludesColumns = [];
|
|
20351
20364
|
this.totalRowCount = null;
|
|
20365
|
+
this.readySubject = new BehaviorSubject(false);
|
|
20352
20366
|
this.loadingSubject = new BehaviorSubject(true);
|
|
20353
20367
|
this.savingSubject = new BehaviorSubject(false);
|
|
20354
20368
|
this.dirtySubject = new BehaviorSubject(false);
|
|
@@ -20552,6 +20566,14 @@ class AppTable {
|
|
|
20552
20566
|
(_a = row.validator) === null || _a === void 0 ? void 0 : _a.markAsDirty(opts);
|
|
20553
20567
|
this.markAsDirty(opts);
|
|
20554
20568
|
}
|
|
20569
|
+
markAsReady(opts) {
|
|
20570
|
+
if (this.readySubject.value !== false) {
|
|
20571
|
+
this.readySubject.next(false);
|
|
20572
|
+
if (!opts || opts.emitEvent !== false) {
|
|
20573
|
+
this.markForCheck();
|
|
20574
|
+
}
|
|
20575
|
+
}
|
|
20576
|
+
}
|
|
20555
20577
|
get loading() {
|
|
20556
20578
|
return this.loadingSubject.value;
|
|
20557
20579
|
}
|
|
@@ -21147,6 +21169,9 @@ class AppTable {
|
|
|
21147
21169
|
moveRow(id, direction) {
|
|
21148
21170
|
this.dataSource.move(id, direction);
|
|
21149
21171
|
}
|
|
21172
|
+
ready() {
|
|
21173
|
+
return firstTruePromise(this.readySubject);
|
|
21174
|
+
}
|
|
21150
21175
|
waitIdle() {
|
|
21151
21176
|
return firstFalsePromise(this.loadingSubject);
|
|
21152
21177
|
}
|
|
@@ -21829,8 +21854,8 @@ AppTable.propDecorators = {
|
|
|
21829
21854
|
class AppTabEditorOptions {
|
|
21830
21855
|
}
|
|
21831
21856
|
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
21832
|
-
class
|
|
21833
|
-
constructor(route, router, alertCtrl, translate
|
|
21857
|
+
class AppEditor {
|
|
21858
|
+
constructor(route, router, alertCtrl, translate) {
|
|
21834
21859
|
this.route = route;
|
|
21835
21860
|
this.router = router;
|
|
21836
21861
|
this.alertCtrl = alertCtrl;
|
|
@@ -21839,16 +21864,11 @@ class AppTabEditor {
|
|
|
21839
21864
|
this._enabled = false;
|
|
21840
21865
|
this._dirty = false;
|
|
21841
21866
|
this._loading = true;
|
|
21842
|
-
this.
|
|
21867
|
+
this._$ready = new BehaviorSubject(false);
|
|
21843
21868
|
this.debug = false;
|
|
21844
21869
|
this.submitted = false;
|
|
21845
21870
|
this.toolbar = null;
|
|
21846
21871
|
this.formButtonsBar = null;
|
|
21847
|
-
this.selectedTabIndexChange = new EventEmitter();
|
|
21848
|
-
options = Object.assign({ tabCount: 1, enableSwipe: true, tabGroupAnimationDuration: '200ms' }, options);
|
|
21849
|
-
this.tabCount = options.tabCount;
|
|
21850
|
-
this.enableSwipe = options.enableSwipe;
|
|
21851
|
-
this.tabGroupAnimationDuration = options.tabGroupAnimationDuration;
|
|
21852
21872
|
}
|
|
21853
21873
|
get tables() {
|
|
21854
21874
|
return this._children && this._children.filter(c => c instanceof AppTable);
|
|
@@ -21888,31 +21908,7 @@ class AppTabEditor {
|
|
|
21888
21908
|
get empty() {
|
|
21889
21909
|
return this._enabled;
|
|
21890
21910
|
}
|
|
21891
|
-
get selectedTabIndex() {
|
|
21892
|
-
return this._selectedTabIndex;
|
|
21893
|
-
}
|
|
21894
|
-
set selectedTabIndex(value) {
|
|
21895
|
-
this.setSelectedTabIndex(value);
|
|
21896
|
-
}
|
|
21897
21911
|
ngOnInit() {
|
|
21898
|
-
this.queryTabIndexParamName = this.queryTabIndexParamName || 'tab';
|
|
21899
|
-
// Read the selected tab index, from path query params
|
|
21900
|
-
if (this.tabGroup) {
|
|
21901
|
-
this.registerSubscription(this.route.queryParams
|
|
21902
|
-
.subscribe(queryParams => {
|
|
21903
|
-
this.queryParams = Object.assign({}, queryParams);
|
|
21904
|
-
// Parse tab param
|
|
21905
|
-
if (this.tabCount > 1 && this.queryTabIndexParamName) {
|
|
21906
|
-
const tabIndex = queryParams[this.queryTabIndexParamName];
|
|
21907
|
-
this.queryParams[this.queryTabIndexParamName] = tabIndex && parseInt(tabIndex) || undefined;
|
|
21908
|
-
if (isNotNil(this.queryParams[this.queryTabIndexParamName])) {
|
|
21909
|
-
this.selectedTabIndex = this.queryParams[this.queryTabIndexParamName];
|
|
21910
|
-
}
|
|
21911
|
-
}
|
|
21912
|
-
// Realign tab, after a delay because the tab can be disabled when component is created
|
|
21913
|
-
setTimeout(() => this.tabGroup.realignInkBar(), 500);
|
|
21914
|
-
}));
|
|
21915
|
-
}
|
|
21916
21912
|
if (this.formButtonsBar) {
|
|
21917
21913
|
this.registerSubscription(this.formButtonsBar.onBack.subscribe(event => this.goBack(event)));
|
|
21918
21914
|
}
|
|
@@ -21922,7 +21918,6 @@ class AppTabEditor {
|
|
|
21922
21918
|
}
|
|
21923
21919
|
ngOnDestroy() {
|
|
21924
21920
|
this._subscription.unsubscribe();
|
|
21925
|
-
this.selectedTabIndexChange.complete();
|
|
21926
21921
|
}
|
|
21927
21922
|
addChildForm(form) {
|
|
21928
21923
|
if (!form)
|
|
@@ -22004,65 +21999,18 @@ class AppTabEditor {
|
|
|
22004
21999
|
this.markForCheck();
|
|
22005
22000
|
}
|
|
22006
22001
|
}
|
|
22007
|
-
|
|
22008
|
-
|
|
22009
|
-
|
|
22010
|
-
|
|
22011
|
-
if (!this.
|
|
22012
|
-
this.queryParams = this.queryParams || {};
|
|
22013
|
-
this.queryParams[queryTabIndexParamName] = event.index;
|
|
22014
|
-
if (queryTabIndexParamName === 'tab' && isNotNil(this.queryParams['subtab'])) {
|
|
22015
|
-
delete this.queryParams.subtab; // clean subtab
|
|
22016
|
-
}
|
|
22017
|
-
this.router.navigate(['.'], {
|
|
22018
|
-
relativeTo: this.route,
|
|
22019
|
-
queryParams: this.queryParams,
|
|
22020
|
-
replaceUrl: true
|
|
22021
|
-
});
|
|
22022
|
-
return true;
|
|
22023
|
-
}
|
|
22024
|
-
return false;
|
|
22025
|
-
}
|
|
22026
|
-
/**
|
|
22027
|
-
* Action triggered when user swipes
|
|
22028
|
-
*/
|
|
22029
|
-
onSwipeTab(event) {
|
|
22030
|
-
// DEBUG
|
|
22031
|
-
// if (this.debug) console.debug("[tab-page] onSwipeTab()");
|
|
22032
|
-
// Skip, if not a valid swipe event
|
|
22033
|
-
if (!this.enableSwipe || !event
|
|
22034
|
-
|| event.defaultPrevented || (event.srcEvent && event.srcEvent.defaultPrevented)
|
|
22035
|
-
|| event.pointerType !== 'touch') {
|
|
22036
|
-
return false;
|
|
22037
|
-
}
|
|
22038
|
-
// DEBUG
|
|
22039
|
-
//if (this.debug)
|
|
22040
|
-
//console.debug("[tab-page] Detected swipe: " + event.type, event);
|
|
22041
|
-
let selectTabIndex = this.selectedTabIndex;
|
|
22042
|
-
switch (event.type) {
|
|
22043
|
-
// Open next tab
|
|
22044
|
-
case 'swipeleft':
|
|
22045
|
-
const isLast = selectTabIndex >= (this.tabCount - 1);
|
|
22046
|
-
selectTabIndex = isLast ? 0 : selectTabIndex + 1;
|
|
22047
|
-
break;
|
|
22048
|
-
// Open previous tab
|
|
22049
|
-
case 'swiperight':
|
|
22050
|
-
const isFirst = selectTabIndex <= 0;
|
|
22051
|
-
selectTabIndex = isFirst ? this.tabCount : selectTabIndex - 1;
|
|
22052
|
-
break;
|
|
22053
|
-
// Other case
|
|
22054
|
-
default:
|
|
22055
|
-
console.error('[tab-page] Unknown swipe action: ' + event.type);
|
|
22056
|
-
return false;
|
|
22057
|
-
}
|
|
22058
|
-
setTimeout(() => {
|
|
22059
|
-
this.selectedTabIndex = selectTabIndex;
|
|
22002
|
+
markAsReady(opts) {
|
|
22003
|
+
var _a;
|
|
22004
|
+
(_a = this._children) === null || _a === void 0 ? void 0 : _a.forEach(c => c.markAsReady(opts));
|
|
22005
|
+
this._$ready.next(true);
|
|
22006
|
+
if (!this.loading && (!opts || opts.emitEvent !== false))
|
|
22060
22007
|
this.markForCheck();
|
|
22061
|
-
});
|
|
22062
|
-
return true;
|
|
22063
22008
|
}
|
|
22064
|
-
|
|
22065
|
-
this.
|
|
22009
|
+
ready(opts) {
|
|
22010
|
+
return firstTruePromise(this._$ready);
|
|
22011
|
+
}
|
|
22012
|
+
waitIdle(opts) {
|
|
22013
|
+
return AppFormUtils.waitIdle(this, opts);
|
|
22066
22014
|
}
|
|
22067
22015
|
cancel(event) {
|
|
22068
22016
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -22083,7 +22031,6 @@ class AppTabEditor {
|
|
|
22083
22031
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22084
22032
|
console.debug('[tab-page] Unloading data...');
|
|
22085
22033
|
this.markAsLoading();
|
|
22086
|
-
this.selectedTabIndex = 0;
|
|
22087
22034
|
this._children.forEach(f => {
|
|
22088
22035
|
if (f instanceof AppForm) {
|
|
22089
22036
|
f.reset(null, opts);
|
|
@@ -22144,28 +22091,11 @@ class AppTabEditor {
|
|
|
22144
22091
|
}
|
|
22145
22092
|
});
|
|
22146
22093
|
}
|
|
22147
|
-
|
|
22148
|
-
|
|
22149
|
-
if (
|
|
22150
|
-
|
|
22151
|
-
|
|
22152
|
-
else if (value > this.tabCount - 1) {
|
|
22153
|
-
value = this.tabCount - 1;
|
|
22154
|
-
}
|
|
22155
|
-
this._selectedTabIndex = value;
|
|
22156
|
-
this.selectedTabIndexChange.next(value);
|
|
22157
|
-
if (this.tabGroup && (!opts || opts.realignInkBar !== false)) {
|
|
22158
|
-
this.tabGroup.selectedIndex = value;
|
|
22159
|
-
this.markForCheck();
|
|
22160
|
-
// Wait tab change in UI, before realign ink tab
|
|
22161
|
-
setTimeout(() => this.tabGroup.realignInkBar(), 200);
|
|
22162
|
-
}
|
|
22163
|
-
else if (!opts || opts.emitEvent !== false) {
|
|
22164
|
-
this.markForCheck();
|
|
22165
|
-
}
|
|
22166
|
-
}
|
|
22167
|
-
waitIdle(opts) {
|
|
22168
|
-
return AppFormUtils.waitIdle(this, opts);
|
|
22094
|
+
logFormErrors() {
|
|
22095
|
+
var _a;
|
|
22096
|
+
if (this.debug)
|
|
22097
|
+
console.debug('[app-tab-editor] Page not valid. Checking where (forms, tables)...');
|
|
22098
|
+
(_a = this._children) === null || _a === void 0 ? void 0 : _a.forEach(c => this.logChildrenFormErrors(c));
|
|
22169
22099
|
}
|
|
22170
22100
|
/* -- protected methods -- */
|
|
22171
22101
|
scrollToTop(duration) {
|
|
@@ -22242,16 +22172,10 @@ class AppTabEditor {
|
|
|
22242
22172
|
yield Toasts.show(this.toastController, this.translate, opts);
|
|
22243
22173
|
});
|
|
22244
22174
|
}
|
|
22245
|
-
logFormErrors() {
|
|
22246
|
-
var _a;
|
|
22247
|
-
if (this.debug)
|
|
22248
|
-
console.debug('[app-tab-editor] Page not valid. Checking where (forms, tables)...');
|
|
22249
|
-
(_a = this._children) === null || _a === void 0 ? void 0 : _a.forEach(c => this.logChildrenFormErrors(c));
|
|
22250
|
-
}
|
|
22251
22175
|
logChildrenFormErrors(c, prefix, path) {
|
|
22252
22176
|
prefix = prefix || '[app-tab-editor] ';
|
|
22253
22177
|
// If editor
|
|
22254
|
-
if (c instanceof
|
|
22178
|
+
if (c instanceof AppEditor) {
|
|
22255
22179
|
c.logFormErrors();
|
|
22256
22180
|
}
|
|
22257
22181
|
// Angular form control
|
|
@@ -22293,6 +22217,156 @@ class AppTabEditor {
|
|
|
22293
22217
|
// Should be override by subclasses, if change detection is Push
|
|
22294
22218
|
}
|
|
22295
22219
|
}
|
|
22220
|
+
AppEditor.decorators = [
|
|
22221
|
+
{ type: Directive }
|
|
22222
|
+
];
|
|
22223
|
+
AppEditor.ctorParameters = () => [
|
|
22224
|
+
{ type: ActivatedRoute },
|
|
22225
|
+
{ type: Router },
|
|
22226
|
+
{ type: AlertController },
|
|
22227
|
+
{ type: TranslateService }
|
|
22228
|
+
];
|
|
22229
|
+
AppEditor.propDecorators = {
|
|
22230
|
+
toolbar: [{ type: ViewChild, args: [ToolbarToken,] }],
|
|
22231
|
+
formButtonsBar: [{ type: ViewChild, args: [FormButtonsBarToken, { static: true },] }],
|
|
22232
|
+
content: [{ type: ViewChild, args: [IonContent, { static: true },] }]
|
|
22233
|
+
};
|
|
22234
|
+
// eslint-disable-next-line @angular-eslint/directive-class-suffix
|
|
22235
|
+
class AppTabEditor extends AppEditor {
|
|
22236
|
+
constructor(route, router, alertCtrl, translate, options) {
|
|
22237
|
+
super(route, router, alertCtrl, translate);
|
|
22238
|
+
this.route = route;
|
|
22239
|
+
this.router = router;
|
|
22240
|
+
this.alertCtrl = alertCtrl;
|
|
22241
|
+
this.translate = translate;
|
|
22242
|
+
this._selectedTabIndex = 0;
|
|
22243
|
+
this.selectedTabIndexChange = new EventEmitter();
|
|
22244
|
+
options = Object.assign({ tabCount: 1, enableSwipe: true, tabGroupAnimationDuration: '200ms' }, options);
|
|
22245
|
+
this.tabCount = options.tabCount;
|
|
22246
|
+
this.enableSwipe = options.enableSwipe;
|
|
22247
|
+
this.tabGroupAnimationDuration = options.tabGroupAnimationDuration;
|
|
22248
|
+
}
|
|
22249
|
+
set selectedTabIndex(value) {
|
|
22250
|
+
this.setSelectedTabIndex(value);
|
|
22251
|
+
}
|
|
22252
|
+
get selectedTabIndex() {
|
|
22253
|
+
return this._selectedTabIndex;
|
|
22254
|
+
}
|
|
22255
|
+
ngOnInit() {
|
|
22256
|
+
super.ngOnInit();
|
|
22257
|
+
this.queryTabIndexParamName = this.queryTabIndexParamName || 'tab';
|
|
22258
|
+
// Read the selected tab index, from path query params
|
|
22259
|
+
if (this.tabGroup) {
|
|
22260
|
+
this.registerSubscription(this.route.queryParams
|
|
22261
|
+
.subscribe(queryParams => {
|
|
22262
|
+
this.queryParams = Object.assign({}, queryParams);
|
|
22263
|
+
// Parse tab param
|
|
22264
|
+
if (this.tabCount > 1 && this.queryTabIndexParamName) {
|
|
22265
|
+
const tabIndex = queryParams[this.queryTabIndexParamName];
|
|
22266
|
+
this.queryParams[this.queryTabIndexParamName] = tabIndex && parseInt(tabIndex) || undefined;
|
|
22267
|
+
if (isNotNil(this.queryParams[this.queryTabIndexParamName])) {
|
|
22268
|
+
this.selectedTabIndex = this.queryParams[this.queryTabIndexParamName];
|
|
22269
|
+
}
|
|
22270
|
+
}
|
|
22271
|
+
// Realign tab, after a delay because the tab can be disabled when component is created
|
|
22272
|
+
setTimeout(() => this.tabGroup.realignInkBar(), 500);
|
|
22273
|
+
}));
|
|
22274
|
+
}
|
|
22275
|
+
}
|
|
22276
|
+
ngOnDestroy() {
|
|
22277
|
+
super.ngOnDestroy();
|
|
22278
|
+
this.selectedTabIndexChange.complete();
|
|
22279
|
+
}
|
|
22280
|
+
setSelectedTabIndex(value, opts) {
|
|
22281
|
+
// Fix value
|
|
22282
|
+
if (value < 0) {
|
|
22283
|
+
value = 0;
|
|
22284
|
+
}
|
|
22285
|
+
else if (value > this.tabCount - 1) {
|
|
22286
|
+
value = this.tabCount - 1;
|
|
22287
|
+
}
|
|
22288
|
+
this._selectedTabIndex = value;
|
|
22289
|
+
this.selectedTabIndexChange.next(value);
|
|
22290
|
+
if (this.tabGroup && (!opts || opts.realignInkBar !== false)) {
|
|
22291
|
+
this.tabGroup.selectedIndex = value;
|
|
22292
|
+
this.markForCheck();
|
|
22293
|
+
// Wait tab change in UI, before realign ink tab
|
|
22294
|
+
setTimeout(() => this.tabGroup.realignInkBar(), 200);
|
|
22295
|
+
}
|
|
22296
|
+
else if (!opts || opts.emitEvent !== false) {
|
|
22297
|
+
this.markForCheck();
|
|
22298
|
+
}
|
|
22299
|
+
}
|
|
22300
|
+
onTabChange(event, queryTabIndexParamName) {
|
|
22301
|
+
queryTabIndexParamName = queryTabIndexParamName || this.queryTabIndexParamName;
|
|
22302
|
+
if (!queryTabIndexParamName)
|
|
22303
|
+
return true; // Skip if tab query param not set
|
|
22304
|
+
if (!this.queryParams || +this.queryParams[queryTabIndexParamName] !== event.index) {
|
|
22305
|
+
this.queryParams = this.queryParams || {};
|
|
22306
|
+
this.queryParams[queryTabIndexParamName] = event.index;
|
|
22307
|
+
if (queryTabIndexParamName === 'tab' && isNotNil(this.queryParams['subtab'])) {
|
|
22308
|
+
delete this.queryParams.subtab; // clean subtab
|
|
22309
|
+
}
|
|
22310
|
+
this.router.navigate(['.'], {
|
|
22311
|
+
relativeTo: this.route,
|
|
22312
|
+
queryParams: this.queryParams,
|
|
22313
|
+
replaceUrl: true
|
|
22314
|
+
});
|
|
22315
|
+
return true;
|
|
22316
|
+
}
|
|
22317
|
+
return false;
|
|
22318
|
+
}
|
|
22319
|
+
/**
|
|
22320
|
+
* Action triggered when user swipes
|
|
22321
|
+
*/
|
|
22322
|
+
onSwipeTab(event) {
|
|
22323
|
+
// DEBUG
|
|
22324
|
+
// if (this.debug) console.debug("[tab-page] onSwipeTab()");
|
|
22325
|
+
// Skip, if not a valid swipe event
|
|
22326
|
+
if (!this.enableSwipe || !event
|
|
22327
|
+
|| event.defaultPrevented || (event.srcEvent && event.srcEvent.defaultPrevented)
|
|
22328
|
+
|| event.pointerType !== 'touch') {
|
|
22329
|
+
return false;
|
|
22330
|
+
}
|
|
22331
|
+
// DEBUG
|
|
22332
|
+
//if (this.debug)
|
|
22333
|
+
//console.debug("[tab-page] Detected swipe: " + event.type, event);
|
|
22334
|
+
let selectTabIndex = this.selectedTabIndex;
|
|
22335
|
+
switch (event.type) {
|
|
22336
|
+
// Open next tab
|
|
22337
|
+
case 'swipeleft':
|
|
22338
|
+
const isLast = selectTabIndex >= (this.tabCount - 1);
|
|
22339
|
+
selectTabIndex = isLast ? 0 : selectTabIndex + 1;
|
|
22340
|
+
break;
|
|
22341
|
+
// Open previous tab
|
|
22342
|
+
case 'swiperight':
|
|
22343
|
+
const isFirst = selectTabIndex <= 0;
|
|
22344
|
+
selectTabIndex = isFirst ? this.tabCount : selectTabIndex - 1;
|
|
22345
|
+
break;
|
|
22346
|
+
// Other case
|
|
22347
|
+
default:
|
|
22348
|
+
console.error('[tab-page] Unknown swipe action: ' + event.type);
|
|
22349
|
+
return false;
|
|
22350
|
+
}
|
|
22351
|
+
setTimeout(() => {
|
|
22352
|
+
this.selectedTabIndex = selectTabIndex;
|
|
22353
|
+
this.markForCheck();
|
|
22354
|
+
});
|
|
22355
|
+
return true;
|
|
22356
|
+
}
|
|
22357
|
+
onSubTabChange(event) {
|
|
22358
|
+
this.onTabChange(event, 'subtab');
|
|
22359
|
+
}
|
|
22360
|
+
unload(opts) {
|
|
22361
|
+
const _super = Object.create(null, {
|
|
22362
|
+
unload: { get: () => super.unload }
|
|
22363
|
+
});
|
|
22364
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22365
|
+
this.selectedTabIndex = 0;
|
|
22366
|
+
yield _super.unload.call(this, opts);
|
|
22367
|
+
});
|
|
22368
|
+
}
|
|
22369
|
+
}
|
|
22296
22370
|
AppTabEditor.decorators = [
|
|
22297
22371
|
{ type: Directive }
|
|
22298
22372
|
];
|
|
@@ -22305,12 +22379,9 @@ AppTabEditor.ctorParameters = () => [
|
|
|
22305
22379
|
];
|
|
22306
22380
|
AppTabEditor.propDecorators = {
|
|
22307
22381
|
queryTabIndexParamName: [{ type: Input }],
|
|
22308
|
-
tabGroup: [{ type: ViewChild, args: ['tabGroup', { static: true },] }],
|
|
22309
|
-
toolbar: [{ type: ViewChild, args: [ToolbarToken,] }],
|
|
22310
|
-
formButtonsBar: [{ type: ViewChild, args: [FormButtonsBarToken, { static: true },] }],
|
|
22311
|
-
content: [{ type: ViewChild, args: [IonContent, { static: true },] }],
|
|
22312
22382
|
selectedTabIndex: [{ type: Input }],
|
|
22313
|
-
selectedTabIndexChange: [{ type: Output }]
|
|
22383
|
+
selectedTabIndexChange: [{ type: Output }],
|
|
22384
|
+
tabGroup: [{ type: ViewChild, args: ['tabGroup', { static: true },] }]
|
|
22314
22385
|
};
|
|
22315
22386
|
|
|
22316
22387
|
class AppEditorOptions extends AppTabEditorOptions {
|
|
@@ -24017,5 +24088,5 @@ const ErrorCodes = {
|
|
|
24017
24088
|
* Generated bundle index. Do not edit.
|
|
24018
24089
|
*/
|
|
24019
24090
|
|
|
24020
|
-
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, FormErrorTranslatePipe, FormErrorTranslator, 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, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, RegisterForm as ɵg, AccountValidatorService as ɵh, RegisterModal as ɵi, UserSettingsValidatorService as ɵj, LocalSettingsValidatorService as ɵk };
|
|
24091
|
+
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, AppEditor, 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, FormErrorTranslatePipe, FormErrorTranslator, 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, SharedMatBadgeIconModule as ɵc, MatBadgeIconDirective as ɵd, isFocusableElement as ɵe, MatBadgeIconTestPage as ɵf, RegisterForm as ɵg, AccountValidatorService as ɵh, RegisterModal as ɵi, UserSettingsValidatorService as ɵj, LocalSettingsValidatorService as ɵk };
|
|
24021
24092
|
//# sourceMappingURL=sumaris-net.ngx-components.js.map
|