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

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.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
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
- 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';
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('@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
+ 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', '@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.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, 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';
@@ -2902,37 +2935,37 @@
2902
2935
  return value;
2903
2936
  if (typeof value === 'string' && value.length === 10) {
2904
2937
  // Parse the input value, as a date only
2905
- var dateOnly = moment$1(value, DATE_PATTERN);
2938
+ var dateOnly = moment$9(value, DATE_PATTERN);
2906
2939
  if (dateOnly.isValid())
2907
2940
  return DateUtils.markNoTime(dateOnly);
2908
2941
  }
2909
2942
  // Parse the input value, as a ISO date time
2910
- var date = moment$1(value, DATE_ISO_PATTERN);
2943
+ var date = moment$9(value, DATE_ISO_PATTERN);
2911
2944
  if (date.isValid())
2912
2945
  return date;
2913
2946
  // Not valid: trying to convert from unix timestamp
2914
2947
  if (typeof value === 'string') {
2915
2948
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2916
2949
  if (value.length === 10) {
2917
- return moment$1(value, DATE_UNIX_TIMESTAMP);
2950
+ return moment$9(value, DATE_UNIX_TIMESTAMP);
2918
2951
  }
2919
2952
  else if (value.length === 13) {
2920
- return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2953
+ return moment$9(value, DATE_UNIX_MS_TIMESTAMP);
2921
2954
  }
2922
2955
  }
2923
2956
  console.warn('Unable to parse date: ' + value);
2924
2957
  return undefined;
2925
2958
  }
2926
2959
  function fromUnixTimestamp(timeInSec) {
2927
- return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2960
+ return moment$9(timeInSec, DATE_UNIX_TIMESTAMP);
2928
2961
  }
2929
2962
  function fromUnixMsTimestamp(timeInMs) {
2930
- return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2963
+ return moment$9(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2931
2964
  }
2932
2965
  function toDuration(value, unit) {
2933
2966
  if (!value)
2934
2967
  return undefined;
2935
- var duration = moment$1.duration(value, unit);
2968
+ var duration = moment$9.duration(value, unit);
2936
2969
  // fix 990+ ms
2937
2970
  if (duration.milliseconds() >= 990) {
2938
2971
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2962,7 +2995,7 @@
2962
2995
  };
2963
2996
  return DurationPipe;
2964
2997
  }());
2965
- 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" });
2966
2999
  DurationPipe.decorators = [
2967
3000
  { type: i0.Pipe, args: [{
2968
3001
  name: 'duration'
@@ -2986,7 +3019,7 @@
2986
3019
  };
2987
3020
  return MathAbsPipe;
2988
3021
  }());
2989
- 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" });
2990
3023
  MathAbsPipe.decorators = [
2991
3024
  { type: i0.Pipe, args: [{
2992
3025
  name: 'mathAbs'
@@ -3001,7 +3034,7 @@
3001
3034
  };
3002
3035
  return EvenPipe;
3003
3036
  }());
3004
- 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" });
3005
3038
  EvenPipe.decorators = [
3006
3039
  { type: i0.Pipe, args: [{
3007
3040
  name: 'even'
@@ -3016,7 +3049,7 @@
3016
3049
  };
3017
3050
  return OddPipe;
3018
3051
  }());
3019
- 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" });
3020
3053
  OddPipe.decorators = [
3021
3054
  { type: i0.Pipe, args: [{
3022
3055
  name: 'odd'
@@ -3148,7 +3181,7 @@
3148
3181
  };
3149
3182
  return MapGetPipe;
3150
3183
  }());
3151
- 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" });
3152
3185
  MapGetPipe.decorators = [
3153
3186
  { type: i0.Pipe, args: [{
3154
3187
  name: 'mapGet'
@@ -3165,7 +3198,7 @@
3165
3198
  };
3166
3199
  return MapKeysPipe;
3167
3200
  }());
3168
- 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" });
3169
3202
  MapKeysPipe.decorators = [
3170
3203
  { type: i0.Pipe, args: [{
3171
3204
  name: 'mapKeys'
@@ -3182,7 +3215,7 @@
3182
3215
  };
3183
3216
  return MapValuesPipe;
3184
3217
  }());
3185
- 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" });
3186
3219
  MapValuesPipe.decorators = [
3187
3220
  { type: i0.Pipe, args: [{
3188
3221
  name: 'mapValues'
@@ -3339,7 +3372,7 @@
3339
3372
  };
3340
3373
  return TranslateContextService;
3341
3374
  }());
3342
- 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" });
3343
3376
  TranslateContextService.decorators = [
3344
3377
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
3345
3378
  ];
@@ -3402,7 +3435,7 @@
3402
3435
  ngInit: [{ type: i0.Output }]
3403
3436
  };
3404
3437
 
3405
- var moment$2 = momentImported__namespace;
3438
+ var moment$8 = momentImported__namespace;
3406
3439
  // @dynamic
3407
3440
  var SharedValidators = /** @class */ (function () {
3408
3441
  function SharedValidators() {
@@ -3485,7 +3518,7 @@
3485
3518
  };
3486
3519
  SharedValidators.validDate = function (control) {
3487
3520
  var value = control.value;
3488
- 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);
3489
3522
  if (date && (!date.isValid() || date.year() < 1970)) {
3490
3523
  return { validDate: true };
3491
3524
  }
@@ -4705,7 +4738,7 @@
4705
4738
  };
4706
4739
  return FormErrorTranslator;
4707
4740
  }());
4708
- 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" });
4709
4742
  FormErrorTranslator.decorators = [
4710
4743
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
4711
4744
  ];
@@ -4996,7 +5029,7 @@
4996
5029
  });
4997
5030
  return PropertyFormatPipe;
4998
5031
  }());
4999
- 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" });
5000
5033
  PropertyFormatPipe.decorators = [
5001
5034
  { type: i0.Pipe, args: [{
5002
5035
  name: 'propertyFormat'
@@ -5380,9 +5413,9 @@
5380
5413
  var hour = parseInt(durationParts[0] || '0');
5381
5414
  var minute = parseInt(durationParts[1] || '0');
5382
5415
  var value = hour + (minute + 0.5) / 60;
5383
- return roundFloat$1(value, maxDecimals);
5416
+ return roundFloat(value, maxDecimals);
5384
5417
  }
5385
- function roundFloat$1(input, maxDecimals) {
5418
+ function roundFloat(input, maxDecimals) {
5386
5419
  if (maxDecimals > 0) {
5387
5420
  var powDecimal = Math.pow(10, maxDecimals);
5388
5421
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -5406,16 +5439,16 @@
5406
5439
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
5407
5440
  }
5408
5441
  };
5409
- var noop$1 = function () {
5442
+ var noop$7 = function () {
5410
5443
  };
5411
- var ɵ0$2 = noop$1;
5444
+ var ɵ0$a = noop$7;
5412
5445
  var MatLatLongField = /** @class */ (function () {
5413
5446
  function MatLatLongField(formBuilder, cd, formGroupDir) {
5414
5447
  this.formBuilder = formBuilder;
5415
5448
  this.cd = cd;
5416
5449
  this.formGroupDir = formGroupDir;
5417
- this._onChangeCallback = noop$1;
5418
- this._onTouchedCallback = noop$1;
5450
+ this._onChangeCallback = noop$7;
5451
+ this._onTouchedCallback = noop$7;
5419
5452
  this._subscription = new rxjs.Subscription();
5420
5453
  this._disabling = false;
5421
5454
  this._writing = false;
@@ -5775,14 +5808,14 @@
5775
5808
  },] }
5776
5809
  ];
5777
5810
 
5778
- var DEFAULT_VALUE_ACCESSOR = {
5811
+ var DEFAULT_VALUE_ACCESSOR$5 = {
5779
5812
  provide: i1.NG_VALUE_ACCESSOR,
5780
5813
  useExisting: i0.forwardRef(function () { return MatDate; }),
5781
5814
  multi: true
5782
5815
  };
5783
5816
  var TEXT_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5784
- var noop$2 = function () { };
5785
- var ɵ0$3 = noop$2;
5817
+ var noop$6 = function () { };
5818
+ var ɵ0$9 = noop$6;
5786
5819
  var MatDate = /** @class */ (function () {
5787
5820
  function MatDate(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5788
5821
  this.dateAdapter = dateAdapter;
@@ -5791,8 +5824,8 @@
5791
5824
  this.cd = cd;
5792
5825
  this.keyboard = keyboard;
5793
5826
  this.formGroupDir = formGroupDir;
5794
- this._onChangeCallback = noop$2;
5795
- this._onTouchedCallback = noop$2;
5827
+ this._onChangeCallback = noop$6;
5828
+ this._onTouchedCallback = noop$6;
5796
5829
  this._subscription = new rxjs.Subscription();
5797
5830
  this._writing = true;
5798
5831
  this._disabling = false;
@@ -6133,7 +6166,7 @@
6133
6166
  selector: 'mat-date-field',
6134
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",
6135
6168
  providers: [
6136
- DEFAULT_VALUE_ACCESSOR,
6169
+ DEFAULT_VALUE_ACCESSOR$5,
6137
6170
  ],
6138
6171
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6139
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%}"]
@@ -6168,16 +6201,16 @@
6168
6201
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
6169
6202
  };
6170
6203
 
6171
- var DEFAULT_VALUE_ACCESSOR$1 = {
6204
+ var DEFAULT_VALUE_ACCESSOR$4 = {
6172
6205
  provide: i1.NG_VALUE_ACCESSOR,
6173
6206
  useExisting: i0.forwardRef(function () { return MatDateTime; }),
6174
6207
  multi: true
6175
6208
  };
6176
- var DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
6209
+ var DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
6177
6210
  var HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
6178
- var HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
6179
- var noop$3 = function () { };
6180
- 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;
6181
6214
  var MatDateTime = /** @class */ (function () {
6182
6215
  function MatDateTime(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
6183
6216
  this.dateAdapter = dateAdapter;
@@ -6186,14 +6219,14 @@
6186
6219
  this.cd = cd;
6187
6220
  this.keyboard = keyboard;
6188
6221
  this.formGroupDir = formGroupDir;
6189
- this._onChangeCallback = noop$3;
6190
- this._onTouchedCallback = noop$3;
6222
+ this._onChangeCallback = noop$5;
6223
+ this._onTouchedCallback = noop$5;
6191
6224
  this._subscription = new rxjs.Subscription();
6192
6225
  this._writing = true;
6193
6226
  this._disabling = false;
6194
6227
  this._readonly = false;
6195
- this.dayMask = DAY_MASK;
6196
- this.hourMask = HOUR_MASK;
6228
+ this.dayMask = DAY_MASK$1;
6229
+ this.hourMask = HOUR_MASK$1;
6197
6230
  this.floatLabel = 'auto';
6198
6231
  this.compact = false;
6199
6232
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -6558,7 +6591,7 @@
6558
6591
  selector: 'mat-date-time-field',
6559
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",
6560
6593
  providers: [
6561
- DEFAULT_VALUE_ACCESSOR$1,
6594
+ DEFAULT_VALUE_ACCESSOR$4,
6562
6595
  ],
6563
6596
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6564
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%}"]
@@ -6593,15 +6626,15 @@
6593
6626
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
6594
6627
  };
6595
6628
 
6596
- var DEFAULT_VALUE_ACCESSOR$2 = {
6629
+ var DEFAULT_VALUE_ACCESSOR$3 = {
6597
6630
  provide: i1.NG_VALUE_ACCESSOR,
6598
6631
  useExisting: i0.forwardRef(function () { return MatDateShort; }),
6599
6632
  multi: true
6600
6633
  };
6601
- var DAY_MASK$1 = [/\d/, /\d/, /\d/, /\d/];
6634
+ var DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
6602
6635
  var noop$4 = function () {
6603
6636
  };
6604
- var ɵ0$5 = noop$4;
6637
+ var ɵ0$7 = noop$4;
6605
6638
  var MatDateShort = /** @class */ (function () {
6606
6639
  function MatDateShort(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
6607
6640
  this.dateAdapter = dateAdapter;
@@ -6614,7 +6647,7 @@
6614
6647
  this._onTouchedCallback = noop$4;
6615
6648
  this.writing = true;
6616
6649
  this.disabling = false;
6617
- this.dayMask = DAY_MASK$1;
6650
+ this.dayMask = DAY_MASK;
6618
6651
  this.disabled = false;
6619
6652
  this.floatLabel = 'auto';
6620
6653
  this.readonly = false;
@@ -6891,7 +6924,7 @@
6891
6924
  selector: 'mat-date-short-field',
6892
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",
6893
6926
  providers: [
6894
- DEFAULT_VALUE_ACCESSOR$2,
6927
+ DEFAULT_VALUE_ACCESSOR$3,
6895
6928
  ],
6896
6929
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6897
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%}"]
@@ -6963,16 +6996,16 @@
6963
6996
  },] }
6964
6997
  ];
6965
6998
 
6966
- var DEFAULT_VALUE_ACCESSOR$3 = {
6999
+ var DEFAULT_VALUE_ACCESSOR$2 = {
6967
7000
  provide: i1.NG_VALUE_ACCESSOR,
6968
7001
  useExisting: i0.forwardRef(function () { return MatDuration; }),
6969
7002
  multi: true
6970
7003
  };
6971
7004
  var HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
6972
- var HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
6973
- var noop$5 = function () {
7005
+ var HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
7006
+ var noop$3 = function () {
6974
7007
  };
6975
- var ɵ0$6 = noop$5;
7008
+ var ɵ0$6 = noop$3;
6976
7009
  var MatDuration = /** @class */ (function () {
6977
7010
  function MatDuration(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
6978
7011
  this.dateAdapter = dateAdapter;
@@ -6981,11 +7014,11 @@
6981
7014
  this.cd = cd;
6982
7015
  this.formGroupDir = formGroupDir;
6983
7016
  this._subscription = new rxjs.Subscription();
6984
- this._onChangeCallback = noop$5;
6985
- this._onTouchedCallback = noop$5;
7017
+ this._onChangeCallback = noop$3;
7018
+ this._onTouchedCallback = noop$3;
6986
7019
  this.writing = true;
6987
7020
  this.disabling = false;
6988
- this.hourMask = HOUR_MASK$1;
7021
+ this.hourMask = HOUR_MASK;
6989
7022
  this.disabled = false;
6990
7023
  this.floatLabel = 'auto';
6991
7024
  this.readonly = false;
@@ -7178,7 +7211,7 @@
7178
7211
  selector: 'mat-duration-field',
7179
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",
7180
7213
  providers: [
7181
- DEFAULT_VALUE_ACCESSOR$3,
7214
+ DEFAULT_VALUE_ACCESSOR$2,
7182
7215
  ],
7183
7216
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
7184
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%}"]
@@ -7239,22 +7272,22 @@
7239
7272
  },] }
7240
7273
  ];
7241
7274
 
7242
- var DEFAULT_VALUE_ACCESSOR$4 = {
7275
+ var DEFAULT_VALUE_ACCESSOR$1 = {
7243
7276
  provide: i1.NG_VALUE_ACCESSOR,
7244
7277
  useExisting: i0.forwardRef(function () { return MatBooleanField; }),
7245
7278
  multi: true
7246
7279
  };
7247
- var noop$6 = function () {
7280
+ var noop$2 = function () {
7248
7281
  };
7249
- var ɵ0$7 = noop$6;
7282
+ var ɵ0$5 = noop$2;
7250
7283
  var MatBooleanField = /** @class */ (function () {
7251
7284
  function MatBooleanField(translate, formBuilder, cd, formGroupDir) {
7252
7285
  this.translate = translate;
7253
7286
  this.formBuilder = formBuilder;
7254
7287
  this.cd = cd;
7255
7288
  this.formGroupDir = formGroupDir;
7256
- this._onChangeCallback = noop$6;
7257
- this._onTouchedCallback = noop$6;
7289
+ this._onChangeCallback = noop$2;
7290
+ this._onTouchedCallback = noop$2;
7258
7291
  this._writing = false;
7259
7292
  this.showRadio = false;
7260
7293
  this.disabled = false;
@@ -7429,7 +7462,7 @@
7429
7462
  selector: 'mat-boolean-field',
7430
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",
7431
7464
  providers: [
7432
- DEFAULT_VALUE_ACCESSOR$4
7465
+ DEFAULT_VALUE_ACCESSOR$1
7433
7466
  ],
7434
7467
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
7435
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}"]
@@ -7517,6 +7550,7 @@
7517
7550
  return MatNumpadEvent;
7518
7551
  }(KeyboardEvent));
7519
7552
 
7553
+ exports.AnimationState = void 0;
7520
7554
  (function (AnimationState) {
7521
7555
  AnimationState["ENTER"] = "enter";
7522
7556
  AnimationState["ENTER_INPUT"] = "enter-input";
@@ -7684,7 +7718,7 @@
7684
7718
  };
7685
7719
  return MatNumpadDomService;
7686
7720
  }());
7687
- 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" });
7688
7722
  MatNumpadDomService.decorators = [
7689
7723
  { type: i0.Injectable, args: [{
7690
7724
  providedIn: 'root'
@@ -8090,7 +8124,7 @@
8090
8124
  },] }
8091
8125
  ];
8092
8126
 
8093
- var DEFAULT_VALUE_ACCESSOR$5 = {
8127
+ var DEFAULT_VALUE_ACCESSOR = {
8094
8128
  provide: i1.NG_VALUE_ACCESSOR,
8095
8129
  useExisting: i0.forwardRef(function () { return MatSwipeField; }),
8096
8130
  multi: true
@@ -8410,7 +8444,7 @@
8410
8444
  { type: i0.Component, args: [{
8411
8445
  selector: 'mat-swipe-field',
8412
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",
8413
- providers: [DEFAULT_VALUE_ACCESSOR$5],
8447
+ providers: [DEFAULT_VALUE_ACCESSOR],
8414
8448
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
8415
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}"]
8416
8450
  },] }
@@ -8472,14 +8506,14 @@
8472
8506
  },] }
8473
8507
  ];
8474
8508
 
8475
- var noop$7 = function () { };
8476
- var ɵ0$8 = noop$7;
8509
+ var noop$1 = function () { };
8510
+ var ɵ0$4 = noop$1;
8477
8511
  var MatChipsField = /** @class */ (function () {
8478
8512
  function MatChipsField(cd, formGroupDir) {
8479
8513
  this.cd = cd;
8480
8514
  this.formGroupDir = formGroupDir;
8481
- this._onChangeCallback = noop$7;
8482
- this._onTouchedCallback = noop$7;
8515
+ this._onChangeCallback = noop$1;
8516
+ this._onTouchedCallback = noop$1;
8483
8517
  this.logPrefix = '[mat-chips] ';
8484
8518
  this.formControlName = null;
8485
8519
  this.required = false;
@@ -9450,7 +9484,7 @@
9450
9484
  };
9451
9485
  return ProgressBarService;
9452
9486
  }());
9453
- 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" });
9454
9488
  ProgressBarService.decorators = [
9455
9489
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9456
9490
  ];
@@ -9497,7 +9531,7 @@
9497
9531
  };
9498
9532
  return AppGestureConfig;
9499
9533
  }(i1$6.HammerGestureConfig));
9500
- 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" });
9501
9535
  AppGestureConfig.decorators = [
9502
9536
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9503
9537
  ];
@@ -9781,7 +9815,7 @@
9781
9815
  };
9782
9816
  return MatPaginatorI18n;
9783
9817
  }(paginator.MatPaginatorIntl));
