@sumaris-net/ngx-components 1.17.1 → 1.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/bundles/sumaris-net.ngx-components.umd.js +623 -540
  2. package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
  3. package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
  4. package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
  5. package/doc/changelog.md +9 -0
  6. package/esm2015/src/app/core/graphql/graphql.service.js +3 -2
  7. package/esm2015/src/app/core/services/config.service.js +3 -2
  8. package/esm2015/src/app/core/services/local-settings.service.js +2 -2
  9. package/esm2015/src/app/core/services/platform.service.js +12 -11
  10. package/esm2015/src/app/shared/directives/autofocus.directive.js +4 -2
  11. package/esm2015/src/app/shared/hotkeys/hotkeys.service.js +1 -1
  12. package/esm2015/src/app/shared/inputs.js +1 -1
  13. package/esm2015/src/app/shared/material/autocomplete/material.autocomplete.js +103 -61
  14. package/esm2015/src/app/shared/material/autocomplete/testing/autocomplete.test.js +20 -5
  15. package/esm2015/src/app/shared/material/chips/material.chips.js +26 -23
  16. package/esm2015/src/app/shared/material/datetime/material.date.js +8 -9
  17. package/esm2015/src/app/shared/material/datetime/material.dateshort.js +8 -8
  18. package/esm2015/src/app/shared/material/datetime/material.datetime.js +7 -8
  19. package/esm2015/src/app/shared/material/datetime/testing/mat-date-time.test.js +3 -3
  20. package/esm2015/src/app/shared/material/datetime/testing/mat-date.test.js +4 -7
  21. package/esm2015/src/app/shared/material/latlong/material.latlong.js +4 -6
  22. package/esm2015/src/app/shared/material/material.module.js +1 -1
  23. package/esm2015/src/app/shared/platforms.js +2 -2
  24. package/esm2015/src/app/shared/services/entity-service.class.js +1 -1
  25. package/fesm2015/sumaris-net.ngx-components.js +596 -529
  26. package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/app/core/services/platform.service.d.ts +1 -1
  29. package/src/app/shared/directives/autofocus.directive.d.ts +2 -1
  30. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +8 -3
  31. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +5 -3
  32. package/src/app/shared/material/datetime/material.date.d.ts +2 -4
  33. package/src/app/shared/material/datetime/material.dateshort.d.ts +2 -3
  34. package/src/app/shared/material/datetime/material.datetime.d.ts +1 -3
  35. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +1 -3
  36. package/src/app/shared/material/latlong/material.latlong.d.ts +1 -3
  37. package/src/app/shared/services/entity-service.class.d.ts +4 -1
  38. package/src/theme/_ngx-components.scss +67 -20
  39. package/sumaris-net.ngx-components.metadata.json +1 -1
@@ -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('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('moment-timezone'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/animations'), 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')) :
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', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', 'moment-timezone', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/animations', '@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'], 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['ngx-translate'].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global['moment-timezone'], global['ionic-native'].keyboard.ngx, global['angular2-text-mask'], global['ngx-material-timepicker'], global.ng.material.datepicker, global.ng.animations, 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']));
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, i1$2, i1$5, momentImported, i1$1, momentTZImported, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, animations, 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) { '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('moment-timezone'), 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')) :
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', 'moment-timezone', '@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'], 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["moment-timezone"], 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"]));
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, momentTZImported, 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) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -15,23 +15,46 @@
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);
30
36
  var momentTZImported__namespace = /*#__PURE__*/_interopNamespace(momentTZImported);
37
+ var i3__namespace$3 = /*#__PURE__*/_interopNamespace(i3);
38
+ var i1__namespace$5 = /*#__PURE__*/_interopNamespace(i1$6);
39
+ var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$1);
40
+ var i2__namespace = /*#__PURE__*/_interopNamespace(i2$2);
41
+ var i3__namespace = /*#__PURE__*/_interopNamespace(i3$1);
42
+ var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
31
43
  var uuidv4Imported__namespace = /*#__PURE__*/_interopNamespace(uuidv4Imported);
44
+ var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$2);
45
+ var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
46
+ var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
47
+ var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
48
+ var i2__namespace$4 = /*#__PURE__*/_interopNamespace(i2$4);
49
+ var i2__namespace$3 = /*#__PURE__*/_interopNamespace(i2$3);
32
50
  var QueueLink__default = /*#__PURE__*/_interopDefaultLegacy(QueueLink);
33
51
  var SerializingLink__default = /*#__PURE__*/_interopDefaultLegacy(SerializingLink);
34
52
  var loggerLink__default = /*#__PURE__*/_interopDefaultLegacy(loggerLink);
53
+ var i3__namespace$2 = /*#__PURE__*/_interopNamespace(i3$3);
54
+ var i14__namespace = /*#__PURE__*/_interopNamespace(i14);
55
+ var i15__namespace = /*#__PURE__*/_interopNamespace(i15);
56
+ var i17__namespace = /*#__PURE__*/_interopNamespace(i17);
57
+ var i18__namespace = /*#__PURE__*/_interopNamespace(i18);
35
58
 
36
59
  var ENVIRONMENT = new i0.InjectionToken('ENV');
37
60
  var Environment = /** @class */ (function () {
@@ -1219,6 +1242,136 @@
1219
1242
  .pipe(operators.filter(function () { return isEnd(); }));
1220
1243
  }
1221
1244
 
1245
+ // import the required animation functions from the angular animations module
1246
+ var fadeInAnimation =
1247
+ // trigger name for attaching this animation to an element using the [@triggerName] syntax
1248
+ animations.trigger('fadeInAnimation', [
1249
+ // route 'enter' transition
1250
+ animations.transition(':enter', [
1251
+ // css styles at start of transition
1252
+ animations.style({ opacity: 0 }),
1253
+ // animation and styles at end of transition
1254
+ animations.animate('.3s', animations.style({ opacity: 1 }))
1255
+ ]),
1256
+ ]);
1257
+ var fadeInOutAnimation =
1258
+ // trigger name for attaching this animation to an element using the [@triggerName] syntax
1259
+ animations.trigger('fadeInOutAnimation', [
1260
+ // route 'enter' transition
1261
+ animations.transition(':enter', [
1262
+ // css styles at start of transition
1263
+ animations.style({ opacity: 0 }),
1264
+ // animation and styles at end of transition
1265
+ animations.animate('.3s', animations.style({ opacity: 1 }))
1266
+ ]),
1267
+ // route 'leave' transition
1268
+ animations.transition(':leave', [
1269
+ // animation and styles at end of transition
1270
+ animations.animate('.5s ease-in-out', animations.style({
1271
+ opacity: 0
1272
+ }))
1273
+ ]),
1274
+ ]);
1275
+ var slideInOutAnimation =
1276
+ // trigger name for attaching this animation to an element using the [@triggerName] syntax
1277
+ animations.trigger('slideInOutAnimation', [
1278
+ // end state styles for route container (host)
1279
+ animations.state('*', animations.style({
1280
+ // the view covers the whole screen with a semi tranparent background
1281
+ position: 'relative',
1282
+ top: 0,
1283
+ left: 0,
1284
+ right: 0,
1285
+ bottom: 0,
1286
+ opacity: 1
1287
+ })),
1288
+ // route 'enter' transition
1289
+ animations.transition(':enter', [
1290
+ // styles at start of transition
1291
+ animations.style({
1292
+ // start with the content positioned off the right of the screen,
1293
+ // -400% is required instead of -100% because the negative position adds to the width of the element
1294
+ left: '400%',
1295
+ // start with background opacity set to 0 (invisible)
1296
+ opacity: 0
1297
+ }),
1298
+ // animation and styles at end of transition
1299
+ animations.animate('.3s ease-in-out', animations.style({
1300
+ // transition the right position to 0 which slides the content into view
1301
+ left: 0,
1302
+ // transition the background opacity to 0.8 to fade it in
1303
+ opacity: 0.8
1304
+ }))
1305
+ ]),
1306
+ // route 'leave' transition
1307
+ animations.transition(':leave', [
1308
+ // animation and styles at end of transition
1309
+ animations.animate('.5s ease-in-out', animations.style({
1310
+ // transition the right position to -400% which slides the content out of view
1311
+ left: '400%',
1312
+ // transition the background opacity to 0 to fade it out
1313
+ opacity: 0
1314
+ }))
1315
+ ])
1316
+ ]);
1317
+ var slideUpDownAnimation =
1318
+ // trigger name for attaching this animation to an element using the [@triggerName] syntax
1319
+ animations.trigger('slideUpDownAnimation', [
1320
+ // end state styles for route container (host)
1321
+ animations.state('*', animations.style({
1322
+ transform: 'translateY(0)',
1323
+ opacity: 1
1324
+ })),
1325
+ // route 'enter' transition
1326
+ animations.transition(':enter', [
1327
+ // styles at start of transition
1328
+ animations.style({
1329
+ transform: 'translateY(-400%)',
1330
+ opacity: 0
1331
+ }),
1332
+ // animation and styles at end of transition
1333
+ animations.animate('.3s ease-in-out', animations.style({
1334
+ transform: 'translateY(0)',
1335
+ opacity: 1
1336
+ }))
1337
+ ]),
1338
+ // route 'leave' transition
1339
+ animations.transition(':leave', [
1340
+ // animation and styles at end of transition
1341
+ animations.animate('.5s ease-in-out', animations.style({
1342
+ transform: 'translateY(-100%)',
1343
+ opacity: 0
1344
+ }))
1345
+ ])
1346
+ ]);
1347
+
1348
+ /* ---
1349
+ * Source: https://github.com/ionic-team/ionic-framework/blob/b0d53ca73619585671d8cf4dc24e47f826495a0a/core/src/utils/platform.ts
1350
+ * --- */
1351
+ var matchMedia = function (win, query) { return win.matchMedia(query).matches; };
1352
+ var testUserAgent = function (win, expr) {
1353
+ var userAgent = win.navigator.userAgent || win.navigator.vendor || window.opera;
1354
+ return expr.test(userAgent);
1355
+ };
1356
+ var isWindows = function (win) { return testUserAgent(win, /windows/i); };
1357
+ var isTouchUi = function (win) { return matchMedia(win, '(any-pointer:coarse)'); };
1358
+ var isMobile = function (win) { return isCordova(window) || isAndroid(win) || isIOS(window) || (isTouchUi(win) && !isWindows(win)); };
1359
+ var isIpad = function (win) {
1360
+ // iOS 12 and below
1361
+ if (testUserAgent(win, /iPad/i)) {
1362
+ return true;
1363
+ }
1364
+ // iOS 13+
1365
+ if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {
1366
+ return true;
1367
+ }
1368
+ return false;
1369
+ };
1370
+ var ɵ0$c = isIpad;
1371
+ var isIOS = function (win) { return testUserAgent(win, /iPhone|iPod/i) || isIpad(win); };
1372
+ var isAndroid = function (win) { return testUserAgent(win, /android|sink/i); };
1373
+ var isCordova = function (win) { return !!(win['cordova'] || win['phonegap'] || win['PhoneGap']); };
1374
+
1222
1375
  var MatAutocompleteConfigHolder = /** @class */ (function () {
1223
1376
  function MatAutocompleteConfigHolder(options) {
1224
1377
  this.options = options;
@@ -1240,8 +1393,8 @@
1240
1393
  // Keep original the function from options, when exists
1241
1394
  var attributesOrFn = attributes.map(function (a, index) { return typeof a === 'function' && options.attributes[index] || a; });
1242
1395
  var filter = Object.assign({ searchAttribute: attributes.length === 1 ? attributes[0] : undefined, searchAttributes: attributes.length > 1 ? attributes : undefined }, options.filter);
1243
- var displayWith = options.displayWith || (function (obj) { return obj && joinPropertiesPath(obj, attributes); });
1244
- var equals = options.equals || (function (o1, o2) { return o1 && o2 && o1.id === o2.id; });
1396
+ var displayWith = options.displayWith || MatAutocompleteFieldUtils.createDisplayFn(attributes, options.multiple);
1397
+ var equals = options.equals || MatAutocompleteFieldUtils.defaultEquals;
1245
1398
  var config = Object.assign(Object.assign({}, options), { attributes: attributesOrFn, suggestFn: suggestFn,
1246
1399
  filter: filter,
1247
1400
  displayWith: displayWith,
@@ -1257,14 +1410,34 @@
1257
1410
  };
1258
1411
  return MatAutocompleteConfigHolder;
1259
1412
  }());
1260
- var noop = function (_) { };
1261
- var ɵ0 = noop;
1413
+ var MatAutocompleteFieldUtils = /** @class */ (function () {
1414
+ function MatAutocompleteFieldUtils() {
1415
+ }
1416
+ MatAutocompleteFieldUtils.createDisplayFn = function (displayAttributes, multiple) {
1417
+ // if multiple (manage array)
1418
+ if (multiple) {
1419
+ return function (value) {
1420
+ return Array.isArray(value)
1421
+ ? (value || []).map(function (obj) { return obj && joinPropertiesPath(obj, displayAttributes); }).join(', ')
1422
+ : value && joinPropertiesPath(value, displayAttributes);
1423
+ };
1424
+ }
1425
+ // Join properties
1426
+ return function (obj) { return obj && joinPropertiesPath(obj, displayAttributes); };
1427
+ };
1428
+ MatAutocompleteFieldUtils.defaultEquals = function (o1, o2) {
1429
+ return isNotNil(o1 === null || o1 === void 0 ? void 0 : o1.id) && o1.id === (o2 === null || o2 === void 0 ? void 0 : o2.id);
1430
+ };
1431
+ return MatAutocompleteFieldUtils;
1432
+ }());
1433
+ var noop$8 = function (_) { };
1434
+ var ɵ0$b = noop$8;
1262
1435
  var MatAutocompleteField = /** @class */ (function () {
1263
1436
  function MatAutocompleteField(cd, formGroupDir) {
1264
1437
  this.cd = cd;
1265
1438
  this.formGroupDir = formGroupDir;
1266
- this._onChangeCallback = noop;
1267
- this._onTouchedCallback = noop;
1439
+ this._onChangeCallback = noop$8;
1440
+ this._onTouchedCallback = noop$8;
1268
1441
  this.logPrefix = '[mat-autocomplete] ';
1269
1442
  this.formControlName = null;
1270
1443
  this.required = false;
@@ -1272,12 +1445,13 @@
1272
1445
  this.debounceTime = null;
1273
1446
  this.i18nPrefix = 'REFERENTIAL.';
1274
1447
  this.noResultMessage = 'COMMON.NO_RESULT';
1275
- this.multiple = false;
1276
1448
  this.itemSize = '48px';
1277
1449
  this.fetchMoreThreshold = '15%';
1278
1450
  this.suggestLengthThreshold = null;
1279
1451
  this.showLoadingSpinner = true;
1280
1452
  this.debug = false;
1453
+ this.showSearchBar = true;
1454
+ this.stickySearchBar = false;
1281
1455
  this.clicked = new i0.EventEmitter();
1282
1456
  this.blurred = new i0.EventEmitter();
1283
1457
  this.focused = new i0.EventEmitter();
@@ -1398,6 +1572,13 @@
1398
1572
  enumerable: false,
1399
1573
  configurable: true
1400
1574
  });
1575
+ Object.defineProperty(MatAutocompleteField.prototype, "desktop", {
1576
+ get: function () {
1577
+ return !this.mobile;
1578
+ },
1579
+ enumerable: false,
1580
+ configurable: true
1581
+ });
1401
1582
  MatAutocompleteField.prototype.ngOnInit = function () {
1402
1583
  var _this = this;
1403
1584
  var _a, _b;
@@ -1416,6 +1597,7 @@
1416
1597
  this.displayColumnNames = this.displayColumnNames || this.config.columnNames;
1417
1598
  this.displayWith = this.displayWith || this.config.displayWith;
1418
1599
  this.equals = this.equals || this.config.equals;
1600
+ this.multiple = toBoolean(this.multiple, this.config.multiple);
1419
1601
  this.mobile = toBoolean(this.mobile, this.config.mobile);
1420
1602
  this.suggestLengthThreshold = toNumber(this.suggestLengthThreshold, this.config.suggestLengthThreshold || 0);
1421
1603
  this.showAllOnFocus = toBoolean(this.showAllOnFocus, toBoolean(this.config.showAllOnFocus, this.suggestLengthThreshold <= 0));
@@ -1425,8 +1607,11 @@
1425
1607
  this.highlightAccent = toBoolean(this.highlightAccent, toBoolean(this.config.highlightAccent));
1426
1608
  }
1427
1609
  // Default values
1610
+ this.multiple = toBoolean(this.multiple, false);
1611
+ this.mobile = toBoolean(this.mobile, this.multiple || isMobile(window));
1428
1612
  this.displayAttributes = this.displayAttributes || ((_a = this.filter) === null || _a === void 0 ? void 0 : _a.attributes) || ['label', 'name'];
1429
- this.displayWith = this.displayWith || (function (obj) { return obj && joinPropertiesPath(obj, _this.displayAttributes); });
1613
+ this.displayWith = this.displayWith || MatAutocompleteFieldUtils.createDisplayFn(this.displayAttributes, this.multiple);
1614
+ this.equals = this.equals || MatAutocompleteFieldUtils.defaultEquals;
1430
1615
  this.displayColumnSizes = this.displayColumnSizes
1431
1616
  // if only column: auto size
1432
1617
  || (this.displayAttributes.length === 1 && [undefined])
@@ -1434,24 +1619,21 @@
1434
1619
  // - if label then col size = 2
1435
1620
  // - if rankOrder then col size = 1
1436
1621
  // - ese => auto size
1437
- || this.displayAttributes.map(function (attr) { return (attr && attr.endsWith('label')) ? 2
1438
- : ((attr && attr.endsWith('rankOrder')) ? 1
1439
- : undefined); });
1622
+ || this.displayAttributes.map(function (attr) { return attr && (attr.endsWith('label') ? 3
1623
+ : (attr.endsWith('rankOrder') ? 2
1624
+ : undefined)); });
1440
1625
  this.displayColumnNames = this.displayAttributes.map(function (attr, index) { return _this.displayColumnNames && _this.displayColumnNames[index] ||
1441
1626
  (_this.i18nPrefix + changeCaseToUnderscore(attr).toUpperCase()); });
1442
- this.mobile = toBoolean(this.mobile, false);
1443
- this.searchable = !this.mobile && !this.multiple;
1444
- this.equals = this.equals || (function (o1, o2) { return o1 && o2 && o1.id === o2.id; });
1445
1627
  var classList = (_b = this.classList) === null || _b === void 0 ? void 0 : _b.split(' ');
1446
1628
  this.panelWidth = this.panelWidth || (classList && ((classList.includes('min-width-medium') && '300px')
1447
1629
  || (classList.includes('min-width-large') && '400px')
1448
1630
  || (classList.includes('min-width-xlarge') && '450px')
1449
1631
  || (classList.includes('mat-autocomplete-panel-full-size') && '100vw')));
1450
1632
  this.showPanelOnFocus = toBoolean(this.showPanelOnFocus, true);
1451
- this.debounceTime = toNumber(this.debounceTime, 250);
1633
+ this.debounceTime = toNumber(this.debounceTime, this.mobile ? 650 : 250);
1452
1634
  this.highlightAccent = toBoolean(this.highlightAccent, false);
1453
1635
  this.suggestLengthThreshold = this.suggestLengthThreshold || 0;
1454
- this.matAutocompletePosition = this.matAutocompletePosition || (this.mobile && this.searchable ? 'above' : 'auto'); // On mobile, set position to above (because of bottom keyboard)
1636
+ this.matAutocompletePosition = this.matAutocompletePosition || 'auto';
1455
1637
  // No suggestFn: filter on the given items
1456
1638
  if (!this.suggestFn) {
1457
1639
  var suggestFromArrayFn_1 = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
@@ -1482,10 +1664,10 @@
1482
1664
  });
1483
1665
  }); };
1484
1666
  }
