@sumaris-net/ngx-components 1.22.12-rc3 → 1.23.0-rc1

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.
Files changed (26) hide show
  1. package/bundles/sumaris-net.ngx-components.umd.js +515 -439
  2. package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
  3. package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
  4. package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
  5. package/doc/changelog.md +3 -0
  6. package/esm2015/src/app/core/services/local-settings.service.js +2 -2
  7. package/esm2015/src/app/core/services/platform.service.js +4 -2
  8. package/esm2015/src/app/core/table/entities-table-datasource.class.js +104 -98
  9. package/esm2015/src/app/core/table/memory-table.class.js +3 -3
  10. package/esm2015/src/app/core/table/table.class.js +3 -3
  11. package/esm2015/src/app/core/table/testing/table.testing.js +16 -21
  12. package/esm2015/src/app/shared/dates.js +8 -6
  13. package/esm2015/src/app/shared/functions.js +11 -1
  14. package/esm2015/src/app/shared/material/datetime/material.datetime.js +1 -1
  15. package/esm2015/src/app/shared/material/datetime/testing/mat-date-time.test.js +1 -1
  16. package/esm2015/src/app/shared/services/memory-entity-service.class.js +44 -18
  17. package/fesm2015/sumaris-net.ngx-components.js +427 -371
  18. package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
  19. package/package.json +1 -1
  20. package/src/app/core/table/entities-table-datasource.class.d.ts +17 -25
  21. package/src/app/core/table/memory-table.class.d.ts +2 -2
  22. package/src/app/core/table/testing/table.testing.d.ts +5 -3
  23. package/src/app/shared/dates.d.ts +3 -2
  24. package/src/app/shared/functions.d.ts +6 -0
  25. package/src/app/shared/services/memory-entity-service.class.d.ts +2 -1
  26. package/sumaris-net.ngx-components.metadata.json +1 -1
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('rxjs/internal/operators'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs'), require('moment-timezone')) :
3
3
  typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', 'rxjs/internal/operators', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs', 'moment-timezone'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global['sumaris-net'] = global['sumaris-net'] || {}, global['sumaris-net']['ngx-components'] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global['ngx-translate'].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global['ionic-native'].keyboard.ngx, global['angular2-text-mask'], global['ngx-material-timepicker'], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global['ngx-color-picker'], global['ionic-native']['native-audio'].ngx, global['ionic-native'].vibration.ngx, global['ionic-native']['audio-management'].ngx, global['ionic-native']['native-audio'].ngx.index, global['ionic-native'].vibration.ngx.index, global['ionic-native']['audio-management'].ngx.index, global.uuid.v4, global.rxjs['internal/operators'], global.ng.cdk.dragDrop, global['ngx-markdown'], global.tweetnacl, global.ionic.storage, null, global['ionic-native']['splash-screen'].ngx, global['ionic-native'].network.ngx, global['ionic-cache'], global['ionic-cache/dist/cache'].service, global['ionic-native'].network.ngx.index, global['ionic-native']['splash-screen'].ngx.index, global['ionic-native']['status-bar'].ngx, global.ng.cdk.platform, global['ionic-native']['in-app-browser'].ngx, global.apollo.client.core, global['apollo-angular'], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global['apollo-link-queue'], global['apollo-link-serialize'], global['apollo-link-logger'], global['apollo-angular'].http, global['apollo3-cache-persist'], global['ionic-native'].downloader.ngx, global['ionic-native']['status-bar'].ngx.index, global['ionic-native'].keyboard.ngx.index, global['ionic-native']['in-app-browser'].ngx.index, global['ionic-native'].downloader.ngx.index, global.ng.cdk.textField, global['e-is']['ngx-material-table'], global.ng.cdk.collections, global['ngx-jdenticon'], null, null, null, global['moment-timezone']));
5
- }(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, operators$1, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon, tweetnaclUtil, scryptAsync, hammerjs, momentTZImported) { 'use strict';
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.rxjs["internal/operators"], global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global["ionic-native"].downloader.ngx, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global["ionic-native"].downloader.ngx.index, global.ng.cdk.textField, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"], null, null, null, global["moment-timezone"]));
5
+ })(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, operators$1, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon, tweetnaclUtil, scryptAsync, hammerjs, momentTZImported) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -15,22 +15,45 @@
15
15
  var d = Object.getOwnPropertyDescriptor(e, k);
16
16
  Object.defineProperty(n, k, d.get ? d : {
17
17
  enumerable: true,
18
- get: function () {
19
- return e[k];
20
- }
18
+ get: function () { return e[k]; }
21
19
  });
22
20
  }
23
21
  });
24
22
  }
25
- n['default'] = e;
23
+ n["default"] = e;
26
24
  return Object.freeze(n);
27
25
  }
28
26
 
27
+ var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
28
+ var i1__namespace$3 = /*#__PURE__*/_interopNamespace(i1$4);
29
+ var i1__namespace$2 = /*#__PURE__*/_interopNamespace(i1$3);
30
+ var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2);
31
+ var i1__namespace$6 = /*#__PURE__*/_interopNamespace(i1);
32
+ var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$2);
33
+ var i1__namespace$4 = /*#__PURE__*/_interopNamespace(i1$5);
29
34
  var momentImported__namespace = /*#__PURE__*/_interopNamespace(momentImported);
35
+ var i1__namespace = /*#__PURE__*/_interopNamespace(i1$1);
36
+ var i3__namespace$3 = /*#__PURE__*/_interopNamespace(i3);
37
+ var i1__namespace$5 = /*#__PURE__*/_interopNamespace(i1$6);
38
+ var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$1);
39
+ var i2__namespace = /*#__PURE__*/_interopNamespace(i2$2);
40
+ var i3__namespace = /*#__PURE__*/_interopNamespace(i3$1);
41
+ var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
30
42
  var uuidv4Imported__namespace = /*#__PURE__*/_interopNamespace(uuidv4Imported);
43
+ var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$2);
44
+ var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
45
+ var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
46
+ var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
47
+ var i2__namespace$4 = /*#__PURE__*/_interopNamespace(i2$4);
48
+ var i2__namespace$3 = /*#__PURE__*/_interopNamespace(i2$3);
31
49
  var QueueLink__default = /*#__PURE__*/_interopDefaultLegacy(QueueLink);
32
50
  var SerializingLink__default = /*#__PURE__*/_interopDefaultLegacy(SerializingLink);
33
51
  var loggerLink__default = /*#__PURE__*/_interopDefaultLegacy(loggerLink);
52
+ var i3__namespace$2 = /*#__PURE__*/_interopNamespace(i3$3);
53
+ var i14__namespace = /*#__PURE__*/_interopNamespace(i14);
54
+ var i15__namespace = /*#__PURE__*/_interopNamespace(i15);
55
+ var i17__namespace = /*#__PURE__*/_interopNamespace(i17);
56
+ var i18__namespace = /*#__PURE__*/_interopNamespace(i18);
34
57
  var momentTZImported__namespace = /*#__PURE__*/_interopNamespace(momentTZImported);
35
58
 
36
59
  var ENVIRONMENT = new i0.InjectionToken('ENV');
@@ -747,6 +770,7 @@
747
770
  }
748
771
  return false;
749
772
  }
773
+ // @dynamic
750
774
  var Beans = /** @class */ (function () {
751
775
  function Beans() {
752
776
  }
@@ -782,6 +806,15 @@
782
806
  return isNotNil(value);
783
807
  }) === -1;
784
808
  };
809
+ Beans.collectById = function (array) {
810
+ return this.collectByProperty(array, 'id');
811
+ };
812
+ Beans.collectByProperty = function (array, propertyName) {
813
+ return (array || []).reduce(function (res, item) {
814
+ res['' + propertyName] = item;
815
+ return res;
816
+ }, {});
817
+ };
785
818
  return Beans;
786
819
  }());
787
820
 
@@ -1320,7 +1353,7 @@
1320
1353
  }
1321
1354
  return false;
1322
1355
  };
1323
- var ɵ0 = isIpad;
1356
+ var ɵ0$c = isIpad;
1324
1357
  var isIOS = function (win) { return testUserAgent(win, /iPhone|iPod/i) || isIpad(win); };
1325
1358
  var isAndroid = function (win) { return testUserAgent(win, /android|sink/i); };
1326
1359
  var isCordova = function (win) {
@@ -1459,14 +1492,14 @@
1459
1492
  };
1460
1493
  return MatAutocompleteFieldUtils;
1461
1494
  }());
1462
- var noop = function (_) { };
1463
- var ɵ0$1 = noop;
1495
+ var noop$8 = function (_) { };
1496
+ var ɵ0$b = noop$8;
1464
1497
  var MatAutocompleteField = /** @class */ (function () {
1465
1498
  function MatAutocompleteField(cd, formGroupDir) {
1466
1499
  this.cd = cd;
1467
1500
  this.formGroupDir = formGroupDir;
1468
- this._onChangeCallback = noop;
1469
- this._onTouchedCallback = noop;
1501
+ this._onChangeCallback = noop$8;
1502
+ this._onTouchedCallback = noop$8;
1470
1503
  this.logPrefix = '[mat-autocomplete] ';
1471
1504
  this.formControlName = null;
1472
1505
  this.required = false;
@@ -2317,7 +2350,7 @@
2317
2350
  };
2318
2351
  return DateFormatPipe;
2319
2352
  }());