9784
- 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" });
9785
9819
  MatPaginatorI18n.decorators = [
9786
9820
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9787
9821
  ];
@@ -9873,17 +9907,17 @@
9873
9907
  return rgbArrayToHex(rgb.map(function (v) { return 255 - v; }));
9874
9908
  }
9875
9909
 
9876
- var noop$8 = function () {
9910
+ var noop = function () {
9877
9911
  };
9878
- var ɵ0$9 = noop$8;
9912
+ var ɵ0$3 = noop;
9879
9913
  var AppFormField = /** @class */ (function () {
9880
9914
  function AppFormField(translate, cd, injector, formGroupDir) {
9881
9915
  this.translate = translate;
9882
9916
  this.cd = cd;
9883
9917
  this.injector = injector;
9884
9918
  this.formGroupDir = formGroupDir;
9885
- this._onChangeCallback = noop$8;
9886
- this._onTouchedCallback = noop$8;
9919
+ this._onChangeCallback = noop;
9920
+ this._onTouchedCallback = noop;
9887
9921
  this.readonly = false;
9888
9922
  this.compact = false;
9889
9923
  this.floatLabel = 'auto';
@@ -10441,7 +10475,7 @@
10441
10475
  };
10442
10476
  return AudioProvider;
10443
10477
  }(StartableService));
10444
- 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" });
10445
10479
  AudioProvider.decorators = [
10446
10480
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
10447
10481
  ];
@@ -10551,7 +10585,7 @@
10551
10585
  };
10552
10586
  return Hotkeys;
10553
10587
  }());
