@sumaris-net/ngx-components 1.17.1-rc1 → 1.18.0-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,109 @@
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
+
1222
1348
  var MatAutocompleteConfigHolder = /** @class */ (function () {
1223
1349
  function MatAutocompleteConfigHolder(options) {
1224
1350
  this.options = options;
@@ -1240,8 +1366,8 @@
1240
1366
  // Keep original the function from options, when exists
1241
1367
  var attributesOrFn = attributes.map(function (a, index) { return typeof a === 'function' && options.attributes[index] || a; });
1242
1368
  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; });
1369
+ var displayWith = options.displayWith || MatAutocompleteFieldUtils.createDisplayFn(attributes, options.multiple);
1370
+ var equals = options.equals || MatAutocompleteFieldUtils.defaultEquals;
1245
1371
  var config = Object.assign(Object.assign({}, options), { attributes: attributesOrFn, suggestFn: suggestFn,
1246
1372
  filter: filter,
1247
1373
  displayWith: displayWith,
@@ -1257,14 +1383,34 @@
1257
1383
  };
1258
1384
  return MatAutocompleteConfigHolder;
1259
1385
  }());
1260
- var noop = function (_) { };
1261
- var ɵ0 = noop;
1386
+ var MatAutocompleteFieldUtils = /** @class */ (function () {
1387
+ function MatAutocompleteFieldUtils() {
1388
+ }
1389
+ MatAutocompleteFieldUtils.createDisplayFn = function (displayAttributes, multiple) {
1390
+ // if multiple (manage array)
1391
+ if (multiple) {
1392
+ return function (value) {
1393
+ return Array.isArray(value)
1394
+ ? (value || []).map(function (obj) { return obj && joinPropertiesPath(obj, displayAttributes); }).join(', ')
1395
+ : value && joinPropertiesPath(value, displayAttributes);
1396
+ };
1397
+ }
1398
+ // Join properties
1399
+ return function (obj) { return obj && joinPropertiesPath(obj, displayAttributes); };
1400
+ };
1401
+ MatAutocompleteFieldUtils.defaultEquals = function (o1, o2) {
1402
+ return isNotNil(o1 === null || o1 === void 0 ? void 0 : o1.id) && o1.id === (o2 === null || o2 === void 0 ? void 0 : o2.id);
1403
+ };
1404
+ return MatAutocompleteFieldUtils;
1405
+ }());
1406
+ var noop$8 = function (_) { };
1407
+ var ɵ0$c = noop$8;
1262
1408
  var MatAutocompleteField = /** @class */ (function () {
1263
1409
  function MatAutocompleteField(cd, formGroupDir) {
1264
1410
  this.cd = cd;
1265
1411
  this.formGroupDir = formGroupDir;
1266
- this._onChangeCallback = noop;
1267
- this._onTouchedCallback = noop;
1412
+ this._onChangeCallback = noop$8;
1413
+ this._onTouchedCallback = noop$8;
1268
1414
  this.logPrefix = '[mat-autocomplete] ';
1269
1415
  this.formControlName = null;
1270
1416
  this.required = false;
@@ -1272,12 +1418,13 @@
1272
1418
  this.debounceTime = null;
1273
1419
  this.i18nPrefix = 'REFERENTIAL.';
1274
1420
  this.noResultMessage = 'COMMON.NO_RESULT';
1275
- this.multiple = false;
1276
1421
  this.itemSize = '48px';
1277
1422
  this.fetchMoreThreshold = '15%';
1278
1423
  this.suggestLengthThreshold = null;
1279
1424
  this.showLoadingSpinner = true;
1280
1425
  this.debug = false;
1426
+ this.showSearchBar = true;
1427
+ this.stickySearchBar = true;
1281
1428
  this.clicked = new i0.EventEmitter();
1282
1429
  this.blurred = new i0.EventEmitter();
1283
1430
  this.focused = new i0.EventEmitter();
@@ -1398,6 +1545,13 @@
1398
1545
  enumerable: false,
1399
1546
  configurable: true
1400
1547
  });
1548
+ Object.defineProperty(MatAutocompleteField.prototype, "desktop", {
1549
+ get: function () {
1550
+ return !this.mobile;
1551
+ },
1552
+ enumerable: false,
1553
+ configurable: true
1554
+ });
1401
1555
  MatAutocompleteField.prototype.ngOnInit = function () {
1402
1556
  var _this = this;
1403
1557
  var _a, _b;
@@ -1416,6 +1570,7 @@
1416
1570
  this.displayColumnNames = this.displayColumnNames || this.config.columnNames;
1417
1571
  this.displayWith = this.displayWith || this.config.displayWith;
1418
1572
  this.equals = this.equals || this.config.equals;
1573
+ this.multiple = toBoolean(this.multiple, this.config.multiple);
1419
1574
  this.mobile = toBoolean(this.mobile, this.config.mobile);
1420
1575
  this.suggestLengthThreshold = toNumber(this.suggestLengthThreshold, this.config.suggestLengthThreshold || 0);
1421
1576
  this.showAllOnFocus = toBoolean(this.showAllOnFocus, toBoolean(this.config.showAllOnFocus, this.suggestLengthThreshold <= 0));
@@ -1425,8 +1580,11 @@
1425
1580
  this.highlightAccent = toBoolean(this.highlightAccent, toBoolean(this.config.highlightAccent));
1426
1581
  }
1427
1582
  // Default values
1583
+ this.multiple = toBoolean(this.multiple, false);
1584
+ this.mobile = toBoolean(this.mobile, this.multiple);
1428
1585
  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); });
1586
+ this.displayWith = this.displayWith || MatAutocompleteFieldUtils.createDisplayFn(this.displayAttributes, this.multiple);
1587
+ this.equals = this.equals || MatAutocompleteFieldUtils.defaultEquals;
1430
1588
  this.displayColumnSizes = this.displayColumnSizes
1431
1589
  // if only column: auto size
1432
1590
  || (this.displayAttributes.length === 1 && [undefined])
@@ -1434,24 +1592,21 @@
1434
1592
  // - if label then col size = 2
1435
1593
  // - if rankOrder then col size = 1
1436
1594
  // - ese => auto size
1437
- || this.displayAttributes.map(function (attr) { return (attr && attr.endsWith('label')) ? 2
1438
- : ((attr && attr.endsWith('rankOrder')) ? 1
1439
- : undefined); });
1595
+ || this.displayAttributes.map(function (attr) { return attr && (attr.endsWith('label') ? 3
1596
+ : (attr.endsWith('rankOrder') ? 2
1597
+ : undefined)); });
1440
1598
  this.displayColumnNames = this.displayAttributes.map(function (attr, index) { return _this.displayColumnNames && _this.displayColumnNames[index] ||
1441
1599
  (_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
1600
  var classList = (_b = this.classList) === null || _b === void 0 ? void 0 : _b.split(' ');
1446
1601
  this.panelWidth = this.panelWidth || (classList && ((classList.includes('min-width-medium') && '300px')
1447
1602
  || (classList.includes('min-width-large') && '400px')
1448
1603
  || (classList.includes('min-width-xlarge') && '450px')
1449
1604
  || (classList.includes('mat-autocomplete-panel-full-size') && '100vw')));
1450
1605
  this.showPanelOnFocus = toBoolean(this.showPanelOnFocus, true);
1451
- this.debounceTime = toNumber(this.debounceTime, 250);
1606
+ this.debounceTime = toNumber(this.debounceTime, this.mobile ? 650 : 250);
1452
1607
  this.highlightAccent = toBoolean(this.highlightAccent, false);
1453
1608
  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)
1609
+ this.matAutocompletePosition = this.matAutocompletePosition || 'auto';
1455
1610
  // No suggestFn: filter on the given items
1456
1611
  if (!this.suggestFn) {
1457
1612
  var suggestFromArrayFn_1 = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
@@ -1482,10 +1637,10 @@
1482
1637
  });
1483
1638
  }); };
1484
1639
  }
1485
- else if (!this.searchable) {
1640
+ else if (this.mobile) {
1486
1641
  // 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); }))
1642
+ 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)
1643
+ operators.filter(function (_) { return _this.suggestLengthThreshold <= 0; }), operators.switchMap(function (filter) { return _this.suggest('*', filter); }))
1489
1644
  .subscribe(function (items) { return _this.$inputItems.next(items); }));
1490
1645
  }
1491
1646
  // Send value to suggest when :
@@ -1501,11 +1656,17 @@
1501
1656
  this._reload$,
1502
1657
  // Search text (no distinctUntilChanged() because of the debounceTime() pipe)
1503
1658
  this.formControl.valueChanges
1504
- .pipe(operators.filter(function (value) { return _this.enabled && _this.searchable && isNotNilString(value); }),
1659
+ .pipe(operators.filter(function (value) { return _this.enabled && isNotNilString(value); }),
1505
1660
  // Mark as loading (to show loading spinner) - earlier as possible, so before the debounce time
1506
1661
  operators.tap(function (_) { return _this.showLoadingSpinner && _this.markAsLoading(); }),
1507
1662
  // Filter if not enough character
1508
- operators.filter(function (value) { return value.length >= _this.suggestLengthThreshold; }),
1663
+ operators.filter(function (value) {
1664
+ if (value.length >= _this.suggestLengthThreshold)
1665
+ return true;
1666
+ // Update display value, to enable the message "not enough characters"
1667
+ _this.displayValue = value;
1668
+ return false;
1669
+ }),
1509
1670
  // Wait a debounce time
1510
1671
  operators.debounceTime(this.debounceTime)
1511
1672
  // DEBUG
@@ -1513,37 +1674,34 @@
1513
1674
  ),
1514
1675
  // Object set: use it (no distinctUntilChanged() pipe need)
1515
1676
  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) {
1677
+ .pipe(operators.startWith(this.formControl.value), operators.filter(function (value) { return (!_this.mobile && isNotNil(value) && typeof value === 'object'); }), operators.tap(function (value) {
1517
1678
  // DEBUG
1518
- if (_this.debug)
1519
- console.debug(_this.logPrefix + ' object changes:', value);
1679
+ //if (this.debug) console.debug(this.logPrefix + ' object changes:', value)
1680
+ var _a;
1520
1681
  // Update the display value (if need)
1521
1682
  var displayValue = _this.displayWith(value) || '';
1522
1683
  if (_this.displayValue !== displayValue) {
1523
1684
  _this.displayValue = displayValue;
1524
1685
  // Apply to the input[type=text] field
1525
- if (_this.matInputText && _this.matInputText.nativeElement) {
1686
+ if ((_a = _this.matInputText) === null || _a === void 0 ? void 0 : _a.nativeElement) {
1526
1687
  _this.matInputText.nativeElement.value = _this.displayValue;
1527
1688
  }
1528
1689
  }
1529
- })
1530
- // DEBUG
1531
- //,tap(value => this.debug && console.debug(this.logPrefix + ' Received an object value: ', value))
1532
- ),
1690
+ })),
1533
1691
  // On dropdown button click (no distinctUntilChanged(), nor debounceTime)
1534
1692
  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; }),
1693
+ .pipe(operators.filter(function (event) { return !_this.mobile && _this.enabled && (!event || !event.defaultPrevented); }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; }),
1536
1694
  // Make sure there is enough characters
1537
1695
  operators.filter(thresholdFilterFn)),
1538
1696
  // Merge some observables, with a common distinctUntilChanged() pipe, and NO debounceTime
1539
1697
  rxjs.merge(
1540
1698
  // Focus or click => Load all
1541
1699
  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; })
1700
+ .pipe(operators.filter(function (_) { return _this.enabled && !_this.mobile; }), operators.map(function (_) { return _this.showAllOnFocus ? '*' : _this.formControl.value; })
1543
1701
  // DEBUG
1544
1702
  //,tap(value => this.debug && console.debug(this.logPrefix + ' Received focused or clicked event: ', value))
1545
1703
  ), rxjs.merge(this.$inputItems, this._$filter)
1546
- .pipe(operators.filter(function (_) { return _this.searchable && _this.enabled; }), operators.map(function (_) { return _this.formControl.value; })))
1704
+ .pipe(operators.filter(function (_) { return _this.enabled; }), operators.map(function (_) { return _this.formControl.value; })))
1547
1705
  .pipe(
1548
1706
  // Make sure there is enough characters
1549
1707
  operators.filter(thresholdFilterFn),
@@ -1576,7 +1734,7 @@
1576
1734
  fetchMoreItemsChanges)