2320
- DateFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0.ɵɵinject(i1$1.MomentDateAdapter), i0.ɵɵinject(i1$2.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
2353
+ DateFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DateFormatPipe_Factory() { return new DateFormatPipe(i0__namespace.ɵɵinject(i1__namespace.MomentDateAdapter), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: DateFormatPipe, providedIn: "root" });
2321
2354
  DateFormatPipe.decorators = [
2322
2355
  { type: i0.Pipe, args: [{
2323
2356
  name: 'dateFormat'
@@ -2329,7 +2362,7 @@
2329
2362
  { type: i1$2.TranslateService }
2330
2363
  ]; };
2331
2364
 
2332
- var moment = momentImported__namespace;
2365
+ var moment$a = momentImported__namespace;
2333
2366
  var DateDiffDurationPipe = /** @class */ (function () {
2334
2367
  function DateDiffDurationPipe(dateAdapter, translate) {
2335
2368
  var _this = this;
@@ -2346,11 +2379,11 @@
2346
2379
  return this.format(startDate, endDate, args);
2347
2380
  };
2348
2381
  DateDiffDurationPipe.prototype.format = function (startDate, endDate, args) {
2349
- var duration = moment.duration(endDate.diff(startDate));
2382
+ var duration = moment$a.duration(endDate.diff(startDate));
2350
2383
  if (duration.asMinutes() < 0)
2351
2384
  return '';
2352
2385
  var withSeconds = args === null || args === void 0 ? void 0 : args.seconds;
2353
- var timeDuration = moment(0)
2386
+ var timeDuration = moment$a(0)
2354
2387
  .hour(duration.hours())
2355
2388
  .minute(duration.minutes());
2356
2389
  if (withSeconds) {
@@ -2361,7 +2394,7 @@
2361
2394
  };
2362
2395
  return DateDiffDurationPipe;
2363
2396
  }());
2364
- DateDiffDurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(i0.ɵɵinject(i1$3.DateAdapter), i0.ɵɵinject(i1$2.TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
2397
+ DateDiffDurationPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DateDiffDurationPipe_Factory() { return new DateDiffDurationPipe(i0__namespace.ɵɵinject(i1__namespace$2.DateAdapter), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: DateDiffDurationPipe, providedIn: "root" });
2365
2398
  DateDiffDurationPipe.decorators = [
2366
2399
  { type: i0.Pipe, args: [{
2367
2400
  name: 'dateDiffDuration'
@@ -2383,7 +2416,7 @@
2383
2416
  };
2384
2417
  return DateFromNowPipe;
2385
2418
  }());
2386
- DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1$1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
2419
+ DateFromNowPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0__namespace.ɵɵinject(i1__namespace.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
2387
2420
  DateFromNowPipe.decorators = [
2388
2421
  { type: i0.Pipe, args: [{
2389
2422
  name: 'dateFromNow'
@@ -2452,7 +2485,7 @@
2452
2485
  value *= -1;
2453
2486
  }
2454
2487
  }
2455
- var degrees = roundFloat(value, opts.maxDecimals).toString();
2488
+ var degrees = roundFloat$1(value, opts.maxDecimals).toString();
2456
2489
  // Add sign
2457
2490
  var sign = negative ? '-' : '+';
2458
2491
  if (opts.placeholderChar) {
@@ -2503,7 +2536,7 @@
2503
2536
  }
2504
2537
  var degrees = Math.trunc(value);
2505
2538
  var minutes = Math.trunc((value - degrees) * 60);
2506
- var seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2539
+ var seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2507
2540
  while (seconds >= 60) {
2508
2541
  seconds -= 60;
2509
2542
  minutes += 1;
@@ -2571,7 +2604,7 @@
2571
2604
  }
2572
2605
  }
2573
2606
  var degrees = Math.trunc(value);
2574
- var minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
2607
+ var minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
2575
2608
  while (minutes >= 60) {
2576
2609
  minutes -= 60;
2577
2610
  degrees += 1;
@@ -2622,15 +2655,15 @@
2622
2655
  return NaN;
2623
2656
  }
2624
2657
  if (pattern === 'DD')
2625
- return roundFloat(degrees, maxDecimals);
2658
+ return roundFloat$1(degrees, maxDecimals);
2626
2659
  var minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
2627
2660
  var seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
2628
2661
  var direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
2629
2662
  var sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
2630
2663
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
2631
- return roundFloat(degrees, maxDecimals);
2664
+ return roundFloat$1(degrees, maxDecimals);
2632
2665
  }
2633
- function roundFloat(input, maxDecimals) {
2666
+ function roundFloat$1(input, maxDecimals) {
2634
2667
  if (maxDecimals > 0) {
2635
2668
  var powDecimal = Math.pow(10, maxDecimals);
2636
2669
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -2699,7 +2732,7 @@
2699
2732
  };
2700
2733
  return NumberFormatPipe;
2701
2734
  }());
2702
- NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2735
+ NumberFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2703
2736
  NumberFormatPipe.decorators = [
2704
2737
  { type: i0.Pipe, args: [{
2705
2738
  name: 'numberFormat'
@@ -2742,7 +2775,7 @@
2742
2775
  };
2743
2776
  return HighlightPipe;
2744
2777
  }());
2745
- HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2778
+ HighlightPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2746
2779
  HighlightPipe.decorators = [
2747
2780
  { type: i0.Pipe, args: [{
2748
2781
  name: 'highlight'
@@ -2810,7 +2843,7 @@
2810
2843
  { type: i0.Pipe, args: [{ name: 'fileSize' },] }
2811
2844
  ];
2812
2845
 
2813
- var moment$1 = momentImported__namespace;
2846
+ var moment$9 = momentImported__namespace;
2814
2847
  var DATE_UNIX_TIMESTAMP = 'X';
2815
2848
  var DATE_UNIX_MS_TIMESTAMP = 'x';
2816
2849
  var MOMENT_NO_TIME_PROPERTY = '_hasNoTime';
@@ -2900,37 +2933,39 @@
2900
2933
  // Already a moment object: use it
2901
2934
  if (!value || momentImported.isMoment(value))
2902
2935
  return value;
2903
- // Parse the input value, as a date only
2904
- var dateOnly = moment$1(value, DATE_PATTERN);
2905
- if (dateOnly.isValid())
2906
- return DateUtils.markNoTime(dateOnly);
2936
+ if (typeof value === 'string' && value.length === 10) {
2937
+ // Parse the input value, as a date only
2938
+ var dateOnly = moment$9(value, DATE_PATTERN);
2939
+ if (dateOnly.isValid())
2940
+ return DateUtils.markNoTime(dateOnly);
2941
+ }
2907
2942
  // Parse the input value, as a ISO date time
2908
- var date = moment$1(value, DATE_ISO_PATTERN);
2943
+ var date = moment$9(value, DATE_ISO_PATTERN);
2909
2944
  if (date.isValid())
2910
2945
  return date;
2911
2946
  // Not valid: trying to convert from unix timestamp
2912
2947
  if (typeof value === 'string') {
2913
2948
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2914
2949
  if (value.length === 10) {
2915
- return moment$1(value, DATE_UNIX_TIMESTAMP);
2950
+ return moment$9(value, DATE_UNIX_TIMESTAMP);
2916
2951
  }
2917
2952
  else if (value.length === 13) {
2918
- return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2953
+ return moment$9(value, DATE_UNIX_MS_TIMESTAMP);
2919
2954
  }
2920
2955
  }
2921
2956
  console.warn('Unable to parse date: ' + value);
2922
2957
  return undefined;
2923
2958
  }
2924
2959
  function fromUnixTimestamp(timeInSec) {
2925
- return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2960
+ return moment$9(timeInSec, DATE_UNIX_TIMESTAMP);
2926
2961
  }
2927
2962
  function fromUnixMsTimestamp(timeInMs) {
2928
- return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2963
+ return moment$9(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2929
2964
  }
2930
2965
  function toDuration(value, unit) {
2931
2966
  if (!value)
2932
2967
  return undefined;
2933
- var duration = moment$1.duration(value, unit);
2968
+ var duration = moment$9.duration(value, unit);
2934
2969
  // fix 990+ ms
2935
2970
  if (duration.milliseconds() >= 990) {
2936
2971
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2960,7 +2995,7 @@
2960
2995
  };
2961
2996
  return DurationPipe;
2962
2997
  }());
2963
- DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$2.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2998
+ DurationPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2964
2999
  DurationPipe.decorators = [
2965
3000
  { type: i0.Pipe, args: [{
2966
3001
  name: 'duration'
@@ -2984,7 +3019,7 @@
2984
3019
  };
2985
3020
  return MathAbsPipe;
2986
3021
  }());
2987
- MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
3022
+ MathAbsPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2988
3023
  MathAbsPipe.decorators = [
2989
3024
  { type: i0.Pipe, args: [{
2990
3025
  name: 'mathAbs'
@@ -2999,7 +3034,7 @@
2999
3034
  };
3000
3035
  return EvenPipe;
3001
3036
  }());
3002
- EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
3037
+ EvenPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
3003
3038
  EvenPipe.decorators = [
3004
3039
  { type: i0.Pipe, args: [{
3005
3040
  name: 'even'
@@ -3014,7 +3049,7 @@
3014
3049
  };
3015
3050
  return OddPipe;
3016
3051
  }());
3017
- OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
3052
+ OddPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
3018
3053
  OddPipe.decorators = [
3019
3054
  { type: i0.Pipe, args: [{
3020
3055
  name: 'odd'
@@ -3146,7 +3181,7 @@
3146
3181
  };
3147
3182
  return MapGetPipe;
3148
3183
  }());
3149
- MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
3184
+ MapGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
3150
3185
  MapGetPipe.decorators = [
3151
3186
  { type: i0.Pipe, args: [{
3152
3187
  name: 'mapGet'
@@ -3163,7 +3198,7 @@
3163
3198
  };
3164
3199
  return MapKeysPipe;
3165
3200
  }());
3166
- MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
3201
+ MapKeysPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
3167
3202
  MapKeysPipe.decorators = [
3168
3203
  { type: i0.Pipe, args: [{
3169
3204
  name: 'mapKeys'
@@ -3180,7 +3215,7 @@
3180
3215
  };
3181
3216
  return MapValuesPipe;
3182
3217
  }());
3183
- MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
3218
+ MapValuesPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
3184
3219
  MapValuesPipe.decorators = [
3185
3220
  { type: i0.Pipe, args: [{
3186
3221
  name: 'mapValues'
@@ -3337,7 +3372,7 @@
3337
3372
  };
3338
3373
  return TranslateContextService;
3339
3374
  }());
3340
- TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$2.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
3375
+ TranslateContextService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
3341
3376
  TranslateContextService.decorators = [
3342
3377
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
3343
3378
  ];
@@ -3400,7 +3435,7 @@
3400
3435
  ngInit: [{ type: i0.Output }]
3401
3436
  };
3402
3437
 
3403
- var moment$2 = momentImported__namespace;
3438
+ var moment$8 = momentImported__namespace;
3404
3439
  // @dynamic
3405
3440
  var SharedValidators = /** @class */ (function () {
3406
3441
  function SharedValidators() {
@@ -3483,7 +3518,7 @@
3483
3518
  };
3484
3519
  SharedValidators.validDate = function (control) {
3485
3520
  var value = control.value;
3486
- var date = !value || moment$2.isMoment(value) ? value : moment$2(value, DATE_ISO_PATTERN);
3521
+ var date = !value || moment$8.isMoment(value) ? value : moment$8(value, DATE_ISO_PATTERN);
3487
3522
  if (date && (!date.isValid() || date.year() < 1970)) {
3488
3523
  return { validDate: true };
3489
3524
  }
@@ -4703,7 +4738,7 @@
4703
4738
  };
4704
4739
  return FormErrorTranslator;
4705
4740
  }());
4706
- FormErrorTranslator.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormErrorTranslator_Factory() { return new FormErrorTranslator(i0.ɵɵinject(i1$2.TranslateService), i0.ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorTranslator, providedIn: "root" });
4741
+ FormErrorTranslator.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormErrorTranslator_Factory() { return new FormErrorTranslator(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService), i0__namespace.ɵɵinject(APP_FORM_ERROR_I18N_KEYS, 8)); }, token: FormErrorTranslator, providedIn: "root" });
4707
4742
  FormErrorTranslator.decorators = [
4708
4743
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
4709
4744
  ];
@@ -4994,7 +5029,7 @@
4994
5029
  });
4995
5030
  return PropertyFormatPipe;
4996
5031
  }());
4997
- PropertyFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyFormatPipe_Factory() { return new PropertyFormatPipe(i0.ɵɵinject(DateFormatPipe), i0.ɵɵinject(i1$2.TranslateService)); }, token: PropertyFormatPipe, providedIn: "root" });
5032
+ PropertyFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PropertyFormatPipe_Factory() { return new PropertyFormatPipe(i0__namespace.ɵɵinject(DateFormatPipe), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: PropertyFormatPipe, providedIn: "root" });
4998
5033
  PropertyFormatPipe.decorators = [
4999
5034
  { type: i0.Pipe, args: [{
5000
5035
  name: 'propertyFormat'
@@ -5378,9 +5413,9 @@
5378
5413
  var hour = parseInt(durationParts[0] || '0');
5379
5414
  var minute = parseInt(durationParts[1] || '0');
5380
5415
  var value = hour + (minute + 0.5) / 60;
5381
- return roundFloat$1(value, maxDecimals);
5416
+ return roundFloat(value, maxDecimals);
5382
5417
  }
5383
- function roundFloat$1(input, maxDecimals) {
5418
+ function roundFloat(input, maxDecimals) {
5384
5419
  if (maxDecimals > 0) {
5385
5420
  var powDecimal = Math.pow(10, maxDecimals);
5386
5421
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -5404,16 +5439,16 @@
5404
5439
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
5405
5440
  }
5406
5441
  };
5407
- var noop$1 = function () {
5442
+ var noop$7 = function () {
5408
5443
  };
5409
- var ɵ0$2 = noop$1;
5444
+ var ɵ0$a = noop$7;
5410
5445
  var MatLatLongField = /** @class */ (function () {
5411
5446
  function MatLatLongField(formBuilder, cd, formGroupDir) {
5412
5447
  this.formBuilder = formBuilder;
5413
5448
  this.cd = cd;
5414
5449
  this.formGroupDir = formGroupDir;
5415
- this._onChangeCallback = noop$1;
5416
- this._onTouchedCallback = noop$1;
5450
+ this._onChangeCallback = noop$7;
5451
+ this._onTouchedCallback = noop$7;
5417
5452
  this._subscription = new rxjs.Subscription();
5418
5453
  this._disabling = false;
5419
5454
  this._writing = false;
@@ -5773,14 +5808,14 @@
5773
5808
  },] }
5774
5809
  ];
5775
5810
 
5776
- var DEFAULT_VALUE_ACCESSOR = {
5811
+ var DEFAULT_VALUE_ACCESSOR$5 = {
5777
5812
  provide: i1.NG_VALUE_ACCESSOR,
5778
5813
  useExisting: i0.forwardRef(function () { return MatDate; }),
5779
5814
  multi: true
5780
5815
  };
5781
5816
  var TEXT_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5782
- var noop$2 = function () { };
5783
- var ɵ0$3 = noop$2;
5817
+ var noop$6 = function () { };
5818
+ var ɵ0$9 = noop$6;
5784
5819
  var MatDate = /** @class */ (function () {
5785
5820
  function MatDate(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5786
5821
  this.dateAdapter = dateAdapter;
@@ -5789,8 +5824,8 @@
5789
5824
  this.cd = cd;
5790
5825
  this.keyboard = keyboard;
5791
5826
  this.formGroupDir = formGroupDir;
5792
- this._onChangeCallback = noop$2;
5793
- this._onTouchedCallback = noop$2;
5827
+ this._onChangeCallback = noop$6;
5828
+ this._onTouchedCallback = noop$6;
5794
5829
  this._subscription = new rxjs.Subscription();
5795
5830
  this._writing = true;
5796
5831
  this._disabling = false;
@@ -6131,7 +6166,7 @@
6131
6166
  selector: 'mat-date-field',
6132
6167
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\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: datePattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\">\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]=\"textControl\"\n [textMask]=\"{mask: mask, 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]=\"textControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n\n <!-- Hide the final input -->\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix\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)=\"clear()\"\n [hidden]=\"formControl.disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <!-- errors -->\n <mat-error *ngIf=\"formControl.touched && formControl.errors|mapKeys|arrayFirst; let errorKey\" [ngSwitch]=\"errorKey\">\n <span *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</span>\n <span *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE</span>\n <span *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</span>\n <span *ngSwitchCase=\"'dateIsBefore'\">{{'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}</span>\n <span *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n <span *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n <span *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n <span *ngSwitchCase=\"'msg'\">{{(formControl.errors.msg?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</span>\n </mat-error>\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 </mat-form-field>\n\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"\n ></mat-datepicker>\n\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",
6133
6168
  providers: [
6134
- DEFAULT_VALUE_ACCESSOR,
6169
+ DEFAULT_VALUE_ACCESSOR$5,
6135
6170
  ],
6136
6171
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6137
6172
  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%}"]
@@ -6166,16 +6201,16 @@
6166
6201
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
6167
6202
  };
6168
6203
 
6169
- var DEFAULT_VALUE_ACCESSOR$1 = {
6204
+ var DEFAULT_VALUE_ACCESSOR$4 = {
6170
6205
  provide: i1.NG_VALUE_ACCESSOR,
6171
6206
  useExisting: i0.forwardRef(function () { return MatDateTime; }),
6172
6207
  multi: true
6173
6208
  };
6174
- var DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
6209
+ var DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
6175
6210
  var HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
6176
- var HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
6177
- var noop$3 = function () { };
6178
- var ɵ0$4 = noop$3;
6211
+ var HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
6212
+ var noop$5 = function () { };
6213
+ var ɵ0$8 = noop$5;
6179
6214
  var MatDateTime = /** @class */ (function () {
6180
6215
  function MatDateTime(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
6181
6216
  this.dateAdapter = dateAdapter;
@@ -6184,14 +6219,14 @@
6184
6219
  this.cd = cd;
6185
6220
  this.keyboard = keyboard;
6186
6221
  this.formGroupDir = formGroupDir;
6187
- this._onChangeCallback = noop$3;
6188
- this._onTouchedCallback = noop$3;
6222
+ this._onChangeCallback = noop$5;
6223
+ this._onTouchedCallback = noop$5;
6189
6224
  this._subscription = new rxjs.Subscription();
6190
6225
  this._writing = true;
6191
6226
  this._disabling = false;
6192
6227
  this._readonly = false;
6193
- this.dayMask = DAY_MASK;
6194
- this.hourMask = HOUR_MASK;
6228
+ this.dayMask = DAY_MASK$1;
6229
+ this.hourMask = HOUR_MASK$1;
6195
6230
  this.floatLabel = 'auto';
6196
6231
  this.compact = false;
6197
6232
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -6556,7 +6591,7 @@
6556
6591
  selector: 'mat-date-time-field',
6557
6592
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\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 mat-form-field-{{appearance}}\">\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 [appearance]=\"appearance\"\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]=\"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 input -->\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n [matDatepickerFilter]=\"datePickerFilter\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix\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)=\"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=\"'dateIsBefore'\">{{'ERROR.FIELD_NOT_VALID_DATE_BEFORE' | translate: formControl.errors.dateIsBefore }}</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 [appearance]=\"appearance\"\n [class.mat-form-field-invalid]=\"formControl.touched && (hourControl.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]=\"hourControl\"\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]=\"hourControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"hourControl\"\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",
6558
6593
  providers: [
6559
- DEFAULT_VALUE_ACCESSOR$1,
6594
+ DEFAULT_VALUE_ACCESSOR$4,
6560
6595
  ],
6561
6596
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6562
6597
  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}.mat-form-field-outline ion-col.day{min-width:153px}.mat-form-field-outline ion-col.hour{min-width:100px;max-width:110px}.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%}"]
@@ -6591,15 +6626,15 @@
6591
6626
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
6592
6627
  };
6593
6628
 
6594
- var DEFAULT_VALUE_ACCESSOR$2 = {
6629
+ var DEFAULT_VALUE_ACCESSOR$3 = {
6595
6630
  provide: i1.NG_VALUE_ACCESSOR,
6596
6631
  useExisting: i0.forwardRef(function () { return MatDateShort; }),
6597
6632
  multi: true
6598
6633
  };
6599
- var DAY_MASK$1 = [/\d/, /\d/, /\d/, /\d/];
6634
+ var DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
6600
6635
  var noop$4 = function () {
6601
6636
  };
6602
- var ɵ0$5 = noop$4;
6637
+ var ɵ0$7 = noop$4;
6603
6638
  var MatDateShort = /** @class */ (function () {
6604
6639
  function MatDateShort(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
6605
6640
  this.dateAdapter = dateAdapter;
@@ -6612,7 +6647,7 @@
6612
6647
  this._onTouchedCallback = noop$4;
6613
6648
  this.writing = true;
6614
6649
  this.disabling = false;
6615
- this.dayMask = DAY_MASK$1;
6650
+ this.dayMask = DAY_MASK;
6616
6651
  this.disabled = false;
6617
6652
  this.floatLabel = 'auto';
6618
6653
  this.readonly = false;
@@ -6889,7 +6924,7 @@
6889
6924
  selector: 'mat-date-short-field',
6890
6925
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\">\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_YEAR_PLACEHOLDER'|translate\"\n (blur)=\"checkIfTouched()\"\n (keyup.arrowdown)=\"openDatePicker($event, datePicker1)\"\n (keyup.escape)=\"preventEvent($event)\"\n (click)=\"matInput.select()\"\n [required]=\"required\"\n [tabindex]=\"tabindex\">\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"mobile\"\n [formControl]=\"dayControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker1)\"\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]=\"datePicker1\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"openDatePicker($event, datePicker1)\"\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.touched && formControl.errors|mapKeys|arrayFirst; let errorKey\" [ngSwitch]=\"errorKey\">\n <span *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</span>\n <span *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE</span>\n <span *ngSwitchCase=\"'dateIsAfter'\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</span>\n <span *ngSwitchCase=\"'dateRange'\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</span>\n <span *ngSwitchCase=\"'dateMaxDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</span>\n <span *ngSwitchCase=\"'dateMinDuration'\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</span>\n <span *ngSwitchCase=\"'msg'\">{{(formControl.errors.msg?.key || formControl.errors.msg) | translate: formControl.errors.msg?.params}}</span>\n </mat-error>\n <ng-content select=\"mat-error\"></ng-content>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <mat-datepicker #datePicker1\n startView=\"multi-year\"\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n (yearSelected)=\"closeDatePicker($event, datePicker1)\"\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<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
6891
6926
  providers: [
6892
- DEFAULT_VALUE_ACCESSOR$2,
6927
+ DEFAULT_VALUE_ACCESSOR$3,
6893
6928
  ],
6894
6929
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6895
6930
  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%}"]
@@ -6961,16 +6996,16 @@
6961
6996
  },] }
6962
6997
  ];
6963
6998
 
6964
- var DEFAULT_VALUE_ACCESSOR$3 = {
6999
+ var DEFAULT_VALUE_ACCESSOR$2 = {
6965
7000
  provide: i1.NG_VALUE_ACCESSOR,
6966
7001
  useExisting: i0.forwardRef(function () { return MatDuration; }),
6967
7002
  multi: true
6968
7003
  };
6969
7004
  var HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
6970
- var HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
6971
- var noop$5 = function () {
7005
+ var HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
7006
+ var noop$3 = function () {
6972
7007
  };
6973
- var ɵ0$6 = noop$5;
7008
+ var ɵ0$6 = noop$3;
6974
7009
  var MatDuration = /** @class */ (function () {
6975
7010
  function MatDuration(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
6976
7011
  this.dateAdapter = dateAdapter;
@@ -6979,11 +7014,11 @@
6979
7014
  this.cd = cd;
6980
7015
  this.formGroupDir = formGroupDir;
6981
7016
  this._subscription = new rxjs.Subscription();
6982
- this._onChangeCallback = noop$5;
6983
- this._onTouchedCallback = noop$5;
7017
+ this._onChangeCallback = noop$3;
7018
+ this._onTouchedCallback = noop$3;
6984
7019
  this.writing = true;
6985
7020
  this.disabling = false;
6986
- this.hourMask = HOUR_MASK$1;
7021
+ this.hourMask = HOUR_MASK;
6987
7022
  this.disabled = false;
6988
7023
  this.floatLabel = 'auto';
6989
7024
  this.readonly = false;
@@ -7176,7 +7211,7 @@
7176
7211
  selector: 'mat-duration-field',
7177
7212
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n class=\"mat-form-field-disabled\">\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 [appearance]=\"appearance\"\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",
7178
7213
  providers: [
7179
- DEFAULT_VALUE_ACCESSOR$3,
7214
+ DEFAULT_VALUE_ACCESSOR$2,
7180
7215
  ],
7181
7216
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
7182
7217
  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%}"]
@@ -7237,22 +7272,22 @@
7237
7272
  },] }
7238
7273
  ];
7239
7274
 
7240
- var DEFAULT_VALUE_ACCESSOR$4 = {
7275
+ var DEFAULT_VALUE_ACCESSOR$1 = {
7241
7276
  provide: i1.NG_VALUE_ACCESSOR,
7242
7277
  useExisting: i0.forwardRef(function () { return MatBooleanField; }),
7243
7278
  multi: true
7244
7279
  };
7245
- var noop$6 = function () {
7280
+ var noop$2 = function () {
7246
7281
  };
7247
- var ɵ0$7 = noop$6;
7282
+ var ɵ0$5 = noop$2;
7248
7283
  var MatBooleanField = /** @class */ (function () {
7249
7284
  function MatBooleanField(translate, formBuilder, cd, formGroupDir) {
7250
7285
  this.translate = translate;
7251
7286
  this.formBuilder = formBuilder;
7252
7287
  this.cd = cd;
7253
7288
  this.formGroupDir = formGroupDir;
7254
- this._onChangeCallback = noop$6;
7255
- this._onTouchedCallback = noop$6;
7289
+ this._onChangeCallback = noop$2;
7290
+ this._onTouchedCallback = noop$2;
7256
7291
  this._writing = false;
7257
7292
  this.showRadio = false;
7258
7293
  this.disabled = false;
@@ -7427,7 +7462,7 @@
7427
7462
  selector: 'mat-boolean-field',
7428
7463
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{(value == null ? 'COMMON.EMPTY_OPTION' : (value === true ? yesLabel : noLabel)) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\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 [appearance]=\"appearance\"\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 <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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>&nbsp;\n <mat-radio-button #noButton [value]=\"false\">\n <span>{{noLabel|translate}}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field *ngSwitchCase=\"'checkbox'\"\n [floatLabel]=\"floatLabel\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{classList}}\">\n <mat-label *ngIf=\"placeholder && !showRadio\">\n {{placeholder}}\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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>&nbsp;</ion-label>\n\n <!-- checkbox, when compact -->\n <mat-checkbox #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value===null\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\">\n </mat-checkbox>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel === 'never' ? 'never' : 'always'\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{classList}}\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\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 <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
7429
7464
  providers: [
7430
- DEFAULT_VALUE_ACCESSOR$4
7465
+ DEFAULT_VALUE_ACCESSOR$1
7431
7466
  ],
7432
7467
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
7433
7468
  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}"]
@@ -7515,6 +7550,7 @@
7515
7550
  return MatNumpadEvent;
7516
7551
  }(KeyboardEvent));
7517
7552
 
7553
+ exports.AnimationState = void 0;
7518
7554
  (function (AnimationState) {
7519
7555
  AnimationState["ENTER"] = "enter";
7520
7556
  AnimationState["ENTER_INPUT"] = "enter-input";
@@ -7682,7 +7718,7 @@
7682
7718
  };
7683
7719
  return MatNumpadDomService;
7684
7720
  }());
7685
- MatNumpadDomService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1$4.DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
7721
+ MatNumpadDomService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatNumpadDomService_Factory() { return new MatNumpadDomService(i0__namespace.ɵɵinject(i0__namespace.ComponentFactoryResolver), i0__namespace.ɵɵinject(i0__namespace.ApplicationRef), i0__namespace.ɵɵinject(i0__namespace.INJECTOR), i0__namespace.ɵɵinject(i1__namespace$3.DOCUMENT, 8)); }, token: MatNumpadDomService, providedIn: "root" });
7686
7722
  MatNumpadDomService.decorators = [
7687
7723
  { type: i0.Injectable, args: [{
7688
7724
  providedIn: 'root'
@@ -8088,7 +8124,7 @@
8088
8124
  },] }
8089
8125
  ];
8090
8126
 
8091
- var DEFAULT_VALUE_ACCESSOR$5 = {
8127
+ var DEFAULT_VALUE_ACCESSOR = {
8092
8128
  provide: i1.NG_VALUE_ACCESSOR,
8093
8129
  useExisting: i0.forwardRef(function () { return MatSwipeField; }),
8094
8130
  multi: true
@@ -8408,7 +8444,7 @@
8408
8444
  { type: i0.Component, args: [{
8409
8445
  selector: 'mat-swipe-field',
8410
8446
  template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [appearance]=\"appearance\"\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",
8411
- providers: [DEFAULT_VALUE_ACCESSOR$5],
8447
+ providers: [DEFAULT_VALUE_ACCESSOR],
8412
8448
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
8413
8449
  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}"]
8414
8450
  },] }
@@ -8470,14 +8506,14 @@
8470
8506
  },] }
8471
8507
  ];
8472
8508
 
8473
- var noop$7 = function () { };
8474
- var ɵ0$8 = noop$7;
8509
+ var noop$1 = function () { };
8510
+ var ɵ0$4 = noop$1;
8475
8511
  var MatChipsField = /** @class */ (function () {
8476
8512
  function MatChipsField(cd, formGroupDir) {
8477
8513
  this.cd = cd;
8478
8514
  this.formGroupDir = formGroupDir;
8479
- this._onChangeCallback = noop$7;
8480
- this._onTouchedCallback = noop$7;
8515
+ this._onChangeCallback = noop$1;
8516
+ this._onTouchedCallback = noop$1;
8481
8517
  this.logPrefix = '[mat-chips] ';
8482
8518
  this.formControlName = null;
8483
8519
  this.required = false;
@@ -9448,7 +9484,7 @@
9448
9484
  };
9449
9485
  return ProgressBarService;
9450
9486
  }());
9451
- ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
9487
+ ProgressBarService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
9452
9488
  ProgressBarService.decorators = [
9453
9489
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9454
9490
  ];
@@ -9495,7 +9531,7 @@
9495
9531
  };
9496
9532
  return AppGestureConfig;
9497
9533
  }(i1$6.HammerGestureConfig));
9498
- AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
9534
+ AppGestureConfig.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
9499
9535
  AppGestureConfig.decorators = [
9500
9536
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9501
9537
  ];
@@ -9779,7 +9815,7 @@
9779
9815
  };
9780
9816
  return MatPaginatorI18n;
9781
9817
  }(paginator.MatPaginatorIntl));
9782
- MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
9818
+ MatPaginatorI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
9783
9819
  MatPaginatorI18n.decorators = [
9784
9820
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9785
9821
  ];
@@ -9871,17 +9907,17 @@
9871
9907
  return rgbArrayToHex(rgb.map(function (v) { return 255 - v; }));
9872
9908
  }
9873
9909
 
9874
- var noop$8 = function () {
9910
+ var noop = function () {
9875
9911
  };
9876
- var ɵ0$9 = noop$8;
9912
+ var ɵ0$3 = noop;
9877
9913
  var AppFormField = /** @class */ (function () {
9878
9914
  function AppFormField(translate, cd, injector, formGroupDir) {
9879
9915
  this.translate = translate;
9880
9916
  this.cd = cd;
9881
9917
  this.injector = injector;
9882
9918
  this.formGroupDir = formGroupDir;
9883
- this._onChangeCallback = noop$8;
9884
- this._onTouchedCallback = noop$8;
9919
+ this._onChangeCallback = noop;
9920
+ this._onTouchedCallback = noop;
9885
9921
  this.readonly = false;
9886
9922
  this.compact = false;
9887
9923
  this.floatLabel = 'auto';
@@ -10439,7 +10475,7 @@
10439
10475
  };
10440
10476
  return AudioProvider;
10441
10477
  }(StartableService));
10442
- AudioProvider.ɵprov = i0.ɵɵdefineInjectable({ factory: function AudioProvider_Factory() { return new AudioProvider(i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(i2$2.NativeAudio, 8), i0.ɵɵinject(i3$1.Vibration, 8), i0.ɵɵinject(i4.AudioManagement, 8)); }, token: AudioProvider, providedIn: "root" });
10478
+ AudioProvider.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AudioProvider_Factory() { return new AudioProvider(i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(i2__namespace.NativeAudio, 8), i0__namespace.ɵɵinject(i3__namespace.Vibration, 8), i0__namespace.ɵɵinject(i4__namespace.AudioManagement, 8)); }, token: AudioProvider, providedIn: "root" });
10443
10479
  AudioProvider.decorators = [
10444
10480
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
10445
10481
  ];
@@ -10549,7 +10585,7 @@
10549
10585
  };
10550
10586
  return Hotkeys;
10551
10587
  }());