10554
- 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" });
10555
10589
  Hotkeys.decorators = [
10556
10590
  { type: i0.Injectable, args: [{
10557
10591
  providedIn: 'root'
@@ -10656,7 +10690,7 @@
10656
10690
  reader.readAsDataURL(file);
10657
10691
  // Resize image, if need
10658
10692
  if (opts) {
10659
- return $progress.pipe(operators$1.mergeMap(function (event) { return __awaiter(_this, void 0, void 0, function () {
10693
+ return $progress.pipe(operators.mergeMap(function (event) { return __awaiter(_this, void 0, void 0, function () {
10660
10694
  var body;
10661
10695
  return __generator(this, function (_a) {
10662
10696
  switch (_a.label) {
@@ -10801,7 +10835,7 @@
10801
10835
  return ImagesUtils;
10802
10836
  }());
10803
10837
 
10804
- var uuidv4 = uuidv4Imported__namespace;
10838
+ var uuidv4$1 = uuidv4Imported__namespace;
10805
10839
  var FileService = /** @class */ (function () {
10806
10840
  function FileService(platform,
10807
10841
  //private transfer: FileTransfer,
@@ -10847,7 +10881,7 @@
10847
10881
  lastSlashIndex = fileUrl.lastIndexOf('/');
10848
10882
  if (lastSlashIndex === -1)
10849
10883
  throw new Error('Invalid URL: ' + fileUrl);
10850
- fileName = lastSlashIndex < (fileUrl.length - 1) && fileUrl.substring(lastSlashIndex + 1) || uuidv4();
10884
+ fileName = lastSlashIndex < (fileUrl.length - 1) && fileUrl.substring(lastSlashIndex + 1) || uuidv4$1();
10851
10885
  if (!(outputType === 'fileUrl' && this.canUseFileSystem)) return [3 /*break*/, 4];
10852
10886
  console.warn("WARN: [file] Downloading image {" + fileUrl + "} in local filesystem...");
10853
10887
  targetFilePath = this._imageDirectory + fileName;
@@ -10910,7 +10944,7 @@
10910
10944
  };
10911
10945
  return FileService;
10912
10946
  }());
10913
- 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" });
10914
10948
  FileService.decorators = [
10915
10949
  { type: i0.Injectable, args: [{
10916
10950
  providedIn: 'root',
@@ -11077,7 +11111,7 @@
11077
11111
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
11078
11112
 
11079
11113
  var scrypt = require('scrypt-async');
11080
- var sha256 = require('hash.js/lib/hash/sha/256');
11114
+ var sha256$1 = require('hash.js/lib/hash/sha/256');
11081
11115
  var sha512 = require('hash.js/lib/hash/sha/512');
11082
11116
  var nacl = {
11083
11117
  sign: tweetnacl.sign,
@@ -11183,7 +11217,7 @@
11183
11217
  * Hash (using SHA256) a message
11184
11218
  */
11185
11219
  CryptoService.prototype.sha256 = function (message) {
11186
- return sha256().update(message).digest('hex');
11220
+ return sha256$1().update(message).digest('hex');
11187
11221
  };
11188
11222
  /**
11189
11223
  * Hash (using SHA512) a message
@@ -11197,7 +11231,7 @@
11197
11231
  };
11198
11232
  return CryptoService;
11199
11233
  }());
11200
- 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" });
11201
11235
  CryptoService.decorators = [
11202
11236
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
11203
11237
  ];
@@ -12069,7 +12103,7 @@
12069
12103
  onRefresh: [{ type: i0.Input }]
12070
12104
  };
12071
12105
 
12072
- var moment$3 = momentImported__namespace;
12106
+ var moment$7 = momentImported__namespace;
12073
12107
  var SETTINGS_STORAGE_KEY = 'settings';
12074
12108
  var SETTINGS_TRANSIENT_PROPERTIES = ['mobile', 'touchUi' /*deprecated*/];
12075
12109
  // fixme: this constant points to static environment
@@ -12137,7 +12171,7 @@
12137
12171
  var _a;
12138
12172
  if (isNil((_a = this._data) === null || _a === void 0 ? void 0 : _a.mobile)) {
12139
12173
  console.warn("[settings] Accessing to property 'mobile' BEFORE service started! Please use ready()");
12140
- return isMobile(window);
12174
+ this._data.mobile = isMobile(window);
12141
12175
  }
12142
12176
  return this._data.mobile;
12143
12177
  },
@@ -12371,11 +12405,11 @@
12371
12405
  if (!feature) {
12372
12406
  feature = {
12373
12407
  name: featureName.toLowerCase(),
12374
- lastSyncDate: moment$3().toISOString()
12408
+ lastSyncDate: moment$7().toISOString()
12375
12409
  };
12376
12410
  }
12377
12411
  else {
12378
- feature.lastSyncDate = moment$3().toISOString();
12412
+ feature.lastSyncDate = moment$7().toISOString();
12379
12413
  }
12380
12414
  this.saveOfflineFeature(feature);
12381
12415
  };
@@ -12569,7 +12603,7 @@
12569
12603
  if (!page || !page.title || !page.path)
12570
12604
  throw Error('Missing required argument \'page\', \'page.path\' or \'page.title\'');
12571
12605
  // Set time
12572
- page.time = page.time || moment$3();
12606
+ page.time = page.time || moment$7();
12573
12607
  // Clean the title (remove <small> tags)
12574
12608
  if (!opts || opts.removeTitleSmallTag !== false) {
12575
12609
  var tagIndex = page.title.indexOf('</small>');
@@ -12586,7 +12620,7 @@
12586
12620
  };
12587
12621
  return LocalSettingsService;
12588
12622
  }(StartableService));
12589
- 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" });
12590
12624
  LocalSettingsService.decorators = [
12591
12625
  { type: i0.Injectable, args: [{
12592
12626
  providedIn: 'root'
@@ -13467,7 +13501,7 @@
13467
13501
  };
13468
13502
  return NetworkService;
13469
13503
  }(StartableService));
13470
- 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" });
13471
13505
  NetworkService.decorators = [
13472
13506
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
13473
13507
  ];
@@ -14691,7 +14725,7 @@
14691
14725
  }(StartableService));
14692
14726
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
14693
14727
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
14694
- 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" });
14695
14729
  EntitiesStorage.decorators = [
14696
14730
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
14697
14731
  ];
@@ -14847,10 +14881,10 @@
14847
14881
  function referentialsToString(values, properties, separator) {
14848
14882
  return (values || []).map(function (v) { return referentialToString(v, properties); }).join(separator || ', ');
14849
14883
  }
14850
- var ɵ0$a = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14884
+ var ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14851
14885
  var StatusList = Object.freeze([
14852
14886
  {
14853
- id: ɵ0$a,
14887
+ id: ɵ0$2,
14854
14888
  icon: 'checkmark',
14855
14889
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
14856
14890
  },
@@ -15153,7 +15187,7 @@
15153
15187
  (data.lastName || '')) || '';
15154
15188
  }
15155
15189
 
15156
- var uuidv4$1 = uuidv4Imported__namespace;
15190
+ var uuidv4 = uuidv4Imported__namespace;
15157
15191
  var _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
15158
15192
  var NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
15159
15193
  /**
@@ -15197,7 +15231,7 @@
15197
15231
  // Skip if not tracked
15198
15232
  if (!context || !context.tracked)
15199
15233
  return forward(operation);
15200
- var id = context.serializationKey || uuidv4$1();
15234
+ var id = context.serializationKey || uuidv4();
15201
15235
  console.debug("[apollo-tracker-link] Watching tracked query {" + operation.operationName + "#" + id + "}");
15202
15236
  // Clean context, before calling JSON.stringify (remove unused attributes)
15203
15237
  var cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -15830,14 +15864,14 @@
15830
15864
  mutationLinks = void 0;
15831
15865
  // Add queue to store tracked queries, when offline
15832
15866
  if (enableTrackMutationQueries) {
15833
- serializingLink = new SerializingLink__default['default']();
15867
+ serializingLink = new SerializingLink__default["default"]();
15834
15868
  trackerLink = createTrackerLink({
15835
15869
  storage: storage,
15836
15870
  onNetworkStatusChange: this._networkStatusChanged$,
15837
15871
  debounce: 1000,
15838
15872
  debug: true
15839
15873
  });
15840
- queueLink_1 = new QueueLink__default['default']();
15874
+ queueLink_1 = new QueueLink__default["default"]();
15841
15875
  this.registerSubscription(this._networkStatusChanged$
15842
15876
  .subscribe(function (type) {
15843
15877
  // Network is offline: start buffering into queue
@@ -15852,7 +15886,7 @@
15852
15886
  }
15853
15887
  }));
15854
15888
  mutationLinks = [
15855
- loggerLink__default['default'],
15889
+ loggerLink__default["default"],
15856
15890
  queueLink_1,
15857
15891
  trackerLink,
15858
15892
  queueLink_1,
@@ -16035,7 +16069,7 @@
16035
16069
  };
16036
16070
  return GraphqlService;
16037
16071
  }(StartableService));
16038
- 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" });
16039
16073
  GraphqlService.decorators = [
16040
16074
  { type: i0.Injectable, args: [{
16041
16075
  providedIn: 'root'
@@ -16052,7 +16086,7 @@
16052
16086
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
16053
16087
  ]; };
16054
16088
 
16055
- var sha256$1 = require('hash.js/lib/hash/sha/256');
16089
+ var sha256 = require('hash.js/lib/hash/sha/256');
16056
16090
  var BaseGraphqlServiceOptions = /** @class */ (function () {
16057
16091
  function BaseGraphqlServiceOptions() {
16058
16092
  }
@@ -16222,8 +16256,8 @@
16222
16256
  };
16223
16257
  /* -- protected methods -- */
16224
16258
  BaseGraphqlService.prototype.computeMutableWatchQueryId = function (opts) {
16225
- var queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
16226
- 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) || '';
16227
16261
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
16228
16262
  };
16229
16263
  BaseGraphqlService.prototype.findMutableWatchQueries = function (opts) {
@@ -16296,19 +16330,19 @@
16296
16330
  /* ------------------------------------
16297
16331
  * GraphQL queries
16298
16332
  * ------------------------------------*/
16299
- var Fragments = {
16300
- 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 }"]))),
16301
- 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 }"])))
16302
16336
  };
16303
16337
  // Load account query
16304
- 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);
16305
16339
  // Check email query
16306
- 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"])));
16307
16341
  // Save (create or update) account mutation
16308
16342
  var AccountMutations = {
16309
- 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),
16310
- 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),
16311
- 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)
16312
16346
  };
16313
16347
  // Sent confirmation email
16314
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"])));
@@ -16929,7 +16963,7 @@
16929
16963
  _b.label = 3;
16930
16964
  case 3: return [3 /*break*/, 6];
16931
16965
  case 4: return [4 /*yield*/, this.graphql.query({
16932
- query: LoadQuery,
16966
+ query: LoadQuery$1,
16933
16967
  error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
16934
16968
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
16935
16969
  })];
@@ -17575,7 +17609,7 @@
17575
17609
  };
17576
17610
  return AccountService;
17577
17611
  }(BaseGraphqlService));
17578
- 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" });
17579
17613
  AccountService.decorators = [
17580
17614
  { type: i0.Injectable, args: [{ providedIn: 'root', deps: [ENVIRONMENT] },] }
17581
17615
  ];
@@ -17590,7 +17624,7 @@
17590
17624
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] },
17591
17625
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
17592
17626
  ]; };
17593
- 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;
17594
17628
 
17595
17629
  var Software_1, Configuration_1;
17596
17630
  // @dynamic
@@ -17848,12 +17882,12 @@
17848
17882
  /* ------------------------------------
17849
17883
  * GraphQL queries
17850
17884
  * ------------------------------------*/
17851
- var Fragments$1 = {
17852
- 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 "])))
17853
17887
  };
17854
- 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);
17855
17889
  // Save (create or update) account mutation
17856
- 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);
17857
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"])));
17858
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"])));
17859
17893
  var APP_CONFIG_OPTIONS = new i0.InjectionToken('defaultOptions');
@@ -17914,7 +17948,7 @@
17914
17948
  case 0:
17915
17949
  now = Date.now();
17916
17950
  console.debug('[config] Loading Pod configuration...');
17917
- query = opts && opts.query || LoadQuery$1;
17951
+ query = opts && opts.query || LoadQuery;
17918
17952
  variables = opts && opts.variables || undefined;
17919
17953
  return [4 /*yield*/, this.graphql.query({
17920
17954
  query: query,
@@ -18220,7 +18254,7 @@
18220
18254
  };
18221
18255
  return ConfigService;
18222
18256
  }(BaseGraphqlService));
18223
- 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" });
18224
18258
  ConfigService.decorators = [
18225
18259
  { type: i0.Injectable, args: [{
18226
18260
  providedIn: 'root',
@@ -18239,7 +18273,7 @@
18239
18273
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] },
18240
18274
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_CONFIG_OPTIONS,] }] }
18241
18275
  ]; };
18242
- 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;
18243
18277
 
18244
18278
  var UploadFilePopover = /** @class */ (function () {
18245
18279
  function UploadFilePopover(popoverController, translate, cd) {
@@ -18517,7 +18551,7 @@
18517
18551
  return UriUtils;
18518
18552
  }());
18519
18553
 
18520
- var moment$4 = momentImported__namespace;
18554
+ var moment$6 = momentImported__namespace;
18521
18555
  var AndroidOsEnvironment = Object.freeze({
18522
18556
  DIRECTORY_DOWNLOADS: 'Download',
18523
18557
  DIRECTORY_DOWNLOADS_OLD: 'Downloads',
@@ -18554,6 +18588,8 @@
18554
18588
  PlatformService.prototype.is = function (platformName) {
18555
18589
  switch (platformName) {
18556
18590
  case 'mobile':
18591
+ // Exclude Windows touch screens - see sumaris-app issues #323 and #346
18592
+ return isMobile(window);
18557
18593
  case 'mobileweb':
18558
18594
  // Exclude Windows touch screens - see sumaris-app issues #323 and #346
18559
18595
  return this.platform.is(platformName) && !isWindows(window);
@@ -18815,16 +18851,16 @@
18815
18851
  }
18816
18852
  // config moment lib
18817
18853
  try {
18818
- moment$4.locale(event.lang);
18854
+ moment$6.locale(event.lang);
18819
18855
  console.debug('[platform] Use locale {' + event.lang + '}');
18820
18856
  }
18821
18857
  // If error, fallback to en
18822
18858
  catch (err) {
18823
- moment$4.locale('en');
18859
+ moment$6.locale('en');
18824
18860
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
18825
18861
  }
18826
18862
  // Config date adapter
18827
- _this.dateAdapter.setLocale(moment$4.locale());
18863
+ _this.dateAdapter.setLocale(moment$6.locale());
18828
18864
  }
18829
18865
  });
18830
18866
  this.settings.onChange.subscribe(function (data) {
@@ -19076,7 +19112,7 @@
19076
19112
  };
19077
19113
  return PlatformService;
19078
19114
  }(StartableService));