1577
1735
  .subscribe(function (items) {
1578
1736
  // Make sure control value is inside (mat-select)
1579
- if (items && !_this.searchable) {
1737
+ if (items && _this.mobile) {
1580
1738
  var value_1 = _this.formControl.value;
1581
1739
  if (isNotNil(value_1) && typeof value_1 === 'object' && items.findIndex(function (item) { return _this.equals(item, value_1); }) === -1) {
1582
1740
  // If form value is missing: add it to the list
@@ -1590,7 +1748,7 @@
1590
1748
  this._subscription.add(this.blurred
1591
1749
  .pipe(
1592
1750
  // Skip if not searchable
1593
- operators.filter(function (_) { return _this.searchable; }), operators.map(function (_) { return _this.formControl.value; })
1751
+ operators.filter(function (_) { return !_this.mobile; }), operators.map(function (_) { return _this.formControl.value; })
1594
1752
  // DEBUG
1595
1753
  //,tap(value => this.debug && console.debug(this.logPrefix + ' Received blurred event: ', value)),
1596
1754
  )
@@ -1614,6 +1772,7 @@
1614
1772
  _this.$filteredItems.next(undefined);
1615
1773
  }
1616
1774
  _this._implicitValue = null; // reset the implicit value
1775
+ _this.closePanel(); // Clone panel
1617
1776
  }));
1618
1777
  // Listen form control status change
1619
1778
  this._subscription.add(this.formControl.statusChanges
@@ -1624,6 +1783,7 @@
1624
1783
  .subscribe(function () { return _this.checkIfTouched(); }));
1625
1784
  this._subscription.add(this.keydownEscape.subscribe(function (event) {
1626
1785
  if (_this.isOpen) {
1786
+ // Avoid form or page to manage escape event
1627
1787
  event === null || event === void 0 ? void 0 : event.stopPropagation();
1628
1788
  event === null || event === void 0 ? void 0 : event.preventDefault();
1629
1789
  // DEBUG
@@ -1659,7 +1819,6 @@
1659
1819
  this.equals = null;
1660
1820
  this.suggestFn = null;
1661
1821
  this.$filteredItems = null;
1662
- this.matSelectItems$ = null;
1663
1822
  this.config = null;
1664
1823
  this.classList = null;
1665
1824
  this._onChangeCallback = null;
@@ -1674,8 +1833,13 @@
1674
1833
  * Allow to reload content. Useful when filter has been changed but not detected
1675
1834
  */
1676
1835
  MatAutocompleteField.prototype.reloadItems = function (value) {
1836
+ var _a;
1677
1837
  // Force a refresh
1678
1838
  this._reload$.next(value || '*');
1839
+ // Clear the search bar, because options will not correspond
1840
+ if (!this.isOpen && isNotNilOrBlank((_a = this.ionSearchbar) === null || _a === void 0 ? void 0 : _a.value)) {
1841
+ this.ionSearchbar.value = null;
1842
+ }
1679
1843
  };
1680
1844
  MatAutocompleteField.prototype.writeValue = function (value) {
1681
1845
  // DEBUG
@@ -1699,15 +1863,15 @@
1699
1863
  this.cd.markForCheck();
1700
1864
  };
1701
1865
  MatAutocompleteField.prototype.focus = function () {
1702
- var _a;
1703
- if (this.searchable) {
1704
- focusInput(this.matInputText);
1866
+ if (this.mobile) {
1867
+ this.matSelect.focus();
1705
1868
  }
1706
1869
  else {
1707
- (_a = this.matSelect) === null || _a === void 0 ? void 0 : _a.focus();
1870
+ focusInput(this.matInputText);
1708
1871
  }
1709
1872
  };
1710
1873
  MatAutocompleteField.prototype.filterInputTextFocusEvent = function (event) {
1874
+ var _a;
1711
1875
  if (!event || event.defaultPrevented)
1712
1876
  return;
1713
1877
  // Ignore event from mat-option
@@ -1722,7 +1886,7 @@
1722
1886
  }
1723
1887
  // DEBUG
1724
1888
  //if (this.debug) console.debug(this.logPrefix + ' Select input content');
1725
- var hasContent = true; // selectInputContent(event);
1889
+ var hasContent = isNotNilOrBlank((_a = event.target) === null || _a === void 0 ? void 0 : _a.value);
1726
1890
  // If combo is empty, or if has content but should force to show panel on focus
1727
1891
  if (!hasContent || this.showPanelOnFocus || this.showAllOnFocus) {
1728
1892
  // DEBUG
@@ -1742,18 +1906,38 @@
1742
1906
  event.stopPropagation();
1743
1907
  event.returnValue = false;
1744
1908
  // DEBUG
1745
- if (this.debug)
1746
- console.debug(this.logPrefix + " Cancelling blur event");
1909
+ //if (this.debug) console.debug(this.logPrefix + " Cancelling blur event");
1747
1910
  return false;
1748
1911
  }
1749
- //DEBUG
1750
- if (this.debug)
1751
- console.debug(this.logPrefix + ' Blur: move caret to the beginning');
1912
+ // DEBUG
1913
+ //if (this.debug) console.debug(this.logPrefix + ' Blur: move caret to the beginning');
1752
1914
  // Move caret to the beginning (fix issue IMAGINE-469)
1753
1915
  selectInputRange(event.target, 0, 0);
1754
1916
  this.blurred.emit(event);
1755
1917
  return true;
1756
1918
  };
1919
+ MatAutocompleteField.prototype.ionSearchBarChanged = function (event) {
1920
+ if (!event || event.defaultPrevented || !this.matSelect.panelOpen)
1921
+ return;
1922
+ // DEBUG
1923
+ //console.debug(this.logPrefix + " Received <ion-searchbar> changes", event.detail.data);
1924
+ event.preventDefault();
1925
+ event.detail.preventDefault();
1926
+ event.stopPropagation();
1927
+ event.detail.stopPropagation();
1928
+ this.markAsLoading();
1929
+ this.reloadItems(event.detail.data);
1930
+ // TODO avoid mat-select to focus the option
1931
+ /*if (this.multiple) {
1932
+ this.matSelect._elementRef;
1933
+ }*/
1934
+ };
1935
+ MatAutocompleteField.prototype.ionSearchBarClear = function (event) {
1936
+ if (!event || event.defaultPrevented || !this.matSelect.panelOpen)
1937
+ return;
1938
+ this.markAsLoading();
1939
+ this.reloadItems();
1940
+ };
1757
1941
  MatAutocompleteField.prototype.filterMatSelectFocusEvent = function (event) {
1758
1942
  if (!event || event.defaultPrevented)
1759
1943
  return;
@@ -1779,20 +1963,6 @@
1779
1963
  this.blurred.emit(event);
1780
1964
  return true;
1781
1965
  };
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
1966
  MatAutocompleteField.prototype.clearValue = function (event) {
1797
1967
  this.writeValue(null);
1798
1968
  event.stopPropagation();
@@ -1845,7 +2015,7 @@
1845
2015
  Object.defineProperty(MatAutocompleteField.prototype, "isOpen", {
1846
2016
  get: function () {
1847
2017
  var _a, _b;
1848
- return (this.searchable && ((_a = this.autocomplete) === null || _a === void 0 ? void 0 : _a.isOpen))
2018
+ return (!this.mobile && ((_a = this.autocomplete) === null || _a === void 0 ? void 0 : _a.isOpen))
1849
2019
  || ((_b = this.matSelect) === null || _b === void 0 ? void 0 : _b.panelOpen)
1850
2020
  || false;
1851
2021
  },
@@ -1891,8 +2061,7 @@
1891
2061
  res = data;
1892
2062
  }
1893
2063
  // DEBUG
1894
- if (this.debug)
1895
- console.debug(this.logPrefix + ' Filtered items by suggestFn:', value, res);
2064
+ //if (this.debug) console.debug(this.logPrefix + ' Filtered items by suggestFn:', value, res);
1896
2065
  return [2 /*return*/, res];
1897
2066
  }
1898
2067
  });
@@ -1920,7 +2089,7 @@
1920
2089
  });
1921
2090
  };
1922
2091
  MatAutocompleteField.prototype.updateImplicitValue = function (items) {
1923
- if (this.searchable) {
2092
+ if (!this.mobile) {
1924
2093
  // Store implicit value (will use it onBlur if not other value selected)
1925
2094
  if (items && items.length === 1) {
1926
2095
  this._implicitValue = items[0];
@@ -1974,12 +2143,13 @@
1974
2143
  { type: i0.Component, args: [{
1975
2144
  // eslint-disable-next-line @angular-eslint/component-selector
1976
2145
  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",
2146
+ 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\" 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 <!-- 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)=\"_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
2147
  providers: [{
1979
2148
  provide: i1.NG_VALUE_ACCESSOR,
1980
2149
  multi: true,
1981
2150
  useExisting: i0.forwardRef(function () { return MatAutocompleteField; })
1982
2151
  }],
2152
+ animations: [slideInOutAnimation],
1983
2153
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1984
2154
  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
2155
  },] }
@@ -2020,6 +2190,8 @@
2020
2190
  suggestLengthThreshold: [{ type: i0.Input }],
2021
2191
  showLoadingSpinner: [{ type: i0.Input }],
2022
2192
  debug: [{ type: i0.Input }],
2193
+ showSearchBar: [{ type: i0.Input }],
2194
+ stickySearchBar: [{ type: i0.Input }],
2023
2195
  clicked: [{ type: i0.Output, args: ['click',] }],
2024
2196
  blurred: [{ type: i0.Output, args: ['blur',] }],
2025
2197
  focused: [{ type: i0.Output, args: ['focus',] }],
@@ -2027,6 +2199,7 @@
2027
2199
  keydownEscape: [{ type: i0.Output, args: ['keydown.escape',] }],
2028
2200
  keyupEnter: [{ type: i0.Output, args: ['keyup.enter',] }],
2029
2201
  matSelect: [{ type: i0.ViewChild, args: ['matSelect',] }],
2202
+ ionSearchbar: [{ type: i0.ViewChild, args: ['ionSearchbar',] }],
2030
2203
  matInputText: [{ type: i0.ViewChild, args: ['matInputText',] }],
2031
2204
  autocomplete: [{ type: i0.ViewChild, args: [autocomplete.MatAutocomplete,] }],
2032
2205
  autocompleteTrigger: [{ type: i0.ViewChild, args: [autocomplete.MatAutocompleteTrigger,] }],
@@ -2057,7 +2230,7 @@
2057
2230
  };
2058
2231
  return DateFormatPipe;
2059
2232
  }());
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" });
2233
+ 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
2234
  DateFormatPipe.decorators = [
2062
2235
  { type: i0.Pipe, args: [{
2063
2236
  name: 'dateFormat'
@@ -2069,7 +2242,7 @@
2069
2242
  { type: i1$2.TranslateService }
2070
2243
  ]; };
2071
2244
 
2072
- var moment = momentImported__namespace;
2245
+ var moment$7 = momentImported__namespace;
2073
2246
  var DateDiffDurationPipe = /** @class */ (function () {
2074
2247
  function DateDiffDurationPipe(dateAdapter, translate) {
2075
2248
  var _this = this;
@@ -2086,10 +2259,10 @@
2086
2259
  return this.format(startDate, endDate);
2087
2260
  };
2088
2261
  DateDiffDurationPipe.prototype.format = function (startDate, endDate) {
2089
- var duration = moment.duration(endDate.diff(startDate));
2262
+ var duration = moment$7.duration(endDate.diff(startDate));
2090
2263
  if (duration.asMinutes() < 0)
2091
2264
  return '';
2092
- var timeDuration = moment(0)
2265
+ var timeDuration = moment$7(0)
2093
2266
  .hour(duration.hours())
2094
2267
  .minute(duration.minutes());
2095
2268
  var days = Math.floor(duration.asDays());
@@ -2097,7 +2270,7 @@
2097
2270
  };
2098
2271
  return DateDiffDurationPipe;
2099
2272
  }());
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" });
2273
+ 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
2274
  DateDiffDurationPipe.decorators = [
2102
2275
  { type: i0.Pipe, args: [{
2103
2276
  name: 'dateDiffDuration'
@@ -2119,7 +2292,7 @@
2119
2292
  };
2120
2293
  return DateFromNowPipe;
2121
2294
  }());
2122
- DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1$1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
2295
+ DateFromNowPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0__namespace.ɵɵinject(i1__namespace.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
2123
2296
  DateFromNowPipe.decorators = [
2124
2297
  { type: i0.Pipe, args: [{
2125
2298
  name: 'dateFromNow'
@@ -2188,7 +2361,7 @@
2188
2361
  value *= -1;
2189
2362
  }
2190
2363
  }
2191
- var degrees = roundFloat(value, opts.maxDecimals).toString();
2364
+ var degrees = roundFloat$1(value, opts.maxDecimals).toString();
2192
2365
  // Add sign
2193
2366
  var sign = negative ? '-' : '+';
2194
2367
  if (opts.placeholderChar) {
@@ -2239,7 +2412,7 @@
2239
2412
  }
2240
2413
  var degrees = Math.trunc(value);
2241
2414
  var minutes = Math.trunc((value - degrees) * 60);
2242
- var seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2415
+ var seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2243
2416
  while (seconds >= 60) {
2244
2417
  seconds -= 60;
2245
2418
  minutes += 1;
@@ -2307,7 +2480,7 @@
2307
2480
  }
2308
2481
  }
2309
2482
  var degrees = Math.trunc(value);
2310
- var minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
2483
+ var minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
2311
2484
  while (minutes >= 60) {
2312
2485
  minutes -= 60;
2313
2486
  degrees += 1;
@@ -2358,15 +2531,15 @@
2358
2531
  return NaN;
2359
2532
  }
2360
2533
  if (pattern === 'DD')
2361
- return roundFloat(degrees, maxDecimals);
2534
+ return roundFloat$1(degrees, maxDecimals);
2362
2535
  var minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
2363
2536
  var seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
2364
2537
  var direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
2365
2538
  var sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
2366
2539
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
2367
- return roundFloat(degrees, maxDecimals);
2540
+ return roundFloat$1(degrees, maxDecimals);
2368
2541
  }
2369
- function roundFloat(input, maxDecimals) {
2542
+ function roundFloat$1(input, maxDecimals) {
2370
2543
  if (maxDecimals > 0) {
2371
2544
  var powDecimal = Math.pow(10, maxDecimals);
2372
2545
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -2389,7 +2562,7 @@
2389
2562
  };
2390
2563
  return LatLongFormatPipe;
2391
2564
  }());
2392
- LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2565
+ LatLongFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2393
2566
  LatLongFormatPipe.decorators = [
2394
2567
  { type: i0.Pipe, args: [{
2395
2568
  name: 'latLongFormat'
@@ -2402,7 +2575,7 @@
2402
2575
  }
2403
2576
  return LatitudeFormatPipe;
2404
2577
  }());
2405
- LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2578
+ LatitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2406
2579
  LatitudeFormatPipe.decorators = [
2407
2580
  { type: i0.Pipe, args: [{
2408
2581
  name: 'latitudeFormat'
@@ -2415,7 +2588,7 @@
2415
2588
  }
2416
2589
  return LongitudeFormatPipe;
2417
2590
  }());
2418
- LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2591
+ LongitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2419
2592
  LongitudeFormatPipe.decorators = [
2420
2593
  { type: i0.Pipe, args: [{
2421
2594
  name: 'longitudeFormat'
@@ -2438,7 +2611,7 @@
2438
2611
  };
2439
2612
  return NumberFormatPipe;
2440
2613
  }());
2441
- NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2614
+ NumberFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2442
2615
  NumberFormatPipe.decorators = [
2443
2616
  { type: i0.Pipe, args: [{
2444
2617
  name: 'numberFormat'
@@ -2481,7 +2654,7 @@
2481
2654
  };
2482
2655
  return HighlightPipe;
2483
2656
  }());
2484
- HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2657
+ HighlightPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2485
2658
  HighlightPipe.decorators = [
2486
2659
  { type: i0.Pipe, args: [{
2487
2660
  name: 'highlight'
@@ -2549,7 +2722,7 @@
2549
2722
  { type: i0.Pipe, args: [{ name: 'fileSize' },] }
2550
2723
  ];
2551
2724
 
2552
- var moment$1 = momentImported__namespace;
2725
+ var moment$6 = momentImported__namespace;
2553
2726
  var tz = momentTZImported__namespace;
2554
2727
  var DATE_UNIX_TIMESTAMP = 'X';
2555
2728
  var DATE_UNIX_MS_TIMESTAMP = 'x';
@@ -2627,32 +2800,32 @@
2627
2800
  if (!value || momentImported.isMoment(value))
2628
2801
  return value;
2629
2802
  // Parse the input value, as a ISO date time
2630
- var date = moment$1(value, DATE_ISO_PATTERN);
2803
+ var date = moment$6(value, DATE_ISO_PATTERN);
2631
2804
  if (date.isValid())
2632
2805
  return date;
2633
2806
  // Not valid: trying to convert from unix timestamp
2634
2807
  if (typeof value === 'string') {
2635
2808
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2636
2809
  if (value.length === 10) {
2637
- return moment$1(value, DATE_UNIX_TIMESTAMP);
2810
+ return moment$6(value, DATE_UNIX_TIMESTAMP);
2638
2811
  }
2639
2812
  else if (value.length === 13) {
2640
- return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2813
+ return moment$6(value, DATE_UNIX_MS_TIMESTAMP);
2641
2814
  }
2642
2815
  }
2643
2816
  console.warn('Unable to parse date: ' + value);
2644
2817
  return undefined;
2645
2818
  }
2646
2819
  function fromUnixTimestamp(timeInSec) {
2647
- return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2820
+ return moment$6(timeInSec, DATE_UNIX_TIMESTAMP);
2648
2821
  }
2649
2822
  function fromUnixMsTimestamp(timeInMs) {
2650
- return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2823
+ return moment$6(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2651
2824
  }
2652
2825
  function toDuration(value, unit) {
2653
2826
  if (!value)
2654
2827
  return undefined;
2655
- var duration = moment$1.duration(value, unit);
2828
+ var duration = moment$6.duration(value, unit);
2656
2829
  // fix 990+ ms
2657
2830
  if (duration.milliseconds() >= 990) {
2658
2831
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2682,7 +2855,7 @@
2682
2855
  };
2683
2856
  return DurationPipe;
2684
2857
  }());
2685
- DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$2.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2858
+ DurationPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2686
2859
  DurationPipe.decorators = [
2687
2860
  { type: i0.Pipe, args: [{
2688
2861
  name: 'duration'
@@ -2706,7 +2879,7 @@
2706
2879
  };
2707
2880
  return MathAbsPipe;
2708
2881
  }());
2709
- MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2882
+ MathAbsPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2710
2883
  MathAbsPipe.decorators = [
2711
2884
  { type: i0.Pipe, args: [{
2712
2885
  name: 'mathAbs'
@@ -2721,7 +2894,7 @@
2721
2894
  };
2722
2895
  return EvenPipe;
2723
2896
  }());
2724
- EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2897
+ EvenPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2725
2898
  EvenPipe.decorators = [
2726
2899
  { type: i0.Pipe, args: [{
2727
2900
  name: 'even'
@@ -2736,7 +2909,7 @@
2736
2909
  };
2737
2910
  return OddPipe;
2738
2911
  }());
2739
- OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2912
+ OddPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2740
2913
  OddPipe.decorators = [
2741
2914
  { type: i0.Pipe, args: [{
2742
2915
  name: 'odd'
@@ -2868,7 +3041,7 @@
2868
3041
  };
2869
3042
  return MapGetPipe;
2870
3043
  }());
2871
- MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
3044
+ MapGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2872
3045
  MapGetPipe.decorators = [
2873
3046
  { type: i0.Pipe, args: [{
2874
3047
  name: 'mapGet'
@@ -2885,7 +3058,7 @@
2885
3058
  };
2886
3059
  return MapKeysPipe;
2887
3060
  }());
2888
- MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
3061
+ MapKeysPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2889
3062
  MapKeysPipe.decorators = [
2890
3063
  { type: i0.Pipe, args: [{
2891
3064
  name: 'mapKeys'
@@ -2902,7 +3075,7 @@
2902
3075
  };
2903
3076
  return MapValuesPipe;
2904
3077
  }());
2905
- MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
3078
+ MapValuesPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2906
3079
  MapValuesPipe.decorators = [
2907
3080
  { type: i0.Pipe, args: [{
2908
3081
  name: 'mapValues'
@@ -2918,7 +3091,7 @@
2918
3091
  };
2919
3092
  return IsNotNilOrBlankPipe;
2920
3093
  }());
2921
- IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
3094
+ IsNotNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2922
3095
  IsNotNilOrBlankPipe.decorators = [
2923
3096
  { type: i0.Pipe, args: [{
2924
3097
  name: 'isNotNilOrBlank'
@@ -2933,7 +3106,7 @@
2933
3106
  };
2934
3107
  return IsNilOrBlankPipe;
2935
3108
  }());
2936
- IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
3109
+ IsNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2937
3110
  IsNilOrBlankPipe.decorators = [
2938
3111
  { type: i0.Pipe, args: [{
2939
3112
  name: 'isNilOrBlank'
@@ -2948,7 +3121,7 @@
2948
3121
  };
2949
3122
  return ToStringPipe;
2950
3123
  }());
2951
- ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
3124
+ ToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2952
3125
  ToStringPipe.decorators = [
2953
3126
  { type: i0.Pipe, args: [{
2954
3127
  name: 'toString'
@@ -2963,7 +3136,7 @@
2963
3136
  };
2964
3137
  return StrLengthPipe;
2965
3138
  }());
2966
- StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
3139
+ StrLengthPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2967
3140
  StrLengthPipe.decorators = [
2968
3141
  { type: i0.Pipe, args: [{
2969
3142
  name: 'strLength'
@@ -2978,7 +3151,7 @@
2978
3151
  };
2979
3152
  return StrIncludesPipe;
2980
3153
  }());
2981
- StrIncludesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrIncludesPipe_Factory() { return new StrIncludesPipe(); }, token: StrIncludesPipe, providedIn: "root" });
3154
+ StrIncludesPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function StrIncludesPipe_Factory() { return new StrIncludesPipe(); }, token: StrIncludesPipe, providedIn: "root" });
2982
3155
  StrIncludesPipe.decorators = [
2983
3156
  { type: i0.Pipe, args: [{
2984
3157
  name: 'strIncludes'
@@ -3069,7 +3242,7 @@
3069
3242
  };
3070
3243
  return TranslateContextService;
3071
3244
  }());
3072
- TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$2.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
3245
+ TranslateContextService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
3073
3246
  TranslateContextService.decorators = [
3074
3247
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
3075
3248
  ];
@@ -3126,7 +3299,7 @@
3126
3299
  };
3127
3300
  return PropertyGetPipe;
3128
3301
  }());
3129
- PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
3302
+ PropertyGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
3130
3303
  PropertyGetPipe.decorators = [
3131
3304
  { type: i0.Pipe, args: [{
3132
3305
  name: 'propertyGet'
@@ -3152,7 +3325,7 @@
3152
3325
  ngInit: [{ type: i0.Output }]
3153
3326
  };
3154
3327
 
3155
- var moment$2 = momentImported__namespace;
3328
+ var moment$5 = momentImported__namespace;
3156
3329
  // @dynamic
3157
3330
  var SharedValidators = /** @class */ (function () {
3158
3331
  function SharedValidators() {
@@ -3235,7 +3408,7 @@
3235
3408
  };
3236
3409
  SharedValidators.validDate = function (control) {
3237
3410
  var value = control.value;
3238
- var date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
3411
+ var date = !value || moment$5.isMoment(value) ? value : moment$5(control.value, DATE_ISO_PATTERN);
3239
3412
  if (date && (!date.isValid() || date.year() < 1970)) {
3240
3413
  return { validDate: true };
3241
3414
  }
@@ -4442,7 +4615,7 @@
4442
4615
  };
4443
4616
  return FormErrorTranslator;
4444
4617
  }());
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" });
4618
+ 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
4619
  FormErrorTranslator.decorators = [
4447
4620
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
4448
4621
  ];
@@ -4527,7 +4700,7 @@
4527
4700
  };
4528
4701
  return FormGetPipe;
4529
4702
  }());
4530
- FormGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetPipe_Factory() { return new FormGetPipe(); }, token: FormGetPipe, providedIn: "root" });
4703
+ FormGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetPipe_Factory() { return new FormGetPipe(); }, token: FormGetPipe, providedIn: "root" });
4531
4704
  FormGetPipe.decorators = [
4532
4705
  { type: i0.Pipe, args: [{
4533
4706
  name: 'formGet'
@@ -4542,7 +4715,7 @@
4542
4715
  };
4543
4716
  return FormGetControlPipe;
4544
4717
  }());
4545
- FormGetControlPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetControlPipe_Factory() { return new FormGetControlPipe(); }, token: FormGetControlPipe, providedIn: "root" });
4718
+ FormGetControlPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetControlPipe_Factory() { return new FormGetControlPipe(); }, token: FormGetControlPipe, providedIn: "root" });
4546
4719
  FormGetControlPipe.decorators = [
4547
4720
  { type: i0.Pipe, args: [{
4548
4721
  name: 'formGetControl'
@@ -4557,7 +4730,7 @@
4557
4730
  };
4558
4731
  return FormGetArrayPipe;
4559
4732
  }());
4560
- FormGetArrayPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetArrayPipe_Factory() { return new FormGetArrayPipe(); }, token: FormGetArrayPipe, providedIn: "root" });
4733
+ FormGetArrayPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetArrayPipe_Factory() { return new FormGetArrayPipe(); }, token: FormGetArrayPipe, providedIn: "root" });
4561
4734
  FormGetArrayPipe.decorators = [
4562
4735
  { type: i0.Pipe, args: [{
4563
4736
  name: 'formGetArray'
@@ -4572,7 +4745,7 @@
4572
4745
  };
4573
4746
  return FormGetGroupPipe;
4574
4747
  }());
4575
- FormGetGroupPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function FormGetGroupPipe_Factory() { return new FormGetGroupPipe(); }, token: FormGetGroupPipe, providedIn: "root" });
4748
+ FormGetGroupPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function FormGetGroupPipe_Factory() { return new FormGetGroupPipe(); }, token: FormGetGroupPipe, providedIn: "root" });
4576
4749
  FormGetGroupPipe.decorators = [
4577
4750
  { type: i0.Pipe, args: [{
4578
4751
  name: 'formGetGroup'
@@ -4695,7 +4868,7 @@
4695
4868
  }
4696
4869
  return false;
4697
4870
  };
4698
- var ɵ0$1 = isIpad;
4871
+ var ɵ0$b = isIpad;
4699
4872
  var isIOS = function (win) { return testUserAgent(win, /iPhone|iPod/i) || isIpad(win); };
4700
4873
  var isAndroid = function (win) { return testUserAgent(win, /android|sink/i); };
4701
4874
  var isCordova = function (win) { return !!(win['cordova'] || win['phonegap'] || win['PhoneGap']); };
@@ -4944,9 +5117,9 @@
4944
5117
  var hour = parseInt(durationParts[0] || '0');
4945
5118
  var minute = parseInt(durationParts[1] || '0');
4946
5119
  var value = hour + (minute + 0.5) / 60;
4947
- return roundFloat$1(value, maxDecimals);
5120
+ return roundFloat(value, maxDecimals);
4948
5121
  }
4949
- function roundFloat$1(input, maxDecimals) {
5122
+ function roundFloat(input, maxDecimals) {
4950
5123
  if (maxDecimals > 0) {
4951
5124
  var powDecimal = Math.pow(10, maxDecimals);
4952
5125
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -4970,9 +5143,9 @@
4970
5143
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
4971
5144
  }
4972
5145
  };
4973
- var noop$1 = function () {
5146
+ var noop$7 = function () {
4974
5147
  };
4975
- var ɵ0$2 = noop$1;
5148
+ var ɵ0$a = noop$7;
4976
5149
  var MatLatLongField = /** @class */ (function () {
4977
5150
  function MatLatLongField(platform, translate, formBuilder, cd, formGroupDir) {
4978
5151
  this.platform = platform;
@@ -4980,8 +5153,8 @@
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;
@@ -5333,14 +5506,14 @@
5333
5506
  },] }
5334
5507
  ];
5335
5508
 
5336
- var DEFAULT_VALUE_ACCESSOR = {
5509
+ var DEFAULT_VALUE_ACCESSOR$5 = {
5337
5510
  provide: i1.NG_VALUE_ACCESSOR,
5338
5511
  useExisting: i0.forwardRef(function () { return MatDate; }),
5339
5512
  multi: true
5340
5513
  };
5341
- var DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5342
- var noop$2 = function () { };
5343
- var ɵ0$3 = noop$2;
5514
+ var DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5515
+ var noop$6 = function () { };
5516
+ var ɵ0$9 = noop$6;
5344
5517
  var MatDate = /** @class */ (function () {
5345
5518
  function MatDate(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5346
5519
  this.platform = platform;
@@ -5350,13 +5523,13 @@
5350
5523
  this.cd = cd;
5351
5524
  this.keyboard = keyboard;
5352
5525
  this.formGroupDir = formGroupDir;
5353
- this._onChangeCallback = noop$2;
5354
- this._onTouchedCallback = noop$2;
5526
+ this._onChangeCallback = noop$6;
5527
+ this._onTouchedCallback = noop$6;
5355
5528
  this._subscription = new rxjs.Subscription();
5356
5529
  this._writing = true;
5357
5530
  this._disabling = false;
5358
5531
  this._readonly = false;
5359
- this.dayMask = DAY_MASK;
5532
+ this.dayMask = DAY_MASK$2;
5360
5533
  this.floatLabel = 'auto';
5361
5534
  this.compact = false;
5362
5535
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -5679,7 +5852,7 @@
5679
5852
  selector: 'mat-date-field',
5680
5853
  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
5854
  providers: [
5682
- DEFAULT_VALUE_ACCESSOR,
5855
+ DEFAULT_VALUE_ACCESSOR$5,
5683
5856
  ],
5684
5857
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
5685
5858
  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%}"]
@@ -5714,16 +5887,16 @@
5714
5887
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
5715
5888
  };
5716
5889
 
5717
- var DEFAULT_VALUE_ACCESSOR$1 = {
5890
+ var DEFAULT_VALUE_ACCESSOR$4 = {
5718
5891
  provide: i1.NG_VALUE_ACCESSOR,
5719
5892
  useExisting: i0.forwardRef(function () { return MatDateTime; }),
5720
5893
  multi: true
5721
5894
  };
5722
5895
  var DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
5723
5896
  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;
5897
+ var HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
5898
+ var noop$5 = function () { };
5899
+ var ɵ0$8 = noop$5;
5727
5900
  var MatDateTime = /** @class */ (function () {
5728
5901
  function MatDateTime(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
5729
5902
  this.platform = platform;
@@ -5733,14 +5906,14 @@
5733
5906
  this.cd = cd;
5734
5907
  this.keyboard = keyboard;
5735
5908
  this.formGroupDir = formGroupDir;
5736
- this._onChangeCallback = noop$3;
5737
- this._onTouchedCallback = noop$3;
5909
+ this._onChangeCallback = noop$5;
5910
+ this._onTouchedCallback = noop$5;
5738
5911
  this._subscription = new rxjs.Subscription();
5739
5912
  this._writing = true;
5740
5913
  this._disabling = false;
5741
5914
  this._readonly = false;
5742
5915
  this.dayMask = DAY_MASK$1;
5743
- this.hourMask = HOUR_MASK;
5916
+ this.hourMask = HOUR_MASK$1;
5744
5917
  this.floatLabel = 'auto';
5745
5918
  this.compact = false;
5746
5919
  this.placeholderChar = DEFAULT_PLACEHOLDER_CHAR;
@@ -6098,7 +6271,7 @@
6098
6271
  selector: 'mat-date-time-field',
6099
6272
  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
6273
  providers: [
6101
- DEFAULT_VALUE_ACCESSOR$1,
6274
+ DEFAULT_VALUE_ACCESSOR$4,
6102
6275
  ],
6103
6276
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6104
6277
  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%}"]
@@ -6133,15 +6306,15 @@
6133
6306
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
6134
6307
  };
6135
6308
 
6136
- var DEFAULT_VALUE_ACCESSOR$2 = {
6309
+ var DEFAULT_VALUE_ACCESSOR$3 = {
6137
6310
  provide: i1.NG_VALUE_ACCESSOR,
6138
6311
  useExisting: i0.forwardRef(function () { return MatDateShort; }),
6139
6312
  multi: true
6140
6313
  };
6141
- var DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
6314
+ var DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
6142
6315
  var noop$4 = function () {
6143
6316
  };
6144
- var ɵ0$5 = noop$4;
6317
+ var ɵ0$7 = noop$4;
6145
6318
  var MatDateShort = /** @class */ (function () {
6146
6319
  function MatDateShort(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
6147
6320
  this.dateAdapter = dateAdapter;
@@ -6154,7 +6327,7 @@
6154
6327
  this._onTouchedCallback = noop$4;
6155
6328
  this.writing = true;
6156
6329
  this.disabling = false;
6157
- this.dayMask = DAY_MASK$2;
6330
+ this.dayMask = DAY_MASK;
6158
6331
  this.disabled = false;
6159
6332
  this.floatLabel = 'auto';
6160
6333
  this.readonly = false;
@@ -6431,7 +6604,7 @@
6431
6604
  selector: 'mat-date-short-field',
6432
6605
  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
6606
  providers: [
6434
- DEFAULT_VALUE_ACCESSOR$2,
6607
+ DEFAULT_VALUE_ACCESSOR$3,
6435
6608
  ],
6436
6609
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6437
6610
  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%}"]
@@ -6502,16 +6675,16 @@
6502
6675
  },] }
6503
6676
  ];
6504
6677
 
6505
- var DEFAULT_VALUE_ACCESSOR$3 = {
6678
+ var DEFAULT_VALUE_ACCESSOR$2 = {
6506
6679
  provide: i1.NG_VALUE_ACCESSOR,
6507
6680
  useExisting: i0.forwardRef(function () { return MatDuration; }),
6508
6681
  multi: true
6509
6682
  };
6510
6683
  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 () {
6684
+ var HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
6685
+ var noop$3 = function () {
6513
6686
  };
6514
- var ɵ0$6 = noop$5;
6687
+ var ɵ0$6 = noop$3;
6515
6688
  var MatDuration = /** @class */ (function () {
6516
6689
  function MatDuration(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
6517
6690
  this.dateAdapter = dateAdapter;
@@ -6520,11 +6693,11 @@
6520
6693
  this.cd = cd;
6521
6694
  this.formGroupDir = formGroupDir;
6522
6695
  this._subscription = new rxjs.Subscription();
6523
- this._onChangeCallback = noop$5;
6524
- this._onTouchedCallback = noop$5;
6696
+ this._onChangeCallback = noop$3;
6697
+ this._onTouchedCallback = noop$3;
6525
6698
  this.writing = true;
6526
6699
  this.disabling = false;
6527
- this.hourMask = HOUR_MASK$1;
6700
+ this.hourMask = HOUR_MASK;
6528
6701
  this.disabled = false;
6529
6702
  this.floatLabel = 'auto';
6530
6703
  this.readonly = false;
@@ -6717,7 +6890,7 @@
6717
6890
  selector: 'mat-duration-field',
6718
6891
  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
6892
  providers: [
6720
- DEFAULT_VALUE_ACCESSOR$3,
6893
+ DEFAULT_VALUE_ACCESSOR$2,
6721
6894
  ],
6722
6895
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6723
6896
  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 +6950,22 @@
6777
6950
  },] }
6778
6951
  ];
6779
6952
 
6780
- var DEFAULT_VALUE_ACCESSOR$4 = {
6953
+ var DEFAULT_VALUE_ACCESSOR$1 = {
6781
6954
  provide: i1.NG_VALUE_ACCESSOR,
6782
6955
  useExisting: i0.forwardRef(function () { return MatBooleanField; }),
6783
6956
  multi: true
6784
6957
  };
6785
- var noop$6 = function () {
6958
+ var noop$2 = function () {
6786
6959
  };
6787
- var ɵ0$7 = noop$6;
6960
+ var ɵ0$5 = noop$2;
6788
6961
  var MatBooleanField = /** @class */ (function () {
6789
6962
  function MatBooleanField(translate, formBuilder, cd, formGroupDir) {
6790
6963
  this.translate = translate;
6791
6964
  this.formBuilder = formBuilder;
6792
6965
  this.cd = cd;
6793
6966
  this.formGroupDir = formGroupDir;
6794
- this._onChangeCallback = noop$6;
6795
- this._onTouchedCallback = noop$6;
6967
+ this._onChangeCallback = noop$2;
6968
+ this._onTouchedCallback = noop$2;
6796
6969
  this._writing = false;
6797
6970
  this.showRadio = false;
6798
6971
  this.disabled = false;
@@ -6967,7 +7140,7 @@
6967
7140
  selector: 'mat-boolean-field',
6968
7141
  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
7142
  providers: [
6970
- DEFAULT_VALUE_ACCESSOR$4
7143
+ DEFAULT_VALUE_ACCESSOR$1
6971
7144
  ],
6972
7145
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6973
7146
  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 +7227,7 @@
7054
7227
  return MatNumpadEvent;
7055
7228
  }(KeyboardEvent));
7056
7229
 
7230
+ exports.AnimationState = void 0;
7057
7231
  (function (AnimationState) {
7058
7232
  AnimationState["ENTER"] = "enter";
7059
7233
  AnimationState["ENTER_INPUT"] = "enter-input";
@@ -7221,7 +7395,7 @@
7221
7395
  };
7222
7396
  return MatNumpadDomService;
7223
7397
  }());
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" });
7398
+ 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
7399
  MatNumpadDomService.decorators = [
7226
7400
  { type: i0.Injectable, args: [{
7227
7401
  providedIn: 'root'
@@ -7627,7 +7801,7 @@
7627
7801
  },] }
7628
7802
  ];
7629
7803
 
7630
- var DEFAULT_VALUE_ACCESSOR$5 = {
7804
+ var DEFAULT_VALUE_ACCESSOR = {
7631
7805
  provide: i1.NG_VALUE_ACCESSOR,
7632
7806
  useExisting: i0.forwardRef(function () { return MatSwipeField; }),
7633
7807
  multi: true
@@ -7947,7 +8121,7 @@
7947
8121
  { type: i0.Component, args: [{
7948
8122
  selector: 'mat-swipe-field',
7949
8123
  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],
8124
+ providers: [DEFAULT_VALUE_ACCESSOR],
7951
8125
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
7952
8126
  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
8127
  },] }
@@ -8008,14 +8182,14 @@
8008
8182
  },] }
8009
8183
  ];
8010
8184
 
8011
- var noop$7 = function () { };
8012
- var ɵ0$8 = noop$7;
8185
+ var noop$1 = function () { };
8186
+ var ɵ0$4 = noop$1;
8013
8187
  var MatChipsField = /** @class */ (function () {
8014
8188
  function MatChipsField(cd, formGroupDir) {
8015
8189
  this.cd = cd;
8016
8190
  this.formGroupDir = formGroupDir;
8017
- this._onChangeCallback = noop$7;
8018
- this._onTouchedCallback = noop$7;
8191
+ this._onChangeCallback = noop$1;
8192
+ this._onTouchedCallback = noop$1;
8019
8193
  this.logPrefix = '[mat-chips] ';
8020
8194
  this.formControlName = null;
8021
8195
  this.required = false;
@@ -8174,9 +8348,9 @@
8174
8348
  // - if label then col size = 2
8175
8349
  // - if rankOrder then col size = 1
8176
8350
  // - ese => auto size
8177
- || this.displayAttributes.map(function (attr) { return (attr && attr.endsWith('label')) ? 2
8178
- : ((attr && attr.endsWith('rankOrder')) ? 1
8179
- : undefined); });
8351
+ || this.displayAttributes.map(function (attr) { return attr && (attr.endsWith('label') ? 3
8352
+ : (attr.endsWith('rankOrder') ? 2
8353
+ : undefined)); });
8180
8354
  this.displayColumnNames = this.displayAttributes.map(function (attr, index) { return _this.displayColumnNames && _this.displayColumnNames[index] ||
8181
8355
  (_this.i18nPrefix + changeCaseToUnderscore(attr).toUpperCase()); });
8182
8356
  this.mobile = toBoolean(this.mobile, false);
@@ -8195,8 +8369,8 @@
8195
8369
  if (!this.suggestFn) {
8196
8370
  var suggestFromArrayFn_1 = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
8197
8371
  return __generator(this, function (_c) {
8198
- if (this.debug)
8199
- console.debug(this.logPrefix + ' Calling suggestFromArray with value=', value);
8372
+ // DEBUG
8373
+ //if (this.debug) console.debug(this.logPrefix + ' Calling suggestFromArray with value=', value);
8200
8374
  return [2 /*return*/, suggestFromArray(this.$inputItems.value, value, Object.assign({ searchAttributes: this.displayAttributes }, filter))];
8201
8375
  });
8202
8376
  }); };
@@ -8206,13 +8380,13 @@
8206
8380
  switch (_c.label) {
8207
8381
  case 0:
8208
8382
  if (!isNil(this.$inputItems.value)) return [3 /*break*/, 2];
8209
- if (this.debug)
8210
- console.debug('[mat-chips] Waiting items to be set...');
8383
+ // DEBUG
8384
+ //if (this.debug) console.debug('[mat-chips] Waiting items to be set...');
8211
8385
  return [4 /*yield*/, firstNotNilPromise(this.$inputItems)];
8212
8386
  case 1:
8387
+ // DEBUG
8388
+ //if (this.debug) console.debug('[mat-chips] Waiting items to be set...');
8213
8389
  _c.sent();
8214
- if (this.debug)
8215
- console.debug('[mat-chips] Received items:', this.$inputItems.value);
8216
8390
  _c.label = 2;
8217
8391
  case 2:
8218
8392
  this.suggestFn = suggestFromArrayFn_1;
@@ -8244,9 +8418,7 @@
8244
8418
  ),
8245
8419
  // Object set: use it (no distinctUntilChanged() pipe need)
8246
8420
  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); })),
8421
+ .pipe(operators.startWith(this.inputControl.value), operators.filter(function (value) { return isNotNil(value) && typeof value === 'object'; })),
8250
8422
  // On dropdown button click (no distinctUntilChanged(), nor debounceTime)
8251
8423
  this.dropButtonClick
8252
8424
  .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 +8491,7 @@
8319
8491
  _this.$filteredItems.next(undefined);
8320
8492
  }
8321
8493
  _this._implicitValue = null; // reset the implicit value
8494
+ _this.closePanel(); // Clone panel
8322
8495
  }));
8323
8496
  // Listen form control status change
8324
8497
  this._subscription.add(this.formControl.statusChanges
@@ -8329,6 +8502,7 @@
8329
8502
  .subscribe(function () { return _this.checkIfTouched(); }));
8330
8503
  this._subscription.add(this.keydownEscape.subscribe(function (event) {
8331
8504
  if (_this.isOpen) {
8505
+ // Avoid form or page to manage escape event
8332
8506
  event === null || event === void 0 ? void 0 : event.stopPropagation();
8333
8507
  event === null || event === void 0 ? void 0 : event.preventDefault();
8334
8508
  // DEBUG
@@ -8416,8 +8590,8 @@
8416
8590
  value = [value];
8417
8591
  }
8418
8592
  if (value !== this.formControl.value) {
8419
- if (this.debug)
8420
- console.debug(this.logPrefix + ' Writing value: ', value);
8593
+ // DEBUG
8594
+ //if (this.debug) console.debug(this.logPrefix + ' Writing value: ', value);
8421
8595
  this.formControl.patchValue(value, { emitEvent: false });
8422
8596
  this._onChangeCallback(value);
8423
8597
  }
@@ -8450,15 +8624,17 @@
8450
8624
  if (event.stopPropagation)
8451
8625
  event.stopPropagation();
8452
8626
  event.returnValue = false;
8453
- if (this.debug)
8454
- console.debug(this.logPrefix + ' Cancelling focus event');
8627
+ // DEBUG
8628
+ //if (this.debug) console.debug(this.logPrefix + ' Cancelling focus event');
8455
8629
  return false;
8456
8630
  }
8631
+ // DEBUG
8632
+ //if (this.debug) console.debug(this.logPrefix + ' Select input content');
8457
8633
  var hasContent = selectInputContent(event);
8458
8634
  // If combo is empty, or if has content but should force to show panel on focus
8459
8635
  if (!hasContent || (this.showPanelOnFocus && this.showAllOnFocus)) {
8460
- if (this.debug)
8461
- console.debug(this.logPrefix + ' Emit focus event');
8636
+ // DEBUG
8637
+ //if (this.debug) console.debug(this.logPrefix + ' Emit focus event');
8462
8638
  this.focused.emit(event);
8463
8639
  return true;
8464
8640
  }
@@ -8473,11 +8649,12 @@
8473
8649
  if (event.stopPropagation)
8474
8650
  event.stopPropagation();
8475
8651
  event.returnValue = false;
8476
- //DEBUG console.debug(this.logPrefix + " Cancelling blur event");
8652
+ //DEBUG
8653
+ //if (this.debug) console.debug(this.logPrefix + " Cancelling blur event");
8477
8654
  return false;
8478
8655
  }
8479
- //DEBUG
8480
- //console.debug(this.logPrefix + ' Blur: move caret to the beginning');
8656
+ // DEBUG
8657
+ //if (this.debug) console.debug(this.logPrefix + ' Blur: move caret to the beginning');
8481
8658
  // Move caret to the beginning (fix issue IMAGINE-469)
8482
8659
  selectInputRange(event.target, 0, 0);
8483
8660
  this.blurred.emit(event);
@@ -8634,7 +8811,7 @@
8634
8811
  { type: i0.Component, args: [{
8635
8812
  // eslint-disable-next-line @angular-eslint/component-selector
8636
8813
  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",
8814
+ 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
8815
  providers: [{
8639
8816
  provide: i1.NG_VALUE_ACCESSOR,
8640
8817
  multi: true,
@@ -8983,7 +9160,7 @@
8983
9160
  };
8984
9161
  return ProgressBarService;
8985
9162
  }());
8986
- ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
9163
+ ProgressBarService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
8987
9164
  ProgressBarService.decorators = [
8988
9165
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
8989
9166
  ];
@@ -9030,7 +9207,7 @@
9030
9207
  };
9031
9208
  return AppGestureConfig;
9032
9209
  }(i1$6.HammerGestureConfig));
9033
- AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
9210
+ AppGestureConfig.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
9034
9211
  AppGestureConfig.decorators = [
9035
9212
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9036
9213
  ];
@@ -9297,7 +9474,7 @@
9297
9474
  };
9298
9475
  return MatPaginatorI18n;
9299
9476
  }(paginator.MatPaginatorIntl));