10552
- Hotkeys.ɵprov = i0.ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(i0.ɵɵinject(i1$6.EventManager), i0.ɵɵinject(i2.MatDialog), i0.ɵɵinject(i1$4.DOCUMENT), i0.ɵɵinject(i1$5.ModalController), i0.ɵɵinject(i1$5.PopoverController)); }, token: Hotkeys, providedIn: "root" });
10588
+ Hotkeys.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function Hotkeys_Factory() { return new Hotkeys(i0__namespace.ɵɵinject(i1__namespace$5.EventManager), i0__namespace.ɵɵinject(i2__namespace$1.MatDialog), i0__namespace.ɵɵinject(i1__namespace$3.DOCUMENT), i0__namespace.ɵɵinject(i1__namespace$4.ModalController), i0__namespace.ɵɵinject(i1__namespace$4.PopoverController)); }, token: Hotkeys, providedIn: "root" });
10553
10589
  Hotkeys.decorators = [
10554
10590
  { type: i0.Injectable, args: [{
10555
10591
  providedIn: 'root'
@@ -10799,7 +10835,7 @@
10799
10835
  return ImagesUtils;
10800
10836
  }());
10801
10837
 
10802
- var uuidv4 = uuidv4Imported__namespace;
10838
+ var uuidv4$1 = uuidv4Imported__namespace;
10803
10839
  var FileService = /** @class */ (function () {
10804
10840
  function FileService(platform,
10805
10841
  //private transfer: FileTransfer,
@@ -10845,7 +10881,7 @@
10845
10881
  lastSlashIndex = fileUrl.lastIndexOf('/');
10846
10882
  if (lastSlashIndex === -1)
10847
10883
  throw new Error('Invalid URL: ' + fileUrl);
10848
- fileName = lastSlashIndex < (fileUrl.length - 1) && fileUrl.substring(lastSlashIndex + 1) || uuidv4();
10884
+ fileName = lastSlashIndex < (fileUrl.length - 1) && fileUrl.substring(lastSlashIndex + 1) || uuidv4$1();
10849
10885
  if (!(outputType === 'fileUrl' && this.canUseFileSystem)) return [3 /*break*/, 4];
10850
10886
  console.warn("WARN: [file] Downloading image {" + fileUrl + "} in local filesystem...");
10851
10887
  targetFilePath = this._imageDirectory + fileName;
@@ -10908,7 +10944,7 @@
10908
10944
  };
10909
10945
  return FileService;
10910
10946
  }());
10911
- FileService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(i2$1.HttpClient), i0.ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
10947
+ FileService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FileService_Factory() { return new FileService(i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(i2__namespace$2.HttpClient), i0__namespace.ɵɵinject(ENVIRONMENT)); }, token: FileService, providedIn: "root" });
10912
10948
  FileService.decorators = [
10913
10949
  { type: i0.Injectable, args: [{
10914
10950
  providedIn: 'root',
@@ -11075,7 +11111,7 @@
11075
11111
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
11076
11112
 
11077
11113
  var scrypt = require('scrypt-async');
11078
- var sha256 = require('hash.js/lib/hash/sha/256');
11114
+ var sha256$1 = require('hash.js/lib/hash/sha/256');
11079
11115
  var sha512 = require('hash.js/lib/hash/sha/512');
11080
11116
  var nacl = {
11081
11117
  sign: tweetnacl.sign,
@@ -11181,7 +11217,7 @@
11181
11217
  * Hash (using SHA256) a message
11182
11218
  */
11183
11219
  CryptoService.prototype.sha256 = function (message) {
11184
- return sha256().update(message).digest('hex');
11220
+ return sha256$1().update(message).digest('hex');
11185
11221
  };
11186
11222
  /**
11187
11223
  * Hash (using SHA512) a message
@@ -11195,7 +11231,7 @@
11195
11231
  };
11196
11232
  return CryptoService;
11197
11233
  }());
11198
- CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
11234
+ CryptoService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
11199
11235
  CryptoService.decorators = [
11200
11236
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
11201
11237
  ];
@@ -12067,7 +12103,7 @@
12067
12103
  onRefresh: [{ type: i0.Input }]
12068
12104
  };
12069
12105
 
12070
- var moment$3 = momentImported__namespace;
12106
+ var moment$7 = momentImported__namespace;
12071
12107
  var SETTINGS_STORAGE_KEY = 'settings';
12072
12108
  var SETTINGS_TRANSIENT_PROPERTIES = ['mobile', 'touchUi' /*deprecated*/];
12073
12109
  // fixme: this constant points to static environment
@@ -12135,7 +12171,7 @@
12135
12171
  var _a;
12136
12172
  if (isNil((_a = this._data) === null || _a === void 0 ? void 0 : _a.mobile)) {
12137
12173
  console.warn("[settings] Accessing to property 'mobile' BEFORE service started! Please use ready()");
12138
- return isMobile(window);
12174
+ this._data.mobile = isMobile(window);
12139
12175
  }
12140
12176
  return this._data.mobile;
12141
12177
  },
@@ -12369,11 +12405,11 @@
12369
12405
  if (!feature) {
12370
12406
  feature = {
12371
12407
  name: featureName.toLowerCase(),
12372
- lastSyncDate: moment$3().toISOString()
12408
+ lastSyncDate: moment$7().toISOString()
12373
12409
  };
12374
12410
  }
12375
12411
  else {
12376
- feature.lastSyncDate = moment$3().toISOString();
12412
+ feature.lastSyncDate = moment$7().toISOString();
12377
12413
  }
12378
12414
  this.saveOfflineFeature(feature);
12379
12415
  };
@@ -12567,7 +12603,7 @@
12567
12603
  if (!page || !page.title || !page.path)
12568
12604
  throw Error('Missing required argument \'page\', \'page.path\' or \'page.title\'');
12569
12605
  // Set time
12570
- page.time = page.time || moment$3();
12606
+ page.time = page.time || moment$7();
12571
12607
  // Clean the title (remove <small> tags)
12572
12608
  if (!opts || opts.removeTitleSmallTag !== false) {
12573
12609
  var tagIndex = page.title.indexOf('</small>');
@@ -12584,7 +12620,7 @@
12584
12620
  };
12585
12621
  return LocalSettingsService;
12586
12622
  }(StartableService));
12587
- LocalSettingsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsService_Factory() { return new LocalSettingsService(i0.ɵɵinject(i1$2.TranslateService), i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(i3$2.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_SETTINGS, 8), i0.ɵɵinject(APP_LOCAL_SETTINGS_OPTIONS, 8)); }, token: LocalSettingsService, providedIn: "root" });
12623
+ LocalSettingsService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LocalSettingsService_Factory() { return new LocalSettingsService(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService), i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(i3__namespace$1.Storage), i0__namespace.ɵɵinject(ENVIRONMENT), i0__namespace.ɵɵinject(APP_LOCAL_SETTINGS, 8), i0__namespace.ɵɵinject(APP_LOCAL_SETTINGS_OPTIONS, 8)); }, token: LocalSettingsService, providedIn: "root" });
12588
12624
  LocalSettingsService.decorators = [
12589
12625
  { type: i0.Injectable, args: [{
12590
12626
  providedIn: 'root'
@@ -13465,7 +13501,7 @@
13465
13501
  };
13466
13502
  return NetworkService;
13467
13503
  }(StartableService));
13468
- NetworkService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NetworkService_Factory() { return new NetworkService(i0.ɵɵinject(i1$4.DOCUMENT), i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(i1$5.ModalController), i0.ɵɵinject(CryptoService), i0.ɵɵinject(i3$2.Storage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i2$1.HttpClient), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i9.Network, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i1$2.TranslateService, 8), i0.ɵɵinject(i1$5.ToastController, 8)); }, token: NetworkService, providedIn: "root" });
13504
+ NetworkService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function NetworkService_Factory() { return new NetworkService(i0__namespace.ɵɵinject(i1__namespace$3.DOCUMENT), i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(i1__namespace$4.ModalController), i0__namespace.ɵɵinject(CryptoService), i0__namespace.ɵɵinject(i3__namespace$1.Storage), i0__namespace.ɵɵinject(LocalSettingsService), i0__namespace.ɵɵinject(i6__namespace.CacheService), i0__namespace.ɵɵinject(i2__namespace$2.HttpClient), i0__namespace.ɵɵinject(ENVIRONMENT), i0__namespace.ɵɵinject(i9__namespace.Network, 8), i0__namespace.ɵɵinject(i10__namespace.SplashScreen, 8), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService, 8), i0__namespace.ɵɵinject(i1__namespace$4.ToastController, 8)); }, token: NetworkService, providedIn: "root" });
13469
13505
  NetworkService.decorators = [
13470
13506
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
13471
13507
  ];
@@ -14689,7 +14725,7 @@
14689
14725
  }(StartableService));
14690
14726
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
14691
14727
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
14692
- EntitiesStorage.ɵprov = i0.ɵɵdefineInjectable({ factory: function EntitiesStorage_Factory() { return new EntitiesStorage(i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(ProgressBarService), i0.ɵɵinject(i3$2.Storage), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_LOCAL_STORAGE_TYPE_POLICIES, 8)); }, token: EntitiesStorage, providedIn: "root" });
14728
+ EntitiesStorage.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function EntitiesStorage_Factory() { return new EntitiesStorage(i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(ProgressBarService), i0__namespace.ɵɵinject(i3__namespace$1.Storage), i0__namespace.ɵɵinject(ENVIRONMENT), i0__namespace.ɵɵinject(APP_LOCAL_STORAGE_TYPE_POLICIES, 8)); }, token: EntitiesStorage, providedIn: "root" });
14693
14729
  EntitiesStorage.decorators = [
14694
14730
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
14695
14731
  ];
@@ -14845,10 +14881,10 @@
14845
14881
  function referentialsToString(values, properties, separator) {
14846
14882
  return (values || []).map(function (v) { return referentialToString(v, properties); }).join(separator || ', ');
14847
14883
  }
14848
- var ɵ0$a = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14884
+ var ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14849
14885
  var StatusList = Object.freeze([
14850
14886
  {
14851
- id: ɵ0$a,
14887
+ id: ɵ0$2,
14852
14888
  icon: 'checkmark',
14853
14889
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
14854
14890
  },
@@ -15151,7 +15187,7 @@
15151
15187
  (data.lastName || '')) || '';
15152
15188
  }
15153
15189
 
15154
- var uuidv4$1 = uuidv4Imported__namespace;
15190
+ var uuidv4 = uuidv4Imported__namespace;
15155
15191
  var _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
15156
15192
  var NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
15157
15193
  /**
@@ -15195,7 +15231,7 @@
15195
15231
  // Skip if not tracked
15196
15232
  if (!context || !context.tracked)
15197
15233
  return forward(operation);
15198
- var id = context.serializationKey || uuidv4$1();
15234
+ var id = context.serializationKey || uuidv4();
15199
15235
  console.debug("[apollo-tracker-link] Watching tracked query {" + operation.operationName + "#" + id + "}");
15200
15236
  // Clean context, before calling JSON.stringify (remove unused attributes)
15201
15237
  var cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -15828,14 +15864,14 @@
15828
15864
  mutationLinks = void 0;
15829
15865
  // Add queue to store tracked queries, when offline
15830
15866
  if (enableTrackMutationQueries) {
15831
- serializingLink = new SerializingLink__default['default']();
15867
+ serializingLink = new SerializingLink__default["default"]();
15832
15868
  trackerLink = createTrackerLink({
15833
15869
  storage: storage,
15834
15870
  onNetworkStatusChange: this._networkStatusChanged$,
15835
15871
  debounce: 1000,
15836
15872
  debug: true
15837
15873
  });
15838
- queueLink_1 = new QueueLink__default['default']();
15874
+ queueLink_1 = new QueueLink__default["default"]();
15839
15875
  this.registerSubscription(this._networkStatusChanged$
15840
15876
  .subscribe(function (type) {
15841
15877
  // Network is offline: start buffering into queue
@@ -15850,7 +15886,7 @@
15850
15886
  }
15851
15887
  }));
15852
15888
  mutationLinks = [
15853
- loggerLink__default['default'],
15889
+ loggerLink__default["default"],
15854
15890
  queueLink_1,
15855
15891
  trackerLink,
15856
15892
  queueLink_1,
@@ -16033,7 +16069,7 @@
16033
16069
  };
16034
16070
  return GraphqlService;
16035
16071
  }(StartableService));
16036
- GraphqlService.ɵprov = i0.ɵɵdefineInjectable({ factory: function GraphqlService_Factory() { return new GraphqlService(i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(i2$3.Apollo), i0.ɵɵinject(i3$3.HttpLink), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i3$2.Storage), i0.ɵɵinject(CryptoService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_GRAPHQL_TYPE_POLICIES, 8)); }, token: GraphqlService, providedIn: "root" });
16072
+ GraphqlService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function GraphqlService_Factory() { return new GraphqlService(i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(i2__namespace$3.Apollo), i0__namespace.ɵɵinject(i3__namespace$2.HttpLink), i0__namespace.ɵɵinject(NetworkService), i0__namespace.ɵɵinject(i3__namespace$1.Storage), i0__namespace.ɵɵinject(CryptoService), i0__namespace.ɵɵinject(ENVIRONMENT), i0__namespace.ɵɵinject(APP_GRAPHQL_TYPE_POLICIES, 8)); }, token: GraphqlService, providedIn: "root" });
16037
16073
  GraphqlService.decorators = [
16038
16074
  { type: i0.Injectable, args: [{
16039
16075
  providedIn: 'root'
@@ -16050,7 +16086,7 @@
16050
16086
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
16051
16087
  ]; };
16052
16088
 
16053
- var sha256$1 = require('hash.js/lib/hash/sha/256');
16089
+ var sha256 = require('hash.js/lib/hash/sha/256');
16054
16090
  var BaseGraphqlServiceOptions = /** @class */ (function () {
16055
16091
  function BaseGraphqlServiceOptions() {
16056
16092
  }
@@ -16220,8 +16256,8 @@
16220
16256
  };
16221
16257
  /* -- protected methods -- */
16222
16258
  BaseGraphqlService.prototype.computeMutableWatchQueryId = function (opts) {
16223
- var queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
16224
- var variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
16259
+ var queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
16260
+ var variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
16225
16261
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
16226
16262
  };
16227
16263
  BaseGraphqlService.prototype.findMutableWatchQueries = function (opts) {
@@ -16294,19 +16330,19 @@
16294
16330
  /* ------------------------------------
16295
16331
  * GraphQL queries
16296
16332
  * ------------------------------------*/
16297
- var Fragments = {
16298
- account: core.gql(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n fragment AccountFragment on AccountVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n settings {\n ...UserSettingsFragment\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }"], ["\n fragment AccountFragment on AccountVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n settings {\n ...UserSettingsFragment\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }"]))),
16299
- settings: core.gql(templateObject_2 || (templateObject_2 = __makeTemplateObject(["fragment UserSettingsFragment on UserSettingsVO {\n id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }"], ["fragment UserSettingsFragment on UserSettingsVO {\n id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }"])))
16333
+ var Fragments$1 = {
16334
+ account: core.gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject(["\n fragment AccountFragment on AccountVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n settings {\n ...UserSettingsFragment\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }"], ["\n fragment AccountFragment on AccountVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n settings {\n ...UserSettingsFragment\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }"]))),
16335
+ settings: core.gql(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject(["fragment UserSettingsFragment on UserSettingsVO {\n id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }"], ["fragment UserSettingsFragment on UserSettingsVO {\n id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }"])))
16300
16336
  };
16301
16337
  // Load account query
16302
- var LoadQuery = core.gql(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n ", "\n"], ["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n ", "\n"])), Fragments.account, Fragments.settings);
16338
+ var LoadQuery$1 = core.gql(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject(["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n ", "\n"], ["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n ", "\n"])), Fragments$1.account, Fragments$1.settings);
16303
16339
  // Check email query
16304
- var IsEmailExistsQuery = core.gql(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n query IsEmailExists($email: String, $hash: String){\n isEmailExists(email: $email, hash: $hash)\n }\n"], ["\n query IsEmailExists($email: String, $hash: String){\n isEmailExists(email: $email, hash: $hash)\n }\n"])));
16340
+ var IsEmailExistsQuery = core.gql(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n query IsEmailExists($email: String, $hash: String){\n isEmailExists(email: $email, hash: $hash)\n }\n"], ["\n query IsEmailExists($email: String, $hash: String){\n isEmailExists(email: $email, hash: $hash)\n }\n"])));
16305
16341
  // Save (create or update) account mutation
16306
16342
  var AccountMutations = {
16307
- save: core.gql(templateObject_5 || (templateObject_5 = __makeTemplateObject([" mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""], [" mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""])), Fragments.account, Fragments.settings),
16308
- create: core.gql(templateObject_6 || (templateObject_6 = __makeTemplateObject(["mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""], ["mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""])), Fragments.account, Fragments.settings),
16309
- saveSettings: core.gql(templateObject_7 || (templateObject_7 = __makeTemplateObject(["mutation SaveSettings($data:UserSettingsVOInput){\n data: saveSettings(settings: $data){\n ...UserSettingsFragment\n }\n }\n ", ""], ["mutation SaveSettings($data:UserSettingsVOInput){\n data: saveSettings(settings: $data){\n ...UserSettingsFragment\n }\n }\n ", ""])), Fragments.settings)
16343
+ save: core.gql(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject([" mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""], [" mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""])), Fragments$1.account, Fragments$1.settings),
16344
+ create: core.gql(templateObject_6 || (templateObject_6 = __makeTemplateObject(["mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""], ["mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n ", ""])), Fragments$1.account, Fragments$1.settings),
16345
+ saveSettings: core.gql(templateObject_7 || (templateObject_7 = __makeTemplateObject(["mutation SaveSettings($data:UserSettingsVOInput){\n data: saveSettings(settings: $data){\n ...UserSettingsFragment\n }\n }\n ", ""], ["mutation SaveSettings($data:UserSettingsVOInput){\n data: saveSettings(settings: $data){\n ...UserSettingsFragment\n }\n }\n ", ""])), Fragments$1.settings)
16310
16346
  };
16311
16347
  // Sent confirmation email
16312
16348
  var SendConfirmEmailMutation = core.gql(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n mutation sendAccountConfirmationEmail($email:String, $locale:String){\n sendAccountConfirmationEmail(email: $email, locale: $locale)\n }\n"], ["\n mutation sendAccountConfirmationEmail($email:String, $locale:String){\n sendAccountConfirmationEmail(email: $email, locale: $locale)\n }\n"])));
@@ -16927,7 +16963,7 @@
16927
16963
  _b.label = 3;
16928
16964
  case 3: return [3 /*break*/, 6];
16929
16965
  case 4: return [4 /*yield*/, this.graphql.query({
16930
- query: LoadQuery,
16966
+ query: LoadQuery$1,
16931
16967
  error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
16932
16968
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
16933
16969
  })];
@@ -17573,7 +17609,7 @@
17573
17609
  };
17574
17610
  return AccountService;
17575
17611
  }(BaseGraphqlService));
17576
- AccountService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(i0.ɵɵinject(CryptoService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(i3$2.Storage), i0.ɵɵinject(FileService), i0.ɵɵinject(i1$2.TranslateService, 8), i0.ɵɵinject(i1$5.ToastController, 8), i0.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
17612
+ AccountService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AccountService_Factory() { return new AccountService(i0__namespace.ɵɵinject(CryptoService), i0__namespace.ɵɵinject(NetworkService), i0__namespace.ɵɵinject(GraphqlService), i0__namespace.ɵɵinject(LocalSettingsService), i0__namespace.ɵɵinject(i3__namespace$1.Storage), i0__namespace.ɵɵinject(FileService), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService, 8), i0__namespace.ɵɵinject(i1__namespace$4.ToastController, 8), i0__namespace.ɵɵinject(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
17577
17613
  AccountService.decorators = [
17578
17614
  { type: i0.Injectable, args: [{ providedIn: 'root', deps: [ENVIRONMENT] },] }
17579
17615
  ];
@@ -17588,7 +17624,7 @@
17588
17624
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] },
17589
17625
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
17590
17626
  ]; };
17591
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;
17627
+ var templateObject_1$4, templateObject_2$2, templateObject_3$2, templateObject_4$2, templateObject_5$2, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;
17592
17628
 
17593
17629
  var Software_1, Configuration_1;
17594
17630
  // @dynamic
@@ -17846,12 +17882,12 @@
17846
17882
  /* ------------------------------------
17847
17883
  * GraphQL queries
17848
17884
  * ------------------------------------*/
17849
- var Fragments$1 = {
17850
- config: core.gql(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject(["\n fragment ConfigFragment on ConfigurationVO {\n id\n label\n name\n description\n comments\n properties\n smallLogo\n largeLogo\n backgroundImages\n partners {\n id\n label\n name\n logo\n siteUrl\n __typename\n }\n updateDate\n creationDate\n statusId\n __typename\n }\n "], ["\n fragment ConfigFragment on ConfigurationVO {\n id\n label\n name\n description\n comments\n properties\n smallLogo\n largeLogo\n backgroundImages\n partners {\n id\n label\n name\n logo\n siteUrl\n __typename\n }\n updateDate\n creationDate\n statusId\n __typename\n }\n "])))
17885
+ var Fragments = {
17886
+ config: core.gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n fragment ConfigFragment on ConfigurationVO {\n id\n label\n name\n description\n comments\n properties\n smallLogo\n largeLogo\n backgroundImages\n partners {\n id\n label\n name\n logo\n siteUrl\n __typename\n }\n updateDate\n creationDate\n statusId\n __typename\n }\n "], ["\n fragment ConfigFragment on ConfigurationVO {\n id\n label\n name\n description\n comments\n properties\n smallLogo\n largeLogo\n backgroundImages\n partners {\n id\n label\n name\n logo\n siteUrl\n __typename\n }\n updateDate\n creationDate\n statusId\n __typename\n }\n "])))
17851
17887
  };
17852
- var LoadQuery$1 = core.gql(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject(["\nquery Configuration{\n data: configuration{\n ...ConfigFragment\n }\n}\n ", "\n"], ["\nquery Configuration{\n data: configuration{\n ...ConfigFragment\n }\n}\n ", "\n"])), Fragments$1.config);
17888
+ var LoadQuery = core.gql(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject(["\nquery Configuration{\n data: configuration{\n ...ConfigFragment\n }\n}\n ", "\n"], ["\nquery Configuration{\n data: configuration{\n ...ConfigFragment\n }\n}\n ", "\n"])), Fragments.config);
17853
17889
  // Save (create or update) account mutation
17854
- var SaveMutation = core.gql(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject(["\n mutation SaveConfiguration($data: ConfigurationVOInput){\n data: saveConfiguration(config: $data){\n ...ConfigFragment\n }\n }\n ", "\n"], ["\n mutation SaveConfiguration($data: ConfigurationVOInput){\n data: saveConfiguration(config: $data){\n ...ConfigFragment\n }\n }\n ", "\n"])), Fragments$1.config);
17890
+ var SaveMutation = core.gql(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject(["\n mutation SaveConfiguration($data: ConfigurationVOInput){\n data: saveConfiguration(config: $data){\n ...ConfigFragment\n }\n }\n ", "\n"], ["\n mutation SaveConfiguration($data: ConfigurationVOInput){\n data: saveConfiguration(config: $data){\n ...ConfigFragment\n }\n }\n ", "\n"])), Fragments.config);
17855
17891
  var ClearCache = core.gql(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject(["\n query ClearCache($name: String) {\n clearCache(name: $name)\n }\n"], ["\n query ClearCache($name: String) {\n clearCache(name: $name)\n }\n"])));