19079
- 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" });
19080
19116
  PlatformService.decorators = [
19081
19117
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19082
19118
  ];
@@ -19168,7 +19204,7 @@
19168
19204
  };
19169
19205
  return MatStepperI18n;
19170
19206
  }(stepper.MatStepperIntl));
19171
- 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" });
19172
19208
  MatStepperI18n.decorators = [
19173
19209
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19174
19210
  ];
@@ -20839,43 +20875,44 @@
20839
20875
  }
20840
20876
  this.dirty = false;
20841
20877
  };
20842
- InMemoryEntitiesService.prototype.watchAll = function (offset, size, sortBy, sortDirection, filterData, options) {
20843
- var _this = this;
20844
- offset = offset >= 0 ? offset : 0;
20845
- size = size >= 0 ? size : -1;
20846
- if (!this.data) {
20847
- console.warn('[memory-data-service] Waiting value to be set...');
20848
- }
20849
- return this._onChange
20850
- .pipe(operators.filter(isNotNil), operators.mergeMap(function (_) { return waitFor(function () { return !_this._saving; }); }), operators.mergeMap(function (_) { return __awaiter(_this, void 0, void 0, function () {
20851
- var excludedDataByFilter, excludedDataByPagination, data, promiseOrData, _b, total;
20852
- return __generator(this, function (_c) {
20853
- 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) {
20854
20884
  case 0:
20855
- excludedDataByFilter = [];
20856
- _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)];
20857
20890
  case 1:
20858
- _c.trys.push([1, , 6, 7]);
20859
- if (isEmptyArray(this.data)) {
20860
- return [2 /*return*/, { data: [], total: 0 }];
20861
- }
20862
- data = this._sortFn(this.data || [], sortBy, sortDirection);
20863
- if (!this._onLoad) return [3 /*break*/, 5];
20864
- promiseOrData = this._onLoad(data);
20865
- if (!((promiseOrData instanceof Promise))) return [3 /*break*/, 3];
20866
- return [4 /*yield*/, promiseOrData];
20891
+ _b.sent();
20892
+ _b.label = 2;
20867
20893
  case 2:
20868
- _b = _c.sent();
20869
- return [3 /*break*/, 4];
20894
+ if (!this._saving) return [3 /*break*/, 4];
20895
+ return [4 /*yield*/, waitFor(function () { return !_this._saving; })];
20870
20896
  case 3:
20871
- _b = promiseOrData;
20872
- _c.label = 4;
20897
+ _b.sent();
20898
+ _b.label = 4;
20873
20899
  case 4:
20874
- data = _b;
20875
- _c.label = 5;
20900
+ excludedDataByFilter = [];
20901
+ _b.label = 5;
20876
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:
20877
20914
  // Apply filter (will update hiddenData)
20878
- data = this.filter(data, filterData, excludedDataByFilter);
20915
+ data = this.filter(data, filter, excludedDataByFilter);
20879
20916
  total = data.length;
20880
20917
  // If page size=0 (e.g. only need total)
20881
20918
  if (size === 0) {
@@ -20916,15 +20953,40 @@
20916
20953
  if (data === this.data) {
20917
20954
  data = data.slice();
20918
20955
  }
20919
- return [2 /*return*/, { data: data, total: total }];
20920
- 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:
20921
20971
  // Remember hidden data
20922
- 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
+ }
20923
20975
  return [7 /*endfinally*/];
20924
- case 7: return [2 /*return*/];
20976
+ case 9: return [2 /*return*/];
20925
20977
  }
20926
20978
  });
20927
- }); }));
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); }));
20928
20990
  };