9300
- MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
9477
+ MatPaginatorI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
9301
9478
  MatPaginatorI18n.decorators = [
9302
9479
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9303
9480
  ];
@@ -9389,17 +9566,17 @@
9389
9566
  return rgbArrayToHex(rgb.map(function (v) { return 255 - v; }));
9390
9567
  }
9391
9568
 
9392
- var noop$8 = function () {
9569
+ var noop = function () {
9393
9570
  };
9394
- var ɵ0$9 = noop$8;
9571
+ var ɵ0$3 = noop;
9395
9572
  var AppFormField = /** @class */ (function () {
9396
9573
  function AppFormField(translate, cd, injector, formGroupDir) {
9397
9574
  this.translate = translate;
9398
9575
  this.cd = cd;
9399
9576
  this.injector = injector;
9400
9577
  this.formGroupDir = formGroupDir;
9401
- this._onChangeCallback = noop$8;
9402
- this._onTouchedCallback = noop$8;
9578
+ this._onChangeCallback = noop;
9579
+ this._onTouchedCallback = noop;
9403
9580
  this.readonly = false;
9404
9581
  this.compact = false;
9405
9582
  this.floatLabel = 'auto';
@@ -9957,7 +10134,7 @@
9957
10134
  };
9958
10135
  return AudioProvider;
9959
10136
  }(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" });
10137
+ 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
10138
  AudioProvider.decorators = [
9962
10139
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9963
10140
  ];
@@ -9988,13 +10165,12 @@
9988
10165
  ]; };
9989
10166
 
9990
10167
  var Hotkeys = /** @class */ (function () {
9991
- function Hotkeys(eventManager, dialog, document, modalController, popoverController) {
10168
+ function Hotkeys(eventManager, dialog, document, modalController) {
9992
10169
  var _this = this;
9993
10170
  this.eventManager = eventManager;
9994
10171
  this.dialog = dialog;
9995
10172
  this.document = document;
9996
10173
  this.modalController = modalController;
9997
- this.popoverController = popoverController;
9998
10174
  this._debug = false;
9999
10175
  this._hotkeys = new Map();
10000
10176
  this._defaults = {
@@ -10023,19 +10199,12 @@
10023
10199
  }
10024
10200
  return new rxjs.Observable(function (observer) {
10025
10201
  var handler = function (e) { return __awaiter(_this, void 0, void 0, function () {
10026
- var top, _a;
10027
- return __generator(this, function (_b) {
10028
- switch (_b.label) {
10202
+ var top;
10203
+ return __generator(this, function (_a) {
10204
+ switch (_a.label) {
10029
10205
  case 0: return [4 /*yield*/, this.modalController.getTop()];
10030
10206
  case 1:
10031
- _a = (_b.sent());
10032
- if (_a) return [3 /*break*/, 3];
10033
- return [4 /*yield*/, this.popoverController.getTop()];
10034
- case 2:
10035
- _a = (_b.sent());
10036
- _b.label = 3;
10037
- case 3:
10038
- top = _a;
10207
+ top = _a.sent();
10039
10208
  // If modal present, check its component name against hotkey element name (fix #181)
10040
10209
  if (top && top.component['name'] !== merged.elementName)
10041
10210
  return [2 /*return*/];
@@ -10065,7 +10234,7 @@
10065
10234
  };
10066
10235
  return Hotkeys;
10067
10236
  }());
10068
- 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" });
10237
+ 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)); }, token: Hotkeys, providedIn: "root" });
10069
10238
  Hotkeys.decorators = [
10070
10239
  { type: i0.Injectable, args: [{
10071
10240
  providedIn: 'root'
@@ -10075,8 +10244,7 @@
10075
10244
  { type: i1$6.EventManager },
10076
10245
  { type: i2.MatDialog },
10077
10246
  { type: undefined, decorators: [{ type: i0.Inject, args: [i1$4.DOCUMENT,] }] },
10078
- { type: i1$5.ModalController },
10079
- { type: i1$5.PopoverController }
10247
+ { type: i1$5.ModalController }
10080
10248
  ]; };
10081
10249
 
10082
10250
  var SharedHotkeysModule = /** @class */ (function () {
@@ -10270,7 +10438,7 @@
10270
10438
  return Base64ImageReader;
10271
10439
  }());
10272
10440
 
10273
- var uuidv4 = uuidv4Imported__namespace;
10441
+ var uuidv4$1 = uuidv4Imported__namespace;
10274
10442
  var FileService = /** @class */ (function () {
10275
10443
  function FileService(platform,
10276
10444
  //private transfer: FileTransfer,
@@ -10316,7 +10484,7 @@
10316
10484
  lastSlashIndex = source.lastIndexOf('/');
10317
10485
  if (lastSlashIndex === -1)
10318
10486
  throw new Error('Invalid URL: ' + source);
10319
- fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
10487
+ fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
10320
10488
  if (!(responseType === 'file' && this.canUseFileSystem)) return [3 /*break*/, 4];
10321
10489
  console.warn("WARN: [file] Fetching image {" + source + "} in local file...");
10322
10490
  targetFilePath = this._imageDirectory + fileName;
@@ -10379,7 +10547,7 @@
10379
10547
  };
10380
10548
  return FileService;
10381
10549
  }());
10382
- 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" });
10550
+ 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" });
10383
10551
  FileService.decorators = [
10384
10552
  { type: i0.Injectable, args: [{
10385
10553
  providedIn: 'root',
@@ -10546,7 +10714,7 @@
10546
10714
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
10547
10715
 
10548
10716
  var scrypt = require('scrypt-async');
10549
- var sha256 = require('hash.js/lib/hash/sha/256');
10717
+ var sha256$1 = require('hash.js/lib/hash/sha/256');
10550
10718
  var sha512 = require('hash.js/lib/hash/sha/512');
10551
10719
  var nacl = {
10552
10720
  sign: tweetnacl.sign,
@@ -10652,7 +10820,7 @@
10652
10820
  * Hash (using SHA256) a message
10653
10821
  */
10654
10822
  CryptoService.prototype.sha256 = function (message) {
10655
- return sha256().update(message).digest('hex');
10823
+ return sha256$1().update(message).digest('hex');
10656
10824
  };
10657
10825
  /**
10658
10826
  * Hash (using SHA512) a message
@@ -10666,7 +10834,7 @@
10666
10834
  };
10667
10835
  return CryptoService;
10668
10836
  }());
10669
- CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
10837
+ CryptoService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
10670
10838
  CryptoService.decorators = [
10671
10839
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
10672
10840
  ];
@@ -11196,109 +11364,6 @@
11196
11364
  EntityClass({ typename: 'PeerVO' })
11197
11365
  ], exports.Peer);
11198
11366
 
11199
- // import the required animation functions from the angular animations module
11200
- var fadeInAnimation =
11201
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11202
- animations.trigger('fadeInAnimation', [
11203
- // route 'enter' transition
11204
- animations.transition(':enter', [
11205
- // css styles at start of transition
11206
- animations.style({ opacity: 0 }),
11207
- // animation and styles at end of transition
11208
- animations.animate('.3s', animations.style({ opacity: 1 }))
11209
- ]),
11210
- ]);
11211
- var fadeInOutAnimation =
11212
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11213
- animations.trigger('fadeInOutAnimation', [
11214
- // route 'enter' transition
11215
- animations.transition(':enter', [
11216
- // css styles at start of transition
11217
- animations.style({ opacity: 0 }),
11218
- // animation and styles at end of transition
11219
- animations.animate('.3s', animations.style({ opacity: 1 }))
11220
- ]),
11221
- // route 'leave' transition
11222
- animations.transition(':leave', [
11223
- // animation and styles at end of transition
11224
- animations.animate('.5s ease-in-out', animations.style({
11225
- opacity: 0
11226
- }))
11227
- ]),
11228
- ]);
11229
- var slideInOutAnimation =
11230
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11231
- animations.trigger('slideInOutAnimation', [
11232
- // end state styles for route container (host)
11233
- animations.state('*', animations.style({
11234
- // the view covers the whole screen with a semi tranparent background
11235
- position: 'relative',
11236
- top: 0,
11237
- left: 0,
11238
- right: 0,
11239
- bottom: 0,
11240
- opacity: 1
11241
- })),
11242
- // route 'enter' transition
11243
- animations.transition(':enter', [
11244
- // styles at start of transition
11245
- animations.style({
11246
- // start with the content positioned off the right of the screen,
11247
- // -400% is required instead of -100% because the negative position adds to the width of the element
11248
- left: '400%',
11249
- // start with background opacity set to 0 (invisible)
11250
- opacity: 0
11251
- }),
11252
- // animation and styles at end of transition
11253
- animations.animate('.3s ease-in-out', animations.style({
11254
- // transition the right position to 0 which slides the content into view
11255
- left: 0,
11256
- // transition the background opacity to 0.8 to fade it in
11257
- opacity: 0.8
11258
- }))
11259
- ]),
11260
- // route 'leave' transition
11261
- animations.transition(':leave', [
11262
- // animation and styles at end of transition
11263
- animations.animate('.5s ease-in-out', animations.style({
11264
- // transition the right position to -400% which slides the content out of view
11265
- left: '400%',
11266
- // transition the background opacity to 0 to fade it out
11267
- opacity: 0
11268
- }))
11269
- ])
11270
- ]);
11271
- var slideUpDownAnimation =
11272
- // trigger name for attaching this animation to an element using the [@triggerName] syntax
11273
- animations.trigger('slideUpDownAnimation', [
11274
- // end state styles for route container (host)
11275
- animations.state('*', animations.style({
11276
- transform: 'translateY(0)',
11277
- opacity: 1
11278
- })),
11279
- // route 'enter' transition
11280
- animations.transition(':enter', [
11281
- // styles at start of transition
11282
- animations.style({
11283
- transform: 'translateY(-400%)',
11284
- opacity: 0
11285
- }),
11286
- // animation and styles at end of transition
11287
- animations.animate('.3s ease-in-out', animations.style({
11288
- transform: 'translateY(0)',
11289
- opacity: 1
11290
- }))
11291
- ]),
11292
- // route 'leave' transition
11293
- animations.transition(':leave', [
11294
- // animation and styles at end of transition
11295
- animations.animate('.5s ease-in-out', animations.style({
11296
- transform: 'translateY(-100%)',
11297
- opacity: 0
11298
- }))
11299
- ])
11300
- ]);
11301
-
11302
11367
  var HttpUtils = /** @class */ (function () {
11303
11368
  function HttpUtils() {
11304
11369
  }
@@ -11639,7 +11704,7 @@
11639
11704
  onRefresh: [{ type: i0.Input }]
11640
11705
  };
11641
11706
 
11642
- var moment$3 = momentImported__namespace;
11707
+ var moment$4 = momentImported__namespace;
11643
11708
  var SETTINGS_STORAGE_KEY = 'settings';
11644
11709
  var SETTINGS_TRANSIENT_PROPERTIES = ['mobile', 'touchUi' /*deprecated*/];
11645
11710
  // fixme: this constant points to static environment
@@ -11941,11 +12006,11 @@
11941
12006
  if (!feature) {
11942
12007
  feature = {
11943
12008
  name: featureName.toLowerCase(),
11944
- lastSyncDate: moment$3().toISOString()
12009
+ lastSyncDate: moment$4().toISOString()
11945
12010
  };
11946
12011
  }
11947
12012
  else {
11948
- feature.lastSyncDate = moment$3().toISOString();
12013
+ feature.lastSyncDate = moment$4().toISOString();
11949
12014
  }
11950
12015
  this.saveOfflineFeature(feature);
11951
12016
  };
@@ -12139,7 +12204,7 @@
12139
12204
  if (!page || !page.title || !page.path)
12140
12205
  throw Error('Missing required argument \'page\', \'page.path\' or \'page.title\'');
12141
12206
  // Set time
12142
- page.time = page.time || moment$3();
12207
+ page.time = page.time || moment$4();
12143
12208
  // Clean the title (remove <small> tags)
12144
12209
  if (!opts || opts.removeTitleSmallTag !== false) {
12145
12210
  var tagIndex = page.title.indexOf('</small>');
@@ -12156,7 +12221,7 @@
12156
12221
  };
12157
12222
  return LocalSettingsService;
12158
12223
  }(StartableService));
12159
- 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" });
12224
+ 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" });
12160
12225
  LocalSettingsService.decorators = [
12161
12226
  { type: i0.Injectable, args: [{
12162
12227
  providedIn: 'root',
@@ -13037,7 +13102,7 @@
13037
13102
  };
13038
13103
  return NetworkService;
13039
13104
  }(StartableService));
13040
- 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" });
13105
+ 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" });
13041
13106
  NetworkService.decorators = [
13042
13107
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
13043
13108
  ];
@@ -13057,7 +13122,7 @@
13057
13122
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] }
13058
13123
  ]; };
13059
13124
 
13060
- var ErrorCodes = {
13125
+ var ErrorCodes$2 = {
13061
13126
  UNKNOWN_ERROR: 0,
13062
13127
  LOAD_ACCOUNT_ERROR: 1,
13063
13128
  BAD_PASSWORD: 2,
@@ -13474,7 +13539,7 @@
13474
13539
  case 13:
13475
13540
  err_1 = _b.sent();
13476
13541
  console.error(err_1);
13477
- throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
13542
+ throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
13478
13543
  case 14:
13479
13544
  // Emit update event
13480
13545
  if (!opts || opts.emitEvent !== false) {
@@ -14251,7 +14316,7 @@
14251
14316
  }(StartableService));
14252
14317
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
14253
14318
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
14254
- 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" });
14319
+ 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" });
14255
14320
  EntitiesStorage.decorators = [
14256
14321
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
14257
14322
  ];
@@ -14407,10 +14472,10 @@
14407
14472
  function referentialsToString(values, properties, separator) {
14408
14473
  return (values || []).map(function (v) { return referentialToString(v, properties); }).join(separator || ', ');
14409
14474
  }
14410
- var ɵ0$a = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14475
+ var ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
14411
14476
  var StatusList = Object.freeze([
14412
14477
  {
14413
- id: ɵ0$a,
14478
+ id: ɵ0$2,
14414
14479
  icon: 'checkmark',
14415
14480
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
14416
14481
  },
@@ -14713,7 +14778,7 @@
14713
14778
  (data.lastName || '')) || '';
14714
14779
  }
14715
14780
 
14716
- var uuidv4$1 = uuidv4Imported__namespace;
14781
+ var uuidv4 = uuidv4Imported__namespace;
14717
14782
  var _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
14718
14783
  var NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
14719
14784
  /**
@@ -14757,7 +14822,7 @@
14757
14822
  // Skip if not tracked
14758
14823
  if (!context || !context.tracked)
14759
14824
  return forward(operation);
14760
- var id = context.serializationKey || uuidv4$1();
14825
+ var id = context.serializationKey || uuidv4();
14761
14826
  console.debug("[apollo-tracker-link] Watching tracked query {" + operation.operationName + "#" + id + "}");
14762
14827
  // Clean context, before calling JSON.stringify (remove unused attributes)
14763
14828
  var cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -15388,14 +15453,14 @@
15388
15453
  mutationLinks = void 0;
15389
15454
  // Add queue to store tracked queries, when offline
15390
15455
  if (enableTrackMutationQueries) {
15391
- serializingLink = new SerializingLink__default['default']();
15456
+ serializingLink = new SerializingLink__default["default"]();
15392
15457
  trackerLink = createTrackerLink({
15393
15458
  storage: storage,
15394
15459
  onNetworkStatusChange: this._networkStatusChanged$,
15395
15460
  debounce: 1000,
15396
15461
  debug: true
15397
15462
  });
15398
- queueLink_1 = new QueueLink__default['default']();
15463
+ queueLink_1 = new QueueLink__default["default"]();
15399
15464
  this.registerSubscription(this._networkStatusChanged$
15400
15465
  .subscribe(function (type) {
15401
15466
  // Network is offline: start buffering into queue
@@ -15410,7 +15475,7 @@
15410
15475
  }
15411
15476
  }));
15412
15477
  mutationLinks = [
15413
- loggerLink__default['default'],
15478
+ loggerLink__default["default"],
15414
15479
  queueLink_1,
15415
15480
  trackerLink,
15416
15481
  queueLink_1,
@@ -15517,7 +15582,7 @@
15517
15582
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
15518
15583
  || this.toAppError(err.networkError)
15519
15584
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
15520
- || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
15585
+ || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
15521
15586
  // If graphQL: try to convert the first error found
15522
15587
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
15523
15588
  || this.toAppError(err)
@@ -15525,7 +15590,7 @@
15525
15590
  || (err.graphQLErrors && err.graphQLErrors[0])
15526
15591
  || err;
15527
15592
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
15528
- if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
15593
+ if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
15529
15594
  console.error('[graphql] original error: ' + err.networkError.message);
15530
15595
  this.onNetworkError.next(error);
15531
15596
  }
@@ -15561,7 +15626,7 @@
15561
15626
  return 'ERROR.UNAUTHORIZED';
15562
15627
  case ServerErrorCodes.FORBIDDEN:
15563
15628
  return 'ERROR.FORBIDDEN';
15564
- case ErrorCodes.UNKNOWN_NETWORK_ERROR:
15629
+ case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
15565
15630
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
15566
15631
  case ServerErrorCodes.BAD_UPDATE_DATE:
15567
15632
  return 'ERROR.BAD_UPDATE_DATE';
@@ -15593,7 +15658,7 @@
15593
15658
  };
15594
15659
  return GraphqlService;
15595
15660
  }(StartableService));
15596
- 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" });
15661
+ 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" });
15597
15662
  GraphqlService.decorators = [
15598
15663
  { type: i0.Injectable, args: [{
15599
15664
  providedIn: 'root'
@@ -15610,7 +15675,7 @@
15610
15675
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
15611
15676
  ]; };
15612
15677
 
15613
- var sha256$1 = require('hash.js/lib/hash/sha/256');
15678
+ var sha256 = require('hash.js/lib/hash/sha/256');
15614
15679
  var BaseGraphqlServiceOptions = /** @class */ (function () {
15615
15680
  function BaseGraphqlServiceOptions() {
15616
15681
  }
@@ -15780,8 +15845,8 @@
15780
15845
  };
15781
15846
  /* -- protected methods -- */
15782
15847
  BaseGraphqlService.prototype.computeMutableWatchQueryId = function (opts) {
15783
- var queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
15784
- var variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
15848
+ var queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
15849
+ var variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
15785
15850
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
15786
15851
  };
15787
15852
  BaseGraphqlService.prototype.findMutableWatchQueries = function (opts) {
@@ -15854,19 +15919,19 @@
15854
15919
  /* ------------------------------------
15855
15920
  * GraphQL queries
15856
15921
  * ------------------------------------*/
15857
- var Fragments = {
15858
- 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 }"]))),
15859
- 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 }"])))
15922
+ var Fragments$1 = {
15923
+ 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 }"]))),
15924
+ 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 }"])))
15860
15925
  };
15861
15926
  // Load account query
15862
- 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);
15927
+ 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);
15863
15928
  // Check email query
15864
- 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"])));
15929
+ 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"])));
15865
15930
  // Save (create or update) account mutation
15866
15931
  var AccountMutations = {
15867
- 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),
15868
- 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),
15869
- 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)
15932
+ 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),
15933
+ 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),
15934
+ 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)
15870
15935
  };
15871
15936
  // Sent confirmation email
15872
15937
  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"])));
@@ -16234,7 +16299,7 @@
16234
16299
  error_3 = _b.sent();
16235
16300
  console.error(error_3);
16236
16301
  this.resetData();
16237
- throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
16302
+ throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
16238
16303
  case 4:
16239
16304
  // Store pubkey+keypair
16240
16305
  this._cache.pubkey = Base58.encode(keypair.publicKey);
@@ -16270,7 +16335,7 @@
16270
16335
  return [3 /*break*/, 18];
16271
16336
  case 11:
16272
16337
  err_1 = _b.sent();
16273
- if (!(err_1 && +(err_1.code) === ErrorCodes.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
16338
+ if (!(err_1 && +(err_1.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
16274
16339
  if (!(data.username.indexOf('@') !== -1)) return [3 /*break*/, 16];
16275
16340
  isEmailExists = void 0;
16276
16341
  _b.label = 12;
@@ -16286,12 +16351,12 @@
16286
16351
  case 15:
16287
16352
  // Email not exists (no account)
16288
16353
  if (!isEmailExists) {
16289
- throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
16354
+ throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
16290
16355
  }
16291
16356
  _b.label = 16;
16292
16357
  case 16:
16293
16358
  // Email exists, so error = 'bad password'
16294
- throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
16359
+ throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
16295
16360
  case 17: throw err_1; // resend the first error
16296
16361
  case 18:
16297
16362
  _b.trys.push([18, 20, , 21]);
@@ -16487,8 +16552,8 @@
16487
16552
  _b.label = 3;
16488
16553
  case 3: return [3 /*break*/, 6];
16489
16554
  case 4: return [4 /*yield*/, this.graphql.query({
16490
- query: LoadQuery,
16491
- error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
16555
+ query: LoadQuery$1,
16556
+ error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
16492
16557
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
16493
16558
  })];
16494
16559
  case 5:
@@ -16526,7 +16591,7 @@
16526
16591
  case 1:
16527
16592
  isEmailExists = _b.sent();
16528
16593
  if (isEmailExists) {
16529
- throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
16594
+ throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
16530
16595
  }
16531
16596
  return [2 /*return*/];
16532
16597
  }
@@ -16576,7 +16641,7 @@
16576
16641
  locale: locale
16577
16642
  },
16578
16643
  error: {
16579
- code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
16644
+ code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
16580
16645
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
16581
16646
  }
16582
16647
  })];
@@ -16599,7 +16664,7 @@
16599
16664
  code: code
16600
16665
  },
16601
16666
  error: {
16602
- code: ErrorCodes.CONFIRM_EMAIL_FAILED,
16667
+ code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
16603
16668
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
16604
16669
  }
16605
16670
  })];