1485
- else if (!this.searchable) {
1667
+ else if (this.mobile) {
1486
1668
  // Manually fill input items, from the given suggest function
1487
- this._subscription.add(this._$filter.pipe(operators.startWith(this.filter), operators.debounceTime(250), operators.takeWhile(function (_) { return !_this.searchable; }), // Close subscription, when enabling search (no more mat-select)
1488
- operators.switchMap(function (filter) { return _this.suggest('*', filter); }))
1669
+ this._subscription.add(this._$filter.pipe(operators.startWith(this.filter), operators.debounceTime(250), operators.takeWhile(function (_) { return _this.mobile; }), // Close subscription, when not mobile (no more mat-select)
1670
+ operators.filter(function (_) { return _this.suggestLengthThreshold <= 0; }), operators.switchMap(function (filter) { return _this.suggest('*', filter); }))
1489
1671
  .subscribe(function (items) { return _this.$inputItems.next(items); }));
1490
1672
  }
1491
1673
  // Send value to suggest when :
@@ -1501,11 +1683,17 @@
1501
1683
  this._reload$,
1502
1684
  // Search text (no distinctUntilChanged() because of the debounceTime() pipe)
1503
1685
  this.formControl.valueChanges
1504
- .pipe(operators.filter(function (value) { return _this.enabled && _this.searchable && isNotNilString(value); }),
1686
+ .pipe(operators.filter(function (value) { return _this.enabled && isNotNilString(value); }),
1505
1687
  // Mark as loading (to show loading spinner) - earlier as possible, so before the debounce time
1506
1688
  operators.tap(function (_) { return _this.showLoadingSpinner && _this.markAsLoading(); }),
1507
1689
  // Filter if not enough character
1508
- operators.filter(function (value) { return value.length >= _this.suggestLengthThreshold; }),
1690
+ operators.filter(function (value) {
1691
+ if (value.length >= _this.suggestLengthThreshold)
1692
+ return true;
1693
+ // Update display value, to enable the message "not enough characters"
1694
+ _this.displayValue = value;
1695
+ return false;
1696
+ }),
1509
1697
  // Wait a debounce time
1510
1698
  operators.debounceTime(this.debounceTime)
1511
1699
  // DEBUG
@@ -1513,37 +1701,34 @@
1513
1701
  ),
1514
1702
  // Object set: use it (no distinctUntilChanged() pipe need)
1515
1703
  this.formControl.valueChanges
1516
- .pipe(operators.startWith(this.formControl.value), operators.filter(function (value) { return (_this.searchable && isNotNil(value) && typeof value === 'object'); }), operators.tap(function (value) {
1704
+ .pipe(operators.startWith(this.formControl.value), operators.filter(function (value) { return (!_this.mobile && isNotNil(value) && typeof value === 'object'); }), operators.tap(function (value) {
1517
1705
  // DEBUG
1518
- if (_this.debug)
1519
- console.debug(_this.logPrefix + ' object changes:', value);
1706
+ //if (this.debug) console.debug(this.logPrefix + ' object changes:', value)
1707
+ var _a;
1520
1708
  // Update the display value (if need)
1521
1709
  var displayValue = _this.displayWith(value) || '';
1522
1710
  if (_this.displayValue !== displayValue) {
1523
1711
  _this.displayValue = displayValue;
1524
1712
  // Apply to the input[type=text] field
1525
- if (_this.matInputText && _this.matInputText.nativeElement) {
1713
+ if ((_a = _this.matInputText) === null || _a === void 0 ? void 0 : _a.nativeElement) {
1526
1714
  _this.matInputText.nativeElement.value = _this.displayValue;
1527
1715
  }
1528
1716
  }
1529
- })
1530
- // DEBUG
1531
- //,tap(value => this.debug && console.debug(this.logPrefix + ' Received an object value: ', value))
1532
- ),
1717
+ })),
1533
1718
  // On dropdown button click (no distinctUntilChanged(), nor debounceTime)
1534
1719
  this.dropButtonClick
1535
- .pipe(operators.filter(function (event) { return _this.searchable && _this.enabled && (!event || !event.defaultPrevented); }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; }),
1720
+ .pipe(operators.filter(function (event) { return !_this.mobile && _this.enabled && (!event || !event.defaultPrevented); }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; }),
1536
1721
  // Make sure there is enough characters
1537
1722
  operators.filter(thresholdFilterFn)),
1538
1723
  // Merge some observables, with a common distinctUntilChanged() pipe, and NO debounceTime
1539
1724
  rxjs.merge(
1540
1725
  // Focus or click => Load all
1541
1726
  rxjs.merge(this.focused, this.clicked)
1542
- .pipe(operators.filter(function (_) { return _this.enabled && _this.searchable; }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; })
1727
+ .pipe(operators.filter(function (_) { return _this.enabled && !_this.mobile; }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; })
1543
1728
  // DEBUG
1544
1729
  //,tap(value => this.debug && console.debug(this.logPrefix + ' Received focused or clicked event: ', value))
1545
1730
  ), rxjs.merge(this.$inputItems, this._$filter)
1546
- .pipe(operators.filter(function (_) { return _this.searchable && _this.enabled; }), operators.map(function (_) { return _this.formControl.value; })))
1731
+ .pipe(operators.filter(function (_) { return _this.enabled; }), operators.map(function (_) { return _this.formControl.value; })))
1547
1732
  .pipe(
1548
1733
  // Make sure there is enough characters
1549
1734
  operators.filter(thresholdFilterFn),
@@ -1576,7 +1761,7 @@
1576
1761
  fetchMoreItemsChanges)
1577
1762
  .subscribe(function (items) {
1578
1763
  // Make sure control value is inside (mat-select)
1579
- if (items && !_this.searchable) {
1764
+ if (items && _this.mobile) {
1580
1765
  var value_1 = _this.formControl.value;
1581
1766
  if (isNotNil(value_1) && typeof value_1 === 'object' && items.findIndex(function (item) { return _this.equals(item, value_1); }) === -1) {
1582
1767
  // If form value is missing: add it to the list
@@ -1590,7 +1775,7 @@
1590
1775
  this._subscription.add(this.blurred
1591
1776
  .pipe(
1592
1777
  // Skip if not searchable
1593
- operators.filter(function (_) { return _this.searchable; }), operators.map(function (_) { return _this.formControl.value; })
1778
+ operators.filter(function (_) { return !_this.mobile; }), operators.map(function (_) { return _this.formControl.value; })
1594
1779
  // DEBUG
1595
1780
  //,tap(value => this.debug && console.debug(this.logPrefix + ' Received blurred event: ', value)),
1596
1781
  )
@@ -1614,6 +1799,7 @@
1614
1799
  _this.$filteredItems.next(undefined);
1615
1800
  }
1616
1801
  _this._implicitValue = null; // reset the implicit value
1802
+ _this.closePanel(); // Clone panel
1617
1803
  }));
1618
1804
  // Listen form control status change
1619
1805
  this._subscription.add(this.formControl.statusChanges
@@ -1624,6 +1810,7 @@
1624
1810
  .subscribe(function () { return _this.checkIfTouched(); }));
1625
1811
  this._subscription.add(this.keydownEscape.subscribe(function (event) {
1626
1812
  if (_this.isOpen) {
1813
+ // Avoid form or page to manage escape event
1627
1814
  event === null || event === void 0 ? void 0 : event.stopPropagation();
1628
1815
  event === null || event === void 0 ? void 0 : event.preventDefault();
1629
1816
  // DEBUG
@@ -1659,7 +1846,6 @@
1659
1846
  this.equals = null;
1660
1847
  this.suggestFn = null;
1661
1848
  this.$filteredItems = null;
1662
- this.matSelectItems$ = null;
1663
1849
  this.config = null;
1664
1850
  this.classList = null;
1665
1851
  this._onChangeCallback = null;
@@ -1674,8 +1860,13 @@
1674
1860
  * Allow to reload content. Useful when filter has been changed but not detected
1675
1861
  */
1676
1862
  MatAutocompleteField.prototype.reloadItems = function (value) {
1863
+ var _a;
1677
1864
  // Force a refresh
1678
1865
  this._reload$.next(value || '*');
1866
+ // Clear the search bar, because options will not correspond
1867
+ if (!this.isOpen && isNotNilOrBlank((_a = this.ionSearchbar) === null || _a === void 0 ? void 0 : _a.value)) {
1868
+ this.ionSearchbar.value = null;
1869
+ }
1679
1870
  };
1680
1871
  MatAutocompleteField.prototype.writeValue = function (value) {
1681
1872
  // DEBUG
@@ -1699,15 +1890,15 @@
1699
1890
  this.cd.markForCheck();
1700
1891
  };
1701
1892
  MatAutocompleteField.prototype.focus = function () {
1702
- var _a;
1703
- if (this.searchable) {
1704
- focusInput(this.matInputText);
1893
+ if (this.mobile) {
1894
+ this.matSelect.focus();
1705
1895
  }
1706
1896
  else {
1707
- (_a = this.matSelect) === null || _a === void 0 ? void 0 : _a.focus();
1897
+ focusInput(this.matInputText);
1708
1898
  }
1709
1899
  };
1710
1900
  MatAutocompleteField.prototype.filterInputTextFocusEvent = function (event) {
1901
+ var _a;
1711
1902
  if (!event || event.defaultPrevented)
1712
1903
  return;
1713
1904
  // Ignore event from mat-option
@@ -1722,7 +1913,7 @@
1722
1913
  }
1723
1914
  // DEBUG
1724
1915
  //if (this.debug) console.debug(this.logPrefix + ' Select input content');
1725
- var hasContent = true; // selectInputContent(event);
1916
+ var hasContent = isNotNilOrBlank((_a = event.target) === null || _a === void 0 ? void 0 : _a.value);
1726
1917
  // If combo is empty, or if has content but should force to show panel on focus
1727
1918
  if (!hasContent || this.showPanelOnFocus || this.showAllOnFocus) {
1728
1919
  // DEBUG
@@ -1742,18 +1933,38 @@
1742
1933
  event.stopPropagation();
1743
1934
  event.returnValue = false;
1744
1935
  // DEBUG
1745
- if (this.debug)
1746
- console.debug(this.logPrefix + " Cancelling blur event");
1936
+ //if (this.debug) console.debug(this.logPrefix + " Cancelling blur event");
1747
1937
  return false;
1748
1938
  }
1749
- //DEBUG
1750
- if (this.debug)
1751
- console.debug(this.logPrefix + ' Blur: move caret to the beginning');
1939
+ // DEBUG
1940
+ //if (this.debug) console.debug(this.logPrefix + ' Blur: move caret to the beginning');
1752
1941
  // Move caret to the beginning (fix issue IMAGINE-469)
1753
1942
  selectInputRange(event.target, 0, 0);
1754
1943
  this.blurred.emit(event);
1755
1944
  return true;
1756
1945
  };
1946
+ MatAutocompleteField.prototype.ionSearchBarChanged = function (event) {
1947
+ if (!event || event.defaultPrevented || !this.matSelect.panelOpen)
1948
+ return;
1949
+ // DEBUG
1950
+ //console.debug(this.logPrefix + " Received <ion-searchbar> changes", event.detail.data);
1951
+ event.preventDefault();
1952
+ event.detail.preventDefault();
1953
+ event.stopPropagation();
1954
+ event.detail.stopPropagation();
1955
+ this.markAsLoading();
1956
+ this.reloadItems(event.detail.data);
1957
+ // TODO avoid mat-select to focus the option
1958
+ /*if (this.multiple) {
1959
+ this.matSelect._elementRef;
1960
+ }*/
1961
+ };
1962
+ MatAutocompleteField.prototype.ionSearchBarClear = function (event) {
1963
+ if (!event || event.defaultPrevented || !this.matSelect.panelOpen)
1964
+ return;
1965
+ this.markAsLoading();
1966
+ this.reloadItems();
1967
+ };
1757
1968
  MatAutocompleteField.prototype.filterMatSelectFocusEvent = function (event) {
1758
1969
  if (!event || event.defaultPrevented)
1759
1970
  return;
@@ -1779,20 +1990,6 @@
1779
1990
  this.blurred.emit(event);
1780
1991
  return true;
1781
1992
  };
1782
- MatAutocompleteField.prototype.toggleSearch = function (event) {
1783
- var searchable = !this.searchable;
1784
- if (searchable && this.searchable && this.matInputText) {
1785
- this.focus();
1786
- }
1787
- else {
1788
- this.searchable = searchable;
1789
- if (searchable) {
1790
- this.autofocus = true;
1791
- this.showPanelOnFocus = false;
1792
- }
1793
- this.markForCheck();
1794
- }
1795
- };
1796
1993
  MatAutocompleteField.prototype.clearValue = function (event) {
1797
1994
  this.writeValue(null);
1798
1995
  event.stopPropagation();
@@ -1845,7 +2042,7 @@
1845
2042
  Object.defineProperty(MatAutocompleteField.prototype, "isOpen", {
1846
2043
  get: function () {
1847
2044
  var _a, _b;
1848
- return (this.searchable && ((_a = this.autocomplete) === null || _a === void 0 ? void 0 : _a.isOpen))
2045
+ return (!this.mobile && ((_a = this.autocomplete) === null || _a === void 0 ? void 0 : _a.isOpen))
1849
2046
  || ((_b = this.matSelect) === null || _b === void 0 ? void 0 : _b.panelOpen)
1850
2047
  || false;
1851
2048
  },
@@ -1891,8 +2088,7 @@
1891
2088
  res = data;
1892
2089
  }
1893
2090
  // DEBUG
1894
- if (this.debug)
1895
- console.debug(this.logPrefix + ' Filtered items by suggestFn:', value, res);
2091
+ //if (this.debug) console.debug(this.logPrefix + ' Filtered items by suggestFn:', value, res);
1896
2092
  return [2 /*return*/, res];
1897
2093
  }
1898
2094
  });
@@ -1920,7 +2116,7 @@
1920
2116
  });
1921
2117
  };
1922
2118
  MatAutocompleteField.prototype.updateImplicitValue = function (items) {
1923
- if (this.searchable) {
2119
+ if (!this.mobile) {
1924
2120
  // Store implicit value (will use it onBlur if not other value selected)
1925
2121
  if (items && items.length === 1) {
1926
2122
  this._implicitValue = items[0];
@@ -1974,12 +2170,13 @@
1974
2170
  { type: i0.Component, args: [{
1975
2171
  // eslint-disable-next-line @angular-eslint/component-selector
1976
2172
  selector: 'mat-autocomplete-field',
1977
- template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <!-- readonly -->\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Basic select -->\n <mat-select #matSelect\n *ngIf=\"!searchable; else searchableTemplate\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n [compareWith]=\"equals\"\n [multiple]=\"multiple\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- header -->\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <!-- options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text>{{item | propertyGet: path }}</ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <ion-row class=\"mat-autocomplete-footer ion-no-padding\">\n <ion-col>\n <ion-text *ngIf=\"itemCount; let count\" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #searchableTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.showPanel && dropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [panelWidth]=\"panelWidth\">\n\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n\n <ion-row class=\"mat-autocomplete-footer ion-no-padding\">\n <ion-col>\n <ion-text *ngIf=\"itemCount; let count\" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"dropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix type=\"button\" mat-icon-button tabindex=\"-1\"\n *ngIf=\"enabled && mobile && !searchable && !multiple\"\n [title]=\"'COMMON.BTN_SEARCH'|translate\"\n (click)=\"toggleSearch($event)\">\n <mat-icon>search</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
2173
+ template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <!-- readonly -->\n <mat-form-field *ngIf=\"_readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n [title]=\"displayValue\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n </mat-form-field>\n\n <ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <!-- Mobile or Mutliple (use <mat-select>) -->\n <mat-select #matSelect\n *ngIf=\"mobile || multiple; else desktopTemplate\"\n [disableRipple]=\"true\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\"\n [tabindex]=\"_tabindex\"\n [panelClass]=\"classList\"\n [style.width]=\"panelWidth\"\n (focus)=\"filterMatSelectFocusEvent($event)\"\n (blur)=\"filterMatSelectBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n [compareWith]=\"equals\"\n [multiple]=\"multiple\"\n [typeaheadDebounceInterval]=\"debounceTime * 10\"\n [required]=\"required\">\n <mat-select-trigger>{{ displayWith(value) }}</mat-select-trigger>\n\n <!-- Search bar -->\n <ion-searchbar *ngIf=\"showSearchBar\" #ionSearchbar\n class=\"mat-select-header\"\n [class.ion-searchbar-sticky]=\"stickySearchBar\"\n inputmode=\"search\"\n autocomplete=\"off\"\n animated=\"true\"\n showClearButton\n [debounce]=\"debounceTime\"\n (ionClear)=\"ionSearchBarClear($event)\"\n (ionInput)=\"ionSearchBarChanged($event)\"\n [placeholder]=\"'COMMON.BTN_SEARCH'|translate\"\n ></ion-searchbar>\n\n <!-- Headers -->\n <ion-row class=\"mat-select-header column ion-no-padding\"\n [class.multiple]=\"multiple\"\n [class.ion-searchbar-sticky]=\"showSearchBar && stickySearchBar\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- None option -->\n <mat-option *ngIf=\"!required && !multiple && !clearable\" class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding\">\n <ion-col class=\"ion-no-padding\">\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <ng-container *ngIf=\"$filteredItems | async as items; else loadingTemplate\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </mat-option>\n\n <!-- Options -->\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: ionSearchbar.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initMatSelectInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- footer -->\n <ion-row *ngIf=\"itemCount as count\"\n class=\"mat-autocomplete-footer ion-no-padding\">\n <ion-col>\n <ion-text class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(displayValue | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-select>\n\n\n <!--\n NOTE :\n - \"selectInputContent($event) || onFocus.emit($event)\" : call onFocus only when to the input is empty (nothing to select)\n -->\n <ng-template #desktopTemplate>\n <input matInput #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.showPanel && dropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [panelWidth]=\"panelWidth\">\n <!-- Headers -->\n <ion-row class=\"mat-autocomplete-header column ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <!-- Options -->\n <ng-container *ngIf=\"$filteredItems | async as items; else loadingTemplate\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label><i>{{noResultMessage | translate}}</i></ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: formControl.value, withAccent: highlightAccent }\"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(displayValue | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n\n <!-- footer -->\n <ion-row *ngIf=\"itemCount; let count\" class=\"mat-autocomplete-footer ion-no-padding\">\n <ion-col>\n <ion-text class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n </mat-autocomplete>\n\n </ng-template>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n </ng-template>\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"desktop\"\n (click)=\"dropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n\n<ng-template #headers>\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n</ng-template>\n\n<ng-template #options>\n\n\n</ng-template>\n\n",
1978
2174
  providers: [{
1979
2175
  provide: i1.NG_VALUE_ACCESSOR,
1980
2176
  multi: true,
1981
2177
  useExisting: i0.forwardRef(function () { return MatAutocompleteField; })
1982
2178
  }],
2179
+ animations: [slideInOutAnimation],
1983
2180
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1984
2181
  styles: [":host{display:inline-block;position:relative}:host.ion-text-wrap ion-label{white-space:normal!important}button[hidden]{display:none}mat-icon.select-arrow{color:rgba(0,0,0,.47);font-size:150%}"]
1985
2182
  },] }
@@ -2020,6 +2217,8 @@
2020
2217
  suggestLengthThreshold: [{ type: i0.Input }],
2021
2218
  showLoadingSpinner: [{ type: i0.Input }],
2022
2219
  debug: [{ type: i0.Input }],
2220
+ showSearchBar: [{ type: i0.Input }],
2221
+ stickySearchBar: [{ type: i0.Input }],
2023
2222
  clicked: [{ type: i0.Output, args: ['click',] }],
2024
2223
  blurred: [{ type: i0.Output, args: ['blur',] }],
2025
2224
  focused: [{ type: i0.Output, args: ['focus',] }],
@@ -2027,6 +2226,7 @@
2027
2226
  keydownEscape: [{ type: i0.Output, args: ['keydown.escape',] }],
2028
2227
  keyupEnter: [{ type: i0.Output, args: ['keyup.enter',] }],
2029
2228
  matSelect: [{ type: i0.ViewChild, args: ['matSelect',] }],
2229
+ ionSearchbar: [{ type: i0.ViewChild, args: ['ionSearchbar',] }],
2030
2230
  matInputText: [{ type: i0.ViewChild, args: ['matInputText',] }],
2031
2231
  autocomplete: [{ type: i0.ViewChild, args: [autocomplete.MatAutocomplete,] }],
2032
2232
  autocompleteTrigger: [{ type: i0.ViewChild, args: [autocomplete.MatAutocompleteTrigger,] }],
@@ -2057,7 +2257,7 @@
2057
2257
  };
2058
2258
  return DateFormatPipe;
2059
2259
  }());
2060
- 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" });
2260
+ 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" });
2061
2261
  DateFormatPipe.decorators = [
2062
2262
  { type: i0.Pipe, args: [{
2063
2263
  name: 'dateFormat'
@@ -2069,7 +2269,7 @@
2069
2269
  { type: i1$2.TranslateService }
2070
2270
  ]; };
2071
2271
 
2072
- var moment = momentImported__namespace;
2272
+ var moment$7 = momentImported__namespace;
2073
2273
  var DateDiffDurationPipe = /** @class */ (function () {
2074
2274
  function DateDiffDurationPipe(dateAdapter, translate) {
2075
2275
  var _this = this;
@@ -2086,10 +2286,10 @@
2086
2286
  return this.format(startDate, endDate);
2087
2287
  };
2088
2288
  DateDiffDurationPipe.prototype.format = function (startDate, endDate) {
2089
- var duration = moment.duration(endDate.diff(startDate));
2289
+ var duration = moment$7.duration(endDate.diff(startDate));
2090
2290
  if (duration.asMinutes() < 0)
2091
2291
  return '';
2092
- var timeDuration = moment(0)
2292
+ var timeDuration = moment$7(0)
2093
2293
  .hour(duration.hours())
2094
2294
  .minute(duration.minutes());
2095
2295
  var days = Math.floor(duration.asDays());
@@ -2097,7 +2297,7 @@
2097
2297
  };
2098
2298
  return DateDiffDurationPipe;
2099
2299
  }());
2100
- 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" });
2300
+ 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" });
2101
2301
  DateDiffDurationPipe.decorators = [
2102
2302
  { type: i0.Pipe, args: [{
2103
2303
  name: 'dateDiffDuration'
@@ -2119,7 +2319,7 @@
2119
2319
  };
2120
2320
  return DateFromNowPipe;
2121
2321
  }());
2122
- DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1$1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
2322
+ DateFromNowPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0__namespace.ɵɵinject(i1__namespace.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
2123
2323
  DateFromNowPipe.decorators = [
2124
2324
  { type: i0.Pipe, args: [{
2125
2325
  name: 'dateFromNow'
@@ -2188,7 +2388,7 @@
2188
2388
  value *= -1;
2189
2389
  }
2190
2390
  }
2191
- var degrees = roundFloat(value, opts.maxDecimals).toString();
2391
+ var degrees = roundFloat$1(value, opts.maxDecimals).toString();
2192
2392
  // Add sign
2193
2393
  var sign = negative ? '-' : '+';
2194
2394
  if (opts.placeholderChar) {
@@ -2239,7 +2439,7 @@
2239
2439
  }
2240
2440
  var degrees = Math.trunc(value);
2241
2441
  var minutes = Math.trunc((value - degrees) * 60);
2242
- var seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2442
+ var seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2243
2443
  while (seconds >= 60) {
2244
2444
  seconds -= 60;
2245
2445
  minutes += 1;
@@ -2307,7 +2507,7 @@
2307
2507
  }
2308
2508
  }
2309
2509
  var degrees = Math.trunc(value);
2310
- var minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
2510
+ var minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
2311
2511
  while (minutes >= 60) {
2312
2512
  minutes -= 60;
2313
2513
  degrees += 1;
@@ -2358,15 +2558,15 @@
2358
2558
  return NaN;
2359
2559
  }
2360
2560
  if (pattern === 'DD')
2361
- return roundFloat(degrees, maxDecimals);
2561
+ return roundFloat$1(degrees, maxDecimals);
2362
2562
  var minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
2363
2563
  var seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
2364
2564
  var direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
2365
2565
  var sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
2366
2566
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
2367
- return roundFloat(degrees, maxDecimals);
2567
+ return roundFloat$1(degrees, maxDecimals);
2368
2568
  }
2369
- function roundFloat(input, maxDecimals) {
2569
+ function roundFloat$1(input, maxDecimals) {
2370
2570
  if (maxDecimals > 0) {
2371
2571
  var powDecimal = Math.pow(10, maxDecimals);
2372
2572
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -2389,7 +2589,7 @@
2389
2589
  };
2390
2590
  return LatLongFormatPipe;
2391
2591
  }());
2392
- LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2592
+ LatLongFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2393
2593
  LatLongFormatPipe.decorators = [
2394
2594
  { type: i0.Pipe, args: [{
2395
2595
  name: 'latLongFormat'
@@ -2402,7 +2602,7 @@
2402
2602
  }
2403
2603
  return LatitudeFormatPipe;
2404
2604
  }());
2405
- LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2605
+ LatitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2406
2606
  LatitudeFormatPipe.decorators = [
2407
2607
  { type: i0.Pipe, args: [{
2408
2608
  name: 'latitudeFormat'
@@ -2415,7 +2615,7 @@
2415
2615
  }
2416
2616
  return LongitudeFormatPipe;
2417
2617
  }());
2418
- LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2618
+ LongitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2419
2619
  LongitudeFormatPipe.decorators = [
2420
2620
  { type: i0.Pipe, args: [{
2421
2621
  name: 'longitudeFormat'
@@ -2438,7 +2638,7 @@
2438
2638
  };
2439
2639
  return NumberFormatPipe;
2440
2640
  }());
2441
- NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2641
+ NumberFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2442
2642
  NumberFormatPipe.decorators = [
2443
2643
  { type: i0.Pipe, args: [{
2444
2644
  name: 'numberFormat'
@@ -2481,7 +2681,7 @@
2481
2681
  };
2482
2682
  return HighlightPipe;
2483
2683
  }());
2484
- HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2684
+ HighlightPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2485
2685
  HighlightPipe.decorators = [
2486
2686
  { type: i0.Pipe, args: [{
2487
2687
  name: 'highlight'
@@ -2549,7 +2749,7 @@
2549
2749
  { type: i0.Pipe, args: [{ name: 'fileSize' },] }
2550
2750
  ];
2551
2751
 
2552
- var moment$1 = momentImported__namespace;
2752
+ var moment$6 = momentImported__namespace;
2553
2753
  var tz = momentTZImported__namespace;
2554
2754
  var DATE_UNIX_TIMESTAMP = 'X';
2555
2755
  var DATE_UNIX_MS_TIMESTAMP = 'x';
@@ -2627,32 +2827,32 @@
2627
2827
  if (!value || momentImported.isMoment(value))
2628
2828
  return value;
2629
2829
  // Parse the input value, as a ISO date time
2630
- var date = moment$1(value, DATE_ISO_PATTERN);
2830
+ var date = moment$6(value, DATE_ISO_PATTERN);
2631
2831
  if (date.isValid())
2632
2832
  return date;
2633
2833
  // Not valid: trying to convert from unix timestamp
2634
2834
  if (typeof value === 'string') {
2635
2835
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2636
2836
  if (value.length === 10) {
2637
- return moment$1(value, DATE_UNIX_TIMESTAMP);
2837
+ return moment$6(value, DATE_UNIX_TIMESTAMP);
2638
2838
  }
2639
2839
  else if (value.length === 13) {
2640
- return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2840
+ return moment$6(value, DATE_UNIX_MS_TIMESTAMP);
2641
2841
  }
2642
2842
  }
2643
2843
  console.warn('Unable to parse date: ' + value);
2644
2844
  return undefined;
2645
2845
  }
2646
2846
  function fromUnixTimestamp(timeInSec) {
2647
- return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2847
+ return moment$6(timeInSec, DATE_UNIX_TIMESTAMP);
2648
2848
  }
2649
2849
  function fromUnixMsTimestamp(timeInMs) {
2650
- return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2850
+ return moment$6(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2651
2851
  }
2652
2852
  function toDuration(value, unit) {
2653
2853
  if (!value)
2654
2854
  return undefined;
2655
- var duration = moment$1.duration(value, unit);
2855
+ var duration = moment$6.duration(value, unit);
2656
2856
  // fix 990+ ms
2657
2857
  if (duration.milliseconds() >= 990) {
2658
2858
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2682,7 +2882,7 @@
2682
2882
  };
2683
2883
  return DurationPipe;
2684
2884
  }());
2685
- DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$2.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2885
+ DurationPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2686
2886
  DurationPipe.decorators = [
2687
2887
  { type: i0.Pipe, args: [{
2688
2888
  name: 'duration'
@@ -2706,7 +2906,7 @@
2706
2906
  };
2707
2907
  return MathAbsPipe;
2708
2908
  }());
2709
- MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2909
+ MathAbsPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2710
2910
  MathAbsPipe.decorators = [
2711
2911
  { type: i0.Pipe, args: [{
2712
2912
  name: 'mathAbs'
@@ -2721,7 +2921,7 @@
2721
2921
  };
2722
2922
  return EvenPipe;
2723
2923
  }());
2724
- EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2924
+ EvenPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2725
2925
  EvenPipe.decorators = [
2726
2926
  { type: i0.Pipe, args: [{
2727
2927
  name: 'even'
@@ -2736,7 +2936,7 @@
2736
2936
  };
2737
2937
  return OddPipe;
2738
2938
  }());
2739
- OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2939
+ OddPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2740
2940
  OddPipe.decorators = [
2741
2941
  { type: i0.Pipe, args: [{
2742
2942
  name: 'odd'
@@ -2868,7 +3068,7 @@
2868
3068
  };
2869
3069
  return MapGetPipe;
2870
3070
  }());
2871
- MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
3071
+ MapGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2872
3072
  MapGetPipe.decorators = [
2873
3073
  { type: i0.Pipe, args: [{
2874
3074
  name: 'mapGet'
@@ -2885,7 +3085,7 @@
2885
3085
  };
2886
3086
  return MapKeysPipe;
2887
3087
  }());
2888
- MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
3088
+ MapKeysPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2889
3089
  MapKeysPipe.decorators = [
2890
3090
  { type: i0.Pipe, args: [{
2891
3091
  name: 'mapKeys'
@@ -2902,7 +3102,7 @@
2902
3102
  };
2903
3103
  return MapValuesPipe;
2904
3104
  }());
2905
- MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
3105
+ MapValuesPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2906
3106
  MapValuesPipe.decorators = [
2907
3107
  { type: i0.Pipe, args: [{
2908
3108
  name: 'mapValues'
@@ -2918,7 +3118,7 @@
2918
3118
  };
2919
3119
  return IsNotNilOrBlankPipe;
2920
3120
  }());
2921
- IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
3121
+ IsNotNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2922
3122
  IsNotNilOrBlankPipe.decorators = [
2923
3123
  { type: i0.Pipe, args: [{
2924
3124
  name: 'isNotNilOrBlank'
@@ -2933,7 +3133,7 @@
2933
3133
  };
2934
3134
  return IsNilOrBlankPipe;
2935
3135
  }());
2936
- IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
3136
+ IsNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2937
3137
  IsNilOrBlankPipe.decorators = [
2938
3138
  { type: i0.Pipe, args: [{
2939
3139
  name: 'isNilOrBlank'
@@ -2948,7 +3148,7 @@
2948
3148
  };
2949
3149
  return ToStringPipe;
2950
3150
  }());
2951
- ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
3151
+ ToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2952
3152
  ToStringPipe.decorators = [
2953
3153
  { type: i0.Pipe, args: [{
2954
3154
  name: 'toString'
@@ -2963,7 +3163,7 @@
2963
3163
  };
2964
3164
  return StrLengthPipe;
2965
3165
  }());
2966
- StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
3166
+ StrLengthPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2967
3167
  StrLengthPipe.decorators = [
2968
3168
  { type: i0.Pipe, args: [{
2969
3169
  name: 'strLength'
@@ -2978,7 +3178,7 @@
2978
3178
  };
2979
3179
  return StrIncludesPipe;
2980
3180
  }());
2981
- StrIncludesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrIncludesPipe_Factory() { return new StrIncludesPipe(); }, token: StrIncludesPipe, providedIn: "root" });
3181
+ StrIncludesPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function StrIncludesPipe_Factory() { return new StrIncludesPipe(); }, token: StrIncludesPipe, providedIn: "root" });
2982
3182
  StrIncludesPipe.decorators = [
2983
3183
  { type: i0.Pipe, args: [{
2984
3184
  name: 'strIncludes'
@@ -3069,7 +3269,7 @@
3069
3269
  };
3070
3270
  return TranslateContextService;
3071
3271
  }());
3072
- TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$2.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
3272
+ TranslateContextService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
3073
3273
  TranslateContextService.decorators = [
3074
3274
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
3075
3275
  ];
@@ -3126,7 +3326,7 @@
3126
3326
  };
3127
3327
  return PropertyGetPipe;
3128
3328
  }());
3129
- PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
3329
+ PropertyGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
3130
3330
  PropertyGetPipe.decorators = [
3131
3331
  { type: i0.Pipe, args: [{
3132
3332
  name: 'propertyGet'
@@ -3152,7 +3352,7 @@
3152
3352
  ngInit: [{ type: i0.Output }]
3153
3353
  };
3154
3354
 
3155
- var moment$2 = momentImported__namespace;
3355
+ var moment$5 = momentImported__namespace;
3156
3356
  // @dynamic
3157
3357
  var SharedValidators = /** @class */ (function () {
3158
3358
  function SharedValidators() {
@@ -3235,7 +3435,7 @@
3235
3435
  };
3236
3436
  SharedValidators.validDate = function (control) {
3237
3437
  var value = control.value;
3238
- var date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
3438
+ var date = !value || moment$5.isMoment(value) ? value : moment$5(control.value, DATE_ISO_PATTERN);
3239
3439
  if (date && (!date.isValid() || date.year() < 1970)) {
3240
3440
  return { validDate: true };
3241
3441
  }
@@ -4442,7 +4642,7 @@
4442
4642
  };
4443
4643
  return FormErrorTranslator;
4444
4644
  }());
4445
- 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" });
4645
+ 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" });
4446
4646
  FormErrorTranslator.decorators = [
4447
4647
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
4448
4648
  ];
@@ -4527,7 +4727,7 @@
4527
4727
  };
4528
4728
  return FormGetPipe;
4529
4729
  }());
4530
- FormGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetPipe_Factory() { return new FormGetPipe(); }, token: FormGetPipe, providedIn: "root" });
4730
+ FormGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetPipe_Factory() { return new FormGetPipe(); }, token: FormGetPipe, providedIn: "root" });
4531
4731
  FormGetPipe.decorators = [
4532
4732
  { type: i0.Pipe, args: [{
4533
4733
  name: 'formGet'
@@ -4542,7 +4742,7 @@
4542
4742
  };
4543
4743
  return FormGetControlPipe;
4544
4744
  }());
4545
- FormGetControlPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetControlPipe_Factory() { return new FormGetControlPipe(); }, token: FormGetControlPipe, providedIn: "root" });
4745
+ FormGetControlPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetControlPipe_Factory() { return new FormGetControlPipe(); }, token: FormGetControlPipe, providedIn: "root" });
4546
4746
  FormGetControlPipe.decorators = [
4547
4747
  { type: i0.Pipe, args: [{
4548
4748
  name: 'formGetControl'
@@ -4557,7 +4757,7 @@
4557
4757
  };
4558
4758
  return FormGetArrayPipe;
4559
4759
  }());
4560
- FormGetArrayPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetArrayPipe_Factory() { return new FormGetArrayPipe(); }, token: FormGetArrayPipe, providedIn: "root" });
4760
+ FormGetArrayPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetArrayPipe_Factory() { return new FormGetArrayPipe(); }, token: FormGetArrayPipe, providedIn: "root" });
4561
4761
  FormGetArrayPipe.decorators = [
4562
4762
  { type: i0.Pipe, args: [{
4563
4763
  name: 'formGetArray'
@@ -4572,7 +4772,7 @@
4572
4772
  };
4573
4773
  return FormGetGroupPipe;
4574
4774
  }());
4575
- FormGetGroupPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetGroupPipe_Factory() { return new FormGetGroupPipe(); }, token: FormGetGroupPipe, providedIn: "root" });
4775
+ FormGetGroupPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetGroupPipe_Factory() { return new FormGetGroupPipe(); }, token: FormGetGroupPipe, providedIn: "root" });
4576
4776
  FormGetGroupPipe.decorators = [
4577
4777
  { type: i0.Pipe, args: [{
4578
4778
  name: 'formGetGroup'
@@ -4673,40 +4873,13 @@
4673
4873
  },] }
4674
4874
  ];
4675
4875
 
4676
- /* ---
4677
- * Source: https://github.com/ionic-team/ionic-framework/blob/b0d53ca73619585671d8cf4dc24e47f826495a0a/core/src/utils/platform.ts
4678
- * --- */
4679
- var matchMedia = function (win, query) { return win.matchMedia(query).matches; };
4680
- var testUserAgent = function (win, expr) {
4681
- var userAgent = win.navigator.userAgent || win.navigator.vendor || window.opera;
4682
- return expr.test(userAgent);
4683
- };
4684
- var isWindows = function (win) { return testUserAgent(win, /windows/i); };
4685
- var isTouchUi = function (win) { return matchMedia(win, '(any-pointer:coarse)'); };
4686
- var isMobile = function (win) { return isTouchUi(win) && !isWindows(win); };
4687
- var isIpad = function (win) {
4688
- // iOS 12 and below
4689
- if (testUserAgent(win, /iPad/i)) {
4690
- return true;
4691
- }
4692
- // iOS 13+
4693
- if (testUserAgent(win, /Macintosh/i) && isMobile(win)) {
4694
- return true;
4695
- }
4696
- return false;
4697
- };
4698
- var ɵ0$1 = isIpad;
4699
- var isIOS = function (win) { return testUserAgent(win, /iPhone|iPod/i) || isIpad(win); };
4700
- var isAndroid = function (win) { return testUserAgent(win, /android|sink/i); };
4701
- var isCordova = function (win) { return !!(win['cordova'] || win['phonegap'] || win['PhoneGap']); };
4702
-
4703
4876
  // Import the core angular services.
4704
4877
  // ----------------------------------------------------------------------------------- //
4705
4878
  // ----------------------------------------------------------------------------------- //
4706
4879
  var BASE_TIMER_DELAY = 100;
4707
4880
  var AutofocusDirective = /** @class */ (function () {
4708
4881
  // I initialize the autofocus directive.
4709
- function AutofocusDirective(elementRef, keyboard) {
4882
+ function AutofocusDirective(platform, elementRef, keyboard) {
4710
4883
  this.keyboard = keyboard;
4711
4884
  this._timer = null;
4712
4885
  this._elementRef = elementRef;
@@ -4783,6 +4956,7 @@
4783
4956
  },] }
4784
4957
  ];
4785
4958
  AutofocusDirective.ctorParameters = function () { return [
4959
+ { type: i1$5.Platform },
4786
4960
  { type: i0.ElementRef },
4787
4961
  { type: ngx.Keyboard, decorators: [{ type: i0.Optional }] }
4788
4962
  ]; };
@@ -4944,9 +5118,9 @@
4944
5118
  var hour = parseInt(durationParts[0] || '0');
4945
5119
  var minute = parseInt(durationParts[1] || '0');
4946
5120
  var value = hour + (minute + 0.5) / 60;
4947
- return roundFloat$1(value, maxDecimals);
5121
+ return roundFloat(value, maxDecimals);
4948
5122
  }
4949
- function roundFloat$1(input, maxDecimals) {
5123
+ function roundFloat(input, maxDecimals) {
4950
5124
  if (maxDecimals > 0) {
4951
5125
  var powDecimal = Math.pow(10, maxDecimals);
4952
5126
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -4970,18 +5144,17 @@
4970
5144
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
4971
5145
  }
4972
5146
  };
4973
- var noop$1 = function () {
5147
+ var noop$7 = function () {
4974
5148
  };
4975
- var ɵ0$2 = noop$1;
5149
+ var ɵ0$a = noop$7;
4976
5150
  var MatLatLongField = /** @class */ (function () {
4977
- function MatLatLongField(platform, translate, formBuilder, cd, formGroupDir) {
4978
- this.platform = platform;
5151
+ function MatLatLongField(translate, formBuilder, cd, formGroupDir) {
4979
5152
  this.translate = translate;
4980
5153
  this.formBuilder = formBuilder;
4981
5154
  this.cd = cd;
4982
5155
  this.formGroupDir = formGroupDir;
4983
- this._onChangeCallback = noop$1;
4984
- this._onTouchedCallback = noop$1;
5156
+ this._onChangeCallback = noop$7;
5157
+ this._onTouchedCallback = noop$7;
4985
5158
  this._subscription = new rxjs.Subscription();
4986
5159
  this.disabling = false;
4987
5160
  this.writing = false;
@@ -4992,7 +5165,6 @@
4992
5165
  this.required = false;
4993
5166
  this.onBlur = new i0.EventEmitter();
4994
5167
  this.onFocus = new i0.EventEmitter();
4995
- this.mobile = this.platform.is('mobile');
4996
5168
  }
4997
5169
  Object.defineProperty(MatLatLongField.prototype, "disabled", {
4998
5170
  get: function () {
@@ -5014,6 +5186,7 @@
5014
5186
  });
5015
5187
  MatLatLongField.prototype.ngOnInit = function () {
5016
5188
  var _this = this;
5189
+ this.mobile = isNotNil(this.mobile) ? this.mobile : isMobile(window);
5017
5190
  this.type = this.type || 'latitude';
5018
5191
  this.pattern = this.pattern || 'DDMM';
5019
5192
  this.mask = MASKS[this.type] && MASKS[this.type][this.pattern];
@@ -5278,7 +5451,6 @@
5278
5451
  },] }
5279
5452
  ];
5280
5453
  MatLatLongField.ctorParameters = function () { return [
5281
- { type: i1$5.Platform },
5282
5454
  { type: i1$2.TranslateService },
5283
5455
  { type: i1.FormBuilder },
5284
5456
  { type: i0.ChangeDetectorRef },
@@ -5333,30 +5505,29 @@
5333
5505
  },] }
5334
5506
  ];
5335
5507
 
5336
- var DEFAULT_VALUE_ACCESSOR = {
5508
+ var DEFAULT_VALUE_ACCESSOR$5 = {
5337
5509
  provide: i1.NG_VALUE_ACCESSOR,
5338
5510
  useExisting: i0.forwardRef(function () { return MatDate; }),
5339
5511
  multi: true
5340
5512
  };
5341
- var DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5342
- var noop$2 = function () { };
5343
- var ɵ0$3 = noop$2;
5513
+ var DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5514
+ var noop$6 = function () { };
5515
+ var ɵ0$9 = noop$6;
5344
5516
  var MatDate = /** @class */ (function () {
5345
- function MatDate(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5346
- this.platform = platform;
5517
+ function MatDate(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5347
5518
  this.dateAdapter = dateAdapter;
5348
5519
  this.translate = translate;
5349
5520
  this.formBuilder = formBuilder;
5350
5521
  this.cd = cd;
5351
5522
  this.keyboard = keyboard;
5352
5523
  this.formGroupDir = formGroupDir;
5353
- this._onChangeCallback = noop$2;
5354
- this._onTouchedCallback = noop$2;
5524
+ this._onChangeCallback = noop$6;
5525
+ this._onTouchedCallback = noop$6;
5355
5526
  this._subscription = new rxjs.Subscription();
5356
5527
  this._writing = true;
5357
5528
  this._disabling = false;
5358
5529
  this._readonly = false;
5359
- this.dayMask = DAY_MASK;
5530
+ this.dayMask = DAY_MASK$2;
5360
5531
  this.floatLabel = 'auto';
5361
5532
  this.compact = false;
5362
5533
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -5400,11 +5571,12 @@
5400
5571
  });
5401
5572
  MatDate.prototype.ngOnInit = function () {
5402
5573
  var _this = this;
5403
- this.mobile = isNil(this.mobile) ? this.platform.is('mobile') : this.mobile;
5404
- this._keyboardHideDelay = this.mobile && KEYBOARD_HIDE_DELAY_MS || 0;
5405
5574
  this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
5406
5575
  if (!this.formControl)
5407
5576
  throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-field>.');
5577
+ this.mobile = isNotNil(this.mobile) ? this.mobile : isMobile(window);
5578
+ // Workaround because ion-datetime has issue (do not returned a ISO date)
5579
+ this._keyboardHideDelay = this.mobile && KEYBOARD_HIDE_DELAY_MS || 0;
5408
5580
  this.required = toBoolean(this.required, this.formControl.validator === i1.Validators.required);
5409
5581
  // Add 'validDate' validator (when existing validator are null or required, to be sure to keep it)
5410
5582
  if (!this.formControl.validator || this.formControl.validator === i1.Validators.required) {
@@ -5679,14 +5851,13 @@
5679
5851
  selector: 'mat-date-field',
5680
5852
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\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\n <!-- errors -->\n <mat-error *ngIf=\"formControl.touched && formControl.errors|mapKeys|arrayFirst; let errorKey\">\n <ng-container [ngSwitch]=\"errorKey\">\n <span *ngSwitchCase=\"'required'\" translate>ERROR.FIELD_REQUIRED</span>\n <span *ngSwitchCase=\"'validDate'\" translate>ERROR.FIELD_NOT_VALID_DATE_TIME</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 </ng-container>\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",
5681
5853
  providers: [
5682
- DEFAULT_VALUE_ACCESSOR,
5854
+ DEFAULT_VALUE_ACCESSOR$5,
5683
5855
  ],
5684
5856
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
5685
5857
  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%}"]
5686
5858
  },] }
5687
5859
  ];
5688
5860
  MatDate.ctorParameters = function () { return [
5689
- { type: i1$5.Platform },
5690
5861
  { type: i1$3.DateAdapter },
5691
5862
  { type: i1$2.TranslateService },
5692
5863
  { type: i1.FormBuilder },
@@ -5695,12 +5866,12 @@
5695
5866
  { type: i1.FormGroupDirective, decorators: [{ type: i0.Optional }] }
5696
5867
  ]; };
5697
5868
  MatDate.propDecorators = {
5869
+ mobile: [{ type: i0.Input }],
5698
5870
  formControl: [{ type: i0.Input }],
5699
5871
  formControlName: [{ type: i0.Input }],
5700
5872
  placeholder: [{ type: i0.Input }],
5701
5873
  floatLabel: [{ type: i0.Input }],
5702
5874
  required: [{ type: i0.Input }],
5703
- mobile: [{ type: i0.Input }],
5704
5875
  compact: [{ type: i0.Input }],
5705
5876
  placeholderChar: [{ type: i0.Input }],
5706
5877
  autofocus: [{ type: i0.Input }],
@@ -5714,33 +5885,32 @@
5714
5885
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
5715
5886
  };
5716
5887
 
5717
- var DEFAULT_VALUE_ACCESSOR$1 = {
5888
+ var DEFAULT_VALUE_ACCESSOR$4 = {
5718
5889
  provide: i1.NG_VALUE_ACCESSOR,
5719
5890
  useExisting: i0.forwardRef(function () { return MatDateTime; }),
5720
5891
  multi: true
5721
5892
  };
5722
5893
  var DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5723
5894
  var HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
5724
- var HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
5725
- var noop$3 = function () { };
5726
- var ɵ0$4 = noop$3;
5895
+ var HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
5896
+ var noop$5 = function () { };
5897
+ var ɵ0$8 = noop$5;
5727
5898
  var MatDateTime = /** @class */ (function () {
5728
- function MatDateTime(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5729
- this.platform = platform;
5899
+ function MatDateTime(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5730
5900
  this.dateAdapter = dateAdapter;
5731
5901
  this.translate = translate;
5732
5902
  this.formBuilder = formBuilder;
5733
5903
  this.cd = cd;
5734
5904
  this.keyboard = keyboard;
5735
5905
  this.formGroupDir = formGroupDir;
5736
- this._onChangeCallback = noop$3;
5737
- this._onTouchedCallback = noop$3;
5906
+ this._onChangeCallback = noop$5;
5907
+ this._onTouchedCallback = noop$5;
5738
5908
  this._subscription = new rxjs.Subscription();
5739
5909
  this._writing = true;
5740
5910
  this._disabling = false;
5741
5911
  this._readonly = false;
5742
5912
  this.dayMask = DAY_MASK$1;
5743
- this.hourMask = HOUR_MASK;
5913
+ this.hourMask = HOUR_MASK$1;
5744
5914
  this.floatLabel = 'auto';
5745
5915
  this.compact = false;
5746
5916
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -5783,11 +5953,12 @@
5783
5953
  });
5784
5954
  MatDateTime.prototype.ngOnInit = function () {
5785
5955
  var _this = this;
5786
- this.mobile = isNil(this.mobile) ? this.platform.is('mobile') : this.mobile;
5787
- this._keyboardHideDelay = this.mobile && KEYBOARD_HIDE_DELAY_MS || 0;
5788
5956
  this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
5789
5957
  if (!this.formControl)
5790
5958
  throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-time-field>.');
5959
+ this.mobile = isNotNil(this.mobile) ? this.mobile : isMobile(window);
5960
+ // Workaround because ion-datetime has issue (do not returned a ISO date)
5961
+ this._keyboardHideDelay = this.mobile && KEYBOARD_HIDE_DELAY_MS || 0;
5791
5962
  this.required = toBoolean(this.required, this.formControl.validator === i1.Validators.required);
5792
5963
  // Add 'validDate' validator (when existing validator are null or required, to be sure to keep it)
5793
5964
  if (!this.formControl.validator || this.formControl.validator === i1.Validators.required) {
@@ -6098,14 +6269,13 @@
6098
6269
  selector: 'mat-date-time-field',
6099
6270
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput hidden type=\"text\"\n readonly\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<!-- writable + time -->\n<ng-template #writable >\n <ion-grid class=\"ion-no-padding\">\n <ion-row class=\"ion-no-padding no-wrap\" nowrap>\n\n <!-- day -->\n <ion-col class=\"day ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"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 [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",
6100
6271
  providers: [
6101
- DEFAULT_VALUE_ACCESSOR$1,
6272
+ DEFAULT_VALUE_ACCESSOR$4,
6102
6273
  ],
6103
6274
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6104
6275
  styles: [":host{display:inline-block;width:100%;position:relative;--ion-grid-column-padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}mat-form-field .datetime-md{padding:0!important}ion-row.no-wrap{flex-wrap:nowrap}ion-col.day{min-width:100px}ion-col.day .mat-form-field-subscript-wrapper{overflow:visible;right:-64px;width:calc(100% + 64px)}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper{display:flex}ion-col.day .mat-form-field-subscript-wrapper .mat-form-field-hint-wrapper .mat-form-field-hint-spacer{flex:1 0 1em}ion-col.hour{min-width:55px;max-width:65px}ion-col.hour mat-form-field{width:100%}ion-col.hour mat-form-field input[type=text],ion-col.hour mat-form-field mat-label{text-align:left;min-width:50px}mat-form-field.mat-form-field-disabled ion-col.day{min-width:100px}.hour .mat-form-field-label{max-width:40px}.hour mat-form-field.mat-form-field-should-float .mat-form-field-placeholder{max-width:inherit}mat-error{text-align:right;width:100%}"]
6105
6276
  },] }
6106
6277
  ];
6107
6278
  MatDateTime.ctorParameters = function () { return [
6108
- { type: i1$5.Platform },
6109
6279
  { type: i1$3.DateAdapter },
6110
6280
  { type: i1$2.TranslateService },
6111
6281
  { type: i1.FormBuilder },
@@ -6133,17 +6303,17 @@
6133
6303
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
6134
6304
  };
6135
6305
 
6136
- var DEFAULT_VALUE_ACCESSOR$2 = {
6306
+ var DEFAULT_VALUE_ACCESSOR$3 = {
6137
6307
  provide: i1.NG_VALUE_ACCESSOR,
6138
6308
  useExisting: i0.forwardRef(function () { return MatDateShort; }),
6139
6309
  multi: true
6140
6310
  };
6141
- var DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
6311
+ var DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
6142
6312
  var noop$4 = function () {
6143
6313
  };
6144
- var ɵ0$5 = noop$4;
6314
+ var ɵ0$7 = noop$4;
6145
6315
  var MatDateShort = /** @class */ (function () {
6146
- function MatDateShort(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
6316
+ function MatDateShort(dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
6147
6317
  this.dateAdapter = dateAdapter;
6148
6318
  this.translate = translate;
6149
6319
  this.formBuilder = formBuilder;
@@ -6154,16 +6324,13 @@
6154
6324
  this._onTouchedCallback = noop$4;
6155
6325
  this.writing = true;
6156
6326
  this.disabling = false;
6157
- this.dayMask = DAY_MASK$2;
6327
+ this.dayMask = DAY_MASK;
6158
6328
  this.disabled = false;
6159
6329
  this.floatLabel = 'auto';
6160
6330
  this.readonly = false;
6161
6331
  this.compact = false;
6162
6332
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
6163
6333
  this.clearable = false;
6164
- // Workaround because ion-datetime has issue (do not returned a ISO date)
6165
- this.mobile = platform.is('mobile');
6166
- this.keyboardHideDelay = this.mobile && KEYBOARD_HIDE_DELAY_MS || 0;
6167
6334
  this.locale = (translate.currentLang || translate.defaultLang).substr(0, 2);
6168
6335
  }
6169
6336
  Object.defineProperty(MatDateShort.prototype, "tabindex", {
@@ -6192,6 +6359,9 @@
6192
6359
  this.formControl = this.formControl || this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName);
6193
6360
  if (!this.formControl)
6194
6361
  throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-date-short-field>.');
6362
+ this.mobile = isNotNil(this.mobile) ? this.mobile : isMobile(window);
6363
+ // Workaround because ion-datetime has issue (do not returned a ISO date)
6364
+ this.keyboardHideDelay = this.mobile && KEYBOARD_HIDE_DELAY_MS || 0;
6195
6365
  // Redirect errors from main control, into day sub control
6196
6366
  var $error = new rxjs.BehaviorSubject(null);
6197
6367
  this.required = toBoolean(this.required, this.formControl.validator === i1.Validators.required);
@@ -6431,14 +6601,13 @@
6431
6601
  selector: 'mat-date-short-field',
6432
6602
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{formControl.value|dateFormat: {pattern: displayPattern} }}</ion-text>\n</mat-form-field>\n\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\">\n\n <mat-label>{{placeholder}}</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dayControl\"\n [textMask]=\"{mask: dayMask, keepCharPositions: true, placeholderChar: placeholderChar}\"\n [placeholder]=\"'COMMON.DATE_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.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('validDate')\" translate>ERROR.FIELD_NOT_VALID_DATE</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateIsAfter')\">{{'ERROR.FIELD_NOT_VALID_DATE_AFTER' | translate: formControl.errors.dateIsAfter }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('dateRange')\" translate>ERROR.FIELD_NOT_VALID_DATE_RANGE</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMaxDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MAX_DURATION</mat-error>\n <mat-error *ngIf=\"!formControl.hasError('dateRange') && formControl.hasError('dateMinDuration')\" translate>ERROR.FIELD_NOT_VALID_DATE_MIN_DURATION</mat-error>\n <mat-error *ngIf=\"formControl.hasError('msg')\">{{formControl.errors.msg}}</mat-error>\n <ng-content select=\"mat-error\"></ng-content>\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",
6433
6603
  providers: [
6434
- DEFAULT_VALUE_ACCESSOR$2,
6604
+ DEFAULT_VALUE_ACCESSOR$3,
6435
6605
  ],
6436
6606
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6437
6607
  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%}"]
6438
6608
  },] }
6439
6609
  ];
6440
6610
  MatDateShort.ctorParameters = function () { return [
6441
- { type: i1$5.Platform },
6442
6611
  { type: i1$3.DateAdapter },
6443
6612
  { type: i1$2.TranslateService },
6444
6613
  { type: i1.FormBuilder },
@@ -6447,6 +6616,7 @@
6447
6616
  { type: i1.FormGroupDirective, decorators: [{ type: i0.Optional }] }
6448
6617
  ]; };
6449
6618
  MatDateShort.propDecorators = {
6619
+ mobile: [{ type: i0.Input }],
6450
6620
  disabled: [{ type: i0.Input }],
6451
6621
  formControl: [{ type: i0.Input }],
6452
6622
  formControlName: [{ type: i0.Input }],
@@ -6502,16 +6672,16 @@
6502
6672
  },] }
6503
6673
  ];
6504
6674
 
6505
- var DEFAULT_VALUE_ACCESSOR$3 = {
6675
+ var DEFAULT_VALUE_ACCESSOR$2 = {
6506
6676
  provide: i1.NG_VALUE_ACCESSOR,
6507
6677
  useExisting: i0.forwardRef(function () { return MatDuration; }),
6508
6678
  multi: true
6509
6679
  };
6510
6680
  var HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
6511
- var HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
6512
- var noop$5 = function () {
6681
+ var HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
6682
+ var noop$3 = function () {
6513
6683
  };
6514
- var ɵ0$6 = noop$5;
6684
+ var ɵ0$6 = noop$3;
6515
6685
  var MatDuration = /** @class */ (function () {
6516
6686
  function MatDuration(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
6517
6687
  this.dateAdapter = dateAdapter;
@@ -6520,11 +6690,11 @@
6520
6690
  this.cd = cd;
6521
6691
  this.formGroupDir = formGroupDir;
6522
6692
  this._subscription = new rxjs.Subscription();
6523
- this._onChangeCallback = noop$5;
6524
- this._onTouchedCallback = noop$5;
6693
+ this._onChangeCallback = noop$3;
6694
+ this._onTouchedCallback = noop$3;
6525
6695
  this.writing = true;
6526
6696
  this.disabling = false;
6527
- this.hourMask = HOUR_MASK$1;
6697
+ this.hourMask = HOUR_MASK;
6528
6698
  this.disabled = false;
6529
6699
  this.floatLabel = 'auto';
6530
6700
  this.readonly = false;
@@ -6717,7 +6887,7 @@
6717
6887
  selector: 'mat-duration-field',
6718
6888
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly else writable\">\n <input matInput hidden type=\"text\" readonly=\"true\" [formControl]=\"formControl\">\n <ion-text>{{ formControl.value|duration }}</ion-text>\n</mat-form-field>\n\n<!-- writable -->\n<ng-template #writable>\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"formControl.disabled\"\n [class.mat-form-field-invalid]=\"formControl.touched && formControl.invalid\">\n <mat-label *ngIf=\"placeholder && floatLabel != 'never'\" translate>COMMON.TIME</mat-label>\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput type=\"text\"\n autocomplete=\"off\"\n [formControl]=\"textControl\"\n [textMask]=\"{mask: hourMask, keepCharPositions: true, placeholderChar: placeholderChar, guide: true}\"\n [placeholder]=\"'COMMON.DURATION_PLACEHOLDER'|translate\"\n [required]=\"required\"\n (keydown.tab)=\"moveCaretToSeparator($event, true)\"\n (keydown.shift.tab)=\"moveCaretToSeparator($event, false)\"\n (keyup.escape)=\"preventEvent($event)\"\n (blur)=\"checkIfTouched()\"\n [tabindex]=\"tabindex !== undefined ? tabindex+1 : undefined\">\n\n\n <!-- errors -->\n <mat-error *ngIf=\"!formControl.hasError('required') && textControl.hasError('pattern')\" translate>ERROR.FIELD_NOT_VALID_PATTERN</mat-error>\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('min')\">\n {{(compact ? 'ERROR.FIELD_MIN_COMPACT' : 'ERROR.FIELD_MIN') | translate:formControl.errors.min }}</mat-error>\n <mat-error *ngIf=\"formControl.hasError('max')\">\n {{(compact ? 'ERROR.FIELD_MAX_COMPACT' : 'ERROR.FIELD_MAX') | translate:formControl.errors.max }}</mat-error>\n\n <ng-content select=\"mat-error\"></ng-content>\n </mat-form-field>\n</ng-template>\n\n",
6719
6889
  providers: [
6720
- DEFAULT_VALUE_ACCESSOR$3,
6890
+ DEFAULT_VALUE_ACCESSOR$2,
6721
6891
  ],
6722
6892
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6723
6893
  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%}"]
@@ -6777,22 +6947,22 @@
6777
6947
  },] }
6778
6948
  ];
6779
6949
 
6780
- var DEFAULT_VALUE_ACCESSOR$4 = {
6950
+ var DEFAULT_VALUE_ACCESSOR$1 = {
6781
6951
  provide: i1.NG_VALUE_ACCESSOR,
6782
6952
  useExisting: i0.forwardRef(function () { return MatBooleanField; }),
6783
6953
  multi: true
6784
6954
  };
6785
- var noop$6 = function () {
6955
+ var noop$2 = function () {
6786
6956
  };
6787
- var ɵ0$7 = noop$6;
6957
+ var ɵ0$5 = noop$2;
6788
6958
  var MatBooleanField = /** @class */ (function () {
6789
6959
  function MatBooleanField(translate, formBuilder, cd, formGroupDir) {
6790
6960
  this.translate = translate;
6791
6961
  this.formBuilder = formBuilder;
6792
6962
  this.cd = cd;
6793
6963
  this.formGroupDir = formGroupDir;
6794
- this._onChangeCallback = noop$6;
6795
- this._onTouchedCallback = noop$6;
6964
+ this._onChangeCallback = noop$2;
6965
+ this._onTouchedCallback = noop$2;
6796
6966
  this._writing = false;
6797
6967
  this.showRadio = false;
6798
6968
  this.disabled = false;
@@ -6967,7 +7137,7 @@
6967
7137
  selector: 'mat-boolean-field',
6968
7138
  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>{{(formControl.value == null && 'COMMON.EMPTY_OPTION' || (formControl.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 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 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===undefined\"\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 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",
6969
7139
  providers: [
6970
- DEFAULT_VALUE_ACCESSOR$4
7140
+ DEFAULT_VALUE_ACCESSOR$1
6971
7141
  ],
6972
7142
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6973
7143
  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}"]
@@ -7054,6 +7224,7 @@
7054
7224
  return MatNumpadEvent;
7055
7225
  }(KeyboardEvent));
7056
7226
 
7227
+ exports.AnimationState = void 0;
7057
7228
  (function (AnimationState) {
7058
7229
  AnimationState["ENTER"] = "enter";
7059
7230
  AnimationState["ENTER_INPUT"] = "enter-input";
@@ -7221,7 +7392,7 @@
7221
7392
  };
7222
7393
  return MatNumpadDomService;
7223
7394
  }());
7224
- 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" });
7395
+ 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" });
7225
7396
  MatNumpadDomService.decorators = [
7226
7397
  { type: i0.Injectable, args: [{
7227
7398
  providedIn: 'root'
@@ -7627,7 +7798,7 @@
7627
7798
  },] }
7628
7799
  ];
7629
7800
 
7630
- var DEFAULT_VALUE_ACCESSOR$5 = {
7801
+ var DEFAULT_VALUE_ACCESSOR = {
7631
7802
  provide: i1.NG_VALUE_ACCESSOR,
7632
7803
  useExisting: i0.forwardRef(function () { return MatSwipeField; }),
7633
7804
  multi: true
@@ -7947,7 +8118,7 @@
7947
8118
  { type: i0.Component, args: [{
7948
8119
  selector: 'mat-swipe-field',
7949
8120
  template: "<mat-form-field [floatLabel]=\"showSlides && (!floatLabel || floatLabel === 'auto') ? 'always': floatLabel\"\n [class]=\"classList\"\n [class.mat-form-field-disabled]=\"disabled\">\n <mat-label *ngIf=\"placeholder && floatLabel!=='never'\">\n {{placeholder}}\n </mat-label>\n <input matInput #fakeInput type=\"text\"\n [formControl]=\"formControl\"\n [readonly]=\"true\"\n (focus)=\"_onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showSlides\"\n [tabindex]=\"tabindex\">\n\n <div class=\"slides-container\" [class.hidden]=\"!showSlides\">\n <ion-slides #slides\n [options]=\"slidesOptions\"\n (ionSlidesDidLoad)=\"slidesLoaded()\"\n (ionSlideReachStart)=\"reachStart(true)\"\n (ionSlideReachEnd)=\"reachEnd(true)\"\n (ionSlideNextEnd)=\"reachStart(false)\"\n (ionSlidePrevEnd)=\"reachEnd(false)\"\n (ionSlideDidChange)=\"slideChanged()\"\n >\n <ion-slide *ngFor=\"let item of $items | async\">\n <ion-label>{{ displayWith(item) }}</ion-label>\n </ion-slide>\n\n </ion-slides>\n </div>\n\n <button #prevButton\n mat-icon-button\n type=\"button\"\n class=\"button-prev\"\n [hidden]=\"!showSlides\"\n [disabled]=\"previousDisabled\"\n (click)=\"previous()\">\n <mat-icon>chevron_left</mat-icon>\n </button>\n <button #nextButton\n mat-icon-button\n type=\"button\"\n class=\"button-next\"\n [hidden]=\"!showSlides\"\n [disabled]=\"nextDisabled\"\n (click)=\"next()\">\n <mat-icon>chevron_right</mat-icon>\n </button>\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"formControl.hasError('entity')\" translate>ERROR.FIELD_INVALID</mat-error>\n\n</mat-form-field>\n",
7950
- providers: [DEFAULT_VALUE_ACCESSOR$5],
8121
+ providers: [DEFAULT_VALUE_ACCESSOR],
7951
8122
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
7952
8123
  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}"]
7953
8124
  },] }
@@ -8008,14 +8179,14 @@
8008
8179
  },] }
8009
8180
  ];
8010
8181
 
8011
- var noop$7 = function () { };
8012
- var ɵ0$8 = noop$7;
8182
+ var noop$1 = function () { };
8183
+ var ɵ0$4 = noop$1;
8013
8184
  var MatChipsField = /** @class */ (function () {
8014
8185
  function MatChipsField(cd, formGroupDir) {
8015
8186
  this.cd = cd;
8016
8187
  this.formGroupDir = formGroupDir;
8017
- this._onChangeCallback = noop$7;
8018
- this._onTouchedCallback = noop$7;
8188
+ this._onChangeCallback = noop$1;
8189
+ this._onTouchedCallback = noop$1;
8019
8190
  this.logPrefix = '[mat-chips] ';
8020
8191
  this.formControlName = null;
8021
8192
  this.required = false;
@@ -8174,9 +8345,9 @@
8174
8345
  // - if label then col size = 2
8175
8346
  // - if rankOrder then col size = 1
8176
8347
  // - ese => auto size
8177
- || this.displayAttributes.map(function (attr) { return (attr && attr.endsWith('label')) ? 2
8178
- : ((attr && attr.endsWith('rankOrder')) ? 1
8179
- : undefined); });
8348
+ || this.displayAttributes.map(function (attr) { return attr && (attr.endsWith('label') ? 3
8349
+ : (attr.endsWith('rankOrder') ? 2
8350
+ : undefined)); });
8180
8351
  this.displayColumnNames = this.displayAttributes.map(function (attr, index) { return _this.displayColumnNames && _this.displayColumnNames[index] ||
8181
8352
  (_this.i18nPrefix + changeCaseToUnderscore(attr).toUpperCase()); });
8182
8353
  this.mobile = toBoolean(this.mobile, false);
@@ -8195,8 +8366,8 @@
8195
8366
  if (!this.suggestFn) {
8196
8367
  var suggestFromArrayFn_1 = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
8197
8368
  return __generator(this, function (_c) {
8198
- if (this.debug)
8199
- console.debug(this.logPrefix + ' Calling suggestFromArray with value=', value);
8369
+ // DEBUG
8370
+ //if (this.debug) console.debug(this.logPrefix + ' Calling suggestFromArray with value=', value);
8200
8371
  return [2 /*return*/, suggestFromArray(this.$inputItems.value, value, Object.assign({ searchAttributes: this.displayAttributes }, filter))];
8201
8372
  });
8202
8373
  }); };
@@ -8206,13 +8377,13 @@
8206
8377
  switch (_c.label) {
8207
8378
  case 0:
8208
8379
  if (!isNil(this.$inputItems.value)) return [3 /*break*/, 2];
8209
- if (this.debug)
8210
- console.debug('[mat-chips] Waiting items to be set...');
8380
+ // DEBUG
8381
+ //if (this.debug) console.debug('[mat-chips] Waiting items to be set...');
8211
8382
  return [4 /*yield*/, firstNotNilPromise(this.$inputItems)];
8212
8383
  case 1:
8384
+ // DEBUG
8385
+ //if (this.debug) console.debug('[mat-chips] Waiting items to be set...');
8213
8386
  _c.sent();
8214
- if (this.debug)
8215
- console.debug('[mat-chips] Received items:', this.$inputItems.value);
8216
8387
  _c.label = 2;
8217
8388
  case 2:
8218
8389
  this.suggestFn = suggestFromArrayFn_1;
@@ -8244,9 +8415,7 @@
8244
8415
  ),
8245
8416
  // Object set: use it (no distinctUntilChanged() pipe need)
8246
8417
  this.inputControl.valueChanges
8247
- .pipe(operators.startWith(this.inputControl.value), operators.filter(function (value) { return isNotNil(value) && typeof value === 'object'; }),
8248
- // DEBUG
8249
- operators.tap(function (value) { return _this.debug && console.debug(_this.logPrefix + ' Received an object value: ', value); })),
8418
+ .pipe(operators.startWith(this.inputControl.value), operators.filter(function (value) { return isNotNil(value) && typeof value === 'object'; })),
8250
8419
  // On dropdown button click (no distinctUntilChanged(), nor debounceTime)
8251
8420
  this.dropButtonClick
8252
8421
  .pipe(operators.filter(function (event) { return _this.enabled && (!event || !event.defaultPrevented); }), operators.tap(function (_) { return _this.matInputText.nativeElement.focus(); }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; }),
@@ -8319,6 +8488,7 @@
8319
8488
  _this.$filteredItems.next(undefined);
8320
8489
  }
8321
8490
  _this._implicitValue = null; // reset the implicit value
8491
+ _this.closePanel(); // Clone panel
8322
8492
  }));
8323
8493
  // Listen form control status change
8324
8494
  this._subscription.add(this.formControl.statusChanges
@@ -8329,6 +8499,7 @@
8329
8499
  .subscribe(function () { return _this.checkIfTouched(); }));
8330
8500
  this._subscription.add(this.keydownEscape.subscribe(function (event) {
8331
8501
  if (_this.isOpen) {
8502
+ // Avoid form or page to manage escape event
8332
8503
  event === null || event === void 0 ? void 0 : event.stopPropagation();
8333
8504
  event === null || event === void 0 ? void 0 : event.preventDefault();
8334
8505
  // DEBUG
@@ -8416,8 +8587,8 @@
8416
8587
  value = [value];
8417
8588
  }
8418
8589
  if (value !== this.formControl.value) {
8419
- if (this.debug)
8420
- console.debug(this.logPrefix + ' Writing value: ', value);
8590
+ // DEBUG
8591
+ //if (this.debug) console.debug(this.logPrefix + ' Writing value: ', value);
8421
8592
  this.formControl.patchValue(value, { emitEvent: false });
8422
8593
  this._onChangeCallback(value);
8423
8594
  }
@@ -8450,15 +8621,17 @@
8450
8621
  if (event.stopPropagation)
8451
8622
  event.stopPropagation();
8452
8623
  event.returnValue = false;
8453
- if (this.debug)
8454
- console.debug(this.logPrefix + ' Cancelling focus event');
8624
+ // DEBUG
8625
+ //if (this.debug) console.debug(this.logPrefix + ' Cancelling focus event');
8455
8626
  return false;
8456
8627
  }
8628
+ // DEBUG
8629
+ //if (this.debug) console.debug(this.logPrefix + ' Select input content');
8457
8630
  var hasContent = selectInputContent(event);
8458
8631
  // If combo is empty, or if has content but should force to show panel on focus
8459
8632
  if (!hasContent || (this.showPanelOnFocus && this.showAllOnFocus)) {
8460
- if (this.debug)
8461
- console.debug(this.logPrefix + ' Emit focus event');
8633
+ // DEBUG
8634
+ //if (this.debug) console.debug(this.logPrefix + ' Emit focus event');
8462
8635
  this.focused.emit(event);
8463
8636
  return true;
8464
8637
  }
@@ -8473,11 +8646,12 @@
8473
8646
  if (event.stopPropagation)
8474
8647
  event.stopPropagation();
8475
8648
  event.returnValue = false;
8476
- //DEBUG console.debug(this.logPrefix + " Cancelling blur event");
8649
+ //DEBUG
8650
+ //if (this.debug) console.debug(this.logPrefix + " Cancelling blur event");
8477
8651
  return false;
8478
8652
  }
8479
- //DEBUG
8480
- //console.debug(this.logPrefix + ' Blur: move caret to the beginning');
8653
+ // DEBUG
8654
+ //if (this.debug) console.debug(this.logPrefix + ' Blur: move caret to the beginning');
8481
8655
  // Move caret to the beginning (fix issue IMAGINE-469)
8482
8656
  selectInputRange(event.target, 0, 0);
8483
8657
  this.blurred.emit(event);
@@ -8634,7 +8808,7 @@
8634
8808
  { type: i0.Component, args: [{
8635
8809
  // eslint-disable-next-line @angular-eslint/component-selector
8636
8810
  selector: 'mat-chips-field',
8637
- template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\" class=\"material-chips\" [class.mat-form-field-disabled]=\"disabled\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <mat-label>{{placeholder}}</mat-label>\n <mat-chip-list #chipList\n (focus)=\"filterChipsFocusEvent($event)\" >\n <mat-chip\n *ngFor=\"let item of value\"\n [selectable]=\"false\"\n [removable]=\"!disabled\"\n (removed)=\"remove(item)\"\n [color]=\"chipColor\"\n >\n {{displayWith(item)}}\n <mat-icon matChipRemove *ngIf=\"!disabled\">cancel</mat-icon>\n </mat-chip>\n\n <input #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"inputControl\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [readonly]=\"disabled\"\n [hidden]=\"disabled\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.showPanel && dropButtonClick.emit($event)\"\n [matChipInputFor]=\"chipList\"\n >\n </mat-chip-list>\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n (optionSelected)=\"add($event)\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [panelWidth]=\"panelWidth\">\n <ion-row class=\"mat-autocomplete-header ion-no-padding\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i; last as last\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n <ion-text color=\"light\" *ngIf=\"last && itemCount; let count\" class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async; else loadingTemplate; let items\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: inputControl.value, withAccent: highlightAccent } \"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"dropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
8811
+ template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\" class=\"material-chips\" [class.mat-form-field-disabled]=\"disabled\">\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <mat-label>{{placeholder}}</mat-label>\n <mat-chip-list #chipList\n (focus)=\"filterChipsFocusEvent($event)\" >\n <mat-chip\n *ngFor=\"let item of value\"\n [selectable]=\"false\"\n [removable]=\"!disabled\"\n (removed)=\"remove(item)\"\n [color]=\"chipColor\"\n >\n {{displayWith(item)}}\n <mat-icon matChipRemove *ngIf=\"!disabled\">cancel</mat-icon>\n </mat-chip>\n\n <input #matInputText type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [matAutocompletePosition]=\"matAutocompletePosition\"\n [formControl]=\"inputControl\"\n [appAutofocus]=\"autofocus\"\n [tabindex]=\"_tabindex\"\n [readonly]=\"disabled\"\n [hidden]=\"disabled\"\n [required]=\"required\"\n (click)=\"clicked.emit($event)\"\n (focus)=\"filterInputTextFocusEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"keydownEscape.emit($event)\"\n (keyup.enter)=\"keyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.showPanel && dropButtonClick.emit($event)\"\n [matChipInputFor]=\"chipList\"\n >\n </mat-chip-list>\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n (optionSelected)=\"add($event)\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [panelWidth]=\"panelWidth\">\n <ion-row class=\"mat-autocomplete-header ion-no-padding column\">\n <ion-col *ngFor=\"let attr of displayAttributes; index as i\" [size]=\"displayColumnSizes[i]\">\n <ion-label [innerHTML]=\"displayColumnNames[i] | translate\"></ion-label>\n </ion-col>\n </ion-row>\n\n <ng-container *ngIf=\"$filteredItems | async as items; else loadingTemplate\">\n <!-- No item option -->\n <mat-option *ngIf=\"items | isEmptyArray\" class=\"ion-padding text-italic\" disabled>\n <ion-label>{{noResultMessage | translate}}</ion-label>\n </mat-option>\n\n <mat-option *ngFor=\"let item of items\" [value]=\"item\" class=\"ion-no-padding\">\n <ion-row [classList]=\"item.classList\">\n <ion-col *ngFor=\"let path of displayAttributes; index as i;\"\n [size]=\"displayColumnSizes[i]\">\n <ion-text [innerHTML]=\"item | propertyGet: path | highlight: { search: inputControl.value, withAccent: highlightAccent } \"></ion-text>\n </ion-col>\n </ion-row>\n </mat-option>\n\n <!-- More item -->\n <mat-option *ngIf=\"_moreItemsCount\" (ngInit)=\"_initAutocompleteInfiniteScroll()\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-container>\n\n <!-- footer -->\n <ion-row *ngIf=\"itemCount as count\"\n class=\"mat-autocomplete-footer ion-no-padding\">\n <ion-col>\n <ion-text class=\"ion-float-end ion-padding-end\"><i>{{'COMMON.RESULT_COUNT'|translate: {count: count} }}</i></ion-text>\n </ion-col>\n </ion-row>\n\n <!-- Loading spinner -->\n <ng-template #loadingTemplate>\n <mat-option *ngIf=\"(matInputText.value | strLength) >= suggestLengthThreshold; else waitMoreCharacterTemplate\"\n class=\"ion-padding\" disabled>\n <ion-skeleton-text [animated]=\"true\" style=\"width: 100%\"></ion-skeleton-text>\n </mat-option>\n </ng-template>\n\n <!-- Need more characters -->\n <ng-template #waitMoreCharacterTemplate>\n <mat-option class=\"ion-padding text-italic\" disabled>\n <ion-label>\n {{'INFO.PLEASE_TYPE_MORE_CHARACTERS'|translate:{minLength: suggestLengthThreshold} }}\n </ion-label>\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <ng-content select=\"[matError]\"></ng-content>\n\n </mat-form-field>\n\n </ion-col>\n <ion-col size=\"auto\" class=\"ion-align-self-center\">\n <ng-content select=\"[matAfter]\"></ng-content>\n </ion-col>\n </ion-row>\n</ion-grid>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n\n\n<ng-template #matSuffixTemplate>\n <button mat-icon-button tabindex=\"-1\"\n type=\"button\"\n (click)=\"dropButtonClick.emit($event)\"\n [hidden]=\"disabled\">\n <mat-icon class=\"large select-arrow\">arrow_drop_down</mat-icon>\n </button>\n <button mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"clearable\"\n (click)=\"clearValue($event)\"\n [hidden]=\"disabled || !formControl.value\">\n <mat-icon>close</mat-icon>\n </button>\n\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n",
8638
8812
  providers: [{
8639
8813
  provide: i1.NG_VALUE_ACCESSOR,
8640
8814
  multi: true,
@@ -8983,7 +9157,7 @@
8983
9157
  };
8984
9158
  return ProgressBarService;
8985
9159
  }());
8986
- ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
9160
+ ProgressBarService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
8987
9161
  ProgressBarService.decorators = [
8988
9162
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
8989
9163
  ];
@@ -9030,7 +9204,7 @@
9030
9204
  };
9031
9205
  return AppGestureConfig;
9032
9206
  }(i1$6.HammerGestureConfig));
9033
- AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
9207
+ AppGestureConfig.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
9034
9208
  AppGestureConfig.decorators = [
9035
9209
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9036
9210
  ];
@@ -9297,7 +9471,7 @@
9297
9471
  };
9298
9472
  return MatPaginatorI18n;
9299
9473
  }(paginator.MatPaginatorIntl));
9300
- MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
9474
+ MatPaginatorI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
9301
9475
  MatPaginatorI18n.decorators = [
9302
9476
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9303
9477
  ];
@@ -9389,17 +9563,17 @@
9389
9563
  return rgbArrayToHex(rgb.map(function (v) { return 255 - v; }));
9390
9564
  }