20929
20991
  InMemoryEntitiesService.prototype.saveAll = function (data, options) {
20930
20992
  return __awaiter(this, void 0, void 0, function () {
@@ -21432,7 +21494,7 @@
21432
21494
  return 1;
21433
21495
  }
21434
21496
  }
21435
- var ɵ0$b = function (defaultStateSize) { return [
21497
+ var ɵ0$1 = function (defaultStateSize) { return [
21436
21498
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
21437
21499
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
21438
21500
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -21440,7 +21502,7 @@
21440
21502
  var SCALE_OPTIONS_DEFAULT = {
21441
21503
  startColor: rgbArrayMap.red,
21442
21504
  startStates: [0, 2, 3],
21443
- startStepsFn: ɵ0$b
21505
+ startStepsFn: ɵ0$1
21444
21506
  };
21445
21507
  /**
21446
21508
  * Internal function, that create a colors scale, using iteration
@@ -22397,7 +22459,7 @@
22397
22459
  };
22398
22460
  return UserSettingsValidatorService;
22399
22461
  }(AppValidatorService));
22400
- 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" });
22401
22463
  UserSettingsValidatorService.decorators = [
22402
22464
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22403
22465
  ];
@@ -22445,7 +22507,7 @@
22445
22507
  };
22446
22508
  return AccountValidatorService;
22447
22509
  }(AppValidatorService));
22448
- 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" });
22449
22511
  AccountValidatorService.decorators = [
22450
22512
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22451
22513
  ];
@@ -22792,7 +22854,7 @@
22792
22854
  };
22793
22855
  return MenuService;
22794
22856
  }());
22795
- 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" });
22796
22858
  MenuService.decorators = [
22797
22859
  { type: i0.Injectable, args: [{
22798
22860
  providedIn: 'root'
@@ -23158,7 +23220,7 @@
23158
23220
  };
23159
23221
  return LocalSettingsValidatorService;
23160
23222
  }(AppValidatorService));
23161
- 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" });
23162
23224
  LocalSettingsValidatorService.decorators = [
23163
23225
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
23164
23226
  ];
@@ -23938,7 +24000,7 @@
23938
24000
  };
23939
24001
  return IsOnFieldModePipe;
23940
24002
  }());
23941
- 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" });
23942
24004
  IsOnFieldModePipe.decorators = [
23943
24005
  { type: i0.Pipe, args: [{
23944
24006
  name: 'isOnField'
@@ -23953,7 +24015,7 @@
23953
24015
  };
23954
24016
  return IsNotOnFieldModePipe;
23955
24017
  }());
23956
- 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" });
23957
24019
  IsNotOnFieldModePipe.decorators = [
23958
24020
  { type: i0.Pipe, args: [{
23959
24021
  name: 'isNotOnField'
@@ -23971,7 +24033,7 @@
23971
24033
  };
23972
24034
  return PersonToStringPipe;
23973
24035
  }());
23974
- 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" });
23975
24037
  PersonToStringPipe.decorators = [
23976
24038
  { type: i0.Pipe, args: [{
23977
24039
  name: 'personToString'
@@ -24399,7 +24461,7 @@
24399
24461
  };
24400
24462
  return IsLoginAccountPipe;
24401
24463
  }());
24402
- 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" });
24403
24465
  IsLoginAccountPipe.decorators = [
24404
24466
  { type: i0.Pipe, args: [{
24405
24467
  name: 'isLogin'
@@ -24414,7 +24476,7 @@
24414
24476
  };
24415
24477
  return AccountToStringPipe;
24416
24478
  }());
24417
- 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" });
24418
24480
  AccountToStringPipe.decorators = [
24419
24481
  { type: i0.Pipe, args: [{
24420
24482
  name: 'accountToString'
@@ -24432,7 +24494,7 @@
24432
24494
  };
24433
24495
  return DepartmentToStringPipe;
24434
24496
  }());
24435
- 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" });
24436
24498
  DepartmentToStringPipe.decorators = [
24437
24499
  { type: i0.Pipe, args: [{
24438
24500
  name: 'departmentToString'
@@ -25198,7 +25260,7 @@
25198
25260
  };
25199
25261
  return AuthGuardService;
25200
25262
  }());
25201
- 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" });
25202
25264
  AuthGuardService.decorators = [
25203
25265
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
25204
25266
  ];
@@ -25749,11 +25811,6 @@
25749
25811
  return AppTableUtils;
25750
25812
  }());
25751
25813
 
25752
- var AppTableDataSourceOptions = /** @class */ (function () {
25753
- function AppTableDataSourceOptions() {
25754
- }
25755
- return AppTableDataSourceOptions;
25756
- }());
25757
25814
  // @dynamic
25758
25815
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
25759
25816
  var EntitiesTableDataSource = /** @class */ (function (_super_1) {
@@ -25767,36 +25824,24 @@
25767
25824
  * @param validatorService Service that create instances of the FormGroup used to validate row fields.
25768
25825
  * @param config Additional configuration for table.
25769
25826
  */
25770
- function EntitiesTableDataSource(dataType, dataService, validatorService, config) {
25771
- 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;
25772
25829
  _this.dataService = dataService;
25773
25830
  _this._creating = false;
25774
25831
  _this._saving = false;
25775
- _this._useValidator = false;
25776
25832
  _this._stopWatching$ = new rxjs.Subject();
25777
25833
  _this._editingRowCount = 0;
25778
25834
  _this._fetchMoreFn = null;
25779
25835
  _this.loadingSubject = new rxjs.BehaviorSubject(undefined);
25780
- _this._options = Object.assign({ dataServiceOptions: {}, debug: config && config.suppressErrors === false, keepOriginalDataAfterConfirm: false }, config);
25781
- _this._useValidator = isNotNil(validatorService);
25782
- _this._logTypeName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
25783
- // For DEV ONLY
25784
- _this._debug = _this._options.debug === true;
25836
+ _this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
25785
25837
  return _this;
25786
25838
  }
25787
25839
  Object.defineProperty(EntitiesTableDataSource.prototype, "serviceOptions", {
25788
25840
  get: function () {
25789
- return this._options.dataServiceOptions;
25841
+ return this.config.dataServiceOptions;
25790
25842
  },
25791
25843
  set: function (value) {
25792
- this._options.dataServiceOptions = value;
25793
- },
25794
- enumerable: false,
25795
- configurable: true
25796
- });
25797
- Object.defineProperty(EntitiesTableDataSource.prototype, "options", {
25798
- get: function () {
25799
- return this._options;
25844
+ this.config.dataServiceOptions = value;
25800
25845
  },
25801
25846
  enumerable: false,
25802
25847
  configurable: true
@@ -25831,10 +25876,10 @@
25831
25876
  return this.dataService.watchAll(offset, size, sortBy, sortDirection, filter, this.serviceOptions)
25832
25877
  .pipe(operators.catchError(function (err) { return _this.handleError(err, 'ERROR.LOAD_DATA_ERROR'); }), operators.map(function (res) {
25833
25878
  if (_this._saving) {
25834
- 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");
25835
25880
  }
25836
25881
  else if (_this._editingRowCount > 0) {
25837
- 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!");
25838
25883
  }
25839
25884
  else {
25840
25885
  _this.updateDatasource((res.data || []));
@@ -25847,12 +25892,24 @@
25847
25892
  // ⚠ Notice: Don't put any operator after takeUntil to avoid potential subscription leaks
25848
25893
  );
25849
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
+ };
25850
25907
  EntitiesTableDataSource.prototype.save = function () {
25851
25908
  return __awaiter(this, void 0, void 0, function () {
25852
25909
  var onlyDirtyRows, rows, invalidRows, data, dataToSave_1, error_1;
25853
25910
  var _this = this;
25854
- return __generator(this, function (_a) {
25855
- switch (_a.label) {
25911
+ return __generator(this, function (_b) {
25912
+ switch (_b.label) {
25856
25913
  case 0:
25857
25914
  if (toBoolean(this.serviceOptions.readOnly, false)) {
25858
25915
  console.error('[table-datasource] Enable to save, because serviceOptions.readOnly=true');
@@ -25860,32 +25917,30 @@
25860
25917
  }
25861
25918
  // Saving twice (should never occur)
25862
25919
  if (this._saving) {
25863
- 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");
25864
25921
  return [2 /*return*/, false];
25865
25922
  }
25866
25923
  this._saving = true;
25867
25924
  this.markAsLoading();
25868
25925
  onlyDirtyRows = toBoolean(this.serviceOptions.saveOnlyDirtyRows, false);
25869
- _a.label = 1;
25926
+ _b.label = 1;
25870
25927
  case 1:
25871
- _a.trys.push([1, 4, 5, 6]);
25872
- if (this._debug)
25873
- console.debug("[table-datasource] Saving " + this._logTypeName + " rows... {onlyDirty: " + onlyDirtyRows + "}");
25874
- return [4 /*yield*/, this.getRows()];
25875
- case 2:
25876
- 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();
25877
25932
  invalidRows = rows.filter(function (row) { return row.editing && !row.confirmEditCreate(); });
25878
25933
  // Cannot finish some rows: error
25879
25934
  if (invalidRows.length) {
25880
25935
  // log errors
25881
- if (this._debug)
25882
- 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); });
25883
25938
  // Stop with an error
25884
25939
  throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
25885
25940
  }
25886
25941
  this._editingRowCount = 0;
25887
25942
  data = void 0;
25888
- if (this._useValidator) {
25943
+ if (this.validatorService) {
25889
25944
  dataToSave_1 = [];
25890
25945
  data = rows.map(function (row) {
25891
25946
  var currentData = new _this.dataConstructor();
@@ -25906,46 +25961,42 @@
25906
25961
  }
25907
25962
  // If no data to save: exit
25908
25963
  if (onlyDirtyRows && !dataToSave_1.length) {
25909
- if (this._debug)
25910
- 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");
25911
25966
  return [2 /*return*/, false];
25912
25967
  }
25913
- if (this._debug)
25914
- 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);
25915
25970
  return [4 /*yield*/, this.dataService.saveAll(dataToSave_1, this.serviceOptions)];
25916
- case 3:
25917
- _a.sent();
25918
- if (this._debug)
25919
- 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]");
25920
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)
25921
25976
  this.updateDatasource(data, { emitEvent: false });
25922
25977
  return [2 /*return*/, true];
25923
- case 4:
25924
- error_1 = _a.sent();
25925
- if (this._debug)
25978
+ case 3:
25979
+ error_1 = _b.sent();
25980
+ if (this.config.debug)
25926
25981
  console.error('[table-datasource] Error while saving: ' + error_1 && error_1.message || error_1);
25927
25982
  throw error_1;
25928
- case 5:
25983
+ case 4:
25929
25984
  this._saving = false;
25930
25985
  this.markAsLoaded();
25931
25986
  return [7 /*endfinally*/];
25932
- case 6: return [2 /*return*/];
25987
+ case 5: return [2 /*return*/];
25933
25988
  }
25934
25989
  });
25935
25990
  });
25936
25991
  };
25937
25992
  EntitiesTableDataSource.prototype.updateDatasource = function (data, opts) {
25938
- if (this._debug)
25993
+ if (this.config.debug)
25939
25994
  console.debug("[table-datasource] Updating datasource with data:", data);
25940
25995
  _super_1.prototype.updateDatasource.call(this, data, opts);
25941
25996
  if (!opts || opts.emitEvent !== false) {
25942
25997
  this.markAsLoaded();
25943
25998
  }
25944
25999
  };
25945
- // Overwrite default signature
25946
- EntitiesTableDataSource.prototype.createNew = function (insertAt) {
25947
- this.asyncCreateNew(insertAt);
25948
- };
25949
26000
  EntitiesTableDataSource.prototype.connect = function (collectionViewer) {
25950
26001
  // DEBUG console.debug("[entities-datasource] connect");
25951
26002
  return _super_1.prototype.connect.call(this, collectionViewer);
@@ -25967,38 +26018,37 @@
25967
26018
  console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
25968
26019
  row.validator.disable({ onlySelf: true, emitEvent: false });
25969
26020
  }
26021
+ this._editingRowCount--;
25970
26022
  return true;
25971
26023
  };
25972
26024
  EntitiesTableDataSource.prototype.confirmEdit = function (row) {
25973
26025
  if (!_super_1.prototype.confirmEdit.call(this, row))
25974
26026
  return false;
25975
26027
  if (row.editing && row.validator) {
25976
- 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');
25977
26029
  row.validator.disable({ onlySelf: true, emitEvent: false });
25978
26030
  }
26031
+ this._editingRowCount--;
25979
26032
  return true;
25980
26033
  };
25981
26034
  EntitiesTableDataSource.prototype.startEdit = function (row) {
25982
- if (this._debug)
25983
- console.debug('[table-datasource] Start to edit row', row);
25984
- 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
+ }
25985
26041
  this._editingRowCount++;
25986
26042
  };
25987
- EntitiesTableDataSource.prototype.cancelOrDelete = function (row) {
25988
- if (this._debug)
25989
- console.debug('[table-datasource] Cancelling or deleting row', row);
25990
- row.cancelOrDelete();
25991
- this._editingRowCount--;
25992
- };
25993
26043
  EntitiesTableDataSource.prototype.handleError = function (error, message) {
25994
26044
  var errorMsg = error && error.message || error;
25995
- console.error("[table-datasource] Service " + this._logTypeName + " sent error: " + errorMsg, error);
26045
+ console.error("[table-datasource] Service " + this._entityName + " sent error: " + errorMsg, error);
25996
26046
  this.markAsLoaded();
25997
26047
  throw new Error(message || errorMsg);
25998
26048
  };
25999
- EntitiesTableDataSource.prototype.handleErrorPromise = function (error) {
26049
+ EntitiesTableDataSource.prototype.handleServiceError = function (error) {
26000
26050
  var errorMsg = error && error.message || error;
26001
- console.error("[table-datasource] Service " + this._logTypeName + " sent error: " + errorMsg, error);
26051
+ console.error("[table-datasource] Service " + this._entityName + " sent error: " + errorMsg, error);
26002
26052
  this.markAsLoaded();
26003
26053
  throw error;
26004
26054
  };
@@ -26013,9 +26063,11 @@
26013
26063
  console.error("[table-datasource] Row to delete with id=" + id + " not found");
26014
26064
  return;
26015
26065
  }
26066
+ if (row.editing)
26067
+ this._editingRowCount--;
26016
26068
  this.loadingSubject.next(true);
26017
26069
  this.dataService.deleteAll([row.currentData], this.serviceOptions)
26018
- .catch(function (err) { return _this.handleErrorPromise(err); })
26070
+ .catch(function (err) { return _this.handleServiceError(err); })
26019
26071
  .then(function () {
26020
26072
  setTimeout(function () {
26021
26073
  // make sure row has been deleted (because GrapQHl cache remove can failed)
@@ -26027,112 +26079,133 @@
26027
26079
  });
26028
26080
  };
26029
26081
  EntitiesTableDataSource.prototype.deleteAll = function (rows) {
26030
- var _this = this;
26031
- this.markAsLoading();
26032
- var data = rows.map(function (r) { return r.currentData; });
26033
- var rowsById = rows.reduce(function (res, row) {
26034
- res[row.id] = row;
26035
- return res;
26036
- }, {});
26037
- var self = this;
26038
- var selfDelete = _super_1.prototype.delete;
26039
- return this.dataService.deleteAll(data, this.serviceOptions)
26040
- .catch(function (err) { return _this.handleErrorPromise(err); })
26041
- .then(function () {
26042
- // Workaround, to be sure all rows has been deleted
26043
- // Sometimes, the service miss deletion, or GrapQHl cache remove failed
26044
- var rowNotDeleted = Object.getOwnPropertyNames(rowsById).reduce(function (res, id) {
26045
- var row = rowsById[id];
26046
- var present = self.getRow(+id) === row;
26047
- return present ? res.concat(row) : res;
26048
- }, []).sort(function (a, b) { return a.id > b.id ? -1 : 1; });
26049
- // Apply missing deletion
26050
- if (isNotEmptyArray(rowNotDeleted)) {
26051
- console.warn("[table-datasource] Force deletion of " + rowNotDeleted.length + " rows (Is service applying deletion to observable ?)");
26052
- rowNotDeleted.forEach(function (r) { return selfDelete.call(self, r.id); });
26053
- }
26054
- _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
+ });
26055
26123
  });
26056
26124
  };
26125
+ EntitiesTableDataSource.prototype.getRow = function (id) {
26126
+ return _super_1.prototype.getRow.call(this, id);
26127
+ };
26057
26128
  EntitiesTableDataSource.prototype.getRows = function () {
26058
- return firstNotNilPromise(this.connect(null));
26129
+ return this.rowsSubject.getValue();
26059
26130
  };
26060
- EntitiesTableDataSource.prototype.asyncCreateNew = function (insertAt) {
26131
+ EntitiesTableDataSource.prototype.createNew = function (insertAt, options) {
26132
+ if (options === void 0) { options = { editing: true }; }
26061
26133
  var _super = Object.create(null, {
26062
26134
  createNew: { get: function () { return _super_1.prototype.createNew; } }
26063
26135
  });
26136
+ var _a;
26064
26137
  return __awaiter(this, void 0, void 0, function () {
26065
- var row, res, err_1;
26066
- return __generator(this, function (_a) {
26067
- switch (_a.label) {
26138
+ var row, err_2;
26139
+ return __generator(this, function (_b) {
26140
+ switch (_b.label) {
26068
26141
  case 0:
26069
26142
  if (this._creating)
26070
26143
  return [2 /*return*/]; // Avoid multiple call (should never occur)
26071
26144
  this._creating = true;
26072
- _super.createNew.call(this, insertAt);
26073
- row = this.getRow(-1);
26074
- if (!(row && this._options && this._options.onRowCreated)) return [3 /*break*/, 4];
26075
- res = this._options.onRowCreated(row);
26076
- if (!(res instanceof Promise)) return [3 /*break*/, 4];
26077
- _a.label = 1;
26145
+ _b.label = 1;
26078
26146
  case 1:
26079
- _a.trys.push([1, 3, , 4]);
26080
- return [4 /*yield*/, res];
26147
+ _b.trys.push([1, , 7, 8]);
26148
+ return [4 /*yield*/, _super.createNew.call(this, insertAt, options)];
26081
26149
  case 2:
26082
- _a.sent();
26083
- return [3 /*break*/, 4];
26150
+ row = _b.sent();
26151
+ if (!row)
26152
+ return [2 /*return*/];
26153
+ if (!((_a = this.config) === null || _a === void 0 ? void 0 : _a.onRowCreated)) return [3 /*break*/, 6];
26154
+ _b.label = 3;
26084
26155
  case 3:
26085
- err_1 = _a.sent();
26086
- console.error(err_1 && err_1.message || err_1, err_1);
26087
- return [3 /*break*/, 4];
26156
+ _b.trys.push([3, 5, , 6]);
26157
+ return [4 /*yield*/, this.config.onRowCreated(row)];
26088
26158
  case 4:
26089
- this._editingRowCount++;
26159
+ _b.sent();
26160
+ return [3 /*break*/, 6];
26161
+ case 5:
26162
+ err_2 = _b.sent();
26163
+ // Log, then continue
26164
+ console.error(err_2 && err_2.message || err_2, err_2);
26165
+ return [3 /*break*/, 6];
26166
+ case 6:
26167
+ if (row.editing)
26168
+ this._editingRowCount++;
26169
+ return [2 /*return*/, row];
26170
+ case 7:
26090
26171
  this._creating = false;
26091
- return [2 /*return*/];
26172
+ return [7 /*endfinally*/];
26173
+ case 8: return [2 /*return*/];
26092
26174
  }
26093
26175
  });
26094
26176
  });
26095
26177
  };
26096
26178
  EntitiesTableDataSource.prototype.getData = function () {
26097
- return __awaiter(this, void 0, void 0, function () {
26098
- var rows;
26099
- return __generator(this, function (_a) {
26100
- switch (_a.label) {
26101
- case 0: return [4 /*yield*/, this.getRows()];
26102
- case 1:
26103
- rows = _a.sent();
26104
- return [2 /*return*/, this.getDataFromRows(rows)];
26105
- }
26106
- });
26107
- });
26179
+ var rows = this.getRows();
26180
+ return this.getDataFromRows(rows);
26108
26181
  };
26109
26182
  EntitiesTableDataSource.prototype.fetchMore = function (opts) {
26110
26183
  var _super = Object.create(null, {
26111
26184
  updateDatasource: { get: function () { return _super_1.prototype.updateDatasource; } }
26112
26185
  });
26113
26186
  return __awaiter(this, void 0, void 0, function () {
26114
- var fetchMoreFn, res, existingData;
26115
- return __generator(this, function (_a) {
26116
- switch (_a.label) {
26187
+ var fetchMoreFn, res;
26188
+ var _b;
26189
+ return __generator(this, function (_c) {
26190
+ switch (_c.label) {
26117
26191
  case 0:
26118
26192
  if (!this._fetchMoreFn)
26119
26193
  return [2 /*return*/, false]; // Avoid multiple call
26120
26194
  if (this._editingRowCount > 0) {
26121
- console.warn('Cannot fetch more because still editing row');
26195
+ console.warn("Cannot fetch more " + this._entityName + " because " + this._editingRowCount + " row(s) still editing");
26122
26196
  return [2 /*return*/];
26123
26197
  }
26198
+ console.debug("Will fetching more row(s) still...");
26124
26199
  fetchMoreFn = this._fetchMoreFn;
26125
26200
  this._fetchMoreFn = null;
26126
26201
  return [4 /*yield*/, fetchMoreFn()];
26127
26202
  case 1:
26128
- res = _a.sent();
26203
+ res = _c.sent();
26129
26204
  // Skip if empty (no more data)
26130
- if (isNotEmptyArray(res === null || res === void 0 ? void 0 : res.data))
26205
+ if (isEmptyArray(res === null || res === void 0 ? void 0 : res.data))
26131
26206
  return [2 /*return*/, false];
26132
- return [4 /*yield*/, this.getData()];
26133
- case 2:
26134
- existingData = _a.sent();
26135
- _super.updateDatasource.call(this, existingData.concat.apply(existingData, __spread(res.data)), opts);
26207
+ // Update the data source
26208
+ _super.updateDatasource.call(this, (_b = (this.currentData || [])).concat.apply(_b, __spread(res.data)), opts);
26136
26209
  // Remember fetchMore
26137
26210
  this._fetchMoreFn = res.fetchMore;
26138
26211
  return [2 /*return*/, true];
@@ -26159,8 +26232,8 @@
26159
26232
  EntitiesTableDataSource.ctorParameters = function () { return [
26160
26233
  { type: Function },
26161
26234
  { type: undefined },
26162
- { type: ngxMaterialTable.ValidatorService },
26163
- { type: AppTableDataSourceOptions }
26235
+ { type: undefined },
26236
+ { type: undefined }
26164
26237
  ]; };
26165
26238
 
26166
26239
  var SETTINGS_DISPLAY_COLUMNS = 'displayColumns';
@@ -26804,7 +26877,7 @@
26804
26877
  if (id < 0)
26805
26878
  return [2 /*return*/];
26806
26879
  if (!(id >= this.visibleRowCount)) return [3 /*break*/, 1];
26807
- this.addRow(event, undefined, opts);
26880
+ this.addRow(event, undefined, Object.assign(Object.assign({}, opts), { editing: true }));
26808
26881
  return [3 /*break*/, 3];
26809
26882
  case 1: return [4 /*yield*/, this.dataSource.getRow(id)];
26810
26883
  case 2:
@@ -27704,22 +27777,27 @@
27704
27777
  };
27705
27778
  AppTable.prototype.addRowToTable = function (insertAt, opts) {
27706
27779
  return __awaiter(this, void 0, void 0, function () {
27780
+ var row;
27707
27781
  return __generator(this, function (_e) {
27708
27782
  switch (_e.label) {
27709
27783
  case 0:
27710
27784
  this.focusFirstColumn = true;
27711
27785
  this.focusColumn = (opts === null || opts === void 0 ? void 0 : opts.focusColumn) || this.firstUserColumn;
27712
- return [4 /*yield*/, this._dataSource.asyncCreateNew(insertAt)];
27786
+ return [4 /*yield*/, this._dataSource.createNew(insertAt, Object.assign({ editing: true }, opts))];
27713
27787
  case 1:
27714
- _e.sent();
27715
- this.editedRow = this._dataSource.getRow(-1);
27788
+ row = _e.sent();
27789
+ if (!row)
27790
+ return [2 /*return*/, undefined];
27716
27791
  // Emit start editing event
27717
- this.onStartEditingRow.emit(this.editedRow);
27792
+ if (row.editing) {
27793
+ this.editedRow = row;
27794
+ this.onStartEditingRow.emit(this.editedRow);
27795
+ }
27718
27796
  this.totalRowCount++;
27719
27797
  this.visibleRowCount++;
27720
27798
  this.markAsDirty({ emitEvent: false /*markForCheck() is called just after*/ });
27721
27799
  this.markForCheck();
27722
- return [2 /*return*/, this.editedRow];
27800
+ return [2 /*return*/, row];
27723
27801
  }
27724
27802
  });
27725
27803
  });
@@ -27909,7 +27987,7 @@
27909
27987
  return __generator(this, function (_e) {
27910
27988
  switch (_e.label) {
27911
27989
  case 0:
27912
- markRowAsPristine = ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.options.keepOriginalDataAfterConfirm) === true;
27990
+ markRowAsPristine = ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.config.restoreOriginalDataOnCancel) === true;
27913
27991
  if (!markRowAsPristine) return [3 /*break*/, 2];
27914
27992
  (_b = row.validator) === null || _b === void 0 ? void 0 : _b.markAsPristine();
27915
27993
  if (!(!opts || opts.onlySelf !== true)) return [3 /*break*/, 2];
@@ -27926,18 +28004,13 @@
27926
28004
  return __awaiter(this, void 0, void 0, function () {
27927
28005
  var rows, pristine;
27928
28006
  return __generator(this, function (_e) {
27929
- switch (_e.label) {
27930
- case 0:
27931
- if (!this.dirty)
27932
- return [2 /*return*/]; // Already pristine
27933
- return [4 /*yield*/, this._dataSource.getRows()];
27934
- case 1:
27935
- rows = _e.sent();
27936
- pristine = (rows || []).findIndex(function (row) { var _a; return (_a = row.validator) === null || _a === void 0 ? void 0 : _a.dirty; }) === -1;
27937
- if (pristine)
27938
- this.markAsPristine(opts);
27939
- return [2 /*return*/];
27940
- }
28007
+ if (!this.dirty)
28008
+ return [2 /*return*/]; // Already pristine
28009
+ rows = this._dataSource.getRows();
28010
+ pristine = (rows || []).findIndex(function (row) { var _a; return (_a = row.validator) === null || _a === void 0 ? void 0 : _a.dirty; }) === -1;
28011
+ if (pristine)
28012
+ this.markAsPristine(opts);
28013
+ return [2 /*return*/];
27941
28014
  });
27942
28015
  });
27943
28016
  };
@@ -30284,7 +30357,7 @@
30284
30357
  { type: Function },
30285
30358
  { type: InMemoryEntitiesService },
30286
30359
  { type: ngxMaterialTable.ValidatorService },
30287
- { type: AppTableDataSourceOptions },
30360
+ { type: undefined },
30288
30361
  { type: undefined }
30289
30362
  ]; };
30290
30363
  AppInMemoryTable.propDecorators = {
@@ -30301,7 +30374,7 @@
30301
30374
  SUBSCRIBE_JOB_PROGRESSION_ERROR: 50010
30302
30375
  };
30303
30376
 
30304
- var moment$6 = momentImported__namespace;
30377
+ var moment$4 = momentImported__namespace;
30305
30378
  var USER_EVENT_SERVICE = new i0.InjectionToken('UserEventService');
30306
30379
  var AbstractUserEventService = /** @class */ (function (_super) {
30307
30380
  __extends(AbstractUserEventService, _super);
@@ -30823,7 +30896,7 @@
30823
30896
  };
30824
30897
  AbstractUserEventService.prototype.resetCount = function () {
30825
30898
  this._countSubject.next(undefined);
30826
- this.resetCountDate = moment$6();
30899
+ this.resetCountDate = moment$4();
30827
30900
  // restart listening count changes
30828
30901
  this.startListenCountChanges();
30829
30902
  };
@@ -30927,7 +31000,7 @@
30927
31000
  if (!userEvents.length)
30928
31001
  return [2 /*return*/];
30929
31002
  // set read date
30930
- userEvents.forEach(function (userEvent) { return userEvent.readDate = moment$6(); });
31003
+ userEvents.forEach(function (userEvent) { return userEvent.readDate = moment$4(); });
30931
31004
  localEntities = userEvents.filter(function (userEvent) { return !userEvent.id || userEvent.id < 0; });
30932
31005
  remoteEntities = userEvents.filter(function (userEvent) { return userEvent.id > 0; });
30933
31006
  // save local entities
@@ -31973,7 +32046,7 @@
31973
32046
  ];
31974
32047
 
31975
32048
  var Mutations = {
31976
- 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 }"])))
32049
+ 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 }"])))
31977
32050
  };
31978
32051
  var MessageService = /** @class */ (function (_super) {
31979
32052
  __extends(MessageService, _super);
@@ -32047,7 +32120,7 @@
32047
32120
  };
32048
32121
  return MessageService;
32049
32122
  }(BaseGraphqlService));
32050
- 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" });
32123
+ 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" });
32051
32124
  MessageService.decorators = [
32052
32125
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
32053
32126
  ];
@@ -32057,7 +32130,7 @@
32057
32130
  { type: i1$5.ToastController },
32058
32131
  { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
32059
32132
  ]; };
32060
- var templateObject_1$3;
32133
+ var templateObject_1$1;
32061
32134
 
32062
32135
  var PersonFilter_1;
32063
32136
  // @dynamic
@@ -32116,16 +32189,16 @@
32116
32189
  ], exports.PersonFilter);
32117
32190
 
32118
32191
  var PersonFragments = {
32119
- 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 }"])))
32192
+ 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 }"])))
32120
32193
  };
32121
32194
  // Load persons query
32122
32195
  var PersonQueries = {
32123
- 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),
32124
- 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)
32196
+ 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),
32197
+ 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)
32125
32198
  };
32126
32199
  var PersonMutations = {
32127
- 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),
32128
- 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 }"])))
32200
+ 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),
32201
+ 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 }"])))
32129
32202
  };
32130
32203
  var PersonService = /** @class */ (function (_super_1) {
32131
32204
  __extends(PersonService, _super_1);
@@ -32246,7 +32319,7 @@
32246
32319
  };
32247
32320
  return PersonService;
32248
32321
  }(BaseEntityService));
32249
- 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" });
32322
+ 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" });
32250
32323
  PersonService.decorators = [
32251
32324
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
32252
32325
  ];
@@ -32256,7 +32329,7 @@
32256
32329
  { type: NetworkService },
32257
32330
  { type: EntitiesStorage }
32258
32331
  ]; };