@@ -16699,7 +16764,7 @@
16699
16764
  throw error_7;
16700
16765
  console.error(error_7);
16701
16766
  throw {
16702
- code: ErrorCodes.LOAD_ACCOUNT_ERROR,
16767
+ code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
16703
16768
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
16704
16769
  };
16705
16770
  case 6: return [2 /*return*/];
@@ -16910,7 +16975,7 @@
16910
16975
  case 1:
16911
16976
  existingAccount = _b.sent();
16912
16977
  if (!existingAccount || !existingAccount.updateDate) {
16913
- throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
16978
+ throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
16914
16979
  }
16915
16980
  this.copyIdAndUpdateDate(existingAccount, account);
16916
16981
  _b.label = 2;
@@ -16922,7 +16987,7 @@
16922
16987
  mutation: isNew ? AccountMutations.create : AccountMutations.save,
16923
16988
  variables: { data: json },
16924
16989
  error: {
16925
- code: ErrorCodes.SAVE_ACCOUNT_ERROR,
16990
+ code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
16926
16991
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
16927
16992
  }
16928
16993
  })];
@@ -16956,7 +17021,7 @@
16956
17021
  mutation: AccountMutations.saveSettings,
16957
17022
  variables: { data: json },
16958
17023
  error: {
16959
- code: ErrorCodes.SAVE_SETTINGS_ERROR,
17024
+ code: ErrorCodes$2.SAVE_SETTINGS_ERROR,
16960
17025
  message: 'ERROR.SAVE_SETTINGS_ERROR'
16961
17026
  }