9391
9565
 
9392
- var noop$8 = function () {
9566
+ var noop = function () {
9393
9567
  };
9394
- var ɵ0$9 = noop$8;
9568
+ var ɵ0$3 = noop;
9395
9569
  var AppFormField = /** @class */ (function () {
9396
9570
  function AppFormField(translate, cd, injector, formGroupDir) {
9397
9571
  this.translate = translate;
9398
9572
  this.cd = cd;
9399
9573
  this.injector = injector;
9400
9574
  this.formGroupDir = formGroupDir;
9401
- this._onChangeCallback = noop$8;
9402
- this._onTouchedCallback = noop$8;
9575
+ this._onChangeCallback = noop;
9576
+ this._onTouchedCallback = noop;
9403
9577
  this.readonly = false;
9404
9578
  this.compact = false;
9405
9579
  this.floatLabel = 'auto';
@@ -9957,7 +10131,7 @@
9957
10131
  };
9958
10132
  return AudioProvider;
9959
10133
  }(StartableService));
9960
- 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" });
10134
+ 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" });
9961
10135
  AudioProvider.decorators = [
9962
10136
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9963
10137
  ];
@@ -10067,7 +10241,7 @@
10067
10241
  };
10068
10242
  return Hotkeys;
10069
10243
  }());