17856
17892
  var CacheStatistics = core.gql(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject(["\n query CacheStatistics {\n cacheStatistics\n }\n"], ["\n query CacheStatistics {\n cacheStatistics\n }\n"])));
17857
17893
  var APP_CONFIG_OPTIONS = new i0.InjectionToken('defaultOptions');
@@ -17912,7 +17948,7 @@
17912
17948
  case 0:
17913
17949
  now = Date.now();
17914
17950
  console.debug('[config] Loading Pod configuration...');
17915
- query = opts && opts.query || LoadQuery$1;
17951
+ query = opts && opts.query || LoadQuery;
17916
17952
  variables = opts && opts.variables || undefined;
17917
17953
  return [4 /*yield*/, this.graphql.query({
17918
17954
  query: query,
@@ -18218,7 +18254,7 @@
18218
18254
  };
18219
18255
  return ConfigService;
18220
18256
  }(BaseGraphqlService));
18221
- ConfigService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(GraphqlService), i0.ɵɵinject(i3$2.Storage), i0.ɵɵinject(NetworkService), i0.ɵɵinject(FileService), i0.ɵɵinject(i1$5.ToastController), i0.ɵɵinject(i1$2.TranslateService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
18257
+ ConfigService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ConfigService_Factory() { return new ConfigService(i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(GraphqlService), i0__namespace.ɵɵinject(i3__namespace$1.Storage), i0__namespace.ɵɵinject(NetworkService), i0__namespace.ɵɵinject(FileService), i0__namespace.ɵɵinject(i1__namespace$4.ToastController), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService), i0__namespace.ɵɵinject(AccountService), i0__namespace.ɵɵinject(ENVIRONMENT), i0__namespace.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
18222
18258
  ConfigService.decorators = [
18223
18259
  { type: i0.Injectable, args: [{
18224
18260
  providedIn: 'root',
@@ -18237,7 +18273,7 @@
18237
18273
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] },
18238
18274
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_CONFIG_OPTIONS,] }] }
18239
18275
  ]; };
18240
- var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
18276
+ var templateObject_1$3, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
18241
18277
 
18242
18278
  var UploadFilePopover = /** @class */ (function () {
18243
18279
  function UploadFilePopover(popoverController, translate, cd) {
@@ -18515,7 +18551,7 @@
18515
18551
  return UriUtils;
18516
18552
  }());
18517
18553
 
18518
- var moment$4 = momentImported__namespace;
18554
+ var moment$6 = momentImported__namespace;
18519
18555
  var AndroidOsEnvironment = Object.freeze({
18520
18556
  DIRECTORY_DOWNLOADS: 'Download',
18521
18557
  DIRECTORY_DOWNLOADS_OLD: 'Downloads',
@@ -18552,6 +18588,8 @@
18552
18588
  PlatformService.prototype.is = function (platformName) {
18553
18589
  switch (platformName) {
18554
18590
  case 'mobile':
18591
+ // Exclude Windows touch screens - see sumaris-app issues #323 and #346
18592
+ return isMobile(window);
18555
18593
  case 'mobileweb':
18556
18594
  // Exclude Windows touch screens - see sumaris-app issues #323 and #346
18557
18595
  return this.platform.is(platformName) && !isWindows(window);
@@ -18813,16 +18851,16 @@
18813
18851
  }
18814
18852
  // config moment lib
18815
18853
  try {
18816
- moment$4.locale(event.lang);
18854
+ moment$6.locale(event.lang);
18817
18855
  console.debug('[platform] Use locale {' + event.lang + '}');
18818
18856
  }
18819
18857
  // If error, fallback to en
18820
18858
  catch (err) {
18821
- moment$4.locale('en');
18859
+ moment$6.locale('en');
18822
18860
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
18823
18861
  }
18824
18862
  // Config date adapter
18825
- _this.dateAdapter.setLocale(moment$4.locale());
18863
+ _this.dateAdapter.setLocale(moment$6.locale());
18826
18864
  }
18827
18865
  });
18828
18866
  this.settings.onChange.subscribe(function (data) {
@@ -19074,7 +19112,7 @@
19074
19112
  };
19075
19113
  return PlatformService;
19076
19114
  }(StartableService));
19077
- PlatformService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0.ɵɵinject(i1$5.Platform), i0.ɵɵinject(i2$4.Platform), i0.ɵɵinject(i1$5.ToastController), i0.ɵɵinject(i1$2.TranslateService), i0.ɵɵinject(i1$1.MomentDateAdapter), i0.ɵɵinject(EntitiesStorage), i0.ɵɵinject(LocalSettingsService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(AccountService), i0.ɵɵinject(ConfigService), i0.ɵɵinject(i6.CacheService), i0.ɵɵinject(i3$2.Storage), i0.ɵɵinject(AudioProvider), i0.ɵɵinject(ENVIRONMENT), i0.ɵɵinject(i14.StatusBar, 8), i0.ɵɵinject(i15.Keyboard, 8), i0.ɵɵinject(i10.SplashScreen, 8), i0.ɵɵinject(i17.InAppBrowser, 8), i0.ɵɵinject(i18.Downloader, 8)); }, token: PlatformService, providedIn: "root" });
19115
+ PlatformService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PlatformService_Factory() { return new PlatformService(i0__namespace.ɵɵinject(i1__namespace$4.Platform), i0__namespace.ɵɵinject(i2__namespace$4.Platform), i0__namespace.ɵɵinject(i1__namespace$4.ToastController), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService), i0__namespace.ɵɵinject(i1__namespace.MomentDateAdapter), i0__namespace.ɵɵinject(EntitiesStorage), i0__namespace.ɵɵinject(LocalSettingsService), i0__namespace.ɵɵinject(NetworkService), i0__namespace.ɵɵinject(AccountService), i0__namespace.ɵɵinject(ConfigService), i0__namespace.ɵɵinject(i6__namespace.CacheService), i0__namespace.ɵɵinject(i3__namespace$1.Storage), i0__namespace.ɵɵinject(AudioProvider), i0__namespace.ɵɵinject(ENVIRONMENT), i0__namespace.ɵɵinject(i14__namespace.StatusBar, 8), i0__namespace.ɵɵinject(i15__namespace.Keyboard, 8), i0__namespace.ɵɵinject(i10__namespace.SplashScreen, 8), i0__namespace.ɵɵinject(i17__namespace.InAppBrowser, 8), i0__namespace.ɵɵinject(i18__namespace.Downloader, 8)); }, token: PlatformService, providedIn: "root" });
19078
19116
  PlatformService.decorators = [
19079
19117
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19080
19118
  ];
@@ -19166,7 +19204,7 @@
19166
19204
  };
19167
19205
  return MatStepperI18n;
19168
19206
  }(stepper.MatStepperIntl));
19169
- MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
19207
+ MatStepperI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
19170
19208
  MatStepperI18n.decorators = [
19171
19209
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19172
19210
  ];
@@ -20837,43 +20875,44 @@
20837
20875
  }
20838
20876
  this.dirty = false;
20839
20877
  };