16962
17027
  })];
@@ -16987,7 +17052,7 @@
16987
17052
  if (counter > 4) {
16988
17053
  if (this._debug)
16989
17054
  console.debug("[account] Failed to authentication on pod (after " + counter + " attempts)");
16990
- throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
17055
+ throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
16991
17056
  }
16992
17057
  if (!token) return [3 /*break*/, 2];
16993
17058
  return [4 /*yield*/, this.graphql.query({
@@ -16996,7 +17061,7 @@
16996
17061
  token: token
16997
17062
  },
16998
17063
  error: {
16999
- code: ErrorCodes.UNAUTHORIZED,
17064
+ code: ErrorCodes$2.UNAUTHORIZED,
17000
17065
  message: 'ERROR.UNAUTHORIZED'
17001
17066
  },
17002
17067
  fetchPolicy: 'no-cache'
@@ -17013,7 +17078,7 @@
17013
17078
  _b.label = 2;
17014
17079
  case 2:
17015
17080
  challengeError = {
17016
- code: ErrorCodes.AUTH_CHALLENGE_ERROR,
17081
+ code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
17017
17082
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
17018
17083
  };
17019
17084
  return [4 /*yield*/, this.graphql.query({
@@ -17100,7 +17165,7 @@
17100
17165
  query: AccountSubscriptions.listenChanges,
17101
17166
  variables: variables,
17102
17167
  error: {
17103
- code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
17168
+ code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
17104
17169
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ERROR'
17105
17170
  }
17106
17171
  }).pipe(operators.map(function (_b) {
@@ -17133,7 +17198,7 @@
17133
17198
  };
17134
17199
  return AccountService;
17135
17200
  }(BaseGraphqlService));
17136
- 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" });
17201
+ 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" });
17137
17202
  AccountService.decorators = [
17138
17203
  { type: i0.Injectable, args: [{ providedIn: 'root', deps: [ENVIRONMENT] },] }
17139
17204
  ];
@@ -17148,7 +17213,7 @@
17148
17213
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] },
17149
17214
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
17150
17215
  ]; };