10070
- 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" });
10244
+ 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" });
10071
10245
  Hotkeys.decorators = [
10072
10246
  { type: i0.Injectable, args: [{
10073
10247
  providedIn: 'root'
@@ -10272,7 +10446,7 @@
10272
10446
  return Base64ImageReader;
10273
10447
  }());
10274
10448
 
10275
- var uuidv4 = uuidv4Imported__namespace;
10449
+ var uuidv4$1 = uuidv4Imported__namespace;
10276
10450
  var FileService = /** @class */ (function () {
10277
10451
  function FileService(platform,
10278
10452
  //private transfer: FileTransfer,
@@ -10318,7 +10492,7 @@
10318
10492
  lastSlashIndex = source.lastIndexOf('/');
10319
10493
  if (lastSlashIndex === -1)
10320
10494
  throw new Error('Invalid URL: ' + source);
10321
- fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
10495
+ fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
10322
10496
  if (!(responseType === 'file' && this.canUseFileSystem)) return [3 /*break*/, 4];
10323
10497
  console.warn("WARN: [file] Fetching image {" + source + "} in local file...");
10324
10498
  targetFilePath = this._imageDirectory + fileName;
@@ -10381,7 +10555,7 @@
10381
10555
  };
10382
10556
  return FileService;
10383
10557
  }());
10384
- 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" });
10558
+ 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" });
10385
10559
  FileService.decorators = [
10386
10560
  { type: i0.Injectable, args: [{
10387
10561
  providedIn: 'root',
@@ -10548,7 +10722,7 @@
10548
10722
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
10549
10723
 
10550
10724
  var scrypt = require('scrypt-async');
10551
- var sha256 = require('hash.js/lib/hash/sha/256');
10725
+ var sha256$1 = require('hash.js/lib/hash/sha/256');
10552
10726
  var sha512 = require('hash.js/lib/hash/sha/512');
10553
10727
  var nacl = {
10554
10728
  sign: tweetnacl.sign,
@@ -10654,7 +10828,7 @@
10654
10828
  * Hash (using SHA256) a message
10655
10829
  */
10656
10830
  CryptoService.prototype.sha256 = function (message) {
10657
- return sha256().update(message).digest('hex');
10831
+ return sha256$1().update(message).digest('hex');
10658
10832
  };
10659
10833
  /**
10660
10834
  * Hash (using SHA512) a message
@@ -10668,7 +10842,7 @@
10668
10842
  };
10669
10843
  return CryptoService;
10670
10844
  }());
10671
- CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
10845
+ CryptoService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
10672
10846
  CryptoService.decorators = [
10673
10847
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
10674
10848
  ];
@@ -11198,109 +11372,6 @@
11198
11372
  EntityClass({ typename: 'PeerVO' })
11199
11373
  ], exports.Peer);
11200
11374
 
11201
- // import the required animation functions from the angular animations module
11202
- var fadeInAnimation =
11203
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11204
- animations.trigger('fadeInAnimation', [
11205
- // route 'enter' transition
11206
- animations.transition(':enter', [
11207
- // css styles at start of transition
11208
- animations.style({ opacity: 0 }),
11209
- // animation and styles at end of transition
11210
- animations.animate('.3s', animations.style({ opacity: 1 }))
11211
- ]),
11212
- ]);
11213
- var fadeInOutAnimation =
11214
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11215
- animations.trigger('fadeInOutAnimation', [
11216
- // route 'enter' transition
11217
- animations.transition(':enter', [
11218
- // css styles at start of transition
11219
- animations.style({ opacity: 0 }),
11220
- // animation and styles at end of transition
11221
- animations.animate('.3s', animations.style({ opacity: 1 }))
11222
- ]),
11223
- // route 'leave' transition
11224
- animations.transition(':leave', [
11225
- // animation and styles at end of transition
11226
- animations.animate('.5s ease-in-out', animations.style({
11227
- opacity: 0
11228
- }))
11229
- ]),
11230
- ]);
11231
- var slideInOutAnimation =
11232
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11233
- animations.trigger('slideInOutAnimation', [
11234
- // end state styles for route container (host)
11235
- animations.state('*', animations.style({
11236
- // the view covers the whole screen with a semi tranparent background
11237
- position: 'relative',
11238
- top: 0,
11239
- left: 0,
11240
- right: 0,
11241
- bottom: 0,
11242
- opacity: 1
11243
- })),
11244
- // route 'enter' transition
11245
- animations.transition(':enter', [
11246
- // styles at start of transition
11247
- animations.style({
11248
- // start with the content positioned off the right of the screen,
11249
- // -400% is required instead of -100% because the negative position adds to the width of the element
11250
- left: '400%',
11251
- // start with background opacity set to 0 (invisible)
11252
- opacity: 0
11253
- }),
11254
- // animation and styles at end of transition
11255
- animations.animate('.3s ease-in-out', animations.style({
11256
- // transition the right position to 0 which slides the content into view
11257
- left: 0,
11258
- // transition the background opacity to 0.8 to fade it in
11259
- opacity: 0.8
11260
- }))
11261
- ]),
11262
- // route 'leave' transition
11263
- animations.transition(':leave', [
11264
- // animation and styles at end of transition
11265
- animations.animate('.5s ease-in-out', animations.style({
11266
- // transition the right position to -400% which slides the content out of view
11267
- left: '400%',
11268
- // transition the background opacity to 0 to fade it out
11269
- opacity: 0
11270
- }))
11271
- ])
11272
- ]);
11273
- var slideUpDownAnimation =
11274
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11275
- animations.trigger('slideUpDownAnimation', [
11276
- // end state styles for route container (host)
11277
- animations.state('*', animations.style({
11278
- transform: 'translateY(0)',
11279
- opacity: 1
11280
- })),
11281
- // route 'enter' transition
11282
- animations.transition(':enter', [
11283
- // styles at start of transition
11284
- animations.style({
11285
- transform: 'translateY(-400%)',
11286
- opacity: 0
11287
- }),
11288
- // animation and styles at end of transition
11289
- animations.animate('.3s ease-in-out', animations.style({
11290
- transform: 'translateY(0)',
11291
- opacity: 1
11292
- }))
11293
- ]),
11294
- // route 'leave' transition
11295
- animations.transition(':leave', [
11296
- // animation and styles at end of transition
11297
- animations.animate('.5s ease-in-out', animations.style({
11298
- transform: 'translateY(-100%)',
11299
- opacity: 0
11300
- }))
11301
- ])
11302
- ]);
11303
-
11304
11375
  var HttpUtils = /** @class */ (function () {
11305
11376
  function HttpUtils() {
11306
11377
  }
@@ -11641,7 +11712,7 @@
11641
11712
  onRefresh: [{ type: i0.Input }]
11642
11713
  };
11643
11714
 
11644
- var moment$3 = momentImported__namespace;
11715
+ var moment$4 = momentImported__namespace;
11645
11716
  var SETTINGS_STORAGE_KEY = 'settings';
11646
11717
  var SETTINGS_TRANSIENT_PROPERTIES = ['mobile', 'touchUi' /*deprecated*/];
11647
11718
  // fixme: this constant points to static environment
@@ -11729,7 +11800,7 @@
11729
11800
  LocalSettingsService.prototype.ngOnStart = function () {
11730
11801
  console.info('[settings] Starting service...');
11731
11802
  // Restoring local settings
11732
- this._data.mobile = isNotNil(this._data.mobile) ? this._data.mobile : isMobile(window);
11803
+ this._data.mobile = isNotNil(this._data.mobile) ? this._data.mobile : (isCordova(window) || isMobile(window));
11733
11804
  this._data.usageMode = (isAndroid(window) || isIOS(window)) ? 'FIELD' : 'DESK'; // FIELD by default if Android or iOS
11734
11805
  // Restoring local settings
11735
11806
  return this.restoreLocally();
@@ -11943,11 +12014,11 @@
11943
12014
  if (!feature) {
11944
12015
  feature = {
11945
12016
  name: featureName.toLowerCase(),
11946
- lastSyncDate: moment$3().toISOString()
12017
+ lastSyncDate: moment$4().toISOString()
11947
12018
  };
11948
12019
  }
11949
12020
  else {
11950
- feature.lastSyncDate = moment$3().toISOString();
12021
+ feature.lastSyncDate = moment$4().toISOString();
11951
12022
  }
11952
12023
  this.saveOfflineFeature(feature);
11953
12024
  };
@@ -12141,7 +12212,7 @@
12141
12212
  if (!page || !page.title || !page.path)
12142
12213
  throw Error('Missing required argument \'page\', \'page.path\' or \'page.title\'');
12143
12214
  // Set time
12144
- page.time = page.time || moment$3();
12215
+ page.time = page.time || moment$4();
12145
12216
  // Clean the title (remove <small> tags)
12146
12217
  if (!opts || opts.removeTitleSmallTag !== false) {
12147
12218
  var tagIndex = page.title.indexOf('</small>');
@@ -12158,7 +12229,7 @@
12158
12229
  };
12159
12230
  return LocalSettingsService;
12160
12231
  }(StartableService));
12161
- 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" });
12232
+ 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" });
12162
12233
  LocalSettingsService.decorators = [
12163
12234
  { type: i0.Injectable, args: [{
12164
12235
  providedIn: 'root',
@@ -13039,7 +13110,7 @@
13039
13110
  };
13040
13111
  return NetworkService;
13041
13112
  }(StartableService));
13042
- 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" });
13113
+ 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" });
13043
13114
  NetworkService.decorators = [
13044
13115
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
13045
13116
  ];
@@ -13059,7 +13130,7 @@
13059
13130
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] }
13060
13131
  ]; };
13061
13132
 
13062
- var ErrorCodes = {
13133
+ var ErrorCodes$2 = {
13063
13134
  UNKNOWN_ERROR: 0,
13064
13135
  LOAD_ACCOUNT_ERROR: 1,
13065
13136
  BAD_PASSWORD: 2,
@@ -13476,7 +13547,7 @@
13476
13547
  case 13:
13477
13548
  err_1 = _b.sent();
13478
13549
  console.error(err_1);
13479
- throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
13550
+ throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
13480
13551
  case 14:
13481
13552
  // Emit update event
13482
13553
  if (!opts || opts.emitEvent !== false) {
@@ -14253,7 +14324,7 @@
14253
14324
  }(StartableService));
14254
14325
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
14255
14326
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
14256
- 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" });
14327
+ 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" });
14257
14328
  EntitiesStorage.decorators = [
14258
14329
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
14259
14330
  ];
@@ -14409,10 +14480,10 @@
14409
14480
  function referentialsToString(values, properties, separator) {
14410
14481
  return (values || []).map(function (v) { return referentialToString(v, properties); }).join(separator || ', ');
14411
14482
  }
14412
- var ɵ0$a = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14483
+ var ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14413
14484
  var StatusList = Object.freeze([
14414
14485
  {
14415
- id: ɵ0$a,
14486
+ id: ɵ0$2,
14416
14487
  icon: 'checkmark',
14417
14488
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
14418
14489
  },
@@ -14715,7 +14786,7 @@
14715
14786
  (data.lastName || '')) || '';
14716
14787
  }
14717
14788
 
14718
- var uuidv4$1 = uuidv4Imported__namespace;
14789
+ var uuidv4 = uuidv4Imported__namespace;
14719
14790
  var _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
14720
14791
  var NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
14721
14792
  /**
@@ -14759,7 +14830,7 @@
14759
14830
  // Skip if not tracked
14760
14831
  if (!context || !context.tracked)
14761
14832
  return forward(operation);
14762
- var id = context.serializationKey || uuidv4$1();
14833
+ var id = context.serializationKey || uuidv4();
14763
14834
  console.debug("[apollo-tracker-link] Watching tracked query {" + operation.operationName + "#" + id + "}");
14764
14835
  // Clean context, before calling JSON.stringify (remove unused attributes)
14765
14836
  var cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -15333,7 +15404,7 @@
15333
15404
  case 1:
15334
15405
  _a.sent();
15335
15406
  console.info('[graphql] Starting graphql...');
15336
- mobile = this.platform.is('mobile') || this.platform.is('mobileweb');
15407
+ mobile = isMobile(window);
15337
15408
  enableTrackMutationQueries = !mobile;
15338
15409
  peer = this.network.peer;
15339
15410
  if (!peer)
@@ -15390,14 +15461,14 @@
15390
15461
  mutationLinks = void 0;
15391
15462
  // Add queue to store tracked queries, when offline
15392
15463
  if (enableTrackMutationQueries) {
15393
- serializingLink = new SerializingLink__default['default']();
15464
+ serializingLink = new SerializingLink__default["default"]();
15394
15465
  trackerLink = createTrackerLink({
15395
15466
  storage: storage,
15396
15467
  onNetworkStatusChange: this._networkStatusChanged$,
15397
15468
  debounce: 1000,
15398
15469
  debug: true
15399
15470
  });
15400
- queueLink_1 = new QueueLink__default['default']();
15471
+ queueLink_1 = new QueueLink__default["default"]();
15401
15472
  this.registerSubscription(this._networkStatusChanged$
15402
15473
  .subscribe(function (type) {
15403
15474
  // Network is offline: start buffering into queue
@@ -15412,7 +15483,7 @@
15412
15483
  }
15413
15484
  }));
15414
15485
  mutationLinks = [
15415
- loggerLink__default['default'],
15486
+ loggerLink__default["default"],
15416
15487
  queueLink_1,
15417
15488
  trackerLink,
15418
15489
  queueLink_1,
@@ -15519,7 +15590,7 @@
15519
15590
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
15520
15591
  || this.toAppError(err.networkError)
15521
15592
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
15522
- || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
15593
+ || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
15523
15594
  // If graphQL: try to convert the first error found
15524
15595
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
15525
15596
  || this.toAppError(err)
@@ -15527,7 +15598,7 @@
15527
15598
  || (err.graphQLErrors && err.graphQLErrors[0])
15528
15599
  || err;
15529
15600
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
15530
- if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
15601
+ if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
15531
15602
  console.error('[graphql] original error: ' + err.networkError.message);
15532
15603
  this.onNetworkError.next(error);
15533
15604
  }
@@ -15563,7 +15634,7 @@
15563
15634
  return 'ERROR.UNAUTHORIZED';
15564
15635
  case ServerErrorCodes.FORBIDDEN:
15565
15636
  return 'ERROR.FORBIDDEN';
15566
- case ErrorCodes.UNKNOWN_NETWORK_ERROR:
15637
+ case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
15567
15638
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
15568
15639
  case ServerErrorCodes.BAD_UPDATE_DATE:
15569
15640
  return 'ERROR.BAD_UPDATE_DATE';
@@ -15595,7 +15666,7 @@
15595
15666
  };
15596
15667
  return GraphqlService;
15597
15668
  }(StartableService));
15598
- 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" });
15669
+ 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" });
15599
15670
  GraphqlService.decorators = [
15600
15671
  { type: i0.Injectable, args: [{
15601
15672
  providedIn: 'root'
@@ -15612,7 +15683,7 @@
15612
15683
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
15613
15684
  ]; };
15614
15685
 
15615
- var sha256$1 = require('hash.js/lib/hash/sha/256');
15686
+ var sha256 = require('hash.js/lib/hash/sha/256');
15616
15687
  var BaseGraphqlServiceOptions = /** @class */ (function () {
15617
15688
  function BaseGraphqlServiceOptions() {
15618
15689
  }
@@ -15782,8 +15853,8 @@
15782
15853
  };
15783
15854
  /* -- protected methods -- */
15784
15855
  BaseGraphqlService.prototype.computeMutableWatchQueryId = function (opts) {
15785
- var queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
15786
- var variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
15856
+ var queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
15857
+ var variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
15787
15858
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
15788
15859
  };
15789
15860
  BaseGraphqlService.prototype.findMutableWatchQueries = function (opts) {
@@ -15856,19 +15927,19 @@
15856
15927
  /* ------------------------------------
15857
15928
  * GraphQL queries
15858
15929
  * ------------------------------------*/
15859
- var Fragments = {
15860
- 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 }"]))),
15861
- 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 }"])))
15930
+ var Fragments$1 = {
15931
+ 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 }"]))),
15932
+ settings: core.gql(templateObject_2$4 || (templateObject_2$4 = __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 }"])))
15862
15933
  };
15863
15934
  // Load account query
15864
- 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);
15935
+ var LoadQuery$1 = core.gql(templateObject_3$3 || (templateObject_3$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$1.account, Fragments$1.settings);
15865
15936
  // Check email query
15866
- 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"])));
15937
+ var IsEmailExistsQuery = core.gql(templateObject_4$3 || (templateObject_4$3 = __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"])));
15867
15938
  // Save (create or update) account mutation
15868
15939
  var AccountMutations = {
15869
- 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),
15870
- 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),
15871
- 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)
15940
+ 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),
15941
+ 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),
15942
+ 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)
15872
15943
  };
15873
15944
  // Sent confirmation email
15874
15945
  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"])));
@@ -16236,7 +16307,7 @@
16236
16307
  error_3 = _b.sent();
16237
16308
  console.error(error_3);
16238
16309
  this.resetData();
16239
- throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
16310
+ throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
16240
16311
  case 4:
16241
16312
  // Store pubkey+keypair
16242
16313
  this._cache.pubkey = Base58.encode(keypair.publicKey);
@@ -16272,7 +16343,7 @@
16272
16343
  return [3 /*break*/, 18];
16273
16344
  case 11:
16274
16345
  err_1 = _b.sent();
16275
- if (!(err_1 && +(err_1.code) === ErrorCodes.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
16346
+ if (!(err_1 && +(err_1.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
16276
16347
  if (!(data.username.indexOf('@') !== -1)) return [3 /*break*/, 16];
16277
16348
  isEmailExists = void 0;
16278
16349
  _b.label = 12;
@@ -16288,12 +16359,12 @@
16288
16359
  case 15:
16289
16360
  // Email not exists (no account)
16290
16361
  if (!isEmailExists) {
16291
- throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
16362
+ throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
16292
16363
  }
16293
16364
  _b.label = 16;
16294
16365
  case 16:
16295
16366
  // Email exists, so error = 'bad password'
16296
- throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
16367
+ throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
16297
16368
  case 17: throw err_1; // resend the first error
16298
16369
  case 18:
16299
16370
  _b.trys.push([18, 20, , 21]);
@@ -16489,8 +16560,8 @@
16489
16560
  _b.label = 3;
16490
16561
  case 3: return [3 /*break*/, 6];
16491
16562
  case 4: return [4 /*yield*/, this.graphql.query({
16492
- query: LoadQuery,
16493
- error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
16563
+ query: LoadQuery$1,
16564
+ error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
16494
16565
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
16495
16566
  })];
16496
16567
  case 5:
@@ -16528,7 +16599,7 @@
16528
16599
  case 1:
16529
16600
  isEmailExists = _b.sent();
16530
16601
  if (isEmailExists) {
16531
- throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
16602
+ throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
16532
16603
  }
16533
16604
  return [2 /*return*/];
16534
16605
  }
@@ -16578,7 +16649,7 @@
16578
16649
  locale: locale
16579
16650
  },
16580
16651
  error: {
16581
- code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
16652
+ code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
16582
16653
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
16583
16654
  }
16584
16655
  })];
@@ -16601,7 +16672,7 @@
16601
16672
  code: code
16602
16673
  },