20840
- InMemoryEntitiesService.prototype.watchAll = function (offset, size, sortBy, sortDirection, filterData, options) {
20841
- var _this = this;
20842
- offset = offset >= 0 ? offset : 0;
20843
- size = size >= 0 ? size : -1;
20844
- if (!this.data) {
20845
- console.warn('[memory-data-service] Waiting value to be set...');
20846
- }
20847
- return this._onChange
20848
- .pipe(operators.filter(isNotNil), operators.mergeMap(function (_) { return waitFor(function () { return !_this._saving; }); }), operators.mergeMap(function (_) { return __awaiter(_this, void 0, void 0, function () {
20849
- var excludedDataByFilter, excludedDataByPagination, data, promiseOrData, _b, total;
20850
- return __generator(this, function (_c) {
20851
- switch (_c.label) {
20878
+ InMemoryEntitiesService.prototype.loadAll = function (offset, size, sortBy, sortDirection, filter, opts) {
20879
+ return __awaiter(this, void 0, void 0, function () {
20880
+ var excludedDataByFilter, excludedDataByPagination, data, total, res, nextOffset_1;
20881
+ var _this = this;
20882
+ return __generator(this, function (_b) {
20883
+ switch (_b.label) {
20852
20884
  case 0:
20853
- excludedDataByFilter = [];
20854
- _c.label = 1;
20885
+ offset = offset >= 0 ? offset : 0;
20886
+ size = size >= 0 ? size : -1;
20887
+ if (!!this.data) return [3 /*break*/, 2];
20888
+ console.warn('[memory-data-service] Waiting value to be set...');
20889
+ return [4 /*yield*/, firstNotNilPromise(this._onChange)];
20855
20890
  case 1:
20856
- _c.trys.push([1, , 6, 7]);
20857
- if (isEmptyArray(this.data)) {
20858
- return [2 /*return*/, { data: [], total: 0 }];
20859
- }
20860
- data = this._sortFn(this.data || [], sortBy, sortDirection);
20861
- if (!this._onLoad) return [3 /*break*/, 5];
20862
- promiseOrData = this._onLoad(data);
20863
- if (!((promiseOrData instanceof Promise))) return [3 /*break*/, 3];
20864
- return [4 /*yield*/, promiseOrData];
20891
+ _b.sent();
20892
+ _b.label = 2;
20865
20893
  case 2:
20866
- _b = _c.sent();
20867
- return [3 /*break*/, 4];
20894
+ if (!this._saving) return [3 /*break*/, 4];
20895
+ return [4 /*yield*/, waitFor(function () { return !_this._saving; })];
20868
20896
  case 3:
20869
- _b = promiseOrData;
20870
- _c.label = 4;
20897
+ _b.sent();
20898
+ _b.label = 4;
20871
20899
  case 4:
20872
- data = _b;
20873
- _c.label = 5;
20900
+ excludedDataByFilter = [];
20901
+ _b.label = 5;
20874
20902
  case 5:
20903
+ _b.trys.push([5, , 8, 9]);
20904
+ if (!this.data.length) {
20905
+ return [2 /*return*/, { data: [], total: 0 }];
20906
+ }
20907
+ data = this._sortFn(this.data || [], sortBy, sortDirection);
20908
+ if (!this._onLoad) return [3 /*break*/, 7];
20909
+ return [4 /*yield*/, this._onLoad(data)];
20910
+ case 6:
20911
+ data = _b.sent();
20912
+ _b.label = 7;
20913
+ case 7:
20875
20914
  // Apply filter (will update hiddenData)
20876
- data = this.filter(data, filterData, excludedDataByFilter);
20915
+ data = this.filter(data, filter, excludedDataByFilter);
20877
20916
  total = data.length;
20878
20917
  // If page size=0 (e.g. only need total)
20879
20918
  if (size === 0) {
@@ -20914,15 +20953,40 @@
20914
20953
  if (data === this.data) {
20915
20954
  data = data.slice();
20916
20955
  }
20917
- return [2 /*return*/, { data: data, total: total }];
20918
- case 6:
20956
+ res = { data: data, total: total };
20957
+ nextOffset_1 = (offset || 0) + size;
20958
+ if (nextOffset_1 < total) {
20959
+ res.fetchMore = function () { return _this.loadAll(nextOffset_1, size, sortBy, sortDirection, filter, opts)
20960
+ .then(function (res) {
20961
+ var _a;
20962
+ // Update hidden data (remove new fetched item)
20963
+ if ((_a = res.data) === null || _a === void 0 ? void 0 : _a.length) {
20964
+ _this._hiddenData = _this._hiddenData.filter(function (item) { return !res.data.includes(item); });
20965
+ }
20966
+ return res;
20967
+ }); };
20968
+ }
20969
+ return [2 /*return*/, res];
20970
+ case 8:
20919
20971
  // Remember hidden data
20920
- this._hiddenData = !excludedDataByPagination ? excludedDataByFilter : excludedDataByFilter.concat.apply(excludedDataByFilter, __spread(excludedDataByPagination));
20972
+ if (offset === 0) {
20973
+ this._hiddenData = !excludedDataByPagination ? excludedDataByFilter : excludedDataByFilter.concat.apply(excludedDataByFilter, __spread(excludedDataByPagination));
20974
+ }
20921
20975
  return [7 /*endfinally*/];
20922
- case 7: return [2 /*return*/];
20976
+ case 9: return [2 /*return*/];
20923
20977
  }
20924
20978
  });
20925
- }); }));
20979
+ });
20980
+ };
20981
+ InMemoryEntitiesService.prototype.watchAll = function (offset, size, sortBy, sortDirection, filterData, options) {
20982
+ var _this = this;
20983
+ offset = offset >= 0 ? offset : 0;
20984
+ size = size >= 0 ? size : -1;
20985
+ if (!this.data) {
20986
+ console.warn('[memory-data-service] Waiting value to be set...');
20987
+ }
20988
+ return this._onChange
20989
+ .pipe(operators.filter(isNotNil), operators.mergeMap(function (_) { return _this.loadAll(offset, size, sortBy, sortDirection, filterData, options); }));
20926
20990
  };
20927
20991
  InMemoryEntitiesService.prototype.saveAll = function (data, options) {
20928
20992
  return __awaiter(this, void 0, void 0, function () {
@@ -21430,7 +21494,7 @@
21430
21494
  return 1;
21431
21495
  }
21432
21496
  }
21433
- var ɵ0$b = function (defaultStateSize) { return [
21497
+ var ɵ0$1 = function (defaultStateSize) { return [
21434
21498
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
21435
21499
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
21436
21500
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -21438,7 +21502,7 @@
21438
21502
  var SCALE_OPTIONS_DEFAULT = {
21439
21503
  startColor: rgbArrayMap.red,
21440
21504
  startStates: [0, 2, 3],
21441
- startStepsFn: ɵ0$b
21505
+ startStepsFn: ɵ0$1
21442
21506
  };
21443
21507
  /**
21444
21508
  * Internal function, that create a colors scale, using iteration
@@ -22395,7 +22459,7 @@
22395
22459
  };
22396
22460
  return UserSettingsValidatorService;
22397
22461
  }(AppValidatorService));
22398
- UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
22462
+ UserSettingsValidatorService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0__namespace.ɵɵinject(i1__namespace$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
22399
22463
  UserSettingsValidatorService.decorators = [
22400
22464
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22401
22465
  ];
@@ -22443,7 +22507,7 @@
22443
22507
  };
22444
22508
  return AccountValidatorService;
22445
22509
  }(AppValidatorService));
22446
- AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
22510
+ AccountValidatorService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0__namespace.ɵɵinject(i1__namespace$6.FormBuilder), i0__namespace.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
22447
22511
  AccountValidatorService.decorators = [
22448
22512
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22449
22513
  ];
@@ -22790,7 +22854,7 @@
22790
22854
  };
22791
22855
  return MenuService;
22792
22856
  }());
22793
- MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
22857
+ MenuService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
22794
22858
  MenuService.decorators = [
22795
22859
  { type: i0.Injectable, args: [{
22796
22860
  providedIn: 'root'
@@ -23156,7 +23220,7 @@
23156
23220
  };
23157
23221
  return LocalSettingsValidatorService;
23158
23222
  }(AppValidatorService));
23159
- LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
23223
+ LocalSettingsValidatorService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0__namespace.ɵɵinject(i1__namespace$6.FormBuilder), i0__namespace.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
23160
23224
  LocalSettingsValidatorService.decorators = [
23161
23225
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
23162
23226
  ];
@@ -23936,7 +24000,7 @@
23936
24000
  };
23937
24001
  return IsOnFieldModePipe;
23938
24002
  }());
23939
- IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
24003
+ IsOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
23940
24004
  IsOnFieldModePipe.decorators = [
23941
24005
  { type: i0.Pipe, args: [{
23942
24006
  name: 'isOnField'
@@ -23951,7 +24015,7 @@
23951
24015
  };
23952
24016
  return IsNotOnFieldModePipe;
23953
24017
  }());
23954
- IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
24018
+ IsNotOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
23955
24019
  IsNotOnFieldModePipe.decorators = [
23956
24020
  { type: i0.Pipe, args: [{
23957
24021
  name: 'isNotOnField'
@@ -23969,7 +24033,7 @@
23969
24033
  };
23970
24034
  return PersonToStringPipe;
23971
24035
  }());
23972
- PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
24036
+ PersonToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
23973
24037
  PersonToStringPipe.decorators = [
23974
24038
  { type: i0.Pipe, args: [{
23975
24039
  name: 'personToString'
@@ -24397,7 +24461,7 @@
24397
24461
  };
24398
24462
  return IsLoginAccountPipe;
24399
24463
  }());
24400
- IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
24464
+ IsLoginAccountPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
24401
24465
  IsLoginAccountPipe.decorators = [
24402
24466
  { type: i0.Pipe, args: [{
24403
24467
  name: 'isLogin'
@@ -24412,7 +24476,7 @@
24412
24476
  };
24413
24477
  return AccountToStringPipe;
24414
24478
  }());
24415
- AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
24479
+ AccountToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
24416
24480
  AccountToStringPipe.decorators = [
24417
24481
  { type: i0.Pipe, args: [{
24418
24482
  name: 'accountToString'
@@ -24430,7 +24494,7 @@
24430
24494
  };
24431
24495
  return DepartmentToStringPipe;
24432
24496
  }());
24433
- DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
24497
+ DepartmentToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
24434
24498
  DepartmentToStringPipe.decorators = [
24435
24499
  { type: i0.Pipe, args: [{
24436
24500
  name: 'departmentToString'
@@ -25196,7 +25260,7 @@
25196
25260
  };
25197
25261
  return AuthGuardService;
25198
25262
  }());
25199
- AuthGuardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(i0.ɵɵinject(AccountService), i0.ɵɵinject(i1$5.ModalController), i0.ɵɵinject(i3.Router), i0.ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
25263
+ AuthGuardService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AuthGuardService_Factory() { return new AuthGuardService(i0__namespace.ɵɵinject(AccountService), i0__namespace.ɵɵinject(i1__namespace$4.ModalController), i0__namespace.ɵɵinject(i3__namespace$3.Router), i0__namespace.ɵɵinject(ENVIRONMENT)); }, token: AuthGuardService, providedIn: "root" });
25200
25264
  AuthGuardService.decorators = [
25201
25265
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
25202
25266
  ];
@@ -25747,11 +25811,6 @@
25747
25811
  return AppTableUtils;
25748
25812
  }());
25749
25813
 
25750
- var AppTableDataSourceOptions = /** @class */ (function () {
25751
- function AppTableDataSourceOptions() {
25752
- }
25753
- return AppTableDataSourceOptions;
25754
- }());
25755
25814
  // @dynamic
25756
25815
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
25757
25816
  var EntitiesTableDataSource = /** @class */ (function (_super_1) {
@@ -25765,36 +25824,24 @@
25765
25824
  * @param validatorService Service that create instances of the FormGroup used to validate row fields.
25766
25825
  * @param config Additional configuration for table.
25767
25826
  */
25768
- function EntitiesTableDataSource(dataType, dataService, validatorService, config) {
25769
- var _this = _super_1.call(this, [], dataType, validatorService, config) || this;
25827
+ function EntitiesTableDataSource(dataType, dataService, validatorService, options) {
25828
+ var _this = _super_1.call(this, [], dataType, validatorService, Object.assign({ dataServiceOptions: {}, debug: (options === null || options === void 0 ? void 0 : options.suppressErrors) === false, keepOriginalDataAfterConfirm: false }, options)) || this;
25770
25829
  _this.dataService = dataService;
25771
25830
  _this._creating = false;
25772
25831
  _this._saving = false;
25773
- _this._useValidator = false;
25774
25832
  _this._stopWatching$ = new rxjs.Subject();
25775
25833
  _this._editingRowCount = 0;
25776
25834
  _this._fetchMoreFn = null;
25777
25835
  _this.loadingSubject = new rxjs.BehaviorSubject(undefined);
25778
- _this._options = Object.assign({ dataServiceOptions: {}, debug: config && config.suppressErrors === false, keepOriginalDataAfterConfirm: false }, config);
25779
- _this._useValidator = isNotNil(validatorService);
25780
- _this._logTypeName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
25781
- // For DEV ONLY
25782
- _this._debug = _this._options.debug === true;
25836
+ _this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
25783
25837
  return _this;
25784
25838
  }
25785
25839
  Object.defineProperty(EntitiesTableDataSource.prototype, "serviceOptions", {
25786
25840
  get: function () {
25787
- return this._options.dataServiceOptions;
25841
+ return this.config.dataServiceOptions;
25788
25842
  },
25789
25843
  set: function (value) {
25790
- this._options.dataServiceOptions = value;
25791
- },
25792
- enumerable: false,
25793
- configurable: true
25794
- });
25795
- Object.defineProperty(EntitiesTableDataSource.prototype, "options", {
25796
- get: function () {
25797
- return this._options;
25844
+ this.config.dataServiceOptions = value;
25798
25845
  },
25799
25846
  enumerable: false,
25800
25847
  configurable: true
@@ -25829,10 +25876,10 @@
25829
25876
  return this.dataService.watchAll(offset, size, sortBy, sortDirection, filter, this.serviceOptions)
25830
25877
  .pipe(operators.catchError(function (err) { return _this.handleError(err, 'ERROR.LOAD_DATA_ERROR'); }), operators.map(function (res) {
25831
25878
  if (_this._saving) {
25832
- console.info("[table-datasource] Received " + _this._logTypeName + " data (from service), but still saving: skip");
25879
+ console.info("[table-datasource] Received " + _this._entityName + " data (from service), but still saving: skip");
25833
25880
  }
25834
25881
  else if (_this._editingRowCount > 0) {
25835
- console.warn("[table-datasource] Received " + _this._logTypeName + " data, while " + _this._editingRowCount + " rows still editing: skip; Please check save() implementation in the table!");
25882
+ console.warn("[table-datasource] Received " + _this._entityName + " data, while " + _this._editingRowCount + " rows still editing: skip; Please check save() implementation in the table!");
25836
25883
  }
25837
25884
  else {
25838
25885
  _this.updateDatasource((res.data || []));
@@ -25845,12 +25892,24 @@
25845
25892
  // ⚠ Notice: Don't put any operator after takeUntil to avoid potential subscription leaks
25846
25893
  );
25847
25894
  };
25895
+ EntitiesTableDataSource.prototype.updateDatasourceFromRows = function (rows) {
25896
+ var _a;
25897
+ // Avoid to update dataSourceSubject, when not need
25898
+ if ((_a = this.datasourceSubject.observers) === null || _a === void 0 ? void 0 : _a.length) {
25899
+ if (!this.config.suppressErrors)
25900
+ console.warn('[table-datasource] Update datasource subject. Please prefer using \'rowsSubject\' instead of \'datasourceSubject\'');
25901
+ _super_1.prototype.updateDatasourceFromRows.call(this, rows);
25902
+ }
25903
+ else {
25904
+ console.debug('[table-datasource] Skipping datasourceSubject update (not used yet).');
25905
+ }
25906
+ };
25848
25907
  EntitiesTableDataSource.prototype.save = function () {
25849
25908
  return __awaiter(this, void 0, void 0, function () {
25850
25909
  var onlyDirtyRows, rows, invalidRows, data, dataToSave_1, error_1;
25851
25910
  var _this = this;
25852
- return __generator(this, function (_a) {
25853
- switch (_a.label) {
25911
+ return __generator(this, function (_b) {
25912
+ switch (_b.label) {
25854
25913
  case 0:
25855
25914
  if (toBoolean(this.serviceOptions.readOnly, false)) {
25856
25915
  console.error('[table-datasource] Enable to save, because serviceOptions.readOnly=true');
@@ -25858,32 +25917,30 @@
25858
25917
  }
25859
25918
  // Saving twice (should never occur)
25860
25919
  if (this._saving) {
25861
- console.warn("[table-datasource] Trying to save " + this._logTypeName + " rows twice. Skip");
25920
+ console.warn("[table-datasource] Trying to save " + this._entityName + " rows twice. Skip");
25862
25921
  return [2 /*return*/, false];
25863
25922
  }
25864
25923
  this._saving = true;
25865
25924
  this.markAsLoading();
25866
25925
  onlyDirtyRows = toBoolean(this.serviceOptions.saveOnlyDirtyRows, false);
25867
- _a.label = 1;
25926
+ _b.label = 1;
25868
25927
  case 1:
25869
- _a.trys.push([1, 4, 5, 6]);
25870
- if (this._debug)
25871
- console.debug("[table-datasource] Saving " + this._logTypeName + " rows... {onlyDirty: " + onlyDirtyRows + "}");
25872
- return [4 /*yield*/, this.getRows()];
25873
- case 2:
25874
- rows = _a.sent();
25928
+ _b.trys.push([1, 3, 4, 5]);
25929
+ if (this.config.debug)
25930
+ console.debug("[table-datasource] Saving " + this._entityName + " rows... {onlyDirty: " + onlyDirtyRows + "}");
25931
+ rows = this.getRows();
25875
25932
  invalidRows = rows.filter(function (row) { return row.editing && !row.confirmEditCreate(); });
25876
25933
  // Cannot finish some rows: error
25877
25934
  if (invalidRows.length) {
25878
25935
  // log errors
25879
- if (this._debug)
25880
- invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._logTypeName + " row #" + row.id); });
25936
+ if (this.config.debug)
25937
+ invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._entityName + " row #" + row.id); });
25881
25938
  // Stop with an error
25882
25939
  throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
25883
25940
  }
25884
25941
  this._editingRowCount = 0;
25885
25942
  data = void 0;
25886
- if (this._useValidator) {
25943
+ if (this.validatorService) {
25887
25944
  dataToSave_1 = [];
25888
25945
  data = rows.map(function (row) {
25889
25946
  var currentData = new _this.dataConstructor();
@@ -25904,46 +25961,42 @@
25904
25961
  }
25905
25962
  // If no data to save: exit
25906
25963
  if (onlyDirtyRows && !dataToSave_1.length) {
25907
- if (this._debug)
25908
- console.debug("[table-datasource] No " + this._logTypeName + " data to save. Skip");
25964
+ if (this.config.debug)
25965
+ console.debug("[table-datasource] No " + this._entityName + " data to save. Skip");
25909
25966
  return [2 /*return*/, false];
25910
25967
  }
25911
- if (this._debug)
25912
- console.debug("[table-datasource] Asking service to save this " + this._logTypeName + " data:", dataToSave_1);
25968
+ if (this.config.debug)
25969
+ console.debug("[table-datasource] Asking service to save this " + this._entityName + " data:", dataToSave_1);
25913
25970
  return [4 /*yield*/, this.dataService.saveAll(dataToSave_1, this.serviceOptions)];
25914
- case 3:
25915
- _a.sent();
25916
- if (this._debug)
25917
- console.debug("[table-datasource] Saving " + this._logTypeName + " data [OK]");
25971
+ case 2:
25972
+ _b.sent();
25973
+ if (this.config.debug)
25974
+ console.debug("[table-datasource] Saving " + this._entityName + " data [OK]");
25918
25975
  // LP 23/03/2021: update datasource is necessary but can be changed to a refetch() on QueryRef (must be created and registered in GraphqlService.watchQuery)
25919
25976
  this.updateDatasource(data, { emitEvent: false });
25920
25977
  return [2 /*return*/, true];
25921
- case 4:
25922
- error_1 = _a.sent();
25923
- if (this._debug)
25978
+ case 3:
25979
+ error_1 = _b.sent();
25980
+ if (this.config.debug)
25924
25981
  console.error('[table-datasource] Error while saving: ' + error_1 && error_1.message || error_1);
25925
25982
  throw error_1;
25926
- case 5:
25983
+ case 4:
25927
25984
  this._saving = false;
25928
25985
  this.markAsLoaded();
25929
25986
  return [7 /*endfinally*/];
25930
- case 6: return [2 /*return*/];
25987
+ case 5: return [2 /*return*/];
25931
25988
  }
25932
25989
  });
25933
25990
  });
25934
25991
  };
25935
25992
  EntitiesTableDataSource.prototype.updateDatasource = function (data, opts) {
25936
- if (this._debug)
25993
+ if (this.config.debug)
25937
25994
  console.debug("[table-datasource] Updating datasource with data:", data);
25938
25995
  _super_1.prototype.updateDatasource.call(this, data, opts);
25939
25996
  if (!opts || opts.emitEvent !== false) {
25940
25997
  this.markAsLoaded();
25941
25998
  }
25942
25999
  };
25943
- // Overwrite default signature
25944
- EntitiesTableDataSource.prototype.createNew = function (insertAt) {
25945
- this.asyncCreateNew(insertAt);
25946
- };
25947
26000
  EntitiesTableDataSource.prototype.connect = function (collectionViewer) {
25948
26001
  // DEBUG console.debug("[entities-datasource] connect");
25949
26002
  return _super_1.prototype.connect.call(this, collectionViewer);
@@ -25965,38 +26018,37 @@
25965
26018
  console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
25966
26019
  row.validator.disable({ onlySelf: true, emitEvent: false });
25967
26020
  }
26021
+ this._editingRowCount--;
25968
26022
  return true;
25969
26023
  };
25970
26024
  EntitiesTableDataSource.prototype.confirmEdit = function (row) {
25971
26025
  if (!_super_1.prototype.confirmEdit.call(this, row))
25972
26026
  return false;
25973
26027
  if (row.editing && row.validator) {
25974
- console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
26028
+ console.warn('[table-datasource] Row still has {editing: true} after confirmEdit()! Force editing to false');
25975
26029
  row.validator.disable({ onlySelf: true, emitEvent: false });
25976
26030
  }
26031
+ this._editingRowCount--;
25977
26032
  return true;
25978
26033
  };
25979
26034
  EntitiesTableDataSource.prototype.startEdit = function (row) {
25980
- if (this._debug)
25981
- console.debug('[table-datasource] Start to edit row', row);
25982
- row.startEdit();
26035
+ if (!_super_1.prototype.startEdit.call(this, row))
26036
+ return false;
26037
+ if (!row.editing && row.validator) {
26038
+ console.warn('[table-datasource] Row still has {editing: false} after startEdit()! Force editing');
26039
+ row.validator.enable({ onlySelf: true, emitEvent: false });
26040
+ }
25983
26041
  this._editingRowCount++;
25984
26042
  };
25985
- EntitiesTableDataSource.prototype.cancelOrDelete = function (row) {
25986
- if (this._debug)
25987
- console.debug('[table-datasource] Cancelling or deleting row', row);
25988
- row.cancelOrDelete();
25989
- this._editingRowCount--;
25990
- };
25991
26043
  EntitiesTableDataSource.prototype.handleError = function (error, message) {
25992
26044
  var errorMsg = error && error.message || error;
25993
- console.error("[table-datasource] Service " + this._logTypeName + " sent error: " + errorMsg, error);
26045
+ console.error("[table-datasource] Service " + this._entityName + " sent error: " + errorMsg, error);
25994
26046
  this.markAsLoaded();
25995
26047
  throw new Error(message || errorMsg);
25996
26048
  };
25997
- EntitiesTableDataSource.prototype.handleErrorPromise = function (error) {
26049
+ EntitiesTableDataSource.prototype.handleServiceError = function (error) {
25998
26050
  var errorMsg = error && error.message || error;
25999
- console.error("[table-datasource] Service " + this._logTypeName + " sent error: " + errorMsg, error);
26051
+ console.error("[table-datasource] Service " + this._entityName + " sent error: " + errorMsg, error);
26000
26052
  this.markAsLoaded();
26001
26053
  throw error;
26002
26054
  };
@@ -26011,9 +26063,11 @@
26011
26063
  console.error("[table-datasource] Row to delete with id=" + id + " not found");
26012
26064
  return;
26013
26065
  }
26066
+ if (row.editing)
26067
+ this._editingRowCount--;
26014
26068
  this.loadingSubject.next(true);
26015
26069
  this.dataService.deleteAll([row.currentData], this.serviceOptions)
26016
- .catch(function (err) { return _this.handleErrorPromise(err); })
26070
+ .catch(function (err) { return _this.handleServiceError(err); })
26017
26071
  .then(function () {
26018
26072
  setTimeout(function () {
26019
26073
  // make sure row has been deleted (because GrapQHl cache remove can failed)
@@ -26025,112 +26079,128 @@
26025
26079
  });
26026
26080
  };
26027
26081
  EntitiesTableDataSource.prototype.deleteAll = function (rows) {
26028
- var _this = this;
26029
- this.markAsLoading();
26030
- var data = rows.map(function (r) { return r.currentData; });
26031
- var rowsById = rows.reduce(function (res, row) {
26032
- res[row.id] = row;
26033
- return res;
26034
- }, {});
26035
- var self = this;
26036
- var selfDelete = _super_1.prototype.delete;
26037
- return this.dataService.deleteAll(data, this.serviceOptions)
26038
- .catch(function (err) { return _this.handleErrorPromise(err); })
26039
- .then(function () {
26040
- // Workaround, to be sure all rows has been deleted
26041
- // Sometimes, the service miss deletion, or GrapQHl cache remove failed
26042
- var rowNotDeleted = Object.getOwnPropertyNames(rowsById).reduce(function (res, id) {
26043
- var row = rowsById[id];
26044
- var present = self.getRow(+id) === row;
26045
- return present ? res.concat(row) : res;
26046
- }, []).sort(function (a, b) { return a.id > b.id ? -1 : 1; });
26047
- // Apply missing deletion
26048
- if (isNotEmptyArray(rowNotDeleted)) {
26049
- console.warn("[table-datasource] Force deletion of " + rowNotDeleted.length + " rows (Is service applying deletion to observable ?)");
26050
- rowNotDeleted.forEach(function (r) { return selfDelete.call(self, r.id); });
26051
- }
26052
- _this.loadingSubject.next(false);
26082
+ var _super = Object.create(null, {
26083
+ delete: { get: function () { return _super_1.prototype.delete; } }
26084
+ });
26085
+ return __awaiter(this, void 0, void 0, function () {
26086
+ var data, rowsById, rowNotDeleted, err_1;
26087
+ var _this = this;
26088
+ return __generator(this, function (_b) {
26089
+ switch (_b.label) {
26090
+ case 0:
26091
+ this.markAsLoading();
26092
+ data = this.getDataFromRows(rows);
26093
+ rowsById = Beans.collectById(rows);
26094
+ _b.label = 1;
26095
+ case 1:
26096
+ _b.trys.push([1, 3, 4, 5]);
26097
+ // Call service deletion
26098
+ return [4 /*yield*/, this.dataService.deleteAll(data, this.serviceOptions)];
26099
+ case 2:
26100
+ // Call service deletion
26101
+ _b.sent();
26102
+ rowNotDeleted = this.getRows().map(function (row) { return rows.find(function (r) { return r === row; }); });
26103
+ // Apply missing deletion
26104
+ if (isNotEmptyArray(rowNotDeleted)) {
26105
+ console.warn("[table-datasource] Force deletion of " + rowNotDeleted.length + " rows (Is service update the cache ?)");
26106
+ rowNotDeleted
26107
+ // Start from the end
26108
+ .sort(function (a, b) { return a.id > b.id ? -1 : 1; })
26109
+ .forEach(function (r) { return _super.delete.call(_this, r.id); });
26110
+ }
26111
+ return [3 /*break*/, 5];
26112
+ case 3:
26113
+ err_1 = _b.sent();
26114
+ // Handle sservice error
26115
+ this.handleServiceError(err_1);
26116
+ return [3 /*break*/, 5];
26117
+ case 4:
26118
+ this.loadingSubject.next(false);
26119
+ return [7 /*endfinally*/];
26120
+ case 5: return [2 /*return*/];
26121
+ }
26122
+ });
26053
26123
  });
26054
26124
  };
26055
26125
  EntitiesTableDataSource.prototype.getRows = function () {
26056
- return firstNotNilPromise(this.connect(null));
26126
+ return this.rowsSubject.getValue();
26057
26127
  };
26058
- EntitiesTableDataSource.prototype.asyncCreateNew = function (insertAt) {
26128
+ EntitiesTableDataSource.prototype.createNew = function (insertAt) {
26059
26129
  var _super = Object.create(null, {
26060
26130
  createNew: { get: function () { return _super_1.prototype.createNew; } }
26061
26131
  });
26132
+ var _a;
26062
26133
  return __awaiter(this, void 0, void 0, function () {
26063
- var row, res, err_1;
26064
- return __generator(this, function (_a) {
26065
- switch (_a.label) {
26134
+ var row, err_2;
26135
+ return __generator(this, function (_b) {
26136
+ switch (_b.label) {
26066
26137
  case 0:
26067
26138
  if (this._creating)
26068
26139
  return [2 /*return*/]; // Avoid multiple call (should never occur)
26069
26140
  this._creating = true;
26070
- _super.createNew.call(this, insertAt);
26071
- row = this.getRow(-1);
26072
- if (!(row && this._options && this._options.onRowCreated)) return [3 /*break*/, 4];
26073
- res = this._options.onRowCreated(row);
26074
- if (!(res instanceof Promise)) return [3 /*break*/, 4];
26075
- _a.label = 1;
26141
+ _b.label = 1;
26076
26142
  case 1:
26077
- _a.trys.push([1, 3, , 4]);
26078
- return [4 /*yield*/, res];
26143
+ _b.trys.push([1, , 7, 8]);
26144
+ return [4 /*yield*/, _super.createNew.call(this, insertAt)];
26079
26145
  case 2:
26080
- _a.sent();
26081
- return [3 /*break*/, 4];
26146
+ row = _b.sent();
26147
+ if (!row)
26148
+ return [2 /*return*/];
26149
+ if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.onRowCreated)) return [3 /*break*/, 6];
26150
+ _b.label = 3;
26082
26151
  case 3:
26083
- err_1 = _a.sent();
26084
- console.error(err_1 && err_1.message || err_1, err_1);
26085
- return [3 /*break*/, 4];
26152
+ _b.trys.push([3, 5, , 6]);
26153
+ return [4 /*yield*/, this.config.onRowCreated(row)];
26086
26154
  case 4:
26155
+ _b.sent();
26156
+ return [3 /*break*/, 6];
26157
+ case 5:
26158
+ err_2 = _b.sent();
26159
+ // Log, then continue
26160
+ console.error(err_2 && err_2.message || err_2, err_2);
26161
+ return [3 /*break*/, 6];
26162
+ case 6:
26087
26163
  this._editingRowCount++;
26164
+ return [2 /*return*/, row];
26165
+ case 7:
26088
26166
  this._creating = false;
26089
- return [2 /*return*/];
26167
+ return [7 /*endfinally*/];
26168
+ case 8: return [2 /*return*/];
26090
26169
  }
26091
26170
  });
26092
26171
  });
26093
26172
  };
26094
26173
  EntitiesTableDataSource.prototype.getData = function () {
26095
- return __awaiter(this, void 0, void 0, function () {
26096
- var rows;
26097
- return __generator(this, function (_a) {
26098
- switch (_a.label) {
26099
- case 0: return [4 /*yield*/, this.getRows()];
26100
- case 1:
26101
- rows = _a.sent();
26102
- return [2 /*return*/, this.getDataFromRows(rows)];
26103
- }
26104
- });
26105
- });
26174
+ var rows = this.getRows();
26175
+ return this.getDataFromRows(rows);
26106
26176
  };
26107
26177
  EntitiesTableDataSource.prototype.fetchMore = function (opts) {
26108
26178
  var _super = Object.create(null, {
26109
26179
  updateDatasource: { get: function () { return _super_1.prototype.updateDatasource; } }
26110
26180
  });
26111
26181
  return __awaiter(this, void 0, void 0, function () {
26112
- var fetchMoreFn, res, existingData;
26113
- return __generator(this, function (_a) {
26114
- switch (_a.label) {
26182
+ var fetchMoreFn, res;
26183
+ var _b;
26184
+ return __generator(this, function (_c) {
26185
+ switch (_c.label) {
26115
26186
  case 0:
26116
26187
  if (!this._fetchMoreFn)
26117
26188
  return [2 /*return*/, false]; // Avoid multiple call
26118
26189
  if (this._editingRowCount > 0) {
26119
- console.warn('Cannot fetch more because still editing row');
26190
+ console.warn("Cannot fetch more " + this._entityName + " because " + this._editingRowCount + " row(s) still editing");
26120
26191
  return [2 /*return*/];
26121
26192
  }
26193
+ console.debug("Will fetching more row(s) still...");
26122
26194
  fetchMoreFn = this._fetchMoreFn;
26123
26195
  this._fetchMoreFn = null;
26124
26196
  return [4 /*yield*/, fetchMoreFn()];
26125
26197
  case 1:
26126
- res = _a.sent();
26198
+ res = _c.sent();
26127
26199
  // Skip if empty (no more data)
26128
- if (isNotEmptyArray(res === null || res === void 0 ? void 0 : res.data))
26200
+ if (isEmptyArray(res === null || res === void 0 ? void 0 : res.data))
26129
26201
  return [2 /*return*/, false];
26130
- return [4 /*yield*/, this.getData()];
26131
- case 2:
26132
- existingData = _a.sent();
26133
- _super.updateDatasource.call(this, existingData.concat.apply(existingData, __spread(res.data)), opts);
26202
+ // Update the data source
26203
+ _super.updateDatasource.call(this, (_b = (this.currentData || [])).concat.apply(_b, __spread(res.data)), opts);
26134
26204
  // Remember fetchMore
26135
26205
  this._fetchMoreFn = res.fetchMore;
26136
26206
  return [2 /*return*/, true];
@@ -26157,8 +26227,8 @@
26157
26227
  EntitiesTableDataSource.ctorParameters = function () { return [
26158
26228
  { type: Function },
26159
26229
  { type: undefined },
26160
- { type: ngxMaterialTable.ValidatorService },
26161
- { type: AppTableDataSourceOptions }
26230
+ { type: undefined },
26231
+ { type: undefined }
26162
26232
  ]; };
26163
26233
 
26164
26234
  var SETTINGS_DISPLAY_COLUMNS = 'displayColumns';
@@ -27707,7 +27777,7 @@
27707
27777
  case 0:
27708
27778
  this.focusFirstColumn = true;
27709
27779
  this.focusColumn = (opts === null || opts === void 0 ? void 0 : opts.focusColumn) || this.firstUserColumn;
27710
- return [4 /*yield*/, this._dataSource.asyncCreateNew(insertAt)];
27780
+ return [4 /*yield*/, this._dataSource.createNew(insertAt)];
27711
27781
  case 1:
27712
27782
  _e.sent();
27713
27783
  this.editedRow = this._dataSource.getRow(-1);
@@ -27907,7 +27977,7 @@
27907
27977
  return __generator(this, function (_e) {
27908
27978
  switch (_e.label) {
27909
27979
  case 0:
27910
- markRowAsPristine = ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.options.keepOriginalDataAfterConfirm) === true;
27980
+ markRowAsPristine = ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.config.restoreOriginalDataOnCancel) === true;
27911
27981
  if (!markRowAsPristine) return [3 /*break*/, 2];
27912
27982
  (_b = row.validator) === null || _b === void 0 ? void 0 : _b.markAsPristine();
27913
27983
  if (!(!opts || opts.onlySelf !== true)) return [3 /*break*/, 2];
@@ -30282,7 +30352,7 @@
30282
30352
  { type: Function },
30283
30353
  { type: InMemoryEntitiesService },
30284
30354
  { type: ngxMaterialTable.ValidatorService },
30285
- { type: AppTableDataSourceOptions },
30355
+ { type: undefined },
30286
30356
  { type: undefined }
30287
30357
  ]; };
30288
30358
  AppInMemoryTable.propDecorators = {
@@ -30299,7 +30369,7 @@
30299
30369
  SUBSCRIBE_JOB_PROGRESSION_ERROR: 50010
30300
30370
  };
30301
30371
 
30302
- var moment$6 = momentImported__namespace;
30372
+ var moment$4 = momentImported__namespace;
30303
30373
  var USER_EVENT_SERVICE = new i0.InjectionToken('UserEventService');
30304
30374
  var AbstractUserEventService = /** @class */ (function (_super) {
30305
30375
  __extends(AbstractUserEventService, _super);
@@ -30821,7 +30891,7 @@
30821
30891
  };
30822
30892
  AbstractUserEventService.prototype.resetCount = function () {
30823
30893
  this._countSubject.next(undefined);
30824
- this.resetCountDate = moment$6();
30894
+ this.resetCountDate = moment$4();
30825
30895
  // restart listening count changes
30826
30896
  this.startListenCountChanges();
30827
30897
  };
@@ -30925,7 +30995,7 @@
30925
30995
  if (!userEvents.length)
30926
30996
  return [2 /*return*/];
30927
30997
  // set read date
30928
- userEvents.forEach(function (userEvent) { return userEvent.readDate = moment$6(); });
30998
+ userEvents.forEach(function (userEvent) { return userEvent.readDate = moment$4(); });
30929
30999
  localEntities = userEvents.filter(function (userEvent) { return !userEvent.id || userEvent.id < 0; });
30930
31000
  remoteEntities = userEvents.filter(function (userEvent) { return userEvent.id > 0; });
30931
31001
  // save local entities
@@ -31971,7 +32041,7 @@
31971
32041
  ];
31972
32042
 
31973
32043
  var Mutations = {
31974
- send: core.gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"], ["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"])))
32044
+ send: core.gql(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject(["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"], ["mutation SendMessage($data: MessageVOInput){\n done: sendMessage(message: $data)\n }"])))
31975
32045
  };
31976
32046
  var MessageService = /** @class */ (function (_super) {
31977
32047
  __extends(MessageService, _super);
@@ -32045,7 +32115,7 @@
32045
32115
  };
32046
32116
  return MessageService;
32047
32117
  }(BaseGraphqlService));
32048
- MessageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MessageService_Factory() { return new MessageService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(i1$2.TranslateService), i0.ɵɵinject(i1$5.ToastController), i0.ɵɵinject(ENVIRONMENT, 8)); }, token: MessageService, providedIn: "root" });
32118
+ MessageService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MessageService_Factory() { return new MessageService(i0__namespace.ɵɵinject(GraphqlService), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService), i0__namespace.ɵɵinject(i1__namespace$4.ToastController), i0__namespace.ɵɵinject(ENVIRONMENT, 8)); }, token: MessageService, providedIn: "root" });
32049
32119
  MessageService.decorators = [
32050
32120
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
32051
32121
  ];
@@ -32055,7 +32125,7 @@
32055
32125
  { type: i1$5.ToastController },
32056
32126
  { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
32057
32127
  ]; };
32058
- var templateObject_1$3;
32128
+ var templateObject_1$1;
32059
32129
 
32060
32130
  var PersonFilter_1;
32061
32131
  // @dynamic
@@ -32114,16 +32184,16 @@
32114
32184
  ], exports.PersonFilter);
32115
32185
 
32116
32186
  var PersonFragments = {
32117
- person: core.gql(templateObject_1$4 || (templateObject_1$4 = __makeTemplateObject(["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"], ["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"])))
32187
+ person: core.gql(templateObject_1 || (templateObject_1 = __makeTemplateObject(["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"], ["fragment PersonFragment on PersonVO {\n id\n firstName\n lastName\n email\n pubkey\n avatar\n statusId\n updateDate\n creationDate\n profiles\n username\n usernameExtranet\n department {\n id\n label\n name\n logo\n __typename\n }\n __typename\n }"])))
32118
32188
  };
32119
32189
  // Load persons query
32120
32190
  var PersonQueries = {
32121
- loadAll: core.gql(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject(["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""], ["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
32122
- loadAllWithTotal: core.gql(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject(["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""], ["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""])), PersonFragments.person)
32191
+ loadAll: core.gql(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""], ["\n query Persons($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
32192
+ loadAllWithTotal: core.gql(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""], ["\n query PersonsWithTotal($offset: Int, $size: Int, $sortBy: String, $sortDirection: String, $filter: PersonFilterVOInput){\n data: persons(filter: $filter, offset: $offset, size: $size, sortBy: $sortBy, sortDirection: $sortDirection){\n ...PersonFragment\n }\n total: personsCount(filter: $filter)\n }\n ", ""])), PersonFragments.person)
32123
32193
  };
32124
32194
  var PersonMutations = {
32125
- saveAll: core.gql(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""], ["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
32126
- deleteAll: core.gql(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject(["\n mutation deletePersons($ids:[Int]){\n deletePersons(ids: $ids)\n }"], ["\n mutation deletePersons($ids:[Int]){\n deletePersons(ids: $ids)\n }"])))
32195
+ saveAll: core.gql(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""], ["\n mutation savePersons($data:[PersonVOInput]){\n data: savePersons(persons: $data){\n ...PersonFragment\n }\n }\n ", ""])), PersonFragments.person),
32196
+ deleteAll: core.gql(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n mutation deletePersons($ids:[Int]){\n deletePersons(ids: $ids)\n }"], ["\n mutation deletePersons($ids:[Int]){\n deletePersons(ids: $ids)\n }"])))
32127
32197
  };
32128
32198
  var PersonService = /** @class */ (function (_super_1) {
32129
32199
  __extends(PersonService, _super_1);
@@ -32244,7 +32314,7 @@
32244
32314
  };
32245
32315
  return PersonService;
32246
32316
  }(BaseEntityService));
32247
- PersonService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(PlatformService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
32317
+ PersonService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PersonService_Factory() { return new PersonService(i0__namespace.ɵɵinject(GraphqlService), i0__namespace.ɵɵinject(PlatformService), i0__namespace.ɵɵinject(NetworkService), i0__namespace.ɵɵinject(EntitiesStorage)); }, token: PersonService, providedIn: "root" });
32248
32318
  PersonService.decorators = [
32249
32319
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
32250
32320
  ];
@@ -32254,7 +32324,7 @@
32254
32324
  { type: NetworkService },
32255
32325
  { type: EntitiesStorage }
32256
32326
  ]; };
32257
- var templateObject_1$4, templateObject_2$2, templateObject_3$2, templateObject_4$2, templateObject_5$2;
32327
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
32258
32328
 
32259
32329
  var PersonValidatorService = /** @class */ (function () {
32260
32330
  function PersonValidatorService(formBuilder, accountValidatorService) {
@@ -32277,7 +32347,7 @@
32277
32347
  };
32278
32348
  return PersonValidatorService;
32279
32349
  }());
32280
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
32350
+ PersonValidatorService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0__namespace.ɵɵinject(i1__namespace$6.FormBuilder), i0__namespace.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
32281
32351
  PersonValidatorService.decorators = [
32282
32352
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
32283
32353
  ];
@@ -32540,17 +32610,17 @@
32540
32610
  ];
32541
32611
  AdminModule.ctorParameters = function () { return []; };
32542
32612
 
32543
- var ɵ0$c = {
32613
+ var ɵ0 = {
32544
32614
  profile: 'ADMIN'
32545
32615
  };
32546
- var routes = [
32616
+ var routes$6 = [
32547
32617
  {
32548
32618
  path: 'users',
32549
32619
  pathMatch: 'full',
32550
32620
  component: UsersPage,
32551
32621
  canActivate: [AuthGuardService],
32552
32622
  canDeactivate: [ComponentDirtyGuard],
32553
- data: ɵ0$c
32623
+ data: ɵ0
32554
32624
  }
32555
32625
  ];
32556
32626
  var AdminRoutingModule = /** @class */ (function () {
@@ -32563,30 +32633,30 @@
32563
32633
  imports: [
32564
32634
  SharedRoutingModule,
32565
32635
  AdminModule,
32566
- i3.RouterModule.forChild(routes)
32636
+ i3.RouterModule.forChild(routes$6)
32567
32637
  ],
32568
32638
  exports: [i3.RouterModule]
32569
32639
  },] }
32570
32640
  ];
32571
32641
 
32572
- var EntityTestClass = /** @class */ (function () {
32642
+ var EntityTestClass$1 = /** @class */ (function () {
32573
32643
  function EntityTestClass() {
32574
32644
  }
32575
32645
  return EntityTestClass;
32576
32646
  }());
32577
- var FAKE_ENTITIES = [
32647
+ var FAKE_ENTITIES$1 = [
32578
32648
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
32579
32649
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
32580
32650
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
32581
32651
  ];
32582
- function deepCopy(values, size) {
32652
+ function deepCopy$1(values, size) {
32583
32653
  if (isNil(size)) {
32584
- return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
32654
+ return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
32585
32655
  }
32586
32656
  var result = [];
32587
32657
  var i = 1;
32588
32658
  while (result.length < size) {
32589
- result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
32659
+ result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
32590
32660
  var name = entity.name + ' #' + i;
32591
32661
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
32592
32662
  }));
@@ -32596,7 +32666,7 @@
32596
32666
  var AutocompleteTestPage = /** @class */ (function () {
32597
32667
  function AutocompleteTestPage(formBuilder) {
32598
32668
  this.formBuilder = formBuilder;
32599
- this._items = deepCopy(FAKE_ENTITIES, 100);
32669
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
32600
32670
  this._$items = new rxjs.BehaviorSubject(undefined);
32601
32671
  this.autocompleteFields = new MatAutocompleteConfigHolder();
32602
32672
  this.memoryHide = false;
@@ -32642,7 +32712,7 @@
32642
32712
  });
32643
32713
  // From items
32644
32714
  this.autocompleteFields.add('entity-items-large', {
32645
- items: FAKE_ENTITIES.slice(),
32715
+ items: FAKE_ENTITIES$1.slice(),
32646
32716
  attributes: ['label', 'name', 'description', 'comments'],
32647
32717
  displayWith: this.entityToString
32648
32718
  });
@@ -32678,14 +32748,14 @@
32678
32748
  var _this = this;
32679
32749
  return __generator(this, function (_a) {
32680
32750
  data = {
32681
- entity: deepCopy(FAKE_ENTITIES)[0],
32682
- farEntity: deepCopy(FAKE_ENTITIES)[2],
32751
+ entity: deepCopy$1(FAKE_ENTITIES$1)[0],
32752
+ farEntity: deepCopy$1(FAKE_ENTITIES$1)[2],
32683
32753
  // This item is NOT in the items list => i should be displayed anyway
32684
32754
  missingEntity: {
32685
32755
  id: -1, label: '??', name: 'Missing item'
32686
32756
  },
32687
- disableEntity: deepCopy(FAKE_ENTITIES)[2],
32688
- entities: deepCopy(FAKE_ENTITIES)
32757
+ disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2],
32758
+ entities: deepCopy$1(FAKE_ENTITIES$1)
32689
32759
  };
32690
32760
  this.form.setValue(data);
32691
32761
  // Load observables
@@ -32857,13 +32927,13 @@
32857
32927
  { type: i1.FormBuilder }
32858
32928
  ]; };
32859
32929
 
32860
- var moment$7 = momentImported__namespace;
32930
+ var moment$3 = momentImported__namespace;
32861
32931
  var SwipeTestPage = /** @class */ (function () {
32862
32932
  function SwipeTestPage(formBuilder, dateFormatPipe) {
32863
32933
  this.formBuilder = formBuilder;
32864
32934
  this.dateFormatPipe = dateFormatPipe;
32865
32935
  this.$dates = new rxjs.BehaviorSubject(undefined);
32866
- this._today = moment$7().startOf('day');
32936
+ this._today = moment$3().startOf('day');
32867
32937
  this.form = formBuilder.group({
32868
32938
  empty: [null, i1.Validators.required],
32869
32939
  date: [null, i1.Validators.compose([i1.Validators.required, SharedValidators.validDate])],
@@ -32877,7 +32947,7 @@
32877
32947
  var _this = this;
32878
32948
  var dates = [];
32879
32949
  for (var d = 0; d < 7; d++) {
32880
- dates[d] = moment$7(this._today).add(d - 3, 'day');
32950
+ dates[d] = moment$3(this._today).add(d - 3, 'day');
32881
32951
  }
32882
32952
  this.$dates.next(dates);
32883
32953
  this.loadData();
@@ -32924,7 +32994,7 @@
32924
32994
  { type: DateFormatPipe }
32925
32995
  ]; };
32926
32996
 
32927
- var moment$8 = momentImported__namespace;
32997
+ var moment$2 = momentImported__namespace;
32928
32998
  var DateTimeTestPage = /** @class */ (function () {
32929
32999
  function DateTimeTestPage(platform, formBuilder, cd) {
32930
33000
  this.platform = platform;
@@ -32962,7 +33032,7 @@
32962
33032
  var now, data;
32963
33033
  var _this = this;
32964
33034
  return __generator(this, function (_a) {
32965
- now = moment$8();
33035
+ now = moment$2();
32966
33036
  data = {
32967
33037
  empty: null,
32968
33038
  emptyRequired: null,
@@ -33032,12 +33102,12 @@
33032
33102
  { type: i0.ChangeDetectorRef }
33033
33103
  ]; };
33034
33104
 
33035
- var EntityTestClass$1 = /** @class */ (function () {
33105
+ var EntityTestClass = /** @class */ (function () {
33036
33106
  function EntityTestClass() {
33037
33107
  }
33038
33108
  return EntityTestClass;
33039
33109
  }());
33040
- var FAKE_ENTITIES$1 = [
33110
+ var FAKE_ENTITIES = [
33041
33111
  { id: 1, label: 'AAA', name: 'Item A' },
33042
33112
  { id: 2, label: 'BBB', name: 'Item B' },
33043
33113
  { id: 3, label: 'CCC', name: 'Item C' },
@@ -33046,14 +33116,14 @@
33046
33116
  { id: 6, label: 'FFF', name: 'Item F' },
33047
33117
  { id: 7, label: 'GGG', name: 'Item G' }
33048
33118
  ];
33049
- function deepCopy$1(values, size) {
33119
+ function deepCopy(values, size) {
33050
33120
  if (isNil(size)) {
33051
- return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
33121
+ return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
33052
33122
  }
33053
33123
  var result = [];
33054
33124
  var i = 1;
33055
33125
  while (result.length < size) {
33056
- result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
33126
+ result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
33057
33127
  var name = entity.name + ' #' + i;
33058
33128
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
33059
33129
  }));
@@ -33063,7 +33133,7 @@
33063
33133
  var ChipsTestPage = /** @class */ (function () {
33064
33134
  function ChipsTestPage(formBuilder) {
33065
33135
  this.formBuilder = formBuilder;
33066
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
33136
+ this._items = deepCopy(FAKE_ENTITIES, 100);
33067
33137
  this._$items = new rxjs.BehaviorSubject(undefined);
33068
33138
  this.autocompleteFields = new MatAutocompleteConfigHolder();
33069
33139
  this.appearance = 'legacy';
@@ -33107,7 +33177,7 @@
33107
33177
  var items, data;
33108
33178
  var _this = this;
33109
33179
  return __generator(this, function (_a) {
33110
- items = deepCopy$1(FAKE_ENTITIES$1);
33180
+ items = deepCopy(FAKE_ENTITIES);
33111
33181
  data = {
33112
33182
  entity: items.slice(0, 1),
33113
33183
  entityInitial: items.slice(1, 2),
@@ -33244,7 +33314,7 @@
33244
33314
  { type: i1.FormBuilder }
33245
33315
  ]; };
33246
33316
 
33247
- var moment$9 = momentImported__namespace;
33317
+ var moment$1 = momentImported__namespace;
33248
33318
  var DateTestPage = /** @class */ (function () {
33249
33319
  function DateTestPage(formBuilder, cd) {
33250
33320
  this.formBuilder = formBuilder;
@@ -33281,7 +33351,7 @@
33281
33351
  var now, nowAtMahe, data;
33282
33352
  var _this = this;
33283
33353
  return __generator(this, function (_a) {
33284
- now = moment$9();
33354
+ now = moment$1();
33285
33355
  nowAtMahe = now.clone().tz(this.timezone).startOf('day');
33286
33356
  data = {
33287
33357
  empty: null,
@@ -33363,7 +33433,7 @@
33363
33433
  { label: 'Shared directives', divider: true },
33364
33434
  { label: 'Badge icon directive', page: '/testing/shared/badge-icon' }
33365
33435
  ];
33366
- var routes$1 = [
33436
+ var routes$5 = [
33367
33437
  {
33368
33438
  path: '',
33369
33439
  pathMatch: 'full',
@@ -33423,7 +33493,7 @@
33423
33493
  i1.ReactiveFormsModule,
33424
33494
  SharedMaterialModule,
33425
33495
  i1$2.TranslateModule.forChild(),
33426
- i3.RouterModule.forChild(routes$1)
33496
+ i3.RouterModule.forChild(routes$5)
33427
33497
  ],
33428
33498
  declarations: [
33429
33499
  DateTimeTestPage,
@@ -33485,7 +33555,7 @@
33485
33555
  { type: i1$2.TranslateService }
33486
33556
  ]; };
33487
33557
 
33488
- var routes$2 = [
33558
+ var routes$4 = [
33489
33559
  {
33490
33560
  path: 'toast',
33491
33561
  pathMatch: 'full',
@@ -33503,7 +33573,7 @@
33503
33573
  i1$4.CommonModule,
33504
33574
  i1$5.IonicModule,
33505
33575
  i1$2.TranslateModule.forChild(),
33506
- i3.RouterModule.forChild(routes$2)
33576
+ i3.RouterModule.forChild(routes$4)
33507
33577
  ],
33508
33578
  declarations: [
33509
33579
  ToastTestingPage
@@ -33829,26 +33899,33 @@
33829
33899
  console.debug('[test-table] Updating data...');
33830
33900
  this.markAsLoading();
33831
33901
  if (isNil(this.data)) {
33832
- this.data = this.generateData(0, this.enableInfiniteScroll ? this.defaultPageSize : TableTestPage.maxRowCount);
33902
+ this.data = this.generateData(0, TableTestPage.maxRowCount);
33833
33903
  }
33834
33904
  this.dataService.setValue(this.data, { emitEvent: false });
33835
33905
  this.onRefresh.emit();
33836
- if (this.infiniteScroll) {
33837
- this.infiniteScroll.disabled = !this.infiniteScroll || this.data.length >= TableTestPage.maxRowCount;
33838
- }
33839
33906
  };
33840
- TableTestPage.prototype.loadMore = function (event) {
33841
- var _this = this;
33842
- console.debug('[table-test] Loading more...', event);
33843
- setTimeout(function () {
33844
- _this.data = __spread(_this.data, _this.generateData(_this.data.length, 20));
33845
- _this.dataService.setValue(_this.data, { emitEvent: false });
33846
- _this.defaultPageSize = _this.data.length;
33847
- _this.infiniteScroll.disabled = _this.data.length >= 100;
33848
- _this.doRefresh(event);
33849
- }, 500);
33907
+ TableTestPage.prototype.fetchMore = function (event) {
33908
+ return __awaiter(this, void 0, void 0, function () {
33909
+ var fetched;
33910
+ return __generator(this, function (_a) {
33911
+ switch (_a.label) {
33912
+ case 0:
33913
+ console.debug('[table-test] Loading more...', event);
33914
+ return [4 /*yield*/, this._dataSource.fetchMore()];
33915
+ case 1:
33916
+ fetched = _a.sent();
33917
+ if (!(fetched && (event === null || event === void 0 ? void 0 : event.target) && event.target.complete)) return [3 /*break*/, 3];
33918
+ return [4 /*yield*/, this.waitIdle()];
33919
+ case 2:
33920
+ _a.sent();
33921
+ event.target.complete();
33922
+ _a.label = 3;
33923
+ case 3: return [2 /*return*/];
33924
+ }
33925
+ });
33926
+ });
33850
33927
  };
33851
- TableTestPage.prototype.save = function () {
33928
+ TableTestPage.prototype.save = function (opts) {
33852
33929
  var _super = Object.create(null, {
33853
33930
  save: { get: function () { return _super_1.prototype.save; } }
33854
33931
  });
@@ -33856,7 +33933,7 @@
33856
33933
  var saved;
33857
33934
  return __generator(this, function (_a) {
33858
33935
  switch (_a.label) {
33859
- case 0: return [4 /*yield*/, _super.save.call(this)];
33936
+ case 0: return [4 /*yield*/, _super.save.call(this, opts)];
33860
33937
  case 1:
33861
33938
  saved = _a.sent();
33862
33939
  if (saved) {
@@ -33928,7 +34005,7 @@
33928
34005
  TableTestPage.decorators = [
33929
34006
  { type: i0.Component, args: [{
33930
34007
  selector: 'app-table-testing',
33931
- template: "<app-toolbar color=\"primary\" [canGoBack]=\"true\" [backHref]=\"'/testing'\">\n <ion-buttons slot=\"end\">\n\n\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n <!-- Add -->\n <button mat-icon-button\n *ngIf=\"canEdit && !mobile\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"addRow()\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- reset filter -->\n <button mat-icon-button (click)=\"resetFilter()\"\n *ngIf=\"filterCriteriaCount\">\n <mat-icon color=\"accent\">filter_list_alt</mat-icon>\n <mat-icon class=\"icon-secondary\" style=\"left: 16px; top: 5px; font-weight: bold;\">close</mat-icon>\n </button>\n\n <!-- show filter -->\n <button mat-icon-button (click)=\"filterExpansionPanel.toggle()\">\n <mat-icon *ngIf=\"filterCriteriaCount; else emptyFilter\"\n [matBadge]=\"filterCriteriaCount\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\">filter_list_alt\n </mat-icon>\n <ng-template #emptyFilter>\n <mat-icon>filter_list_alt</mat-icon>\n </ng-template>\n </button>\n\n <!-- start/stop timer to auto-load data -->\n <ion-button *ngIf=\"!timer\" (click)=\"startTimer()\">Start reload</ion-button>\n <ion-button *ngIf=\"timer\" (click)=\"stopTimer()\" color=\"accent\">Stop reload</ion-button>\n </ng-container>\n\n <!-- if row selection -->\n <ng-template #hasSelection>\n\n <!-- delete -->\n <button mat-icon-button\n *ngIf=\"canEdit\" [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- duplicate -->\n <button mat-icon-button\n *ngIf=\"canEdit && selection.selected | isArrayLength: {equals: 1}\"\n [title]=\"'COMMON.BTN_DUPLICATE'|translate\"\n (click)=\"duplicateRow($event, selection.selected[0])\">\n <mat-icon>file_copy</mat-icon>\n </button>\n </ng-template>\n </ion-buttons>\n</app-toolbar>\n<ion-content class=\"ion-no-padding\">\n\n <ion-refresher slot=\"fixed\" *ngIf=\"mobile\" (ionRefresh)=\"doRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <!-- error -->\n <ion-item *ngIf=\"mobile && error\" lines=\"none\" @slideUpDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- search -->\n <mat-expansion-panel #filterExpansionPanel class=\"filter-panel filter-panel-floating\">\n <form class=\"form-container ion-padding-top\" [formGroup]=\"filterForm\" (ngSubmit)=\"applyFilterAndClosePanel($event)\">\n\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- search text -->\n <mat-form-field>\n <ion-icon matPrefix name=\"search\"></ion-icon>\n <input matInput\n formControlName=\"searchText\"\n autocomplete=\"off\"\n [placeholder]=\"'TABLE.TESTING.SEARCH_TEXT'|translate\">\n <button mat-icon-button matSuffix tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearControlValue($event, filterForm.controls.searchText)\"\n [hidden]=\"filterForm.controls.searchText.disabled || !filterForm.controls.searchText.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <mat-action-row>\n <!-- Counter -->\n <ion-label [hidden]=\"(loadingSubject|async) || filterForm.dirty\"\n [color]=\"empty && 'danger'\"\n class=\"ion-padding\">\n {{ (totalRowCount ? 'COMMON.RESULT_COUNT' : 'COMMON.NO_RESULT') | translate: {\n count: (totalRowCount |\n numberFormat)\n } }}\n </ion-label>\n\n <div class=\"toolbar-spacer\"></div>\n\n <!-- Close panel -->\n <ion-button mat-button fill=\"clear\" color=\"dark\"\n (click)=\"filterExpansionPanel.close()\"\n [disabled]=\"loadingSubject|async\">\n <ion-text translate>COMMON.BTN_CLOSE</ion-text>\n </ion-button>\n\n <!-- Search button -->\n <ion-button mat-button\n [color]=\"filterForm.dirty ? 'tertiary' : 'dark'\"\n [fill]=\"filterForm.dirty ? 'solid' : 'clear'\"\n (click)=\"applyFilterAndClosePanel($event)\">\n <ion-text translate>COMMON.BTN_APPLY</ion-text>\n </ion-button>\n </mat-action-row>\n </mat-expansion-panel>\n\n <!-- table -->\n <div [class.table-container]=\"!enableInfiniteScroll\">\n <table #table mat-table matSort matSortDisableClear\n [dataSource]=\"dataSource\"\n [matSortActive]=\"defaultSortBy\"\n [matSortDirection]=\"defaultSortDirection\"\n [trackBy]=\"trackByFn\">\n\n <!-- group header cells -->\n\n <ng-container matColumnDef=\"top-start\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\" [attr.colspan]=\"2\">\n <!-- start spacer -->\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"group-1\">\n <th mat-header-cell *matHeaderCellDef [attr.colspan]=\"3\" style=\"background-color: whitesmoke; margin-bottom: -1px;\">\n <ion-label translate>{{i18nColumnPrefix + 'GROUP_1'}}</ion-label>\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"group-2\">\n <th mat-header-cell *matHeaderCellDef [attr.colspan]=\"3\">\n <ion-label translate>{{i18nColumnPrefix + 'GROUP_2'}}</ion-label>\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"top-end\" >\n <th mat-header-cell *matHeaderCellDef>\n <!-- end spacer -->\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"select\" [sticky]=\"useSticky\" [class.mat-column-sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Id column -->\n <ng-container matColumnDef=\"id\" [sticky]=\"useSticky\" [class.mat-column-sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label>#</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">{{ row.currentData?.id }}</td>\n </ng-container>\n\n <!-- Label column -->\n <ng-container matColumnDef=\"label\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.LABEL</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-form-field floatLabel=\"never\">\n <input matInput\n [formControl]=\"row.validator.controls['label']\"\n [placeholder]=\"'TABLE.TESTING.LABEL'|translate\"\n [appAutofocus]=\"row.editing && focusColumn === 'label'\"\n [readonly]=\"!row.editing\">\n <mat-error *ngIf=\"row.validator.controls['label'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Name column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.NAME</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.mat-form-field-disabled]=\"!row.editing\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator?.controls.name\" [placeholder]=\"'TABLE.TESTING.NAME'|translate\"\n [readonly]=\"!row.editing\">\n <mat-error *ngIf=\"row.validator?.controls.name.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Level column -->\n <ng-container matColumnDef=\"levelId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.LEVEL_ID</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.mat-form-field-disabled]=\"!row.editing\">\n <mat-autocomplete-field floatLabel=\"never\"\n [formControl]=\"row.validator.controls.levelId\"\n [config]=\"autocompleteFields.level\"\n [readonly]=\"!row.editing\"\n required>\n </mat-autocomplete-field>\n </td>\n </ng-container>\n\n <!-- Status column -->\n <ng-container matColumnDef=\"statusId\">\n <th mat-header-cell *matHeaderCellDef>\n <span translate>USER.STATUS</span>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.mat-form-field-disabled]=\"!row.editing\">\n <mat-form-field floatLabel=\"never\">\n <ion-icon matPrefix *ngIf=\"row.validator.controls['statusId'].value &gt;=0\" [name]=\"statusById[row.validator.controls['statusId'].value]?.icon\"></ion-icon>\n\n <mat-select [formControl]=\"row.validator.controls['statusId']\" [placeholder]=\"i18nColumnPrefix + 'STATUS_ID'|translate\">\n <mat-select-trigger>\n <span *ngIf=\"row.validator.controls['statusId'].value &gt;=0\">\n {{ statusById[row.validator.controls['statusId'].value]?.label | translate}}</span>\n </mat-select-trigger>\n <mat-option *ngFor=\"let item of statusList\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"row.validator.controls['statusId'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n\n <!-- Creation date column -->\n <ng-container matColumnDef=\"updateDate\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.UPDATE_DATE</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"mat-form-field-disabled\">\n <ion-text class=\"ion-text-end\" color=\"medium\" *ngIf=\"row.id!==-1\">\n <small [matTooltip]=\"'TABLE.TESTING.CREATION_DATE'|translate\" *ngIf=\"row.currentData.creationDate; let creationDate\">\n <ion-icon name=\"calendar\"></ion-icon>\n {{ creationDate | dateFormat: {time: true} }}\n </small><br/>\n <small [matTooltip]=\"'TABLE.TESTING.UPDATE_DATE'|translate\" *ngIf=\"row.currentData.updateDate; let updateDate\">\n <ion-icon name=\"time-outline\"></ion-icon>\n {{ updateDate | dateFormat: {time: true} }}\n </small>\n </ion-text>\n </td>\n </ng-container>\n\n <!-- Comment column -->\n <ng-container matColumnDef=\"comments\">\n <th mat-header-cell *matHeaderCellDef>\n <ion-label translate>TABLE.TESTING.COMMENTS</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-form-field floatLabel=\"never\" *ngIf=\"row.editing; else iconComment\">\n <!--<textarea matInput [formControl]=\"row.validator?.controls.comments\"\n [placeholder]=\"'TABLE.TESTING.COMMENTS'|translate\"\n [readonly]=\"!row.editing\"></textarea>-->\n\n <input type=\"text\" matInput [formControl]=\"row.validator?.controls.comments\"\n [placeholder]=\"'TABLE.TESTING.COMMENTS'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn === 'comments'\">\n </mat-form-field>\n\n <ng-template #iconComment>\n <mat-icon class=\"comment\"\n *ngIf=\"row.validator?.controls.comments.value\"\n [title]=\"row.validator?.controls.comments.value\"></mat-icon>\n </ng-template>\n </td>\n </ng-container>\n\n <!-- Actions buttons column -->\n <app-actions-column [stickyEnd]=\"true\" [canCancel]=\"false\"\n (optionsClick)=\"openSelectColumnsModal($event)\"\n (cancelOrDeleteClick)=\"cancelOrDelete($event.event, $event.row)\"\n (confirmAndAddClick)=\"confirmAndAdd($event.event, $event.row)\"\n (backward)=\"confirmAndBackward($event.event, $event.row)\"\n (forward)=\"confirmAndForward($event.event, $event.row)\"\n [cellTemplate]=\"cellInjection\">\n\n <!-- cell injection-->\n <ng-template #cellInjection let-row>\n <span *ngIf=\"row.editing && !row.validator.dirty\">-</span>\n </ng-template>\n\n </app-actions-column>\n\n <tr mat-header-row *matHeaderRowDef=\"groupColumns;\" class=\"mat-toolbar\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [class.mat-row-selected]=\"row.editing\"\n [class.mat-row-error]=\"row.validator?.invalid\"\n [class.mat-row-disabled]=\"!row.editing\"\n [class.mat-row-dirty]=\"row.validator?.dirty\"\n (click)=\"clickRow($event, row)\"\n (keydown.escape)=\"escapeEditingRow($event)\"\n [cdkTrapFocus]=\"row.validator?.invalid\"></tr>\n </table>\n\n <ng-container *ngIf=\"loadingSubject|async; else noResult\">\n <ion-item>\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-item>\n </ng-container>\n\n <ng-template #noResult>\n <ion-item *ngIf=\"totalRowCount === 0\">\n <ion-text color=\"danger\" class=\"text-italic\" translate>COMMON.NO_RESULT</ion-text>\n </ion-item>\n </ng-template>\n\n <ion-infinite-scroll *ngIf=\"enableInfiniteScroll\"\n [threshold]=\"mobile ? '10%' : '2%'\" position=\"bottom\"\n (ionInfinite)=\"loadMore($event)\">\n <ion-infinite-scroll-content\n loadingSpinner=\"circles\"\n [loadingText]=\"'COMMON.LOADING_DOTS'|translate\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n </div>\n</ion-content>\n\n<ion-footer>\n <!-- Paginator -->\n <mat-paginator *ngIf=\"!enableInfiniteScroll\"\n [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\" [pageSizeOptions]=\"defaultPageSizeOptions\"\n class=\"mat-paginator-footer\"\n showFirstLastButtons>\n </mat-paginator>\n\n <app-form-buttons-bar *ngIf=\"canEdit && !mobile\"\n (onCancel)=\"load()\"\n (onSave)=\"save()\" [disabled]=\"(loadingSubject|async) || !dirty\">\n <!-- error -->\n <ion-item *ngIf=\"error$|async\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </app-form-buttons-bar>\n</ion-footer>\n\n<ion-fab slot=\"fixed\" vertical=\"bottom\" horizontal=\"end\"\n *ngIf=\"canEdit && mobile\">\n <ion-fab-button color=\"tertiary\" (click)=\"addRow($event)\">\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n</ion-fab>\n",
34008
+ template: "<app-toolbar color=\"primary\" [canGoBack]=\"true\"\n [hasValidate]=\"!(loadingSubject|async) && dirty\"\n (onValidate)=\"save()\"\n [backHref]=\"'/testing'\">\n <ion-buttons slot=\"end\">\n\n\n <ng-container *ngIf=\"!selection.hasValue(); else hasSelection\">\n <!-- Add -->\n <button mat-icon-button\n *ngIf=\"canEdit && !mobile\"\n [title]=\"'COMMON.BTN_ADD'|translate\"\n (click)=\"addRow()\">\n <mat-icon>add</mat-icon>\n </button>\n\n <!-- reset filter -->\n <button mat-icon-button (click)=\"resetFilter()\"\n *ngIf=\"filterCriteriaCount\">\n <mat-icon color=\"accent\">filter_list_alt</mat-icon>\n <mat-icon class=\"icon-secondary\" style=\"left: 16px; top: 5px; font-weight: bold;\">close</mat-icon>\n </button>\n\n <!-- show filter -->\n <button mat-icon-button (click)=\"filterExpansionPanel.toggle()\">\n <mat-icon *ngIf=\"filterCriteriaCount; else emptyFilter\"\n [matBadge]=\"filterCriteriaCount\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\">filter_list_alt\n </mat-icon>\n <ng-template #emptyFilter>\n <mat-icon>filter_list_alt</mat-icon>\n </ng-template>\n </button>\n\n <!-- start/stop timer to auto-load data -->\n <ion-button *ngIf=\"!timer\" (click)=\"startTimer()\">Start reload</ion-button>\n <ion-button *ngIf=\"timer\" (click)=\"stopTimer()\" color=\"accent\">Stop reload</ion-button>\n </ng-container>\n\n <!-- if row selection -->\n <ng-template #hasSelection>\n\n <!-- delete -->\n <button mat-icon-button\n *ngIf=\"canEdit\" [title]=\"'COMMON.BTN_DELETE'|translate\"\n (click)=\"deleteSelection($event)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <!-- duplicate -->\n <button mat-icon-button\n *ngIf=\"canEdit && selection.selected | isArrayLength: {equals: 1}\"\n [title]=\"'COMMON.BTN_DUPLICATE'|translate\"\n (click)=\"duplicateRow($event, selection.selected[0])\">\n <mat-icon>file_copy</mat-icon>\n </button>\n </ng-template>\n </ion-buttons>\n</app-toolbar>\n<ion-content class=\"ion-no-padding\">\n\n <ion-refresher slot=\"fixed\" *ngIf=\"mobile\" (ionRefresh)=\"doRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n\n <!-- error -->\n <ion-item *ngIf=\"mobile && error\" lines=\"none\" @slideUpDownAnimation>\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n\n <!-- search -->\n <mat-expansion-panel #filterExpansionPanel class=\"filter-panel filter-panel-floating\">\n <form class=\"form-container ion-padding-top\" [formGroup]=\"filterForm\" (ngSubmit)=\"applyFilterAndClosePanel($event)\">\n\n <ion-grid>\n <ion-row>\n <ion-col>\n <!-- search text -->\n <mat-form-field>\n <ion-icon matPrefix name=\"search\"></ion-icon>\n <input matInput\n formControlName=\"searchText\"\n autocomplete=\"off\"\n [placeholder]=\"'TABLE.TESTING.SEARCH_TEXT'|translate\">\n <button mat-icon-button matSuffix tabindex=\"-1\"\n type=\"button\"\n (click)=\"clearControlValue($event, filterForm.controls.searchText)\"\n [hidden]=\"filterForm.controls.searchText.disabled || !filterForm.controls.searchText.value\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </form>\n\n <mat-action-row>\n <!-- Counter -->\n <ion-label [hidden]=\"(loadingSubject|async) || filterForm.dirty\"\n [color]=\"empty && 'danger'\"\n class=\"ion-padding\">\n {{ (totalRowCount ? 'COMMON.RESULT_COUNT' : 'COMMON.NO_RESULT') | translate: {\n count: (totalRowCount |\n numberFormat)\n } }}\n </ion-label>\n\n <div class=\"toolbar-spacer\"></div>\n\n <!-- Close panel -->\n <ion-button mat-button fill=\"clear\" color=\"dark\"\n (click)=\"filterExpansionPanel.close()\"\n [disabled]=\"loadingSubject|async\">\n <ion-text translate>COMMON.BTN_CLOSE</ion-text>\n </ion-button>\n\n <!-- Search button -->\n <ion-button mat-button\n [color]=\"filterForm.dirty ? 'tertiary' : 'dark'\"\n [fill]=\"filterForm.dirty ? 'solid' : 'clear'\"\n (click)=\"applyFilterAndClosePanel($event)\">\n <ion-text translate>COMMON.BTN_APPLY</ion-text>\n </ion-button>\n </mat-action-row>\n </mat-expansion-panel>\n\n <!-- table -->\n <div [class.table-container]=\"!enableInfiniteScroll\">\n <table #table mat-table matSort matSortDisableClear\n [dataSource]=\"dataSource\"\n [matSortActive]=\"defaultSortBy\"\n [matSortDirection]=\"defaultSortDirection\"\n [trackBy]=\"trackByFn\">\n\n <!-- group header cells -->\n\n <ng-container matColumnDef=\"top-start\" [sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\" [attr.colspan]=\"2\">\n <!-- start spacer -->\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"group-1\">\n <th mat-header-cell *matHeaderCellDef [attr.colspan]=\"3\" style=\"background-color: whitesmoke; margin-bottom: -1px;\">\n <ion-label translate>{{i18nColumnPrefix + 'GROUP_1'}}</ion-label>\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"group-2\">\n <th mat-header-cell *matHeaderCellDef [attr.colspan]=\"3\">\n <ion-label translate>{{i18nColumnPrefix + 'GROUP_2'}}</ion-label>\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"top-end\" >\n <th mat-header-cell *matHeaderCellDef>\n <!-- end spacer -->\n </th>\n </ng-container>\n\n <ng-container matColumnDef=\"select\" [sticky]=\"useSticky\" [class.mat-column-sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\" [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.cdk-visually-hidden]=\"!canEdit\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Id column -->\n <ng-container matColumnDef=\"id\" [sticky]=\"useSticky\" [class.mat-column-sticky]=\"useSticky\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label>#</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">{{ row.currentData?.id }}</td>\n </ng-container>\n\n <!-- Label column -->\n <ng-container matColumnDef=\"label\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.LABEL</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-form-field floatLabel=\"never\">\n <input matInput\n [formControl]=\"row.validator.controls['label']\"\n [placeholder]=\"'TABLE.TESTING.LABEL'|translate\"\n [appAutofocus]=\"row.editing && focusColumn === 'label'\"\n [readonly]=\"!row.editing\">\n <mat-error *ngIf=\"row.validator.controls['label'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Name column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.NAME</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.mat-form-field-disabled]=\"!row.editing\">\n <mat-form-field floatLabel=\"never\">\n <input matInput [formControl]=\"row.validator?.controls.name\" [placeholder]=\"'TABLE.TESTING.NAME'|translate\"\n [readonly]=\"!row.editing\">\n <mat-error *ngIf=\"row.validator?.controls.name.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n <!-- Level column -->\n <ng-container matColumnDef=\"levelId\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.LEVEL_ID</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.mat-form-field-disabled]=\"!row.editing\">\n <mat-autocomplete-field floatLabel=\"never\"\n [formControl]=\"row.validator.controls.levelId\"\n [config]=\"autocompleteFields.level\"\n [readonly]=\"!row.editing\"\n required>\n </mat-autocomplete-field>\n </td>\n </ng-container>\n\n <!-- Status column -->\n <ng-container matColumnDef=\"statusId\">\n <th mat-header-cell *matHeaderCellDef>\n <span translate>USER.STATUS</span>\n </th>\n <td mat-cell *matCellDef=\"let row\" [class.mat-form-field-disabled]=\"!row.editing\">\n <mat-form-field floatLabel=\"never\">\n <ion-icon matPrefix *ngIf=\"row.validator.controls['statusId'].value &gt;=0\" [name]=\"statusById[row.validator.controls['statusId'].value]?.icon\"></ion-icon>\n\n <mat-select [formControl]=\"row.validator.controls['statusId']\" [placeholder]=\"i18nColumnPrefix + 'STATUS_ID'|translate\">\n <mat-select-trigger>\n <span *ngIf=\"row.validator.controls['statusId'].value &gt;=0\">\n {{ statusById[row.validator.controls['statusId'].value]?.label | translate}}</span>\n </mat-select-trigger>\n <mat-option *ngFor=\"let item of statusList\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"row.validator.controls['statusId'].hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </td>\n </ng-container>\n\n\n <!-- Creation date column -->\n <ng-container matColumnDef=\"updateDate\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n <ion-label translate>TABLE.TESTING.UPDATE_DATE</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"mat-form-field-disabled\">\n <ion-text class=\"ion-text-end\" color=\"medium\" *ngIf=\"row.id!==-1\">\n <small [matTooltip]=\"'TABLE.TESTING.CREATION_DATE'|translate\" *ngIf=\"row.currentData.creationDate; let creationDate\">\n <ion-icon name=\"calendar\"></ion-icon>\n {{ creationDate | dateFormat: {time: true} }}\n </small><br/>\n <small [matTooltip]=\"'TABLE.TESTING.UPDATE_DATE'|translate\" *ngIf=\"row.currentData.updateDate; let updateDate\">\n <ion-icon name=\"time-outline\"></ion-icon>\n {{ updateDate | dateFormat: {time: true} }}\n </small>\n </ion-text>\n </td>\n </ng-container>\n\n <!-- Comment column -->\n <ng-container matColumnDef=\"comments\">\n <th mat-header-cell *matHeaderCellDef>\n <ion-label translate>TABLE.TESTING.COMMENTS</ion-label>\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-form-field floatLabel=\"never\" *ngIf=\"row.editing; else iconComment\">\n <!--<textarea matInput [formControl]=\"row.validator?.controls.comments\"\n [placeholder]=\"'TABLE.TESTING.COMMENTS'|translate\"\n [readonly]=\"!row.editing\"></textarea>-->\n\n <input type=\"text\" matInput [formControl]=\"row.validator?.controls.comments\"\n [placeholder]=\"'TABLE.TESTING.COMMENTS'|translate\"\n [readonly]=\"!row.editing\"\n [appAutofocus]=\"row.editing && focusColumn === 'comments'\">\n </mat-form-field>\n\n <ng-template #iconComment>\n <mat-icon class=\"comment\"\n *ngIf=\"row.validator?.controls.comments.value\"\n [title]=\"row.validator?.controls.comments.value\"></mat-icon>\n </ng-template>\n </td>\n </ng-container>\n\n <!-- Actions buttons column -->\n <app-actions-column [stickyEnd]=\"true\" [canCancel]=\"false\"\n (optionsClick)=\"openSelectColumnsModal($event)\"\n (cancelOrDeleteClick)=\"cancelOrDelete($event.event, $event.row)\"\n (confirmAndAddClick)=\"confirmAndAdd($event.event, $event.row)\"\n (backward)=\"confirmAndBackward($event.event, $event.row)\"\n (forward)=\"confirmAndForward($event.event, $event.row)\"\n [cellTemplate]=\"cellInjection\">\n\n <!-- cell injection-->\n <ng-template #cellInjection let-row>\n <span *ngIf=\"row.editing && !row.validator.dirty\">-</span>\n </ng-template>\n\n </app-actions-column>\n\n <tr mat-header-row *matHeaderRowDef=\"groupColumns;\" class=\"mat-toolbar\"></tr>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n [class.mat-row-selected]=\"row.editing\"\n [class.mat-row-error]=\"row.validator?.invalid\"\n [class.mat-row-disabled]=\"!row.editing\"\n [class.mat-row-dirty]=\"row.validator?.dirty\"\n (click)=\"clickRow($event, row)\"\n (keydown.escape)=\"escapeEditingRow($event)\"\n [cdkTrapFocus]=\"row.validator?.invalid\"></tr>\n </table>\n\n <ng-container *ngIf=\"loadingSubject|async; else noResult\">\n <ion-item>\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-item>\n </ng-container>\n\n <ng-template #noResult>\n <ion-item *ngIf=\"totalRowCount === 0\">\n <ion-text color=\"danger\" class=\"text-italic\" translate>COMMON.NO_RESULT</ion-text>\n </ion-item>\n </ng-template>\n\n <ion-infinite-scroll *ngIf=\"enableInfiniteScroll\"\n [threshold]=\"mobile ? '10%' : '2%'\" position=\"bottom\"\n (ionInfinite)=\"fetchMore($event)\">\n <ion-infinite-scroll-content\n loadingSpinner=\"circles\"\n [loadingText]=\"'COMMON.LOADING_DOTS'|translate\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n </div>\n</ion-content>\n\n<ion-footer>\n <!-- Paginator -->\n <mat-paginator *ngIf=\"!enableInfiniteScroll\"\n [length]=\"totalRowCount\" [pageSize]=\"defaultPageSize\" [pageSizeOptions]=\"defaultPageSizeOptions\"\n class=\"mat-paginator-footer\"\n showFirstLastButtons>\n </mat-paginator>\n\n <app-form-buttons-bar *ngIf=\"canEdit && !mobile\"\n (onCancel)=\"load()\"\n (onSave)=\"save()\"\n [disabled]=\"(loadingSubject|async) || !dirty\">\n <!-- error -->\n <ion-item *ngIf=\"error$|async\" lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" [innerHTML]=\"error|translate\"></ion-label>\n </ion-item>\n </app-form-buttons-bar>\n</ion-footer>\n\n<ion-fab slot=\"fixed\" vertical=\"bottom\" horizontal=\"end\"\n *ngIf=\"canEdit && mobile\">\n <ion-fab-button color=\"tertiary\" (click)=\"addRow($event)\">\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n</ion-fab>\n",
33932
34009
  providers: [
33933
34010
  {
33934
34011
  provide: AppValidatorService,
@@ -34025,7 +34102,7 @@
34025
34102
  { type: i1$5.PopoverController }
34026
34103
  ]; };
34027
34104
 
34028
- var routes$4 = [
34105
+ var routes$2 = [
34029
34106
  {
34030
34107
  path: 'text-popover',
34031
34108
  pathMatch: 'full',
@@ -34043,7 +34120,7 @@
34043
34120
  i1$4.CommonModule,
34044
34121
  i1$5.IonicModule,
34045
34122
  i1$2.TranslateModule.forChild(),
34046
- i3.RouterModule.forChild(routes$4)
34123
+ i3.RouterModule.forChild(routes$2)
34047
34124
  ],
34048
34125
  declarations: [
34049
34126
  TextPopoverTestingPage
@@ -34060,7 +34137,7 @@
34060
34137
  { label: 'Table', page: '/testing/core/table' },
34061
34138
  { label: 'Text popover', page: '/testing/core/text-popover' }
34062
34139
  ];
34063
- var routes$5 = [
34140
+ var routes$1 = [
34064
34141
  {
34065
34142
  path: '',
34066
34143
  pathMatch: 'full',
@@ -34087,7 +34164,7 @@
34087
34164
  imports: [
34088
34165
  i1$4.CommonModule,
34089
34166
  i1$2.TranslateModule.forChild(),
34090
- i3.RouterModule.forChild(routes$5),
34167
+ i3.RouterModule.forChild(routes$1),
34091
34168
  // Sub modules
34092
34169
  TableTestingModule,
34093
34170
  TextPopoverTestingModule
@@ -34442,7 +34519,7 @@
34442
34519
  { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
34443
34520
  ]; };
34444
34521
 
34445
- var moment$a = momentImported__namespace;
34522
+ var moment = momentImported__namespace;
34446
34523
  var UserEventTestingPage = /** @class */ (function () {
34447
34524
  function UserEventTestingPage(userEventService, router, alertController, translateService) {
34448
34525
  var _this = this;
@@ -34508,7 +34585,7 @@
34508
34585
  type: 'message',
34509
34586
  level: 'INFO',
34510
34587
  message: 'message test message test message test message test message test message test message test message test',
34511
- creationDate: moment$a(),
34588
+ creationDate: moment(),
34512
34589
  }));
34513
34590
  };
34514
34591
  UserEventTestingPage.prototype.addError = function () {
@@ -34518,7 +34595,7 @@
34518
34595
  type: 'upload',
34519
34596
  level: 'ERROR',
34520
34597
  message: 'message error',
34521
- creationDate: moment$a(),
34598
+ creationDate: moment(),
34522
34599
  }));
34523
34600
  };
34524
34601
  UserEventTestingPage.prototype.addWarning = function () {
@@ -34528,7 +34605,7 @@
34528
34605
  type: 'download',
34529
34606
  level: 'WARNING',
34530
34607
  message: 'message warning',
34531
- creationDate: moment$a(),
34608
+ creationDate: moment(),
34532
34609
  }));
34533
34610
  };
34534
34611
  UserEventTestingPage.prototype.addDebug = function () {
@@ -34538,7 +34615,7 @@
34538
34615
  type: 'debug',
34539
34616
  level: 'DEBUG',
34540
34617
  message: 'message DEBUG',
34541
- creationDate: moment$a(),
34618
+ creationDate: moment(),
34542
34619
  }));
34543
34620
  };
34544
34621
  UserEventTestingPage.prototype.addNotificationWithLink = function () {
@@ -34549,7 +34626,7 @@
34549
34626
  type: 'message',
34550
34627
  level: 'INFO',
34551
34628
  message: 'message with link',
34552
- creationDate: moment$a(),
34629
+ creationDate: moment(),
34553
34630
  actions: [{
34554
34631
  name: 'click here',
34555
34632
  iconRef: {
@@ -34567,7 +34644,7 @@
34567
34644
  type: 'message',
34568
34645
  level: 'INFO',
34569
34646
  message: 'message with action',
34570
- creationDate: moment$a(),
34647
+ creationDate: moment(),
34571
34648
  actions: [
34572
34649
  {
34573
34650
  name: 'click here',
@@ -34641,7 +34718,7 @@
34641
34718
  type: 'message',
34642
34719
  level: 'INFO',
34643
34720
  message: 'message with action',
34644
- creationDate: moment$a(),
34721
+ creationDate: moment(),
34645
34722
  actions: [
34646
34723
  {
34647
34724
  default: true,
@@ -34699,7 +34776,7 @@
34699
34776
  { label: 'User event', page: '/testing/social/user-event' },
34700
34777
  { label: 'Job progression', page: '/testing/social/job-progression' }
34701
34778
  ];
34702
- var routes$6 = [
34779
+ var routes = [
34703
34780
  {
34704
34781
  path: 'job-progression',
34705
34782
  pathMatch: 'full',
@@ -34721,7 +34798,7 @@
34721
34798
  imports: [
34722
34799
  i1$4.CommonModule,
34723
34800
  i1$2.TranslateModule.forChild(),
34724
- i3.RouterModule.forChild(routes$6),
34801
+ i3.RouterModule.forChild(routes),
34725
34802
  JobTestingModule,
34726
34803
  UserEventTestingModule
34727
34804
  ],
@@ -34781,7 +34858,6 @@
34781
34858
  exports.AppTabEditor = AppTabEditor;
34782
34859
  exports.AppTabEditorOptions = AppTabEditorOptions;
34783
34860
  exports.AppTable = AppTable;
34784
- exports.AppTableDataSourceOptions = AppTableDataSourceOptions;
34785
34861
  exports.AppTableUtils = AppTableUtils;
34786
34862
  exports.AppUserEventNotificationIcon = AppUserEventNotificationIcon;
34787
34863
  exports.AppValidatorService = AppValidatorService;
@@ -34865,7 +34941,7 @@
34865
34941
  exports.FormGetGroupPipe = FormGetGroupPipe;
34866
34942
  exports.FormGetPipe = FormGetPipe;
34867
34943
  exports.FormGetValuePipe = FormGetValuePipe;
34868
- exports.Fragments = Fragments$1;
34944
+ exports.Fragments = Fragments;
34869
34945
  exports.GraphqlService = GraphqlService;
34870
34946
  exports.HAMMER_PRESS_TIME = HAMMER_PRESS_TIME;
34871
34947
  exports.HAMMER_TAP_TIME = HAMMER_TAP_TIME;
@@ -35183,25 +35259,25 @@
35183
35259
  exports.waitForTrue = waitForTrue;
35184
35260
  exports.waitIdle = waitIdle;
35185
35261
  exports.waitWhilePending = waitWhilePending;
35186
- exports0 = ɵ0;
35187
- exports.ɵa = CustomReuseStrategy;
35188
- exports.ɵb = MatNumpadDomService;
35189
- exports.ɵc = isFocusableElement;
35190
- exports.ɵd = RegisterForm;
35191
- exports.ɵe = AccountValidatorService;
35192
- exports.ɵf = RegisterModal;
35193
- exports.ɵg = UserSettingsValidatorService;
35194
- exports.ɵh = LocalSettingsValidatorService;
35195
- exports.ɵi = AppUpdateOfflineModeCard;
35196
- exports.ɵj = UserEventNotificationList;
35197
- exports.ɵk = JobProgressionList;
35198
- exports.ɵl = DateTestPage;
35199
- exports.ɵm = NumpadTestPage;
35200
- exports.ɵn = MatBadgeIconTestPage;
35201
- exports.ɵo = ToastTestingModule;
35202
- exports.ɵp = ToastTestingPage;
35262
+ exports["ɵ0"] = ɵ0$c;
35263
+ exports["ɵa"] = CustomReuseStrategy;
35264
+ exports["ɵb"] = MatNumpadDomService;
35265
+ exports["ɵc"] = isFocusableElement;
35266
+ exports["ɵd"] = RegisterForm;
35267
+ exports["ɵe"] = AccountValidatorService;
35268
+ exports["ɵf"] = RegisterModal;
35269
+ exports["ɵg"] = UserSettingsValidatorService;
35270
+ exports["ɵh"] = LocalSettingsValidatorService;
35271
+ exports["ɵi"] = AppUpdateOfflineModeCard;
35272
+ exports["ɵj"] = UserEventNotificationList;
35273
+ exports["ɵk"] = JobProgressionList;
35274
+ exports["ɵl"] = DateTestPage;
35275
+ exports["ɵm"] = NumpadTestPage;
35276
+ exports["ɵn"] = MatBadgeIconTestPage;
35277
+ exports["ɵo"] = ToastTestingModule;
35278
+ exports["ɵp"] = ToastTestingPage;
35203
35279
 
35204
35280
  Object.defineProperty(exports, '__esModule', { value: true });
35205
35281
 
35206
- })));
35282
+ }));
35207
35283
  //# sourceMappingURL=sumaris-net.ngx-components.umd.js.map