17151
- 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;
17216
+ 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;
17152
17217
 
17153
17218
  var Software_1, Configuration_1;
17154
17219
  // @dynamic
@@ -17406,13 +17471,13 @@
17406
17471
  /* ------------------------------------
17407
17472
  * GraphQL queries
17408
17473
  * ------------------------------------*/
17409
- var Fragments$1 = {
17410
- 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 "])))
17474
+ var Fragments = {
17475
+ 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 "])))
17411
17476
  };
17412
- 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);
17477
+ 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);
17413
17478
  // Save (create or update) account mutation
17414
- 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);
17415
- 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"])));
17479
+ 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);
17480
+ 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"])));
17416
17481
  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"])));
17417
17482
  var APP_CONFIG_OPTIONS = new i0.InjectionToken('defaultOptions');
17418
17483
  var ConfigService = /** @class */ (function (_super) {
@@ -17472,12 +17537,12 @@
17472
17537
  case 0:
17473
17538
  now = Date.now();
17474
17539
  console.debug('[config] Loading Pod configuration...');
17475
- query = opts && opts.query || LoadQuery$1;
17540
+ query = opts && opts.query || LoadQuery;
17476
17541
  variables = opts && opts.variables || undefined;
17477
17542
  return [4 /*yield*/, this.graphql.query({
17478
17543
  query: query,
17479
17544
  variables: variables,
17480
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17545
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17481
17546
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
17482
17547
  })];
17483
17548
  case 1:
@@ -17519,7 +17584,7 @@
17519
17584
  data: json
17520
17585
  },
17521
17586
  error: {
17522
- code: ErrorCodes.SAVE_CONFIG_ERROR,
17587
+ code: ErrorCodes$2.SAVE_CONFIG_ERROR,
17523
17588
  message: 'ERROR.SAVE_CONFIG_ERROR'
17524
17589
  }
17525
17590
  })];
@@ -17554,7 +17619,7 @@
17554
17619
  return [4 /*yield*/, this.graphql.query({
17555
17620
  query: CacheStatistics,
17556
17621
  variables: null,
17557
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17622
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17558
17623
  fetchPolicy: 'network-only'
17559
17624
  })];
17560
17625
  case 1:
@@ -17578,7 +17643,7 @@
17578
17643
  return [4 /*yield*/, this.graphql.query({
17579
17644
  query: ClearCache,
17580
17645
  variables: variables,
17581
- error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17646
+ error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
17582
17647
  fetchPolicy: 'no-cache'
17583
17648
  })];
17584
17649
  case 1:
@@ -17778,7 +17843,7 @@
17778
17843
  };
17779
17844
  return ConfigService;
17780
17845
  }(BaseGraphqlService));
17781
- 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" });
17846
+ 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" });
17782
17847
  ConfigService.decorators = [
17783
17848
  { type: i0.Injectable, args: [{
17784
17849
  providedIn: 'root',
@@ -17797,9 +17862,9 @@
17797
17862
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] },
17798
17863
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_CONFIG_OPTIONS,] }] }
17799
17864
  ]; };
17800
- var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
17865
+ var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2, templateObject_5$1;
17801
17866
 
17802
- var moment$4 = momentImported__namespace;
17867
+ var moment$3 = momentImported__namespace;
17803
17868
  var AndroidOsEnvironment = Object.freeze({
17804
17869
  DIRECTORY_DOWNLOADS: 'Download',
17805
17870
  DIRECTORY_DOWNLOADS_OLD: 'Downloads',
@@ -18069,16 +18134,16 @@
18069
18134
  }
18070
18135
  // config moment lib
18071
18136
  try {
18072
- moment$4.locale(event.lang);
18137
+ moment$3.locale(event.lang);
18073
18138
  console.debug('[platform] Use locale {' + event.lang + '}');
18074
18139
  }
18075
18140
  // If error, fallback to en
18076
18141
  catch (err) {
18077
- moment$4.locale('en');
18142
+ moment$3.locale('en');
18078
18143
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
18079
18144
  }
18080
18145
  // Config date adapter
18081
- _this.dateAdapter.setLocale(moment$4.locale());
18146
+ _this.dateAdapter.setLocale(moment$3.locale());
18082
18147
  }
18083
18148
  });
18084
18149
  this.settings.onChange.subscribe(function (data) {
@@ -18331,7 +18396,7 @@
18331
18396
  };
18332
18397
  return PlatformService;
18333
18398
  }(StartableService));
18334
- 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" });
18399
+ 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" });
18335
18400
  PlatformService.decorators = [
18336
18401
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
18337
18402
  ];
@@ -18429,7 +18494,7 @@
18429
18494
  };
18430
18495
  return MatStepperI18n;
18431
18496
  }(stepper.MatStepperIntl));
18432
- MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
18497
+ MatStepperI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
18433
18498
  MatStepperI18n.decorators = [
18434
18499
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
18435
18500
  ];
@@ -20642,7 +20707,7 @@
20642
20707
  return 1;
20643
20708
  }
20644
20709
  }