16603
16674
  error: {
16604
- code: ErrorCodes.CONFIRM_EMAIL_FAILED,
16675
+ code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
16605
16676
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
16606
16677
  }
16607
16678
  })];
@@ -16701,7 +16772,7 @@
16701
16772
  throw error_7;
16702
16773
  console.error(error_7);
16703
16774
  throw {
16704
- code: ErrorCodes.LOAD_ACCOUNT_ERROR,
16775
+ code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
16705
16776
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
16706
16777
  };
16707
16778
  case 6: return [2 /*return*/];
@@ -16912,7 +16983,7 @@
16912
16983
  case 1:
16913
16984
  existingAccount = _b.sent();
16914
16985
  if (!existingAccount || !existingAccount.updateDate) {
16915
- throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
16986
+ throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
16916
16987
  }
16917
16988
  this.copyIdAndUpdateDate(existingAccount, account);
16918
16989
  _b.label = 2;
@@ -16924,7 +16995,7 @@
16924
16995
  mutation: isNew ? AccountMutations.create : AccountMutations.save,
16925
16996
  variables: { data: json },
16926
16997
  error: {
16927
- code: ErrorCodes.SAVE_ACCOUNT_ERROR,
16998
+ code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
16928
16999
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
16929
17000
  }
16930
17001
  })];