32259
- var templateObject_1$4, templateObject_2$2, templateObject_3$2, templateObject_4$2, templateObject_5$2;
32332
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
32260
32333
 
32261
32334
  var PersonValidatorService = /** @class */ (function () {
32262
32335
  function PersonValidatorService(formBuilder, accountValidatorService) {
@@ -32279,7 +32352,7 @@
32279
32352
  };
32280
32353
  return PersonValidatorService;
32281
32354
  }());
32282
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
32355
+ 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" });
32283
32356
  PersonValidatorService.decorators = [
32284
32357
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
32285
32358
  ];
@@ -32542,17 +32615,17 @@
32542
32615
  ];
32543
32616
  AdminModule.ctorParameters = function () { return []; };
32544
32617
 
32545
- var ɵ0$c = {
32618
+ var ɵ0 = {
32546
32619
  profile: 'ADMIN'
32547
32620
  };
32548
- var routes = [
32621
+ var routes$6 = [
32549
32622
  {
32550
32623
  path: 'users',
32551
32624
  pathMatch: 'full',
32552
32625
  component: UsersPage,
32553
32626
  canActivate: [AuthGuardService],
32554
32627
  canDeactivate: [ComponentDirtyGuard],
32555
- data: ɵ0$c
32628
+ data: ɵ0
32556
32629
  }
32557
32630
  ];
32558
32631
  var AdminRoutingModule = /** @class */ (function () {
@@ -32565,30 +32638,30 @@
32565
32638
  imports: [
32566
32639
  SharedRoutingModule,
32567
32640
  AdminModule,
32568
- i3.RouterModule.forChild(routes)
32641
+ i3.RouterModule.forChild(routes$6)
32569
32642
  ],
32570
32643
  exports: [i3.RouterModule]
32571
32644
  },] }
32572
32645
  ];