20645
- var ɵ0$b = function (defaultStateSize) { return [
20710
+ var ɵ0$1 = function (defaultStateSize) { return [
20646
20711
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
20647
20712
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
20648
20713
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -20650,7 +20715,7 @@
20650
20715
  var SCALE_OPTIONS_DEFAULT = {
20651
20716
  startColor: rgbArrayMap.red,
20652
20717
  startStates: [0, 2, 3],
20653
- startStepsFn: ɵ0$b
20718
+ startStepsFn: ɵ0$1
20654
20719
  };
20655
20720
  /**
20656
20721
  * Internal function, that create a colors scale, using iteration
@@ -21581,7 +21646,7 @@
21581
21646
  };
21582
21647
  return UserSettingsValidatorService;
21583
21648
  }(AppValidatorService));
21584
- UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
21649
+ UserSettingsValidatorService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0__namespace.ɵɵinject(i1__namespace$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
21585
21650
  UserSettingsValidatorService.decorators = [
21586
21651
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
21587
21652
  ];
@@ -21629,7 +21694,7 @@
21629
21694
  };
21630
21695
  return AccountValidatorService;
21631
21696
  }(AppValidatorService));
21632
- AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
21697
+ 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" });
21633
21698
  AccountValidatorService.decorators = [
21634
21699
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
21635
21700
  ];
@@ -22260,7 +22325,7 @@
22260
22325
  };
22261
22326
  return LocalSettingsValidatorService;
22262
22327
  }(AppValidatorService));
22263
- LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
22328
+ 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" });
22264
22329
  LocalSettingsValidatorService.decorators = [
22265
22330
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22266
22331
  ];
@@ -23040,7 +23105,7 @@
23040
23105
  };
23041
23106
  return IsOnFieldModePipe;
23042
23107
  }());
23043
- IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
23108
+ IsOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
23044
23109
  IsOnFieldModePipe.decorators = [
23045
23110
  { type: i0.Pipe, args: [{
23046
23111
  name: 'isOnField'
@@ -23055,7 +23120,7 @@
23055
23120
  };
23056
23121
  return IsNotOnFieldModePipe;
23057
23122
  }());
23058
- IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
23123
+ IsNotOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
23059
23124
  IsNotOnFieldModePipe.decorators = [
23060
23125
  { type: i0.Pipe, args: [{
23061
23126
  name: 'isNotOnField'
@@ -23073,7 +23138,7 @@
23073
23138
  };
23074
23139
  return PersonToStringPipe;
23075
23140
  }());
23076
- PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
23141
+ PersonToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
23077
23142
  PersonToStringPipe.decorators = [
23078
23143
  { type: i0.Pipe, args: [{
23079
23144
  name: 'personToString'
@@ -23537,7 +23602,7 @@
23537
23602
  };
23538
23603
  return IsLoginAccountPipe;
23539
23604
  }());
23540
- IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
23605
+ IsLoginAccountPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
23541
23606
  IsLoginAccountPipe.decorators = [
23542
23607
  { type: i0.Pipe, args: [{
23543
23608
  name: 'isLogin'
@@ -23552,7 +23617,7 @@
23552
23617
  };
23553
23618
  return AccountToStringPipe;
23554
23619
  }());
23555
- AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
23620
+ AccountToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
23556
23621
  AccountToStringPipe.decorators = [
23557
23622
  { type: i0.Pipe, args: [{
23558
23623
  name: 'accountToString'
@@ -23570,7 +23635,7 @@
23570
23635
  };
23571
23636
  return DepartmentToStringPipe;
23572
23637
  }());
23573
- DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
23638
+ DepartmentToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
23574
23639
  DepartmentToStringPipe.decorators = [
23575
23640
  { type: i0.Pipe, args: [{
23576
23641
  name: 'departmentToString'
@@ -23676,7 +23741,7 @@
23676
23741
  };
23677
23742
  return MenuService;
23678
23743
  }());
23679
- MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
23744
+ MenuService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
23680
23745
  MenuService.decorators = [
23681
23746
  { type: i0.Injectable, args: [{
23682
23747
  providedIn: 'root'
@@ -24221,7 +24286,7 @@
24221
24286
  };
24222
24287
  return AuthGuardService;
24223
24288
  }());
24224
- 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" });
24289
+ 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" });
24225
24290
  AuthGuardService.decorators = [
24226
24291
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
24227
24292
  ];
@@ -24266,7 +24331,7 @@
24266
24331
  query: query,
24267
24332
  variables: { id: id },
24268
24333
  fetchPolicy: opts && opts.fetchPolicy || undefined,
24269
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24334
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24270
24335
  })
24271
24336
  .pipe(operators.map(function (_b) {
24272
24337
  var data = _b.data;
@@ -24288,7 +24353,7 @@
24288
24353
  query: query,
24289
24354
  variables: { id: id },
24290
24355
  fetchPolicy: opts && opts.fetchPolicy || undefined,
24291
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24356
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
24292
24357
  })];
24293
24358
  case 1:
24294
24359
  data = (_b.sent()).data;
@@ -24324,7 +24389,7 @@
24324
24389
  totalFieldName: withTotal ? 'total' : undefined,
24325
24390
  insertFilterFn: filter && filter.asFilterFn(),
24326
24391
  variables: variables,
24327
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
24392
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
24328
24393
  fetchPolicy: opts && opts.fetchPolicy || undefined
24329
24394
  })
24330
24395
  .pipe(operators.map(function (_b) {
@@ -24366,7 +24431,7 @@
24366
24431
  return [4 /*yield*/, this.graphql.query({
24367
24432
  query: query,
24368
24433
  variables: variables,
24369
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
24434
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
24370
24435
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
24371
24436
  })];
24372
24437
  case 1:
@@ -24414,7 +24479,7 @@
24414
24479
  variables: {
24415
24480
  filter: filter && filter.asPodObject()
24416
24481
  },
24417
- error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
24482
+ error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
24418
24483
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
24419
24484
  })];
24420
24485
  case 3:
@@ -24459,7 +24524,7 @@
24459
24524
  variables: {
24460
24525
  data: json
24461
24526
  },
24462
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24527
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24463
24528
  update: function (proxy, _b) {
24464
24529
  var data = _b.data;
24465
24530
  var savedEntities = data && data.data;
@@ -24526,7 +24591,7 @@
24526
24591
  variables: {
24527
24592
  data: json
24528
24593
  },
24529
- error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24594
+ error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
24530
24595
  update: function (cache, _b) {
24531
24596
  var data = _b.data;
24532
24597
  // Update entity
@@ -24584,7 +24649,7 @@
24584
24649
  refetchQueries: this.getRefetchQueriesForMutation(opts),
24585
24650
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
24586
24651
  variables: { ids: ids },
24587
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24652
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24588
24653
  update: function (cache, res) {
24589
24654
  // Remove from cache
24590
24655
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -24637,7 +24702,7 @@
24637
24702
  refetchQueries: this.getRefetchQueriesForMutation(opts),
24638
24703
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
24639
24704
  variables: { id: id },
24640
- error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24705
+ error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
24641
24706
  update: function (proxy, res) {
24642
24707
  // Remove from cache
24643
24708
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -24679,7 +24744,7 @@
24679
24744
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache',
24680
24745
  variables: variables,
24681
24746
  error: {
24682
- code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
24747
+ code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
24683
24748
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
24684
24749
  }
24685
24750
  })
@@ -24902,7 +24967,7 @@
24902
24967
  if (this._debug)
24903
24968
  invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._logTypeName + " row #" + row.id); });
24904
24969
  // Stop with an error
24905
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
24970
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
24906
24971
  }
24907
24972
  this._editingRowCount = 0;
24908
24973
  data = void 0;
@@ -25922,14 +25987,14 @@
25922
25987
  case 0:
25923
25988
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
25924
25989
  if (this.readOnly) {
25925
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
25990
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
25926
25991
  }
25927
25992
  this.resetError();
25928
25993
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
25929
25994
  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;
25930
25995
  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;
25931
25996
  if (!this.confirmEditCreate()) {
25932
- throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
25997
+ throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
25933
25998
  }
25934
25999
  // Mark as saving
25935
26000
  this.markAsSaving();
@@ -26086,7 +26151,7 @@
26086
26151
  switch (_e.label) {
26087
26152
  case 0:
26088
26153
  if (this.readOnly) {
26089
- throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
26154
+ throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
26090
26155
  }
26091
26156
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
26092
26157
  return [2 /*return*/, 0]; // SKip
@@ -27986,7 +28051,7 @@
27986
28051
  case 8:
27987
28052
  data = _c.sent();
27988
28053
  if (!data)
27989
- throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
28054
+ throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
27990
28055
  this._usageMode = this.computeUsageMode(data);
27991
28056
  return [4 /*yield*/, this.onEntityLoaded(data, opts)];
27992
28057
  case 9:
@@ -28778,10 +28843,10 @@
28778
28843
  exports.UserEventFilter = __decorate([
28779
28844
  EntityClass({ typename: 'UserEventVO' })
28780
28845
  ], exports.UserEventFilter);
28781
- 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);
28782
- 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);
28783
- 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"])));
28784
- 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);
28846
+ 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);
28847
+ 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);
28848
+ 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"])));
28849
+ 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);
28785
28850
  var UserEventService = /** @class */ (function (_super) {
28786
28851
  __extends(UserEventService, _super);
28787
28852
  function UserEventService(graphql, accountService, network, translate, toastController, environment) {
@@ -29102,7 +29167,7 @@
29102
29167
  };
29103
29168
  return UserEventService;
29104
29169
  }(BaseGraphqlService));
29105
- 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" });
29170
+ 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" });
29106
29171
  UserEventService.decorators = [
29107
29172
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
29108
29173
  ];
@@ -29114,7 +29179,7 @@
29114
29179
  { type: i1$5.ToastController },
29115
29180
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
29116
29181
  ]; };
29117
- var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2;
29182
+ var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1;
29118
29183
 
29119
29184
  var ICONS_MAP = {
29120
29185
  DEBUG_DATA: { matIcon: 'bug_report' },
@@ -29376,16 +29441,16 @@
29376
29441
  ], exports.PersonFilter);
29377
29442
 
29378
29443
  var PersonFragments = {
29379
- 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 }"])))
29444
+ 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 }"])))
29380
29445
  };
29381
29446
  // Load persons query
29382
29447
  var PersonQueries = {
29383
- 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),
29384
- 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)
29448
+ 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),
29449
+ 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)
29385
29450
  };
29386
29451
  var PersonMutations = {
29387
- 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),
29388
- 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 }"])))
29452
+ 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),
29453
+ 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 }"])))
29389
29454
  };
29390
29455
  var PersonService = /** @class */ (function (_super_1) {
29391
29456
  __extends(PersonService, _super_1);
@@ -29506,7 +29571,7 @@
29506
29571
  };
29507
29572
  return PersonService;
29508
29573
  }(BaseEntityService));
29509
- 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" });
29574
+ 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" });
29510
29575
  PersonService.decorators = [
29511
29576
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
29512
29577
  ];
@@ -29516,7 +29581,7 @@
29516
29581
  { type: NetworkService },
29517
29582
  { type: EntitiesStorage }
29518
29583
  ]; };
29519
- var templateObject_1$4, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2;
29584
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
29520
29585
 
29521
29586
  var PersonValidatorService = /** @class */ (function () {
29522
29587
  function PersonValidatorService(formBuilder, accountValidatorService) {
@@ -29539,7 +29604,7 @@
29539
29604
  };
29540
29605
  return PersonValidatorService;
29541
29606
  }());
29542
- PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
29607
+ 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" });
29543
29608
  PersonValidatorService.decorators = [
29544
29609
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
29545
29610
  ];
@@ -29750,16 +29815,16 @@
29750
29815
  ];
29751
29816
  AdminModule.ctorParameters = function () { return []; };
29752
29817
 
29753
- var ɵ0$c = {
29818
+ var ɵ0 = {
29754
29819
  profile: 'ADMIN'
29755
29820
  };
29756
- var routes = [
29821
+ var routes$5 = [
29757
29822
  {
29758
29823
  path: 'users',
29759
29824
  pathMatch: 'full',
29760
29825
  component: UsersPage,
29761
29826
  canActivate: [AuthGuardService],
29762
- data: ɵ0$c
29827
+ data: ɵ0
29763
29828
  }
29764
29829
  ];
29765
29830
  var AdminRoutingModule = /** @class */ (function () {
@@ -29772,36 +29837,36 @@
29772
29837
  imports: [
29773
29838
  SharedRoutingModule,
29774
29839
  AdminModule,
29775
- i3.RouterModule.forChild(routes)
29840
+ i3.RouterModule.forChild(routes$5)
29776
29841
  ],
29777
29842
  exports: [i3.RouterModule]
29778
29843
  },] }
29779
29844
  ];
29780
29845
 