@@ -16958,7 +17029,7 @@
16958
17029
  mutation: AccountMutations.saveSettings,
16959
17030
  variables: { data: json },
16960
17031
  error: {
16961
- code: ErrorCodes.SAVE_SETTINGS_ERROR,
17032
+ code: ErrorCodes$2.SAVE_SETTINGS_ERROR,
16962
17033
  message: 'ERROR.SAVE_SETTINGS_ERROR'
16963
17034
  }
16964
17035
  })];
@@ -16989,7 +17060,7 @@
16989
17060
  if (counter > 4) {
16990
17061
  if (this._debug)
16991
17062
  console.debug("[account] Failed to authentication on pod (after " + counter + " attempts)");
16992
- throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
17063
+ throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
16993
17064
  }
16994
17065
  if (!token) return [3 /*break*/, 2];
16995
17066
  return [4 /*yield*/, this.graphql.query({
@@ -16998,7 +17069,7 @@
16998
17069
  token: token
16999
17070
  },
17000
17071
  error: {
17001
- code: ErrorCodes.UNAUTHORIZED,
17072
+ code: ErrorCodes$2.UNAUTHORIZED,
17002
17073
  message: 'ERROR.UNAUTHORIZED'
17003
17074
  },
17004
17075
  fetchPolicy: 'no-cache'
@@ -17015,7 +17086,7 @@
17015
17086
  _b.label = 2;
17016
17087
  case 2:
17017
17088
  challengeError = {
17018
- code: ErrorCodes.AUTH_CHALLENGE_ERROR,
17089
+ code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
17019
17090
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
17020
17091
  };
17021
17092
  return [4 /*yield*/, this.graphql.query({
@@ -17102,7 +17173,7 @@
17102
17173
  query: AccountSubscriptions.listenChanges,
17103
17174
  variables: variables,
17104
17175
  error: {
17105
- code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
17176
+ code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
17106
17177
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ERROR'
17107
17178
  }
17108
17179
  }).pipe(operators.map(function (_b) {
@@ -17135,7 +17206,7 @@
17135
17206
  };
17136
17207
  return AccountService;
17137
17208
  }(BaseGraphqlService));
17138
- 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" });
17209
+ 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" });
17139
17210
  AccountService.decorators = [
17140
17211
  { type: i0.Injectable, args: [{ providedIn: 'root', deps: [ENVIRONMENT] },] }
17141
17212
  ];
@@ -17150,7 +17221,7 @@
17150
17221
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] },
17151
17222
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
17152
17223
  ]; };
17153
- 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;
17224
+ var templateObject_1$4, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12;
17154
17225
 
17155
17226
  var Software_1, Configuration_1;
17156
17227
  // @dynamic
@@ -17408,13 +17479,13 @@
17408
17479
  /* ------------------------------------
17409
17480
  * GraphQL queries
17410
17481
  * ------------------------------------*/
17411
- var Fragments$1 = {
17412
- 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 "])))
17482
+ var Fragments = {
17483
+ 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 "])))
17413
17484
  };
17414
- 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);
17485
+ var LoadQuery = core.gql(templateObject_2$3 || (templateObject_2$3 = __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);
17415
17486
  // Save (create or update) account mutation
17416
- 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);
17417
- 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"])));
17487
+ var SaveMutation = core.gql(templateObject_3$2 || (templateObject_3$2 = __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);
17488
+ var ClearCache = core.gql(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n query ClearCache($name: String) {\n clearCache(name: $name)\n }\n"], ["\n query ClearCache($name: String) {\n clearCache(name: $name)\n }\n"])));
17418
17489
  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"])));
17419
17490
  var APP_CONFIG_OPTIONS = new i0.InjectionToken('defaultOptions');
17420
17491
  var ConfigService = /** @class */ (function (_super) {
@@ -17474,12 +17545,12 @@
17474
17545
  case 0:
17475
17546
  now = Date.now();
17476
17547
  console.debug('[config] Loading Pod configuration...');
17477
- query = opts && opts.query || LoadQuery$1;
17548
+ query = opts && opts.query || LoadQuery;
17478
17549
  variables = opts && opts.variables || undefined;
17479
17550
  return [4 /*yield*/, this.graphql.query({
17480
17551
  query: query,
17481
17552
  variables: variables,
17482
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17553
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17483
17554
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
17484
17555
  })];
17485
17556
  case 1:
@@ -17521,7 +17592,7 @@
17521
17592
  data: json
17522
17593
  },
17523
17594
  error: {
17524
- code: ErrorCodes.SAVE_CONFIG_ERROR,
17595
+ code: ErrorCodes$2.SAVE_CONFIG_ERROR,
17525
17596
  message: 'ERROR.SAVE_CONFIG_ERROR'
17526
17597
  }
17527
17598
  })];
@@ -17556,7 +17627,7 @@
17556
17627
  return [4 /*yield*/, this.graphql.query({
17557
17628
  query: CacheStatistics,
17558
17629
  variables: null,
17559
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17630
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17560
17631
  fetchPolicy: 'network-only'
17561
17632
  })];
17562
17633
  case 1:
@@ -17580,7 +17651,7 @@
17580
17651
  return [4 /*yield*/, this.graphql.query({
17581
17652
  query: ClearCache,
17582
17653
  variables: variables,
17583
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17654
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17584
17655
  fetchPolicy: 'no-cache'
17585
17656
  })];
17586
17657
  case 1:
@@ -17696,7 +17767,7 @@
17696
17767
  return [3 /*break*/, 8];
17697
17768
  case 2:
17698
17769
  now = this._debug && Date.now();
17699
- if (!(this.network.online && this.platform.is('mobile'))) return [3 /*break*/, 6];
17770
+ if (!(this.network.online && isMobile(window))) return [3 /*break*/, 6];
17700
17771
  jobs_1 = [];
17701
17772
  // Download logos
17702
17773
  if (data.largeLogo && data.largeLogo.startsWith('http')) {
@@ -17780,7 +17851,7 @@
17780
17851
  };
17781
17852
  return ConfigService;
17782
17853
  }(BaseGraphqlService));
17783
- 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" });
17854
+ 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" });
17784
17855
  ConfigService.decorators = [
17785
17856
  { type: i0.Injectable, args: [{
17786
17857
  providedIn: 'root',
@@ -17799,9 +17870,9 @@
17799
17870
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] },
17800
17871
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_CONFIG_OPTIONS,] }] }
17801
17872
  ]; };
17802
- var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
17873
+ var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2, templateObject_5$1;
17803
17874
 
17804
- var moment$4 = momentImported__namespace;
17875
+ var moment$3 = momentImported__namespace;
17805
17876
  var AndroidOsEnvironment = Object.freeze({
17806
17877
  DIRECTORY_DOWNLOADS: 'Download',
17807
17878
  DIRECTORY_DOWNLOADS_OLD: 'Downloads',
@@ -17838,15 +17909,16 @@
17838
17909
  PlatformService.prototype.is = function (platformName) {
17839
17910
  switch (platformName) {
17840
17911
  case 'mobile':
17841
- // Use custom mobile detection - see SUMARIS issue #323
17842
- return isMobile(window);
17912
+ case 'mobileweb':
17913
+ // Exclude Windows touch screens - see SUMARIS issue #323
17914
+ return this.platform.is(platformName) && !isWindows(window);
17843
17915
  default:
17844
17916
  return this.platform.is(platformName);
17845
17917
  }
17846
17918
  };
17847
17919
  Object.defineProperty(PlatformService.prototype, "mobile", {
17848
17920
  get: function () {
17849
- return isNotNil(this._mobile) ? this._mobile : isMobile(window);
17921
+ return isNotNil(this._mobile) ? this._mobile : this.is('mobile');
17850
17922
  },
17851
17923
  enumerable: false,
17852
17924
  configurable: true
@@ -17864,18 +17936,18 @@
17864
17936
  PlatformService.prototype.isIOSCordova = function () {
17865
17937
  return this._ios && this._cordova || false;
17866
17938
  };
17867
- PlatformService.prototype.isWeb = function () {
17868
- return !this._cordova || (!this._android && !this._ios);
17869
- };
17870
17939
  PlatformService.prototype.isApp = function () {
17871
- return this._cordova && (this._android || this._ios);
17940
+ return this.isAndroidCordova() || this.isIOSCordova();
17941
+ };
17942
+ PlatformService.prototype.isWeb = function () {
17943
+ return !this.isApp();
17872
17944
  };
17873
17945
  PlatformService.prototype.isMobileWeb = function () {
17874
- return isMobile(window) && this.isWeb();
17946
+ return this.mobile && this.isWeb();
17875
17947
  };
17876
17948
  Object.defineProperty(PlatformService.prototype, "canDownload", {
17877
17949
  get: function () {
17878
- return !!this.downloader && this.isAndroidCordova();
17950
+ return this.downloader && this.isAndroidCordova();
17879
17951
  },
17880
17952
  enumerable: false,
17881
17953
  configurable: true
@@ -18071,16 +18143,16 @@
18071
18143
  }
18072
18144
  // config moment lib
18073
18145
  try {
18074
- moment$4.locale(event.lang);
18146
+ moment$3.locale(event.lang);
18075
18147
  console.debug('[platform] Use locale {' + event.lang + '}');
18076
18148
  }
18077
18149
  // If error, fallback to en
18078
18150
  catch (err) {
18079
- moment$4.locale('en');
18151
+ moment$3.locale('en');
18080
18152
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
18081
18153
  }
18082
18154
  // Config date adapter
18083
- _this.dateAdapter.setLocale(moment$4.locale());
18155
+ _this.dateAdapter.setLocale(moment$3.locale());
18084
18156
  }
18085
18157
  });
18086
18158
  this.settings.onChange.subscribe(function (data) {
@@ -18333,7 +18405,7 @@
18333
18405
  };
18334
18406
  return PlatformService;
18335
18407
  }(StartableService));
18336
- 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" });
18408
+ 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" });
18337
18409
  PlatformService.decorators = [
18338
18410
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
18339
18411
  ];
@@ -18431,7 +18503,7 @@
18431
18503
  };
18432
18504
  return MatStepperI18n;
18433
18505
  }(stepper.MatStepperIntl));
18434
- MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
18506
+ MatStepperI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
18435
18507
  MatStepperI18n.decorators = [
18436
18508
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
18437
18509
  ];
@@ -20644,7 +20716,7 @@
20644
20716
  return 1;
20645
20717
  }
20646
20718
  }