32573
32646
 
32574
- var EntityTestClass = /** @class */ (function () {
32647
+ var EntityTestClass$1 = /** @class */ (function () {
32575
32648
  function EntityTestClass() {
32576
32649
  }
32577
32650
  return EntityTestClass;
32578
32651
  }());
32579
- var FAKE_ENTITIES = [
32652
+ var FAKE_ENTITIES$1 = [
32580
32653
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
32581
32654
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
32582
32655
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
32583
32656
  ];
32584
- function deepCopy(values, size) {
32657
+ function deepCopy$1(values, size) {
32585
32658
  if (isNil(size)) {
32586
- return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
32659
+ return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
32587
32660
  }
32588
32661
  var result = [];
32589
32662
  var i = 1;
32590
32663
  while (result.length < size) {
32591
- result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
32664
+ result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
32592
32665
  var name = entity.name + ' #' + i;
32593
32666
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
32594
32667
  }));
@@ -32598,7 +32671,7 @@
32598
32671
  var AutocompleteTestPage = /** @class */ (function () {
32599
32672
  function AutocompleteTestPage(formBuilder) {
32600
32673
  this.formBuilder = formBuilder;
32601
- this._items = deepCopy(FAKE_ENTITIES, 100);
32674
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
32602
32675
  this._$items = new rxjs.BehaviorSubject(undefined);
32603
32676
  this.autocompleteFields = new MatAutocompleteConfigHolder();
32604
32677
  this.memoryHide = false;
@@ -32644,7 +32717,7 @@
32644
32717
  });
32645
32718
  // From items
32646
32719
  this.autocompleteFields.add('entity-items-large', {
32647
- items: FAKE_ENTITIES.slice(),
32720
+ items: FAKE_ENTITIES$1.slice(),
32648
32721
  attributes: ['label', 'name', 'description', 'comments'],
32649
32722
  displayWith: this.entityToString
32650
32723
  });
@@ -32680,14 +32753,14 @@
32680
32753
  var _this = this;
32681
32754
  return __generator(this, function (_a) {
32682
32755
  data = {
32683
- entity: deepCopy(FAKE_ENTITIES)[0],
32684
- farEntity: deepCopy(FAKE_ENTITIES)[2],
32756
+ entity: deepCopy$1(FAKE_ENTITIES$1)[0],
32757
+ farEntity: deepCopy$1(FAKE_ENTITIES$1)[2],
32685
32758
  // This item is NOT in the items list => i should be displayed anyway
32686
32759
  missingEntity: {
32687
32760
  id: -1, label: '??', name: 'Missing item'
32688
32761
  },
32689
- disableEntity: deepCopy(FAKE_ENTITIES)[2],
32690
- entities: deepCopy(FAKE_ENTITIES)
32762
+ disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2],
32763
+ entities: deepCopy$1(FAKE_ENTITIES$1)
32691
32764
  };
32692
32765
  this.form.setValue(data);
32693
32766
  // Load observables
@@ -32859,13 +32932,13 @@
32859
32932
  { type: i1.FormBuilder }
32860
32933
  ]; };
32861
32934
 
32862
- var moment$7 = momentImported__namespace;
32935
+ var moment$3 = momentImported__namespace;
32863
32936
  var SwipeTestPage = /** @class */ (function () {
32864
32937
  function SwipeTestPage(formBuilder, dateFormatPipe) {
32865
32938
  this.formBuilder = formBuilder;
32866
32939
  this.dateFormatPipe = dateFormatPipe;
32867
32940
  this.$dates = new rxjs.BehaviorSubject(undefined);
32868
- this._today = moment$7().startOf('day');
32941
+ this._today = moment$3().startOf('day');
32869
32942
  this.form = formBuilder.group({
32870
32943
  empty: [null, i1.Validators.required],
32871
32944
  date: [null, i1.Validators.compose([i1.Validators.required, SharedValidators.validDate])],
@@ -32879,7 +32952,7 @@
32879
32952
  var _this = this;
32880
32953
  var dates = [];
32881
32954
  for (var d = 0; d < 7; d++) {
32882
- dates[d] = moment$7(this._today).add(d - 3, 'day');
32955
+ dates[d] = moment$3(this._today).add(d - 3, 'day');
32883
32956
  }
32884
32957
  this.$dates.next(dates);
32885
32958
  this.loadData();
@@ -32926,7 +32999,7 @@
32926
32999
  { type: DateFormatPipe }
32927
33000
  ]; };
32928
33001
 
32929
- var moment$8 = momentImported__namespace;
33002
+ var moment$2 = momentImported__namespace;
32930
33003
  var DateTimeTestPage = /** @class */ (function () {
32931
33004
  function DateTimeTestPage(platform, formBuilder, cd) {
32932
33005
  this.platform = platform;
@@ -32964,7 +33037,7 @@
32964
33037
  var now, data;
32965
33038
  var _this = this;
32966
33039
  return __generator(this, function (_a) {
32967
- now = moment$8();
33040
+ now = moment$2();
32968
33041
  data = {
32969
33042
  empty: null,
32970
33043
  emptyRequired: null,
@@ -33034,12 +33107,12 @@
33034
33107
  { type: i0.ChangeDetectorRef }
33035
33108
  ]; };
33036
33109
 
33037
- var EntityTestClass$1 = /** @class */ (function () {
33110
+ var EntityTestClass = /** @class */ (function () {
33038
33111
  function EntityTestClass() {
33039
33112
  }
33040
33113
  return EntityTestClass;
33041
33114
  }());
33042
- var FAKE_ENTITIES$1 = [
33115
+ var FAKE_ENTITIES = [
33043
33116
  { id: 1, label: 'AAA', name: 'Item A' },
33044
33117
  { id: 2, label: 'BBB', name: 'Item B' },
33045
33118
  { id: 3, label: 'CCC', name: 'Item C' },
@@ -33048,14 +33121,14 @@
33048
33121
  { id: 6, label: 'FFF', name: 'Item F' },
33049
33122
  { id: 7, label: 'GGG', name: 'Item G' }
33050
33123
  ];
33051
- function deepCopy$1(values, size) {
33124
+ function deepCopy(values, size) {
33052
33125
  if (isNil(size)) {
33053
- return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
33126
+ return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
33054
33127
  }
33055
33128
  var result = [];
33056
33129
  var i = 1;
33057
33130
  while (result.length < size) {
33058
- result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
33131
+ result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
33059
33132
  var name = entity.name + ' #' + i;
33060
33133
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
33061
33134
  }));
@@ -33065,7 +33138,7 @@
33065
33138
  var ChipsTestPage = /** @class */ (function () {
33066
33139
  function ChipsTestPage(formBuilder) {
33067
33140
  this.formBuilder = formBuilder;
33068
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
33141
+ this._items = deepCopy(FAKE_ENTITIES, 100);
33069
33142
  this._$items = new rxjs.BehaviorSubject(undefined);
33070
33143
  this.autocompleteFields = new MatAutocompleteConfigHolder();
33071
33144
  this.appearance = 'legacy';
@@ -33109,7 +33182,7 @@
33109
33182
  var items, data;
33110
33183
  var _this = this;
33111
33184
  return __generator(this, function (_a) {
33112
- items = deepCopy$1(FAKE_ENTITIES$1);
33185
+ items = deepCopy(FAKE_ENTITIES);
33113
33186
  data = {
33114
33187
  entity: items.slice(0, 1),
33115
33188
  entityInitial: items.slice(1, 2),
@@ -33246,7 +33319,7 @@
33246
33319
  { type: i1.FormBuilder }
33247
33320
  ]; };
33248
33321
 
33249
- var moment$9 = momentImported__namespace;
33322
+ var moment$1 = momentImported__namespace;
33250
33323
  var DateTestPage = /** @class */ (function () {
33251
33324
  function DateTestPage(formBuilder, cd) {
33252
33325
  this.formBuilder = formBuilder;
@@ -33283,7 +33356,7 @@
33283
33356
  var now, nowAtMahe, data;
33284
33357
  var _this = this;
33285
33358
  return __generator(this, function (_a) {
33286
- now = moment$9();
33359
+ now = moment$1();
33287
33360
  nowAtMahe = now.clone().tz(this.timezone).startOf('day');
33288
33361
  data = {
33289
33362
  empty: null,
@@ -33365,7 +33438,7 @@
33365
33438
  { label: 'Shared directives', divider: true },
33366
33439
  { label: 'Badge icon directive', page: '/testing/shared/badge-icon' }
33367
33440
  ];
33368
- var routes$1 = [
33441
+ var routes$5 = [
33369
33442
  {
33370
33443
  path: '',
33371
33444
  pathMatch: 'full',
@@ -33425,7 +33498,7 @@
33425
33498
  i1.ReactiveFormsModule,
33426
33499
  SharedMaterialModule,
33427
33500
  i1$2.TranslateModule.forChild(),
33428
- i3.RouterModule.forChild(routes$1)
33501
+ i3.RouterModule.forChild(routes$5)
33429
33502
  ],
33430
33503
  declarations: [
33431
33504
  DateTimeTestPage,
@@ -33487,7 +33560,7 @@
33487
33560
  { type: i1$2.TranslateService }
33488
33561
  ]; };
33489
33562
 
33490
- var routes$2 = [
33563
+ var routes$4 = [
33491
33564
  {
33492
33565
  path: 'toast',
33493
33566
  pathMatch: 'full',
@@ -33505,7 +33578,7 @@
33505
33578
  i1$4.CommonModule,
33506
33579
  i1$5.IonicModule,
33507
33580
  i1$2.TranslateModule.forChild(),
33508
- i3.RouterModule.forChild(routes$2)
33581
+ i3.RouterModule.forChild(routes$4)
33509
33582
  ],
33510
33583
  declarations: [
33511
33584
  ToastTestingPage
@@ -33831,26 +33904,33 @@
33831
33904
  console.debug('[test-table] Updating data...');
33832
33905
  this.markAsLoading();
33833
33906
  if (isNil(this.data)) {
33834
- this.data = this.generateData(0, this.enableInfiniteScroll ? this.defaultPageSize : TableTestPage.maxRowCount);
33907
+ this.data = this.generateData(0, TableTestPage.maxRowCount);
33835
33908
  }
33836
33909
  this.dataService.setValue(this.data, { emitEvent: false });
33837
33910
  this.onRefresh.emit();
33838
- if (this.infiniteScroll) {
33839
- this.infiniteScroll.disabled = !this.infiniteScroll || this.data.length >= TableTestPage.maxRowCount;
33840
- }
33841
33911
  };
33842
- TableTestPage.prototype.loadMore = function (event) {
33843
- var _this = this;
33844
- console.debug('[table-test] Loading more...', event);
33845
- setTimeout(function () {
33846
- _this.data = __spread(_this.data, _this.generateData(_this.data.length, 20));
33847
- _this.dataService.setValue(_this.data, { emitEvent: false });
33848
- _this.defaultPageSize = _this.data.length;
33849
- _this.infiniteScroll.disabled = _this.data.length >= 100;
33850
- _this.doRefresh(event);
33851
- }, 500);
33912
+ TableTestPage.prototype.fetchMore = function (event) {
33913
+ return __awaiter(this, void 0, void 0, function () {
33914
+ var fetched;
33915
+ return __generator(this, function (_a) {
33916
+ switch (_a.label) {
33917
+ case 0:
33918
+ console.debug('[table-test] Loading more...', event);
33919
+ return [4 /*yield*/, this._dataSource.fetchMore()];
33920
+ case 1:
33921
+ fetched = _a.sent();
33922
+ if (!(fetched && (event === null || event === void 0 ? void 0 : event.target) && event.target.complete)) return [3 /*break*/, 3];
33923
+ return [4 /*yield*/, this.waitIdle()];
33924
+ case 2:
33925
+ _a.sent();
33926
+ event.target.complete();
33927
+ _a.label = 3;
33928
+ case 3: return [2 /*return*/];
33929
+ }
33930
+ });
33931
+ });
33852
33932
  };
33853
- TableTestPage.prototype.save = function () {
33933
+ TableTestPage.prototype.save = function (opts) {
33854
33934
  var _super = Object.create(null, {
33855
33935
  save: { get: function () { return _super_1.prototype.save; } }
33856
33936
  });
@@ -33858,7 +33938,7 @@
33858
33938
  var saved;
33859
33939
  return __generator(this, function (_a) {
33860
33940
  switch (_a.label) {
33861
- case 0: return [4 /*yield*/, _super.save.call(this)];
33941
+ case 0: return [4 /*yield*/, _super.save.call(this, opts)];
33862
33942
  case 1:
33863
33943
  saved = _a.sent();
33864
33944
  if (saved) {
@@ -33930,7 +34010,7 @@
33930
34010
  TableTestPage.decorators = [
33931
34011
  { type: i0.Component, args: [{
33932
34012
  selector: 'app-table-testing',
33933
- 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",
34013
+ 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",
33934
34014
  providers: [
33935
34015
  {
33936
34016
  provide: AppValidatorService,
@@ -34027,7 +34107,7 @@
34027
34107
  { type: i1$5.PopoverController }
34028
34108
  ]; };
34029
34109
 
34030
- var routes$4 = [
34110
+ var routes$2 = [
34031
34111
  {
34032
34112
  path: 'text-popover',
34033
34113
  pathMatch: 'full',
@@ -34045,7 +34125,7 @@
34045
34125
  i1$4.CommonModule,
34046
34126
  i1$5.IonicModule,
34047
34127
  i1$2.TranslateModule.forChild(),
34048
- i3.RouterModule.forChild(routes$4)
34128
+ i3.RouterModule.forChild(routes$2)
34049
34129
  ],
34050
34130
  declarations: [
34051
34131
  TextPopoverTestingPage
@@ -34062,7 +34142,7 @@
34062
34142
  { label: 'Table', page: '/testing/core/table' },
34063
34143
  { label: 'Text popover', page: '/testing/core/text-popover' }
34064
34144
  ];
34065
- var routes$5 = [
34145
+ var routes$1 = [
34066
34146
  {
34067
34147
  path: '',
34068
34148
  pathMatch: 'full',
@@ -34089,7 +34169,7 @@
34089
34169
  imports: [
34090
34170
  i1$4.CommonModule,
34091
34171
  i1$2.TranslateModule.forChild(),
34092
- i3.RouterModule.forChild(routes$5),
34172
+ i3.RouterModule.forChild(routes$1),
34093
34173
  // Sub modules
34094
34174
  TableTestingModule,
34095
34175
  TextPopoverTestingModule
@@ -34444,7 +34524,7 @@
34444
34524
  { type: Environment, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [ENVIRONMENT,] }] }
34445
34525
  ]; };
34446
34526
 
34447
- var moment$a = momentImported__namespace;
34527
+ var moment = momentImported__namespace;
34448
34528
  var UserEventTestingPage = /** @class */ (function () {
34449
34529
  function UserEventTestingPage(userEventService, router, alertController, translateService) {
34450
34530
  var _this = this;
@@ -34510,7 +34590,7 @@
34510
34590
  type: 'message',
34511
34591
  level: 'INFO',
34512
34592
  message: 'message test message test message test message test message test message test message test message test',
34513
- creationDate: moment$a(),
34593
+ creationDate: moment(),
34514
34594
  }));
34515
34595
  };
34516
34596
  UserEventTestingPage.prototype.addError = function () {
@@ -34520,7 +34600,7 @@
34520
34600
  type: 'upload',
34521
34601
  level: 'ERROR',
34522
34602
  message: 'message error',
34523
- creationDate: moment$a(),
34603
+ creationDate: moment(),
34524
34604
  }));
34525
34605
  };
34526
34606
  UserEventTestingPage.prototype.addWarning = function () {
@@ -34530,7 +34610,7 @@
34530
34610
  type: 'download',
34531
34611
  level: 'WARNING',
34532
34612
  message: 'message warning',
34533
- creationDate: moment$a(),
34613
+ creationDate: moment(),
34534
34614
  }));
34535
34615
  };
34536
34616
  UserEventTestingPage.prototype.addDebug = function () {
@@ -34540,7 +34620,7 @@
34540
34620
  type: 'debug',
34541
34621
  level: 'DEBUG',
34542
34622
  message: 'message DEBUG',
34543
- creationDate: moment$a(),
34623
+ creationDate: moment(),
34544
34624
  }));
34545
34625
  };
34546
34626
  UserEventTestingPage.prototype.addNotificationWithLink = function () {
@@ -34551,7 +34631,7 @@
34551
34631
  type: 'message',
34552
34632
  level: 'INFO',
34553
34633
  message: 'message with link',
34554
- creationDate: moment$a(),
34634
+ creationDate: moment(),
34555
34635
  actions: [{
34556
34636
  name: 'click here',
34557
34637
  iconRef: {
@@ -34569,7 +34649,7 @@
34569
34649
  type: 'message',
34570
34650
  level: 'INFO',
34571
34651
  message: 'message with action',
34572
- creationDate: moment$a(),
34652
+ creationDate: moment(),
34573
34653
  actions: [
34574
34654
  {
34575
34655
  name: 'click here',
@@ -34643,7 +34723,7 @@
34643
34723
  type: 'message',
34644
34724
  level: 'INFO',
34645
34725
  message: 'message with action',
34646
- creationDate: moment$a(),
34726
+ creationDate: moment(),
34647
34727
  actions: [
34648
34728
  {
34649
34729
  default: true,
@@ -34701,7 +34781,7 @@
34701
34781
  { label: 'User event', page: '/testing/social/user-event' },
34702
34782
  { label: 'Job progression', page: '/testing/social/job-progression' }
34703
34783
  ];
34704
- var routes$6 = [
34784
+ var routes = [
34705
34785
  {
34706
34786
  path: 'job-progression',
34707
34787
  pathMatch: 'full',
@@ -34723,7 +34803,7 @@
34723
34803
  imports: [
34724
34804
  i1$4.CommonModule,
34725
34805
  i1$2.TranslateModule.forChild(),
34726
- i3.RouterModule.forChild(routes$6),
34806
+ i3.RouterModule.forChild(routes),
34727
34807
  JobTestingModule,
34728
34808
  UserEventTestingModule
34729
34809
  ],
@@ -34783,7 +34863,6 @@
34783
34863
  exports.AppTabEditor = AppTabEditor;
34784
34864
  exports.AppTabEditorOptions = AppTabEditorOptions;
34785
34865
  exports.AppTable = AppTable;
34786
- exports.AppTableDataSourceOptions = AppTableDataSourceOptions;
34787
34866
  exports.AppTableUtils = AppTableUtils;
34788
34867
  exports.AppUserEventNotificationIcon = AppUserEventNotificationIcon;
34789
34868
  exports.AppValidatorService = AppValidatorService;
@@ -34867,7 +34946,7 @@
34867
34946
  exports.FormGetGroupPipe = FormGetGroupPipe;
34868
34947
  exports.FormGetPipe = FormGetPipe;
34869
34948
  exports.FormGetValuePipe = FormGetValuePipe;
34870
- exports.Fragments = Fragments$1;
34949
+ exports.Fragments = Fragments;
34871
34950
  exports.GraphqlService = GraphqlService;
34872
34951
  exports.HAMMER_PRESS_TIME = HAMMER_PRESS_TIME;
34873
34952
  exports.HAMMER_TAP_TIME = HAMMER_TAP_TIME;
@@ -35185,25 +35264,25 @@
35185
35264
  exports.waitForTrue = waitForTrue;
35186
35265
  exports.waitIdle = waitIdle;
35187
35266
  exports.waitWhilePending = waitWhilePending;
35188
- exports0 = ɵ0;
35189
- exports.ɵa = CustomReuseStrategy;
35190
- exports.ɵb = MatNumpadDomService;
35191
- exports.ɵc = isFocusableElement;
35192
- exports.ɵd = RegisterForm;
35193
- exports.ɵe = AccountValidatorService;
35194
- exports.ɵf = RegisterModal;
35195
- exports.ɵg = UserSettingsValidatorService;
35196
- exports.ɵh = LocalSettingsValidatorService;
35197
- exports.ɵi = AppUpdateOfflineModeCard;
35198
- exports.ɵj = UserEventNotificationList;
35199
- exports.ɵk = JobProgressionList;
35200
- exports.ɵl = DateTestPage;
35201
- exports.ɵm = NumpadTestPage;
35202
- exports.ɵn = MatBadgeIconTestPage;
35203
- exports.ɵo = ToastTestingModule;
35204
- exports.ɵp = ToastTestingPage;
35267
+ exports["ɵ0"] = ɵ0$c;
35268
+ exports["ɵa"] = CustomReuseStrategy;
35269
+ exports["ɵb"] = MatNumpadDomService;
35270
+ exports["ɵc"] = isFocusableElement;
35271
+ exports["ɵd"] = RegisterForm;
35272
+ exports["ɵe"] = AccountValidatorService;
35273
+ exports["ɵf"] = RegisterModal;
35274
+ exports["ɵg"] = UserSettingsValidatorService;
35275
+ exports["ɵh"] = LocalSettingsValidatorService;
35276
+ exports["ɵi"] = AppUpdateOfflineModeCard;
35277
+ exports["ɵj"] = UserEventNotificationList;
35278
+ exports["ɵk"] = JobProgressionList;
35279
+ exports["ɵl"] = DateTestPage;
35280
+ exports["ɵm"] = NumpadTestPage;
35281
+ exports["ɵn"] = MatBadgeIconTestPage;
35282
+ exports["ɵo"] = ToastTestingModule;
35283
+ exports["ɵp"] = ToastTestingPage;
35205
35284
 
35206
35285
  Object.defineProperty(exports, '__esModule', { value: true });
35207
35286
 
35208
- })));
35287
+ }));
35209
35288
  //# sourceMappingURL=sumaris-net.ngx-components.umd.js.map