29781
- var ErrorCodes$2 = {
29846
+ var ErrorCodes = {
29782
29847
  LOAD_PERSONS_ERROR: 100,
29783
29848
  SAVE_PERSONS_ERROR: 101,
29784
29849
  DELETE_PERSONS_ERROR: 102,
29785
29850
  };
29786
29851
 
29787
- var EntityTestClass = /** @class */ (function () {
29852
+ var EntityTestClass$1 = /** @class */ (function () {
29788
29853
  function EntityTestClass() {
29789
29854
  }
29790
29855
  return EntityTestClass;
29791
29856
  }());
29792
- var FAKE_ENTITIES = [
29857
+ var FAKE_ENTITIES$1 = [
29793
29858
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
29794
29859
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
29795
29860
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
29796
29861
  ];
29797
- function deepCopy(values, size) {
29862
+ function deepCopy$1(values, size) {
29798
29863
  if (isNil(size)) {
29799
- return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
29864
+ return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
29800
29865
  }
29801
29866
  var result = [];
29802
29867
  var i = 1;
29803
29868
  while (result.length < size) {
29804
- result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
29869
+ result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
29805
29870
  var name = entity.name + ' #' + i;
29806
29871
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
29807
29872
  }));
@@ -29811,7 +29876,7 @@
29811
29876
  var AutocompleteTestPage = /** @class */ (function () {
29812
29877
  function AutocompleteTestPage(formBuilder) {
29813
29878
  this.formBuilder = formBuilder;
29814
- this._items = deepCopy(FAKE_ENTITIES, 100);
29879
+ this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
29815
29880
  this._$items = new rxjs.BehaviorSubject(undefined);
29816
29881
  this.autocompleteFields = new MatAutocompleteConfigHolder();
29817
29882
  this.memoryHide = false;
@@ -29822,6 +29887,7 @@
29822
29887
  entity: [null, SharedValidators.entity],
29823
29888
  missingEntity: [null, SharedValidators.entity],
29824
29889
  disableEntity: [null, SharedValidators.entity],
29890
+ entities: [null, SharedFormArrayValidators.requiredArrayMinLength(1)],
29825
29891
  });
29826
29892
  this.form.get('disableEntity').disable();
29827
29893
  }
@@ -29856,10 +29922,19 @@
29856
29922
  });
29857
29923
  // From items
29858
29924
  this.autocompleteFields.add('entity-items-large', {
29859
- items: FAKE_ENTITIES.slice(),
29925
+ items: FAKE_ENTITIES$1.slice(),
29860
29926
  attributes: ['label', 'name', 'description', 'comments'],
29861
29927
  displayWith: this.entityToString
29862
29928
  });
29929
+ // For mutliple value
29930
+ this.autocompleteFields.add('entities-items-filter', {
29931
+ service: {
29932
+ suggest: function (value, filter) { return _this.suggest(value, filter); }
29933
+ },
29934
+ attributes: ['label', 'name'],
29935
+ multiple: true
29936
+ //displayWith: this.entitiesToString
29937
+ });
29863
29938
  this.loadData();
29864
29939
  };
29865
29940
  // Load the form with data
@@ -29869,12 +29944,13 @@
29869
29944
  var _this = this;
29870
29945
  return __generator(this, function (_a) {
29871
29946
  data = {
29872
- entity: deepCopy(FAKE_ENTITIES)[0],
29947
+ entity: deepCopy$1(FAKE_ENTITIES$1)[0],
29873
29948
  // This item is NOT in the items list => i should be displayed anyway
29874
29949
  missingEntity: {
29875
29950
  id: -1, label: '??', name: 'Missing item'
29876
29951
  },
29877
- disableEntity: deepCopy(FAKE_ENTITIES)[2]
29952
+ disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2],
29953
+ entities: deepCopy$1(FAKE_ENTITIES$1)
29878
29954
  };
29879
29955
  this.form.setValue(data);
29880
29956
  // Load observables
@@ -29894,6 +29970,9 @@
29894
29970
  AutocompleteTestPage.prototype.entityToString = function (item) {
29895
29971
  return [item && item.label || undefined, item && item.name || undefined].filter(isNotNil).join(' - ');
29896
29972
  };
29973
+ AutocompleteTestPage.prototype.entitiesToString = function (items) {
29974
+ return (items || []).map(this.entityToString).join(', ');
29975
+ };
29897
29976
  AutocompleteTestPage.prototype.suggest = function (value, filter) {
29898
29977
  return __awaiter(this, void 0, void 0, function () {
29899
29978
  var res, total, nextOffset;
@@ -29947,9 +30026,10 @@
29947
30026
  this.memoryTimer = null;
29948
30027
  this.memoryHide = false;
29949
30028
  };
29950
- AutocompleteTestPage.prototype.updateFilter = function (fieldName) {
30029
+ AutocompleteTestPage.prototype.updateFilter = function (autocompleteField, fieldName) {
29951
30030
  var filter = this.autocompleteFields.get(fieldName).filter || {};
29952
30031
  filter.searchAttribute = (!filter || filter.searchAttribute !== 'name') ? 'name' : 'label';
30032
+ autocompleteField.reloadItems();
29953
30033
  };
29954
30034
  /* -- protected methods -- */
29955
30035
  AutocompleteTestPage.prototype.stringify = function (value) {
@@ -29960,7 +30040,7 @@
29960
30040
  AutocompleteTestPage.decorators = [
29961
30041
  { type: i0.Component, args: [{
29962
30042
  selector: 'app-autocomplete-test',
29963
- 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"
30043
+ 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"
29964
30044
  },] }
29965
30045
  ];
29966
30046
  AutocompleteTestPage.ctorParameters = function () { return [
@@ -30039,13 +30119,13 @@
30039
30119
  { type: i1.FormBuilder }
30040
30120
  ]; };
30041
30121
 
30042
- var moment$5 = momentImported__namespace;
30122
+ var moment$2 = momentImported__namespace;
30043
30123
  var SwipeTestPage = /** @class */ (function () {
30044
30124
  function SwipeTestPage(formBuilder, dateFormatPipe) {
30045
30125
  this.formBuilder = formBuilder;
30046
30126
  this.dateFormatPipe = dateFormatPipe;
30047
30127
  this.$dates = new rxjs.BehaviorSubject(undefined);
30048
- this._today = moment$5().startOf('day');
30128
+ this._today = moment$2().startOf('day');
30049
30129
  this.form = formBuilder.group({
30050
30130
  empty: [null, i1.Validators.required],
30051
30131
  date: [null, i1.Validators.compose([i1.Validators.required, SharedValidators.validDate])],
@@ -30059,7 +30139,7 @@
30059
30139
  var _this = this;
30060
30140
  var dates = [];
30061
30141
  for (var d = 0; d < 7; d++) {
30062
- dates[d] = moment$5(this._today).add(d - 3, 'day');
30142
+ dates[d] = moment$2(this._today).add(d - 3, 'day');
30063
30143
  }
30064
30144
  this.$dates.next(dates);
30065
30145
  this.loadData();
@@ -30106,7 +30186,7 @@
30106
30186
  { type: DateFormatPipe }
30107
30187
  ]; };
30108
30188
 
30109
- var moment$6 = momentImported__namespace;
30189
+ var moment$1 = momentImported__namespace;
30110
30190
  var DateTimeTestPage = /** @class */ (function () {
30111
30191
  function DateTimeTestPage(platform, formBuilder, cd) {
30112
30192
  this.platform = platform;
@@ -30142,7 +30222,7 @@
30142
30222
  var now, data;
30143
30223
  var _this = this;
30144
30224
  return __generator(this, function (_a) {
30145
- now = moment$6();
30225
+ now = moment$1();
30146
30226
  data = {
30147
30227
  empty: toDateISOString(now.clone().add(2, 'hours')),
30148
30228
  enable: toDateISOString(now),
@@ -30207,12 +30287,12 @@
30207
30287
  { type: i0.ChangeDetectorRef }
30208
30288
  ]; };
30209
30289
 
30210
- var EntityTestClass$1 = /** @class */ (function () {
30290
+ var EntityTestClass = /** @class */ (function () {
30211
30291
  function EntityTestClass() {
30212
30292
  }
30213
30293
  return EntityTestClass;
30214
30294
  }());
30215
- var FAKE_ENTITIES$1 = [
30295
+ var FAKE_ENTITIES = [
30216
30296
  { id: 1, label: 'AAA', name: 'Item A' },
30217
30297
  { id: 2, label: 'BBB', name: 'Item B' },
30218
30298
  { id: 3, label: 'CCC', name: 'Item C' },
@@ -30221,14 +30301,14 @@
30221
30301
  { id: 6, label: 'FFF', name: 'Item F' },
30222
30302
  { id: 7, label: 'GGG', name: 'Item G' }
30223
30303
  ];
30224
- function deepCopy$1(values, size) {
30304
+ function deepCopy(values, size) {
30225
30305
  if (isNil(size)) {
30226
- return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
30306
+ return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
30227
30307
  }
30228
30308
  var result = [];
30229
30309
  var i = 1;
30230
30310
  while (result.length < size) {
30231
- result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
30311
+ result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
30232
30312
  var name = entity.name + ' #' + i;
30233
30313
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
30234
30314
  }));
@@ -30238,7 +30318,7 @@
30238
30318
  var ChipsTestPage = /** @class */ (function () {
30239
30319
  function ChipsTestPage(formBuilder) {
30240
30320
  this.formBuilder = formBuilder;
30241
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
30321
+ this._items = deepCopy(FAKE_ENTITIES, 100);
30242
30322
  this._$items = new rxjs.BehaviorSubject(undefined);
30243
30323
  this.autocompleteFields = new MatAutocompleteConfigHolder();
30244
30324
  this.form = formBuilder.group({
@@ -30281,7 +30361,7 @@
30281
30361
  var items, data;
30282
30362
  var _this = this;
30283
30363
  return __generator(this, function (_a) {
30284
- items = deepCopy$1(FAKE_ENTITIES$1);
30364
+ items = deepCopy(FAKE_ENTITIES);
30285
30365
  data = {
30286
30366
  entity: items.slice(0, 1),
30287
30367
  entityInitial: items.slice(1, 2),
@@ -30418,7 +30498,7 @@
30418
30498
  { type: i1.FormBuilder }
30419
30499
  ]; };
30420
30500
 
30421
- var moment$7 = momentImported__namespace;
30501
+ var moment = momentImported__namespace;
30422
30502
  var DateTestPage = /** @class */ (function () {
30423
30503
  function DateTestPage(platform, formBuilder, cd) {
30424
30504
  this.platform = platform;
@@ -30456,7 +30536,7 @@
30456
30536
  var now, nowAtMahe, data;
30457
30537
  var _this = this;
30458
30538
  return __generator(this, function (_a) {
30459
- now = moment$7();
30539
+ now = moment();
30460
30540
  nowAtMahe = now.clone().tz(this.timezone).startOf('day');
30461
30541
  data = {
30462
30542
  empty: toDateISOString(now.clone().add(2, 'hours')),
@@ -30538,7 +30618,7 @@
30538
30618
  { label: 'Shared directives', divider: true },
30539
30619
  { label: 'Badge icon directive', page: '/testing/shared/badge-icon' }
30540
30620
  ];
30541
- var routes$1 = [
30621
+ var routes$4 = [
30542
30622
  {
30543
30623
  path: '',
30544
30624
  pathMatch: 'full',
@@ -30598,7 +30678,7 @@
30598
30678
  i1.ReactiveFormsModule,
30599
30679
  SharedMaterialModule,
30600
30680
  i1$2.TranslateModule.forChild(),
30601
- i3.RouterModule.forChild(routes$1)
30681
+ i3.RouterModule.forChild(routes$4)
30602
30682
  ],
30603
30683
  declarations: [
30604
30684
  DateTimeTestPage,
@@ -30660,7 +30740,7 @@
30660
30740
  { type: i1$2.TranslateService }
30661
30741
  ]; };
30662
30742
 
30663
- var routes$2 = [
30743
+ var routes$3 = [
30664
30744
  {
30665
30745
  path: 'toast',
30666
30746
  pathMatch: 'full',
@@ -30678,7 +30758,7 @@
30678
30758
  i1$4.CommonModule,
30679
30759
  i1$5.IonicModule,
30680
30760
  i1$2.TranslateModule.forChild(),
30681
- i3.RouterModule.forChild(routes$2)
30761
+ i3.RouterModule.forChild(routes$3)
30682
30762
  ],
30683
30763
  declarations: [
30684
30764
  ToastTestingPage
@@ -30758,7 +30838,7 @@
30758
30838
  { type: i1$5.PopoverController }
30759
30839
  ]; };
30760
30840
 
30761
- var routes$3 = [
30841
+ var routes$2 = [
30762
30842
  {
30763
30843
  path: 'upload-file',
30764
30844
  pathMatch: 'full',
@@ -30776,7 +30856,7 @@
30776
30856
  i1$4.CommonModule,
30777
30857
  i1$5.IonicModule,
30778
30858
  i1$2.TranslateModule.forChild(),
30779
- i3.RouterModule.forChild(routes$3)
30859
+ i3.RouterModule.forChild(routes$2)
30780
30860
  ],
30781
30861
  declarations: [
30782
30862
  UploadFileTestingPage
@@ -31200,7 +31280,7 @@
31200
31280
  { type: i1$5.PopoverController }
31201
31281
  ]; };
31202
31282
 
31203
- var routes$4 = [
31283
+ var routes$1 = [
31204
31284
  {
31205
31285
  path: 'text-popover',
31206
31286
  pathMatch: 'full',
@@ -31218,7 +31298,7 @@
31218
31298
  i1$4.CommonModule,
31219
31299
  i1$5.IonicModule,
31220
31300
  i1$2.TranslateModule.forChild(),
31221
- i3.RouterModule.forChild(routes$4)
31301
+ i3.RouterModule.forChild(routes$1)
31222
31302
  ],
31223
31303
  declarations: [
31224
31304
  TextPopoverTestingPage
@@ -31235,7 +31315,7 @@
31235
31315
  { label: 'Table', page: '/testing/core/table' },
31236
31316
  { label: 'Text popover', page: '/testing/core/text-popover' }
31237
31317
  ];
31238
- var routes$5 = [
31318
+ var routes = [
31239
31319
  {
31240
31320
  path: '',
31241
31321
  pathMatch: 'full',
@@ -31262,7 +31342,7 @@
31262
31342
  imports: [
31263
31343
  i1$4.CommonModule,
31264
31344
  i1$2.TranslateModule.forChild(),
31265
- i3.RouterModule.forChild(routes$5),
31345
+ i3.RouterModule.forChild(routes),
31266
31346
  // Sub modules
31267
31347
  TableTestingModule,
31268
31348
  TextPopoverTestingModule
@@ -31385,7 +31465,7 @@
31385
31465
  exports.EntityStore = EntityStore;
31386
31466
  exports.EntityUtils = EntityUtils;
31387
31467
  exports.Environment = Environment;
31388
- exports.ErrorCodes = ErrorCodes$2;
31468
+ exports.ErrorCodes = ErrorCodes;
31389
31469
  exports.EvenPipe = EvenPipe;
31390
31470
  exports.FileResponse = FileResponse;
31391
31471
  exports.FileService = FileService;
@@ -31401,7 +31481,7 @@
31401
31481
  exports.FormGetControlPipe = FormGetControlPipe;
31402
31482
  exports.FormGetGroupPipe = FormGetGroupPipe;
31403
31483
  exports.FormGetPipe = FormGetPipe;
31404
- exports.Fragments = Fragments$1;
31484
+ exports.Fragments = Fragments;
31405
31485
  exports.GraphqlService = GraphqlService;
31406
31486
  exports.HAMMER_PRESS_TIME = HAMMER_PRESS_TIME;
31407
31487
  exports.HAMMER_TAP_TIME = HAMMER_TAP_TIME;
@@ -31682,23 +31762,23 @@
31682
31762
  exports.waitForTrue = waitForTrue;
31683
31763
  exports.waitIdle = waitIdle;
31684
31764
  exports.waitWhilePending = waitWhilePending;
31685
- exports0 = ɵ0$1;
31686
- exports.ɵa = CustomReuseStrategy;
31687
- exports.ɵb = MatNumpadDomService;
31688
- exports.ɵc = isFocusableElement;
31689
- exports.ɵd = RegisterForm;
31690
- exports.ɵe = AccountValidatorService;
31691
- exports.ɵf = RegisterModal;
31692
- exports.ɵg = UserSettingsValidatorService;
31693
- exports.ɵh = LocalSettingsValidatorService;
31694
- exports.ɵi = AppIconComponent;
31695
- exports.ɵj = DateTestPage;
31696
- exports.ɵk = NumpadTestPage;
31697
- exports.ɵl = MatBadgeIconTestPage;
31698
- exports.ɵm = ToastTestingModule;
31699
- exports.ɵn = ToastTestingPage;
31765
+ exports["ɵ0"] = ɵ0$b;
31766
+ exports["ɵa"] = CustomReuseStrategy;
31767
+ exports["ɵb"] = MatNumpadDomService;
31768
+ exports["ɵc"] = isFocusableElement;
31769
+ exports["ɵd"] = RegisterForm;
31770
+ exports["ɵe"] = AccountValidatorService;
31771
+ exports["ɵf"] = RegisterModal;
31772
+ exports["ɵg"] = UserSettingsValidatorService;
31773
+ exports["ɵh"] = LocalSettingsValidatorService;
31774
+ exports["ɵi"] = AppIconComponent;
31775
+ exports["ɵj"] = DateTestPage;
31776
+ exports["ɵk"] = NumpadTestPage;
31777
+ exports["ɵl"] = MatBadgeIconTestPage;
31778
+ exports["ɵm"] = ToastTestingModule;
31779
+ exports["ɵn"] = ToastTestingPage;
31700
31780
 
31701
31781
  Object.defineProperty(exports, '__esModule', { value: true });
31702
31782
 
31703
- })));
31783
+ }));
31704
31784
  //# sourceMappingURL=sumaris-net.ngx-components.umd.js.map