20647
- var ɵ0$b = function (defaultStateSize) { return [
20719
+ var ɵ0$1 = function (defaultStateSize) { return [
20648
20720
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
20649
20721
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
20650
20722
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -20652,7 +20724,7 @@
20652
20724
  var SCALE_OPTIONS_DEFAULT = {
20653
20725
  startColor: rgbArrayMap.red,
20654
20726
  startStates: [0, 2, 3],
20655
- startStepsFn: ɵ0$b
20727
+ startStepsFn: ɵ0$1
20656
20728
  };
20657
20729
  /**
20658
20730
  * Internal function, that create a colors scale, using iteration
@@ -21583,7 +21655,7 @@
21583
21655
  };
21584
21656
  return UserSettingsValidatorService;
21585
21657
  }(AppValidatorService));
21586
- UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
21658
+ UserSettingsValidatorService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0__namespace.ɵɵinject(i1__namespace$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
21587
21659
  UserSettingsValidatorService.decorators = [
21588
21660
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
21589
21661
  ];
@@ -21631,7 +21703,7 @@
21631
21703
  };
21632
21704
  return AccountValidatorService;
21633
21705
  }(AppValidatorService));
21634
- AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
21706
+ 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" });
21635
21707
  AccountValidatorService.decorators = [
21636
21708
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
21637
21709
  ];
@@ -22262,7 +22334,7 @@
22262
22334
  };
22263
22335
  return LocalSettingsValidatorService;
22264
22336
  }(AppValidatorService));
22265
- LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
22337
+ 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" });
22266
22338
  LocalSettingsValidatorService.decorators = [
22267
22339
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22268
22340
  ];
@@ -23042,7 +23114,7 @@
23042
23114
  };
23043
23115
  return IsOnFieldModePipe;
23044
23116
  }());
23045
- IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
23117
+ IsOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
23046
23118
  IsOnFieldModePipe.decorators = [
23047
23119
  { type: i0.Pipe, args: [{
23048
23120
  name: 'isOnField'
@@ -23057,7 +23129,7 @@
23057
23129
  };
23058
23130
  return IsNotOnFieldModePipe;
23059
23131
  }());
23060
- IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
23132
+ IsNotOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
23061
23133
  IsNotOnFieldModePipe.decorators = [
23062
23134
  { type: i0.Pipe, args: [{
23063
23135
  name: 'isNotOnField'
@@ -23075,7 +23147,7 @@
23075
23147
  };
23076
23148
  return PersonToStringPipe;
23077
23149
  }());
23078
- PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
23150
+ PersonToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
23079
23151
  PersonToStringPipe.decorators = [
23080
23152
  { type: i0.Pipe, args: [{
23081
23153
  name: 'personToString'
@@ -23539,7 +23611,7 @@
23539
23611
  };
23540
23612
  return IsLoginAccountPipe;
23541
23613
  }());
23542
- IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
23614
+ IsLoginAccountPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
23543
23615
  IsLoginAccountPipe.decorators = [
23544
23616
  { type: i0.Pipe, args: [{
23545
23617
  name: 'isLogin'
@@ -23554,7 +23626,7 @@
23554
23626
  };
23555
23627
  return AccountToStringPipe;
23556
23628
  }());
23557
- AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
23629
+ AccountToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
23558
23630
  AccountToStringPipe.decorators = [
23559
23631
  { type: i0.Pipe, args: [{
23560
23632
  name: 'accountToString'
@@ -23572,7 +23644,7 @@
23572
23644
  };
23573
23645
  return DepartmentToStringPipe;
23574
23646
  }());
23575
- DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
23647
+ DepartmentToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
23576
23648
  DepartmentToStringPipe.decorators = [
23577
23649
  { type: i0.Pipe, args: [{
23578
23650
  name: 'departmentToString'
@@ -23678,7 +23750,7 @@
23678
23750
  };
23679
23751
  return MenuService;
23680
23752
  }());
23681
- MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
23753
+ MenuService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
23682
23754
  MenuService.decorators = [
23683
23755
  { type: i0.Injectable, args: [{
23684
23756
  providedIn: 'root'
@@ -24223,7 +24295,7 @@
24223
24295
  };
24224
24296
  return AuthGuardService;
24225
24297
  }());
24226
- 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" });
24298
+ 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" });
24227
24299
  AuthGuardService.decorators = [
24228
24300
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
24229
24301
  ];
@@ -24268,7 +24340,7 @@
24268
24340
  query: query,
24269
24341
  variables: { id: id },
24270
24342
  fetchPolicy: opts && opts.fetchPolicy || undefined,
24271
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24343
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24272
24344
  })
24273
24345
  .pipe(operators.map(function (_b) {
24274
24346
  var data = _b.data;
@@ -24290,7 +24362,7 @@
24290
24362
  query: query,
24291
24363
  variables: { id: id },
24292
24364
  fetchPolicy: opts && opts.fetchPolicy || undefined,
24293
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24365
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24294
24366
  })];
24295
24367
  case 1:
24296
24368
  data = (_b.sent()).data;
@@ -24326,7 +24398,7 @@
24326
24398
  totalFieldName: withTotal ? 'total' : undefined,
24327
24399
  insertFilterFn: filter && filter.asFilterFn(),
24328
24400
  variables: variables,
24329
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
24401
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
24330
24402
  fetchPolicy: opts && opts.fetchPolicy || undefined
24331
24403
  })
24332
24404
  .pipe(operators.map(function (_b) {
@@ -24368,7 +24440,7 @@
24368
24440
  return [4 /*yield*/, this.graphql.query({
24369
24441
  query: query,
24370
24442
  variables: variables,
24371
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
24443
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
24372
24444
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
24373
24445
  })];
24374
24446
  case 1:
@@ -24416,7 +24488,7 @@
24416
24488
  variables: {
24417
24489
  filter: filter && filter.asPodObject()
24418
24490
  },
24419
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
24491
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
24420
24492
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
24421
24493
  })];
24422
24494
  case 3:
@@ -24461,7 +24533,7 @@
24461
24533
  variables: {
24462
24534
  data: json
24463
24535
  },
24464
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24536
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24465
24537
  update: function (proxy, _b) {
24466
24538
  var data = _b.data;
24467
24539
  var savedEntities = data && data.data;
@@ -24528,7 +24600,7 @@
24528
24600
  variables: {
24529
24601
  data: json
24530
24602
  },
24531
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24603
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24532
24604
  update: function (cache, _b) {
24533
24605
  var data = _b.data;
24534
24606
  // Update entity
@@ -24586,7 +24658,7 @@
24586
24658
  refetchQueries: this.getRefetchQueriesForMutation(opts),
24587
24659
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
24588
24660
  variables: { ids: ids },
24589
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24661
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24590
24662
  update: function (cache, res) {
24591
24663
  // Remove from cache
24592
24664
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -24639,7 +24711,7 @@
24639
24711
  refetchQueries: this.getRefetchQueriesForMutation(opts),
24640
24712
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
24641
24713
  variables: { id: id },
24642
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24714
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24643
24715
  update: function (proxy, res) {
24644
24716
  // Remove from cache
24645
24717
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -24681,7 +24753,7 @@
24681
24753
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache',
24682
24754
  variables: variables,
24683
24755
  error: {
24684
- code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
24756
+ code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
24685
24757
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
24686
24758
  }
24687
24759
  })
@@ -24904,7 +24976,7 @@
24904
24976
  if (this._debug)
24905
24977
  invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._logTypeName + " row #" + row.id); });
24906
24978
  // Stop with an error
24907
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
24979
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
24908
24980
  }
24909
24981
  this._editingRowCount = 0;
24910
24982
  data = void 0;
@@ -25924,14 +25996,14 @@
25924
25996
  case 0:
25925
25997
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
25926
25998
  if (this.readOnly) {
25927
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
25999
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
25928
26000
  }
25929
26001
  this.resetError();
25930
26002
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
25931
26003
  this.previouslyEditedRowId = opts.keepEditing ? ((((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined) || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.id)) : undefined;
25932
26004
  previouslyEditedData = opts.keepEditing ? (isNotNil(this.previouslyEditedRowId) && ((_c = this.editedRow) === null || _c === void 0 ? void 0 : _c.currentData) || ((_d = this.singleSelectedRow) === null || _d === void 0 ? void 0 : _d.currentData)) : undefined;
25933
26005
  if (!this.confirmEditCreate()) {
25934
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
26006
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
25935
26007
  }
25936
26008
  // Mark as saving
25937
26009
  this.markAsSaving();
@@ -26088,7 +26160,7 @@
26088
26160
  switch (_e.label) {
26089
26161
  case 0:
26090
26162
  if (this.readOnly) {
26091
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
26163
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
26092
26164
  }
26093
26165
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
26094
26166
  return [2 /*return*/, 0]; // SKip
@@ -27988,7 +28060,7 @@
27988
28060
  case 8:
27989
28061
  data = _c.sent();
27990
28062
  if (!data)
27991
- throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
28063
+ throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
27992
28064
  this._usageMode = this.computeUsageMode(data);
27993
28065
  return [4 /*yield*/, this.onEntityLoaded(data, opts)];
27994
28066
  case 9:
@@ -28780,10 +28852,10 @@
28780
28852
  exports.UserEventFilter = __decorate([
28781
28853
  EntityClass({ typename: 'UserEventVO' })
28782
28854
  ], exports.UserEventFilter);
28783
- var SaveQuery = core.gql(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n mutation SaveUserEvent($data: UserEventVOInput){\n data: saveUserEvent(userEvent: $data){\n ...UserEventFragment\n }\n }\n ", "\n"], ["\n mutation SaveUserEvent($data: UserEventVOInput){\n data: saveUserEvent(userEvent: $data){\n ...UserEventFragment\n }\n }\n ", "\n"])), SocialFragments.userEvent);
28784
- var LoadAllQuery = core.gql(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject(["\n query UserEvents($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...LightUserEventFragment\n }\n }\n ", "\n"], ["\n query UserEvents($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...LightUserEventFragment\n }\n }\n ", "\n"])), SocialFragments.lightUserEvent);
28785
- var DeleteByIdsMutation = core.gql(templateObject_3$2 || (templateObject_3$2 = __makeTemplateObject(["\n mutation DeleteUserEvents($ids:[Int]){\n deleteUserEvents(ids: $ids)\n }\n"], ["\n mutation DeleteUserEvents($ids:[Int]){\n deleteUserEvents(ids: $ids)\n }\n"])));
28786
- var LoadAllWithContentQuery = core.gql(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n query UserEventsWithContent($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...UserEventFragment\n }\n }\n ", "\n"], ["\n query UserEventsWithContent($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...UserEventFragment\n }\n }\n ", "\n"])), SocialFragments.userEvent);
28855
+ var SaveQuery = core.gql(templateObject_1$1 || (templateObject_1$1 = __makeTemplateObject(["\n mutation SaveUserEvent($data: UserEventVOInput){\n data: saveUserEvent(userEvent: $data){\n ...UserEventFragment\n }\n }\n ", "\n"], ["\n mutation SaveUserEvent($data: UserEventVOInput){\n data: saveUserEvent(userEvent: $data){\n ...UserEventFragment\n }\n }\n ", "\n"])), SocialFragments.userEvent);
28856
+ var LoadAllQuery = core.gql(templateObject_2$1 || (templateObject_2$1 = __makeTemplateObject(["\n query UserEvents($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...LightUserEventFragment\n }\n }\n ", "\n"], ["\n query UserEvents($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...LightUserEventFragment\n }\n }\n ", "\n"])), SocialFragments.lightUserEvent);
28857
+ var DeleteByIdsMutation = core.gql(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject(["\n mutation DeleteUserEvents($ids:[Int]){\n deleteUserEvents(ids: $ids)\n }\n"], ["\n mutation DeleteUserEvents($ids:[Int]){\n deleteUserEvents(ids: $ids)\n }\n"])));
28858
+ var LoadAllWithContentQuery = core.gql(templateObject_4$1 || (templateObject_4$1 = __makeTemplateObject(["\n query UserEventsWithContent($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...UserEventFragment\n }\n }\n ", "\n"], ["\n query UserEventsWithContent($filter: UserEventFilterVOInput, $page: PageInput){\n data: userEvents(filter: $filter, page: $page){\n ...UserEventFragment\n }\n }\n ", "\n"])), SocialFragments.userEvent);
28787
28859
  var UserEventService = /** @class */ (function (_super) {
28788
28860
  __extends(UserEventService, _super);
28789
28861
  function UserEventService(graphql, accountService, network, translate, toastController, environment) {
@@ -29104,7 +29176,7 @@
29104
29176
  };
29105
29177
  return UserEventService;
29106
29178
  }(BaseGraphqlService));
29107
- UserEventService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserEventService_Factory() { return new UserEventService(i0.ɵɵinject(GraphqlService), i0.ɵɵinject(AccountService), i0.ɵɵinject(NetworkService), i0.ɵɵinject(i1$2.TranslateService), i0.ɵɵinject(i1$5.ToastController), i0.ɵɵinject(ENVIRONMENT)); }, token: UserEventService, providedIn: "root" });
29179
+ UserEventService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function UserEventService_Factory() { return new UserEventService(i0__namespace.ɵɵinject(GraphqlService), i0__namespace.ɵɵinject(AccountService), i0__namespace.ɵɵinject(NetworkService), i0__namespace.ɵɵinject(i1__namespace$1.TranslateService), i0__namespace.ɵɵinject(i1__namespace$4.ToastController), i0__namespace.ɵɵinject(ENVIRONMENT)); }, token: UserEventService, providedIn: "root" });
29108
29180
  UserEventService.decorators = [
29109
29181
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
29110
29182
  ];
@@ -29116,7 +29188,7 @@
29116
29188
  { type: i1$5.ToastController },
29117
29189
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
29118
29190
  ]; };
29119
- var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2;
29191
+ var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1;
29120
29192
 
29121
29193
  var ICONS_MAP = {
29122
29194
  DEBUG_DATA: { matIcon: 'bug_report' },
@@ -29378,16 +29450,16 @@
29378
29450
  ], exports.PersonFilter);
29379
29451
 
29380
29452
  var PersonFragments = {
29381
- 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 }"])))
29453
+ 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 }"])))
29382
29454
  };
29383
29455
  // Load persons query
29384
29456
  var PersonQueries = {
29385
- loadAll: core.gql(templateObject_2$4 || (templateObject_2$4 = __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),
29386
- loadAllWithTotal: core.gql(templateObject_3$3 || (templateObject_3$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)
29457
+ 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),
29458
+ 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)
29387
29459
  };
29388
29460
  var PersonMutations = {
29389
- saveAll: core.gql(templateObject_4$3 || (templateObject_4$3 = __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),
29390
- 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 }"])))
29461
+ 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),
29462
+ 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 }"])))
29391
29463
  };
29392
29464
  var PersonService = /** @class */ (function (_super_1) {
29393
29465
  __extends(PersonService, _super_1);
@@ -29508,7 +29580,7 @@
29508
29580
  };
29509
29581
  return PersonService;
29510
29582
  }(BaseEntityService));
29511
- 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" });
29583
+ 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" });
29512
29584
  PersonService.decorators = [
29513
29585
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
29514
29586
  ];
@@ -29518,7 +29590,7 @@
29518
29590
  { type: NetworkService },
29519
29591
  { type: EntitiesStorage }
29520
29592
  ]; };
29521
- var templateObject_1$4, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2;
29593
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
29522
29594
 
29523
29595
  var PersonValidatorService = /** @class */ (function () {
29524
29596
  function PersonValidatorService(formBuilder, accountValidatorService) {
@@ -29541,7 +29613,7 @@
29541
29613
  };
29542
29614
  return PersonValidatorService;
29543
29615
  }());
29544
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
29616
+ 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" });
29545
29617
  PersonValidatorService.decorators = [
29546
29618
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
29547
29619
  ];
@@ -29752,16 +29824,16 @@
29752
29824
  ];
29753
29825
  AdminModule.ctorParameters = function () { return []; };
29754
29826
 
29755
- var ɵ0$c = {
29827
+ var ɵ0 = {
29756
29828
  profile: 'ADMIN'
29757
29829
  };
29758
- var routes = [
29830
+ var routes$5 = [
29759
29831
  {
29760
29832
  path: 'users',
29761
29833
  pathMatch: 'full',
29762
29834
  component: UsersPage,
29763
29835
  canActivate: [AuthGuardService],
29764
- data: ɵ0$c
29836
+ data: ɵ0
29765
29837
  }
29766
29838
  ];
29767
29839
  var AdminRoutingModule = /** @class */ (function () {
@@ -29774,36 +29846,36 @@
29774
29846
  imports: [
29775
29847
  SharedRoutingModule,
29776
29848
  AdminModule,
29777
- i3.RouterModule.forChild(routes)
29849
+ i3.RouterModule.forChild(routes$5)
29778
29850
  ],
29779
29851
  exports: [i3.RouterModule]
29780
29852
  },] }
29781
29853
  ];
29782
29854
 
29783
- var ErrorCodes$2 = {
29855
+ var ErrorCodes = {
29784
29856
  LOAD_PERSONS_ERROR: 100,
29785
29857
  SAVE_PERSONS_ERROR: 101,
29786
29858
  DELETE_PERSONS_ERROR: 102,
29787
29859
  };
29788
29860
 
29789
- var EntityTestClass = /** @class */ (function () {
29861
+ var EntityTestClass$1 = /** @class */ (function () {
29790
29862
  function EntityTestClass() {
29791
29863
  }
29792
29864
  return EntityTestClass;
29793
29865
  }());
29794
- var FAKE_ENTITIES = [
29866
+ var FAKE_ENTITIES$1 = [
29795
29867
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
29796
29868
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
29797
29869
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
29798
29870
  ];
29799
- function deepCopy(values, size) {
29871
+ function deepCopy$1(values, size) {
29800
29872
  if (isNil(size)) {
29801
- return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
29873
+ return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
29802
29874
  }
29803
29875
  var result = [];
29804
29876
  var i = 1;
29805
29877
  while (result.length < size) {
29806
- result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
29878
+ result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
29807
29879
  var name = entity.name + ' #' + i;
29808
29880
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
29809
29881
  }));
@@ -29813,7 +29885,7 @@
29813
29885
  var AutocompleteTestPage = /** @class */ (function () {
29814
29886
  function AutocompleteTestPage(formBuilder) {
29815
29887
  this.formBuilder = formBuilder;
29816
- this._items = deepCopy(FAKE_ENTITIES, 100);
29888
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
29817
29889
  this._$items = new rxjs.BehaviorSubject(undefined);
29818
29890
  this.autocompleteFields = new MatAutocompleteConfigHolder();
29819
29891
  this.memoryHide = false;
@@ -29824,6 +29896,7 @@
29824
29896
  entity: [null, SharedValidators.entity],
29825
29897
  missingEntity: [null, SharedValidators.entity],
29826
29898
  disableEntity: [null, SharedValidators.entity],
29899
+ entities: [null, SharedFormArrayValidators.requiredArrayMinLength(1)],
29827
29900
  });
29828
29901
  this.form.get('disableEntity').disable();
29829
29902
  }
@@ -29858,10 +29931,19 @@
29858
29931
  });
29859
29932
  // From items
29860
29933
  this.autocompleteFields.add('entity-items-large', {
29861
- items: FAKE_ENTITIES.slice(),
29934
+ items: FAKE_ENTITIES$1.slice(),
29862
29935
  attributes: ['label', 'name', 'description', 'comments'],
29863
29936
  displayWith: this.entityToString
29864
29937
  });
29938
+ // For mutliple value
29939
+ this.autocompleteFields.add('entities-items-filter', {
29940
+ service: {
29941
+ suggest: function (value, filter) { return _this.suggest(value, filter); }
29942
+ },
29943
+ attributes: ['label', 'name'],
29944
+ multiple: true
29945
+ //displayWith: this.entitiesToString
29946
+ });
29865
29947
  this.loadData();
29866
29948
  };
29867
29949
  // Load the form with data
@@ -29871,12 +29953,13 @@
29871
29953
  var _this = this;
29872
29954
  return __generator(this, function (_a) {
29873
29955
  data = {
29874
- entity: deepCopy(FAKE_ENTITIES)[0],
29956
+ entity: deepCopy$1(FAKE_ENTITIES$1)[0],
29875
29957
  // This item is NOT in the items list => i should be displayed anyway
29876
29958
  missingEntity: {
29877
29959
  id: -1, label: '??', name: 'Missing item'
29878
29960
  },
29879
- disableEntity: deepCopy(FAKE_ENTITIES)[2]
29961
+ disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2],
29962
+ entities: deepCopy$1(FAKE_ENTITIES$1)
29880
29963
  };
29881
29964
  this.form.setValue(data);
29882
29965
  // Load observables
@@ -29896,6 +29979,9 @@
29896
29979
  AutocompleteTestPage.prototype.entityToString = function (item) {
29897
29980
  return [item && item.label || undefined, item && item.name || undefined].filter(isNotNil).join(' - ');
29898
29981
  };
29982
+ AutocompleteTestPage.prototype.entitiesToString = function (items) {
29983
+ return (items || []).map(this.entityToString).join(', ');
29984
+ };
29899
29985
  AutocompleteTestPage.prototype.suggest = function (value, filter) {
29900
29986
  return __awaiter(this, void 0, void 0, function () {
29901
29987
  var res, total, nextOffset;
@@ -29949,9 +30035,10 @@
29949
30035
  this.memoryTimer = null;
29950
30036
  this.memoryHide = false;
29951
30037
  };
29952
- AutocompleteTestPage.prototype.updateFilter = function (fieldName) {
30038
+ AutocompleteTestPage.prototype.updateFilter = function (autocompleteField, fieldName) {
29953
30039
  var filter = this.autocompleteFields.get(fieldName).filter || {};
29954
30040
  filter.searchAttribute = (!filter || filter.searchAttribute !== 'name') ? 'name' : 'label';
30041
+ autocompleteField.reloadItems();
29955
30042
  };
29956
30043
  /* -- protected methods -- */
29957
30044
  AutocompleteTestPage.prototype.stringify = function (value) {
@@ -29962,7 +30049,7 @@
29962
30049
  AutocompleteTestPage.decorators = [
29963
30050
  { type: i0.Component, args: [{
29964
30051
  selector: 'app-autocomplete-test',
29965
- template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Autocomplete field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <!-- Tab nav - mobile/desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link\n [active]=\"mode==='mobile'\"\n (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='memory'\"\n (click)=\"toggleMode('memory')\">\n <mat-label>Memory leak debug</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!--<ion-grid *ngIf=\"mode === 'temp'\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable&lt;any[]&gt;</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n </ion-grid>-->\n\n\n <ion-grid *ngIf=\"mode === 'memory'\">\n\n <!-- debugging memory leak -->\n <ion-row>\n <ion-col>\n <ion-text><h4>Debug memory leak</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Items type\">\n <mat-select (selectionChange)=\"memoryAutocompleteFieldName=$event.value\" [value]=\"memoryAutocompleteFieldName\">\n <mat-option value=\"entity-$items\">Observable</mat-option>\n <mat-option value=\"entity-suggestFn\">Suggest function</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n <ion-col size=\"1\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Mobile ?\">\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [checked]=\"memoryMobile\">\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\" color=\"tertiary\">Start</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\" color=\"tertiary\">Stop</ion-button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n *ngIf=\"!memoryHide && memoryAutocompleteFieldName\"\n [config]=\"autocompleteFields.get(memoryAutocompleteFieldName)\"\n [mobile]=\"memoryMobile\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-memory-leak]'\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n <!-- Mobile mode -->\n <ion-grid *ngIf=\"mode === 'mobile'\">\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Suggest() function\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, suggestFn: (searchText, filter) =&gt; any[]</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-1]'\"\n [required]=\"true\"\n placeholder=\"Suggest field\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Items is an Observable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-observable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Change filter\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <ion-button (click)=\"updateFilter('entity-items-filter')\">Filter on: {{autocompleteFields.get('entity-items-filter').filter?.searchAttribute }}</ion-button>\n </ion-col>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-filter]'\"\n ></mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"min-width-large\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"true\"\n class=\"min-width-large\"\n panelWidth=\"400px\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Desktop mode -->\n <ion-grid *ngIf=\"mode === 'desktop'\">\n <ion-row>\n <ion-col>\n <ion-text><h4>Desktop mode</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n items from suggest function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult&lt;any&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-suggest]'\">\n </mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n search with a suggestLengthThreshold\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult&lt;any&gt;\nsuggestLengthThreshold: '3'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n suggestLengthThreshold=\"3\"\n [logPrefix]=\"'[combo-desktop-suggest]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an array\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: [], value: {{stringify(form.controls.entity.value)}}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [logPrefix]=\"'[combo-desktop-array-1]'\"\n [equals]=\"equals\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [equals]=\"equals\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-missing]'\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size panel\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class: 'mat-autocomplete-panel-full-size'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n [debug]=\"true\"\n [showAllOnFocus]=\"true\"\n [showPanelOnFocus]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-disable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"mat-autocomplete-panel-full-size\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n class=\"mat-autocomplete-panel-full-size\"\n panelWidth=\"100vw\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>panelWidth: string</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n panelWidth=\"400px\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n <ion-col size=\"3\">\n <mat-checkbox #showIcons [checked]=\"false\">\n Icons ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n <mat-icon matPrefix *ngIf=\"showIcons.checked\">keyboard_arrow_right</mat-icon>\n <mat-icon matSuffix *ngIf=\"showIcons.checked\">keyboard_arrow_left</mat-icon>\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"
30052
+ template: "<ion-header>\n <ion-toolbar color=\"primary\">\n\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n\n <ion-title>Autocomplete field test page</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\n\n <!-- Tab nav - mobile/desktop mode -->\n <nav mat-tab-nav-bar>\n <a mat-tab-link\n [active]=\"mode==='mobile'\"\n (click)=\"toggleMode('mobile')\">\n <mat-label>Mobile</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='desktop'\"\n (click)=\"toggleMode('desktop')\">\n <mat-label>Desktop</mat-label>\n </a>\n <a mat-tab-link [active]=\"mode==='memory'\"\n (click)=\"toggleMode('memory')\">\n <mat-label>Memory leak debug</mat-label>\n </a>\n <a mat-tab-link\n [active]=\"mode==='temp'\"\n (click)=\"toggleMode('temp')\">\n <mat-label>Temporary</mat-label>\n </a>\n </nav>\n\n <form class=\"form-container\" [formGroup]=\"form\" (ngSubmit)=\"doSubmit($event)\">\n\n <!--<ion-grid *ngIf=\"mode === 'temp'\">\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>items: Observable&lt;any[]&gt;</pre></small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [compareWith]=\"compareWithFn\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n </ion-grid>-->\n\n\n <ion-grid *ngIf=\"mode === 'memory'\">\n\n <!-- debugging memory leak -->\n <ion-row>\n <ion-col>\n <ion-text><h4>Debug memory leak</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"2\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Items type\">\n <mat-select (selectionChange)=\"memoryAutocompleteFieldName=$event.value\" [value]=\"memoryAutocompleteFieldName\">\n <mat-option value=\"entity-$items\">Observable</mat-option>\n <mat-option value=\"entity-suggestFn\">Suggest function</mat-option>\n </mat-select>\n </mat-form-field>\n </ion-col>\n <ion-col size=\"1\" class=\"ion-no-padding\">\n <mat-form-field floatLabel=\"always\">\n <input matInput type=\"text\" hidden placeholder=\"Mobile ?\">\n <mat-checkbox (change)=\"memoryMobile=$event.checked\" [checked]=\"memoryMobile\">\n </mat-checkbox>\n </mat-form-field>\n </ion-col>\n\n <ion-col size=\"2\">\n <ion-button *ngIf=\"!memoryTimer\" (click)=\"startMemoryTimer()\" color=\"tertiary\">Start</ion-button>\n <ion-button *ngIf=\"memoryTimer\" (click)=\"stopMemoryTimer()\" color=\"tertiary\">Stop</ion-button>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\"\n *ngIf=\"!memoryHide && memoryAutocompleteFieldName\"\n [config]=\"autocompleteFields.get(memoryAutocompleteFieldName)\"\n [mobile]=\"memoryMobile\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-memory-leak]'\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n <!-- Mobile mode -->\n <ion-grid *ngIf=\"mode === 'mobile'\">\n\n <ion-row>\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Suggest() function\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, suggestFn: (searchText, filter) =&gt; any[]</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-suggestFn')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-1]'\"\n [required]=\"true\"\n placeholder=\"Suggest field\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Items is an Observable\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-observable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>mobile: true, items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n search with a suggestLengthThreshold\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult&lt;any&gt;\nsuggestLengthThreshold: '3'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n suggestLengthThreshold=\"3\"\n [logPrefix]=\"'[combo-mobile-suggestLengthThreshold]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Multiple value\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>multiple: true</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entities\"\n [config]=\"autocompleteFields.get('entities-items-filter')\"\n [placeholder]=\"'Multiple'\"\n mobile=\"true\"\n multiple=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-multiple]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-2]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Change filter\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre></pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col>\n <ion-button (click)=\"updateFilter(filterChangeField, 'entity-items-filter')\">Filter on: {{autocompleteFields.get('entity-items-filter').filter?.searchAttribute }}</ion-button>\n </ion-col>\n <ion-col>\n <mat-autocomplete-field formControlName=\"entity\" #filterChangeField\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-filter]'\"\n ></mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"min-width-large\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"true\"\n class=\"min-width-large\"\n panelWidth=\"400px\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-mobile-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Fullscreen\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class: 'mat-autocomplete-panel-full-size'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-mobile-full-size]'\"\n [debug]=\"true\"\n [showAllOnFocus]=\"true\"\n [showPanelOnFocus]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n </ion-grid>\n\n <!-- Desktop mode -->\n <ion-grid *ngIf=\"mode === 'desktop'\">\n <ion-row>\n <ion-col>\n <ion-text><h4>Desktop mode</h4></ion-text>\n </ion-col>\n </ion-row>\n <ion-row>\n\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n items from suggest function\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult&lt;any&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-suggest]'\">\n </mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n search with a suggestLengthThreshold\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>suggest: (value, filter) => LoadResult&lt;any&gt;\nsuggestLengthThreshold: '3'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n suggestLengthThreshold=\"3\"\n [logPrefix]=\"'[combo-desktop-suggestLengthThreshold]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an array\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: [], value: {{stringify(form.controls.entity.value)}}</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items')\"\n [logPrefix]=\"'[combo-desktop-array-1]'\"\n [equals]=\"equals\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Items is an Observable\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [logPrefix]=\"'[combo-desktop-2]'\"\n [equals]=\"equals\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Multiple value\n </ion-text>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small><pre>multiple: true</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entities\"\n [config]=\"autocompleteFields.get('entities-items-filter')\"\n [placeholder]=\"'Multiple'\"\n mobile=\"false\"\n multiple=\"true\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-multiple]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Control value if missing in items\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>items: Observable&lt;any[]&gt;</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-missing]'\"\n [mobile]=\"false\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size panel\n </ion-label>\n </ion-card-title>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class: 'mat-autocomplete-panel-full-size'</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n [debug]=\"true\"\n [showAllOnFocus]=\"true\"\n [showPanelOnFocus]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Disabled control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"disableEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-disable]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col>\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Readonly control\n </ion-label>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"9\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Full size combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>class=\"mat-autocomplete-panel-full-size\"</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n class=\"mat-autocomplete-panel-full-size\"\n panelWidth=\"100vw\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"3\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-label color=\"primary\">\n Large combo\n </ion-label>\n <ion-card-subtitle>\n <ion-text color=\"medium\">\n <small>\n <pre>panelWidth: string</pre>\n </small>\n </ion-text>\n </ion-card-subtitle>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <mat-autocomplete-field formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-large')\"\n [mobile]=\"false\"\n panelWidth=\"400px\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n\n <ion-col size=\"6\">\n <ion-card>\n <ion-card-header>\n <ion-card-title>\n <ion-text color=\"primary\">\n Readonly toggle\n </ion-text>\n </ion-card-title>\n </ion-card-header>\n <ion-card-content>\n <ion-grid>\n <ion-row>\n <ion-col size=\"3\">\n <mat-checkbox (change)=\"readonlyField.readonly=$event.checked\" [checked]=\"readonlyField.readonly\">\n Readonly ?\n </mat-checkbox>\n </ion-col>\n <ion-col size=\"3\">\n <mat-checkbox #showIcons [checked]=\"false\">\n Icons ?\n </mat-checkbox>\n </ion-col>\n </ion-row>\n <ion-row>\n <ion-col>\n <mat-autocomplete-field #readonlyField formControlName=\"entity\"\n [config]=\"autocompleteFields.get('entity-items-filter')\"\n [placeholder]=\"'Entity'\"\n [mobile]=\"false\"\n [equals]=\"equals\"\n [logPrefix]=\"'[combo-desktop-readonly]'\"\n [readonly]=\"true\"\n [clearable]=\"!readonlyField.readonly\">\n <mat-icon matPrefix *ngIf=\"showIcons.checked\">keyboard_arrow_right</mat-icon>\n <mat-icon matSuffix *ngIf=\"showIcons.checked\">keyboard_arrow_left</mat-icon>\n </mat-autocomplete-field>\n </ion-col>\n </ion-row>\n </ion-grid>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"
29966
30053
  },] }
29967
30054
  ];
29968
30055
  AutocompleteTestPage.ctorParameters = function () { return [
@@ -30041,13 +30128,13 @@
30041
30128
  { type: i1.FormBuilder }
30042
30129
  ]; };
30043
30130
 
30044
- var moment$5 = momentImported__namespace;
30131
+ var moment$2 = momentImported__namespace;
30045
30132
  var SwipeTestPage = /** @class */ (function () {
30046
30133
  function SwipeTestPage(formBuilder, dateFormatPipe) {
30047
30134
  this.formBuilder = formBuilder;
30048
30135
  this.dateFormatPipe = dateFormatPipe;
30049
30136
  this.$dates = new rxjs.BehaviorSubject(undefined);
30050
- this._today = moment$5().startOf('day');
30137
+ this._today = moment$2().startOf('day');
30051
30138
  this.form = formBuilder.group({
30052
30139
  empty: [null, i1.Validators.required],
30053
30140
  date: [null, i1.Validators.compose([i1.Validators.required, SharedValidators.validDate])],
@@ -30061,7 +30148,7 @@
30061
30148
  var _this = this;
30062
30149
  var dates = [];
30063
30150
  for (var d = 0; d < 7; d++) {
30064
- dates[d] = moment$5(this._today).add(d - 3, 'day');
30151
+ dates[d] = moment$2(this._today).add(d - 3, 'day');
30065
30152
  }
30066
30153
  this.$dates.next(dates);
30067
30154
  this.loadData();
@@ -30108,7 +30195,7 @@
30108
30195
  { type: DateFormatPipe }
30109
30196
  ]; };
30110
30197
 
30111
- var moment$6 = momentImported__namespace;
30198
+ var moment$1 = momentImported__namespace;
30112
30199
  var DateTimeTestPage = /** @class */ (function () {
30113
30200
  function DateTimeTestPage(platform, formBuilder, cd) {
30114
30201
  this.platform = platform;
@@ -30131,8 +30218,7 @@
30131
30218
  disableControl.disable();
30132
30219
  // Copy the 'enable' value, into the disable control
30133
30220
  this.form.get('enable').valueChanges.subscribe(function (value) { return disableControl.setValue(value); });
30134
- var mobile = platform.is('mobile');
30135
- this.showLogPanel = this.showLogPanel || mobile;
30221
+ this.showLogPanel = this.showLogPanel || isMobile(window);
30136
30222
  }
30137
30223
  DateTimeTestPage.prototype.ngOnInit = function () {
30138
30224
  var _this = this;
@@ -30144,7 +30230,7 @@
30144
30230
  var now, data;
30145
30231
  var _this = this;
30146
30232
  return __generator(this, function (_a) {
30147
- now = moment$6();
30233
+ now = moment$1();
30148
30234
  data = {
30149
30235
  empty: toDateISOString(now.clone().add(2, 'hours')),
30150
30236
  enable: toDateISOString(now),
@@ -30209,12 +30295,12 @@
30209
30295
  { type: i0.ChangeDetectorRef }
30210
30296
  ]; };
30211
30297
 
30212
- var EntityTestClass$1 = /** @class */ (function () {
30298
+ var EntityTestClass = /** @class */ (function () {
30213
30299
  function EntityTestClass() {
30214
30300
  }
30215
30301
  return EntityTestClass;
30216
30302
  }());
30217
- var FAKE_ENTITIES$1 = [
30303
+ var FAKE_ENTITIES = [
30218
30304
  { id: 1, label: 'AAA', name: 'Item A' },
30219
30305
  { id: 2, label: 'BBB', name: 'Item B' },
30220
30306
  { id: 3, label: 'CCC', name: 'Item C' },
@@ -30223,14 +30309,14 @@
30223
30309
  { id: 6, label: 'FFF', name: 'Item F' },
30224
30310
  { id: 7, label: 'GGG', name: 'Item G' }
30225
30311
  ];
30226
- function deepCopy$1(values, size) {
30312
+ function deepCopy(values, size) {
30227
30313
  if (isNil(size)) {
30228
- return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
30314
+ return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
30229
30315
  }
30230
30316
  var result = [];
30231
30317
  var i = 1;
30232
30318
  while (result.length < size) {
30233
- result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
30319
+ result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
30234
30320
  var name = entity.name + ' #' + i;
30235
30321
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
30236
30322
  }));
@@ -30240,7 +30326,7 @@
30240
30326
  var ChipsTestPage = /** @class */ (function () {
30241
30327
  function ChipsTestPage(formBuilder) {
30242
30328
  this.formBuilder = formBuilder;
30243
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
30329
+ this._items = deepCopy(FAKE_ENTITIES, 100);
30244
30330
  this._$items = new rxjs.BehaviorSubject(undefined);
30245
30331
  this.autocompleteFields = new MatAutocompleteConfigHolder();
30246
30332
  this.form = formBuilder.group({
@@ -30283,7 +30369,7 @@
30283
30369
  var items, data;
30284
30370
  var _this = this;
30285
30371
  return __generator(this, function (_a) {
30286
- items = deepCopy$1(FAKE_ENTITIES$1);
30372
+ items = deepCopy(FAKE_ENTITIES);
30287
30373
  data = {
30288
30374
  entity: items.slice(0, 1),
30289
30375
  entityInitial: items.slice(1, 2),
@@ -30420,10 +30506,9 @@
30420
30506
  { type: i1.FormBuilder }
30421
30507
  ]; };
30422
30508
 
30423
- var moment$7 = momentImported__namespace;
30509
+ var moment = momentImported__namespace;
30424
30510
  var DateTestPage = /** @class */ (function () {
30425
- function DateTestPage(platform, formBuilder, cd) {
30426
- this.platform = platform;
30511
+ function DateTestPage(formBuilder, cd) {
30427
30512
  this.formBuilder = formBuilder;
30428
30513
  this.cd = cd;
30429
30514
  this.showLogPanel = true;
@@ -30445,8 +30530,7 @@
30445
30530
  disableControl.disable();
30446
30531
  // Copy the 'enable' value, into the disable control
30447
30532
  this.form.get('enable').valueChanges.subscribe(function (value) { return disableControl.setValue(value); });
30448
- var mobile = platform.is('mobile');
30449
- this.showLogPanel = this.showLogPanel || mobile;
30533
+ this.showLogPanel = this.showLogPanel || isMobile(window);
30450
30534
  }
30451
30535
  DateTestPage.prototype.ngOnInit = function () {
30452
30536
  var _this = this;
@@ -30458,7 +30542,7 @@
30458
30542
  var now, nowAtMahe, data;
30459
30543
  var _this = this;
30460
30544
  return __generator(this, function (_a) {
30461
- now = moment$7();
30545
+ now = moment();
30462
30546
  nowAtMahe = now.clone().tz(this.timezone).startOf('day');
30463
30547
  data = {
30464
30548
  empty: toDateISOString(now.clone().add(2, 'hours')),
@@ -30523,7 +30607,6 @@
30523
30607
  },] }
30524
30608
  ];
30525
30609
  DateTestPage.ctorParameters = function () { return [
30526
- { type: i1$5.Platform },
30527
30610
  { type: i1.FormBuilder },
30528
30611
  { type: i0.ChangeDetectorRef }
30529
30612
  ]; };
@@ -30540,7 +30623,7 @@
30540
30623
  { label: 'Shared directives', divider: true },
30541
30624
  { label: 'Badge icon directive', page: '/testing/shared/badge-icon' }
30542
30625
  ];
30543
- var routes$1 = [
30626
+ var routes$4 = [
30544
30627
  {
30545
30628
  path: '',
30546
30629
  pathMatch: 'full',
@@ -30600,7 +30683,7 @@
30600
30683
  i1.ReactiveFormsModule,
30601
30684
  SharedMaterialModule,
30602
30685
  i1$2.TranslateModule.forChild(),
30603
- i3.RouterModule.forChild(routes$1)
30686
+ i3.RouterModule.forChild(routes$4)
30604
30687
  ],
30605
30688
  declarations: [
30606
30689
  DateTimeTestPage,
@@ -30662,7 +30745,7 @@
30662
30745
  { type: i1$2.TranslateService }
30663
30746
  ]; };
30664
30747
 
30665
- var routes$2 = [
30748
+ var routes$3 = [
30666
30749
  {
30667
30750
  path: 'toast',
30668
30751
  pathMatch: 'full',
@@ -30680,7 +30763,7 @@
30680
30763
  i1$4.CommonModule,
30681
30764
  i1$5.IonicModule,
30682
30765
  i1$2.TranslateModule.forChild(),
30683
- i3.RouterModule.forChild(routes$2)
30766
+ i3.RouterModule.forChild(routes$3)
30684
30767
  ],
30685
30768
  declarations: [
30686
30769
  ToastTestingPage
@@ -30760,7 +30843,7 @@
30760
30843
  { type: i1$5.PopoverController }
30761
30844
  ]; };
30762
30845
 
30763
- var routes$3 = [
30846
+ var routes$2 = [
30764
30847
  {
30765
30848
  path: 'upload-file',
30766
30849
  pathMatch: 'full',
@@ -30778,7 +30861,7 @@
30778
30861
  i1$4.CommonModule,
30779
30862
  i1$5.IonicModule,
30780
30863
  i1$2.TranslateModule.forChild(),
30781
- i3.RouterModule.forChild(routes$3)
30864
+ i3.RouterModule.forChild(routes$2)
30782
30865
  ],
30783
30866
  declarations: [
30784
30867
  UploadFileTestingPage
@@ -31202,7 +31285,7 @@
31202
31285
  { type: i1$5.PopoverController }
31203
31286
  ]; };
31204
31287
 
31205
- var routes$4 = [
31288
+ var routes$1 = [
31206
31289
  {
31207
31290
  path: 'text-popover',
31208
31291
  pathMatch: 'full',
@@ -31220,7 +31303,7 @@
31220
31303
  i1$4.CommonModule,
31221
31304
  i1$5.IonicModule,
31222
31305
  i1$2.TranslateModule.forChild(),
31223
- i3.RouterModule.forChild(routes$4)
31306
+ i3.RouterModule.forChild(routes$1)
31224
31307
  ],
31225
31308
  declarations: [
31226
31309
  TextPopoverTestingPage
@@ -31237,7 +31320,7 @@
31237
31320
  { label: 'Table', page: '/testing/core/table' },
31238
31321
  { label: 'Text popover', page: '/testing/core/text-popover' }
31239
31322
  ];
31240
- var routes$5 = [
31323
+ var routes = [
31241
31324
  {
31242
31325
  path: '',
31243
31326
  pathMatch: 'full',
@@ -31264,7 +31347,7 @@
31264
31347
  imports: [
31265
31348
  i1$4.CommonModule,
31266
31349
  i1$2.TranslateModule.forChild(),
31267
- i3.RouterModule.forChild(routes$5),
31350
+ i3.RouterModule.forChild(routes),
31268
31351
  // Sub modules
31269
31352
  TableTestingModule,
31270
31353
  TextPopoverTestingModule
@@ -31387,7 +31470,7 @@
31387
31470
  exports.EntityStore = EntityStore;
31388
31471
  exports.EntityUtils = EntityUtils;
31389
31472
  exports.Environment = Environment;
31390
- exports.ErrorCodes = ErrorCodes$2;
31473
+ exports.ErrorCodes = ErrorCodes;
31391
31474
  exports.EvenPipe = EvenPipe;
31392
31475
  exports.FileResponse = FileResponse;
31393
31476
  exports.FileService = FileService;
@@ -31403,7 +31486,7 @@
31403
31486
  exports.FormGetControlPipe = FormGetControlPipe;
31404
31487
  exports.FormGetGroupPipe = FormGetGroupPipe;
31405
31488
  exports.FormGetPipe = FormGetPipe;
31406
- exports.Fragments = Fragments$1;
31489
+ exports.Fragments = Fragments;
31407
31490
  exports.GraphqlService = GraphqlService;
31408
31491
  exports.HAMMER_PRESS_TIME = HAMMER_PRESS_TIME;
31409
31492
  exports.HAMMER_TAP_TIME = HAMMER_TAP_TIME;
@@ -31684,23 +31767,23 @@
31684
31767
  exports.waitForTrue = waitForTrue;
31685
31768
  exports.waitIdle = waitIdle;
31686
31769
  exports.waitWhilePending = waitWhilePending;
31687
- exports0 = ɵ0$1;
31688
- exports.ɵa = CustomReuseStrategy;
31689
- exports.ɵb = MatNumpadDomService;
31690
- exports.ɵc = isFocusableElement;
31691
- exports.ɵd = RegisterForm;
31692
- exports.ɵe = AccountValidatorService;
31693
- exports.ɵf = RegisterModal;
31694
- exports.ɵg = UserSettingsValidatorService;
31695
- exports.ɵh = LocalSettingsValidatorService;
31696
- exports.ɵi = AppIconComponent;
31697
- exports.ɵj = DateTestPage;
31698
- exports.ɵk = NumpadTestPage;
31699
- exports.ɵl = MatBadgeIconTestPage;
31700
- exports.ɵm = ToastTestingModule;
31701
- exports.ɵn = ToastTestingPage;
31770
+ exports["ɵ0"] = ɵ0$c;
31771
+ exports["ɵa"] = CustomReuseStrategy;
31772
+ exports["ɵb"] = MatNumpadDomService;
31773
+ exports["ɵc"] = isFocusableElement;
31774
+ exports["ɵd"] = RegisterForm;
31775
+ exports["ɵe"] = AccountValidatorService;
31776
+ exports["ɵf"] = RegisterModal;
31777
+ exports["ɵg"] = UserSettingsValidatorService;
31778
+ exports["ɵh"] = LocalSettingsValidatorService;
31779
+ exports["ɵi"] = AppIconComponent;
31780
+ exports["ɵj"] = DateTestPage;
31781
+ exports["ɵk"] = NumpadTestPage;
31782
+ exports["ɵl"] = MatBadgeIconTestPage;
31783
+ exports["ɵm"] = ToastTestingModule;
31784
+ exports["ɵn"] = ToastTestingPage;
31702
31785
 
31703
31786
  Object.defineProperty(exports, '__esModule', { value: true });
31704
31787
 
31705
- })));
31788
+ }));
31706
31789
  //# sourceMappingURL=sumaris-net.ngx-components.umd.js.map