@sumaris-net/ngx-components 0.22.1 → 0.23.2

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.
@@ -26,35 +26,11 @@
26
26
  return Object.freeze(n);
27
27
  }
28
28
 
29
- var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
30
- var i1__namespace$3 = /*#__PURE__*/_interopNamespace(i1$4);
31
- var i1__namespace$2 = /*#__PURE__*/_interopNamespace(i1$3);
32
- var i2__namespace$1 = /*#__PURE__*/_interopNamespace(i2);
33
- var i1__namespace$6 = /*#__PURE__*/_interopNamespace(i1);
34
- var i1__namespace$1 = /*#__PURE__*/_interopNamespace(i1$2);
35
- var i1__namespace$4 = /*#__PURE__*/_interopNamespace(i1$5);
36
29
  var momentImported__namespace = /*#__PURE__*/_interopNamespace(momentImported);
37
- var i1__namespace = /*#__PURE__*/_interopNamespace(i1$1);
38
- var i3__namespace$3 = /*#__PURE__*/_interopNamespace(i3);
39
- var i1__namespace$5 = /*#__PURE__*/_interopNamespace(i1$6);
40
- var i2__namespace$2 = /*#__PURE__*/_interopNamespace(i2$1);
41
- var i2__namespace = /*#__PURE__*/_interopNamespace(i2$2);
42
- var i3__namespace = /*#__PURE__*/_interopNamespace(i3$1);
43
- var i4__namespace = /*#__PURE__*/_interopNamespace(i4);
44
30
  var uuidv4Imported__namespace = /*#__PURE__*/_interopNamespace(uuidv4Imported);
45
- var i3__namespace$1 = /*#__PURE__*/_interopNamespace(i3$2);
46
- var i6__namespace = /*#__PURE__*/_interopNamespace(i6);
47
- var i9__namespace = /*#__PURE__*/_interopNamespace(i9);
48
- var i10__namespace = /*#__PURE__*/_interopNamespace(i10);
49
- var i2__namespace$4 = /*#__PURE__*/_interopNamespace(i2$4);
50
- var i2__namespace$3 = /*#__PURE__*/_interopNamespace(i2$3);
51
31
  var QueueLink__default = /*#__PURE__*/_interopDefaultLegacy(QueueLink);
52
32
  var SerializingLink__default = /*#__PURE__*/_interopDefaultLegacy(SerializingLink);
53
33
  var loggerLink__default = /*#__PURE__*/_interopDefaultLegacy(loggerLink);
54
- var i3__namespace$2 = /*#__PURE__*/_interopNamespace(i3$3);
55
- var i14__namespace = /*#__PURE__*/_interopNamespace(i14);
56
- var i15__namespace = /*#__PURE__*/_interopNamespace(i15);
57
- var i17__namespace = /*#__PURE__*/_interopNamespace(i17);
58
34
 
59
35
  var ENVIRONMENT = new i0.InjectionToken('ENV');
60
36
  var Environment = /** @class */ (function () {
@@ -536,10 +512,7 @@
536
512
  items = items.filter(function (v) { return !opts.excludedIds.includes(+v['id']); });
537
513
  }
538
514
  // Sort
539
- var sortAttribute = keys && keys[0];
540
- if (sortAttribute) {
541
- items = sort(items, sortAttribute);
542
- }
515
+ items = items.sort(propertiesPathComparator(keys));
543
516
  // Truncate if need
544
517
  var total = (items === null || items === void 0 ? void 0 : items.length) || 0;
545
518
  if (opts) {
@@ -1162,19 +1135,19 @@
1162
1135
  };
1163
1136
  return MatAutocompleteConfigHolder;
1164
1137
  }());
1165
- var DEFAULT_VALUE_ACCESSOR$6 = {
1138
+ var DEFAULT_VALUE_ACCESSOR = {
1166
1139
  provide: i1.NG_VALUE_ACCESSOR,
1167
1140
  useExisting: i0.forwardRef(function () { return MatAutocompleteField; }),
1168
1141
  multi: true
1169
1142
  };
1170
- var noop$7 = function () { };
1171
- var ɵ0$a = noop$7;
1143
+ var noop = function () { };
1144
+ var ɵ0 = noop;
1172
1145
  var MatAutocompleteField = /** @class */ (function () {
1173
1146
  function MatAutocompleteField(cd, formGroupDir) {
1174
1147
  this.cd = cd;
1175
1148
  this.formGroupDir = formGroupDir;
1176
- this._onChangeCallback = noop$7;
1177
- this._onTouchedCallback = noop$7;
1149
+ this._onChangeCallback = noop;
1150
+ this._onTouchedCallback = noop;
1178
1151
  this._subscription = new rxjs.Subscription();
1179
1152
  this._filter$ = new rxjs.BehaviorSubject(undefined);
1180
1153
  this._reload$ = new rxjs.Subject();
@@ -1202,6 +1175,8 @@
1202
1175
  this.onBlur = new i0.EventEmitter();
1203
1176
  this.onFocus = new i0.EventEmitter();
1204
1177
  this.onDropButtonClick = new i0.EventEmitter(true);
1178
+ this.onKeydownEscape = new i0.EventEmitter();
1179
+ this.onKeyupEnter = new i0.EventEmitter();
1205
1180
  }
1206
1181
  Object.defineProperty(MatAutocompleteField.prototype, "itemCount", {
1207
1182
  get: function () {
@@ -1356,7 +1331,7 @@
1356
1331
  // No suggestFn: filter on the given items
1357
1332
  if (!this.suggestFn) {
1358
1333
  var suggestFromArrayFn_1 = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
1359
- return __generator(this, function (_c) {
1334
+ return __generator(this, function (_e) {
1360
1335
  // DEBUG
1361
1336
  //console.debug(this.logPrefix + " Calling suggestFromArray with value=", value);
1362
1337
  return [2 /*return*/, suggestFromArray(this.$inputItems.value, value, Object.assign({ searchAttributes: this.displayAttributes }, filter))];
@@ -1364,8 +1339,8 @@
1364
1339
  }); };
1365
1340
  // Wait (once) that items are loaded, then call suggest from array fn
1366
1341
  this.suggestFn = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
1367
- return __generator(this, function (_c) {
1368
- switch (_c.label) {
1342
+ return __generator(this, function (_e) {
1343
+ switch (_e.label) {
1369
1344
  case 0:
1370
1345
  if (!isNil(this.$inputItems.value)) return [3 /*break*/, 2];
1371
1346
  // DEBUG
@@ -1374,8 +1349,8 @@
1374
1349
  case 1:
1375
1350
  // DEBUG
1376
1351
  //console.debug(this.logPrefix + " Waiting items to be set...");
1377
- _c.sent();
1378
- _c.label = 2;
1352
+ _e.sent();
1353
+ _e.label = 2;
1379
1354
  case 2:
1380
1355
  this.suggestFn = suggestFromArrayFn_1;
1381
1356
  return [2 /*return*/, this.suggestFn(value, filter)]; // Loop
@@ -1494,6 +1469,15 @@
1494
1469
  .pipe(operators.distinctUntilChanged())
1495
1470
  // Update component state
1496
1471
  .subscribe(function () { return _this.checkIfTouched(); }));
1472
+ this._subscription.add(this.onKeydownEscape.subscribe(function (event) {
1473
+ if (_this.isOpen) {
1474
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
1475
+ event === null || event === void 0 ? void 0 : event.preventDefault();
1476
+ // DEBUG
1477
+ //console.debug(this.logPrefix + " Closing the panel (keydown.escape)");
1478
+ _this.closePanel();
1479
+ }
1480
+ }));
1497
1481
  };
1498
1482
  MatAutocompleteField.prototype.ngOnDestroy = function () {
1499
1483
  this._subscription.unsubscribe();
@@ -1505,6 +1489,8 @@
1505
1489
  this.onClick.complete();
1506
1490
  this.onBlur.complete();
1507
1491
  this.onFocus.complete();
1492
+ this.onKeydownEscape.complete();
1493
+ this.onKeyupEnter.complete();
1508
1494
  this._implicitValue = undefined;
1509
1495
  this.formControl = null;
1510
1496
  this.displayWith = null;
@@ -1518,8 +1504,8 @@
1518
1504
  this._onTouchedCallback = null;
1519
1505
  this._onFetchMoreCallback = null;
1520
1506
  // Destroy the 'autocomplete' instance, to avoid memory leak
1521
- if (this.matAutoComplete) {
1522
- this.matAutoComplete.ngOnDestroy();
1507
+ if (this.matAutocomplete) {
1508
+ this.matAutocomplete.ngOnDestroy();
1523
1509
  }
1524
1510
  };
1525
1511
  /**
@@ -1545,8 +1531,8 @@
1545
1531
  };
1546
1532
  MatAutocompleteField.prototype.setDisabledState = function (isDisabled) {
1547
1533
  var _a;
1548
- if (isDisabled && ((_a = this.matAutoComplete) === null || _a === void 0 ? void 0 : _a.isOpen)) {
1549
- console.warn('Autocomplete form field not closed, but has been disabled. TODO: try to force close ?');
1534
+ if (isDisabled && ((_a = this.matAutocomplete) === null || _a === void 0 ? void 0 : _a.isOpen)) {
1535
+ this.closePanel();
1550
1536
  }
1551
1537
  this.cd.markForCheck();
1552
1538
  };
@@ -1645,7 +1631,7 @@
1645
1631
  };
1646
1632
  MatAutocompleteField.prototype._initAutocompleteInfiniteScroll = function (threshold) {
1647
1633
  var _this = this;
1648
- if (!this.matAutoComplete)
1634
+ if (!this.matAutocomplete)
1649
1635
  return; // Skip
1650
1636
  // DEBUG
1651
1637
  //console.debug(this.logPrefix + ' Init autocomplete scroll listener');
@@ -1653,12 +1639,12 @@
1653
1639
  this._openedSubscription.unsubscribe();
1654
1640
  this._subscription.remove(this._openedSubscription);
1655
1641
  }
1656
- var opened$ = this.matAutoComplete._isOpen
1642
+ var opened$ = this.matAutocomplete._isOpen
1657
1643
  ? rxjs.timer(0)
1658
- : this.matAutoComplete.opened.pipe(operators.debounceTime(200));
1644
+ : this.matAutocomplete.opened.pipe(operators.debounceTime(200));
1659
1645
  var scrollEnd$ = opened$
1660
1646
  .pipe(operators.map(function (_) { return _this.getAutocompletePanel(); }), operators.filter(isNotNil), operators.switchMap(function (panel) { return fromScrollEndEvent(panel, threshold)
1661
- .pipe(operators.takeUntil(_this.matAutoComplete.closed)); }));
1647
+ .pipe(operators.takeUntil(_this.matAutocomplete.closed)); }));
1662
1648
  // Trigger fetch more, end end scroll reached
1663
1649
  this._openedSubscription = scrollEnd$
1664
1650
  .subscribe(function () { return _this._fetchMore$.emit(); });
@@ -1688,15 +1674,35 @@
1688
1674
  // Register subscription
1689
1675
  this._subscription.add(this._openedSubscription);
1690
1676
  };
1677
+ Object.defineProperty(MatAutocompleteField.prototype, "isOpen", {
1678
+ get: function () {
1679
+ var _a, _b;
1680
+ return (this.searchable && ((_a = this.matAutocomplete) === null || _a === void 0 ? void 0 : _a.isOpen))
1681
+ || ((_b = this.matSelect) === null || _b === void 0 ? void 0 : _b.panelOpen)
1682
+ || false;
1683
+ },
1684
+ enumerable: false,
1685
+ configurable: true
1686
+ });
1687
+ MatAutocompleteField.prototype.closePanel = function () {
1688
+ var _a, _b, _c, _d;
1689
+ if ((_a = this.matAutocomplete) === null || _a === void 0 ? void 0 : _a.isOpen) {
1690
+ (_b = this.matAutocompleteTrigger) === null || _b === void 0 ? void 0 : _b.closePanel();
1691
+ return;
1692
+ }
1693
+ if ((_c = this.matSelect) === null || _c === void 0 ? void 0 : _c.panelOpen) {
1694
+ (_d = this.matSelect) === null || _d === void 0 ? void 0 : _d.close();
1695
+ }
1696
+ };
1691
1697
  /* -- private method -- */
1692
1698
  MatAutocompleteField.prototype.suggest = function (value, filter) {
1693
1699
  return __awaiter(this, void 0, void 0, function () {
1694
1700
  var res, data, total, fetchMore;
1695
- return __generator(this, function (_c) {
1696
- switch (_c.label) {
1701
+ return __generator(this, function (_e) {
1702
+ switch (_e.label) {
1697
1703
  case 0: return [4 /*yield*/, this.suggestFn(value, filter)];
1698
1704
  case 1:
1699
- res = _c.sent();
1705
+ res = _e.sent();
1700
1706
  // DEBUG
1701
1707
  //console.debug(this.logPrefix + ' Filtered items by suggestFn:', value, res);
1702
1708
  if (!res) {
@@ -1723,9 +1729,9 @@
1723
1729
  };
1724
1730
  MatAutocompleteField.prototype.fetchMore = function () {
1725
1731
  return __awaiter(this, void 0, void 0, function () {
1726
- var fetchMoreFn, _c, data, total, fetchMore;
1727
- return __generator(this, function (_d) {
1728
- switch (_d.label) {
1732
+ var fetchMoreFn, _e, data, total, fetchMore;
1733
+ return __generator(this, function (_f) {
1734
+ switch (_f.label) {
1729
1735
  case 0:
1730
1736
  if (!this._onFetchMoreCallback)
1731
1737
  return [2 /*return*/, []];
@@ -1733,7 +1739,7 @@
1733
1739
  this._onFetchMoreCallback = undefined;
1734
1740
  return [4 /*yield*/, fetchMoreFn()];
1735
1741
  case 1:
1736
- _c = _d.sent(), data = _c.data, total = _c.total, fetchMore = _c.fetchMore;
1742
+ _e = _f.sent(), data = _e.data, total = _e.total, fetchMore = _e.fetchMore;
1737
1743
  this._itemCount = total || this._itemCount;
1738
1744
  this._onFetchMoreCallback = fetchMore;
1739
1745
  this._moreItemsCount = Math.max(0, this._moreItemsCount - data.length); // Borne min = 0
@@ -1762,7 +1768,7 @@
1762
1768
  };
1763
1769
  MatAutocompleteField.prototype.getAutocompletePanel = function () {
1764
1770
  var _a, _b;
1765
- var ele = (_b = (_a = this.matAutoComplete) === null || _a === void 0 ? void 0 : _a.options.last) === null || _b === void 0 ? void 0 : _b._getHostElement().parentElement;
1771
+ var ele = (_b = (_a = this.matAutocomplete) === null || _a === void 0 ? void 0 : _a.options.last) === null || _b === void 0 ? void 0 : _b._getHostElement().parentElement;
1766
1772
  if (!ele) {
1767
1773
  // DEBUG
1768
1774
  console.warn(this.logPrefix + ' Unable to find the autocomplete div...');
@@ -1797,8 +1803,8 @@
1797
1803
  { type: i0.Component, args: [{
1798
1804
  // eslint-disable-next-line @angular-eslint/component-selector
1799
1805
  selector: 'mat-autocomplete-field',
1800
- template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <!-- readonly -->\n <ng-container *ngIf=\"_readonly; else writable\">\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n </ng-container>\n\n <ng-template #writable>\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 [compareWith]=\"compareWith\"\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; last as isLast\" [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 </mat-select>\n </ng-template>\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)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keyup.arrowdown)=\"!autoComplete.showPanel && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autoComplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\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; 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: 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 </mat-autocomplete>\n\n </ng-template>\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.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 matSuffix select=\"[matSuffix]\"></ng-content>\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 </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\n</ion-grid>\n",
1801
- providers: [DEFAULT_VALUE_ACCESSOR$6],
1806
+ template: "<ion-grid class=\"ion-no-padding\">\n <ion-row>\n <ion-col class=\"ion-no-padding\">\n <mat-form-field [floatLabel]=\"floatLabel\"\n [class.mat-form-field-disabled]=\"disabled\"\n [title]=\"displayValue\">\n\n <div matPrefix><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <!-- readonly -->\n <ng-container *ngIf=\"_readonly; else writable\">\n <input matInput hidden type=\"text\"\n [placeholder]=\"placeholder\"\n [formControl]=\"formControl\" readonly>\n <ion-text>{{displayWith(value)}}</ion-text>\n </ng-container>\n\n <ng-template #writable>\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)=\"onKeydownEscape.emit($event)\"\n [compareWith]=\"compareWith\"\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; last as isLast\" [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 </mat-select>\n </ng-template>\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)=\"onClick.emit($event)\"\n (focus)=\"filterInputTextFocusInEvent($event)\"\n (blur)=\"filterInputTextBlurEvent($event)\"\n (keydown.escape)=\"onKeydownEscape.emit($event)\"\n (keyup.enter)=\"onKeyupEnter.emit($event)\"\n (keyup.arrowdown)=\"!autocomplete.opened && onDropButtonClick.emit($event)\">\n\n <!-- autocomplete -->\n <mat-autocomplete #autocomplete=\"matAutocomplete\"\n autoActiveFirstOption\n [displayWith]=\"displayWith\"\n [class]=\"classList\"\n [class.cdk-visually-hidden]=\"!searchable\"\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; 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: 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 </mat-autocomplete>\n\n </ng-template>\n\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\n *ngIf=\"searchable\"\n (click)=\"onDropButtonClick.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 matSuffix select=\"[matSuffix]\"></ng-content>\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 </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\n</ion-grid>\n",
1807
+ providers: [DEFAULT_VALUE_ACCESSOR],
1802
1808
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1803
1809
  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%}.fact-scroll-viewport{height:100%;width:100%}.fact-item{height:54px;display:flex}.fact-item .fact-date{min-width:100px;text-align:center;font-size:24pt}.fact-item .fact-date,.fact-item .fact-text{height:100%;align-items:center;justify-content:center;display:flex}.fact-item .fact-text{border-radius:10px}cdk-virtual-scroll-viewport{border:1px solid #000}cdk-virtual-scroll-viewport li{list-style:none}"]
1804
1810
  },] }
@@ -1847,9 +1853,12 @@
1847
1853
  onBlur: [{ type: i0.Output, args: ['blur',] }],
1848
1854
  onFocus: [{ type: i0.Output, args: ['focus',] }],
1849
1855
  onDropButtonClick: [{ type: i0.Output, args: ['dropButtonClick',] }],
1856
+ onKeydownEscape: [{ type: i0.Output, args: ['keydown.escape',] }],
1857
+ onKeyupEnter: [{ type: i0.Output, args: ['keyup.enter',] }],
1850
1858
  matSelect: [{ type: i0.ViewChild, args: ['matSelect',] }],
1851
1859
  matInputText: [{ type: i0.ViewChild, args: ['matInputText',] }],
1852
- matAutoComplete: [{ type: i0.ViewChild, args: ['autoComplete',] }]
1860
+ matAutocomplete: [{ type: i0.ViewChild, args: [autocomplete.MatAutocomplete,] }],
1861
+ matAutocompleteTrigger: [{ type: i0.ViewChild, args: [autocomplete.MatAutocompleteTrigger,] }]
1853
1862
  };
1854
1863
 
1855
1864
  var DateFormatPipe = /** @class */ (function () {
@@ -1873,7 +1882,7 @@
1873
1882
  };
1874
1883
  return DateFormatPipe;
1875
1884
  }());
1876
- 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" });
1885
+ 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" });
1877
1886
  DateFormatPipe.decorators = [
1878
1887
  { type: i0.Pipe, args: [{
1879
1888
  name: 'dateFormat'
@@ -1885,7 +1894,7 @@
1885
1894
  { type: i1$2.TranslateService }
1886
1895
  ]; };
1887
1896
 
1888
- var moment$6 = momentImported__namespace;
1897
+ var moment = momentImported__namespace;
1889
1898
  var DateDiffDurationPipe = /** @class */ (function () {
1890
1899
  function DateDiffDurationPipe(dateAdapter, translate) {
1891
1900
  var _this = this;
@@ -1902,10 +1911,10 @@
1902
1911
  return this.format(startDate, endDate);
1903
1912
  };
1904
1913
  DateDiffDurationPipe.prototype.format = function (startDate, endDate) {
1905
- var duration = moment$6.duration(endDate.diff(startDate));
1914
+ var duration = moment.duration(endDate.diff(startDate));
1906
1915
  if (duration.asMinutes() < 0)
1907
1916
  return '';
1908
- var timeDuration = moment$6(0)
1917
+ var timeDuration = moment(0)
1909
1918
  .hour(duration.hours())
1910
1919
  .minute(duration.minutes());
1911
1920
  var days = Math.floor(duration.asDays());
@@ -1913,7 +1922,7 @@
1913
1922
  };
1914
1923
  return DateDiffDurationPipe;
1915
1924
  }());
1916
- 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" });
1925
+ 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" });
1917
1926
  DateDiffDurationPipe.decorators = [
1918
1927
  { type: i0.Pipe, args: [{
1919
1928
  name: 'dateDiffDuration'
@@ -1935,7 +1944,7 @@
1935
1944
  };
1936
1945
  return DateFromNowPipe;
1937
1946
  }());
1938
- DateFromNowPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0__namespace.ɵɵinject(i1__namespace.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1947
+ DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1$1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1939
1948
  DateFromNowPipe.decorators = [
1940
1949
  { type: i0.Pipe, args: [{
1941
1950
  name: 'dateFromNow'
@@ -2004,7 +2013,7 @@
2004
2013
  value *= -1;
2005
2014
  }
2006
2015
  }
2007
- var degrees = roundFloat$1(value, opts.maxDecimals).toString();
2016
+ var degrees = roundFloat(value, opts.maxDecimals).toString();
2008
2017
  // Add sign
2009
2018
  var sign = negative ? '-' : '+';
2010
2019
  if (opts.placeholderChar) {
@@ -2055,7 +2064,7 @@
2055
2064
  }
2056
2065
  var degrees = Math.trunc(value);
2057
2066
  var minutes = Math.trunc((value - degrees) * 60);
2058
- var seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2067
+ var seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2059
2068
  while (seconds >= 60) {
2060
2069
  seconds -= 60;
2061
2070
  minutes += 1;
@@ -2123,7 +2132,7 @@
2123
2132
  }
2124
2133
  }
2125
2134
  var degrees = Math.trunc(value);
2126
- var minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
2135
+ var minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
2127
2136
  while (minutes >= 60) {
2128
2137
  minutes -= 60;
2129
2138
  degrees += 1;
@@ -2174,15 +2183,15 @@
2174
2183
  return NaN;
2175
2184
  }
2176
2185
  if (pattern === 'DD')
2177
- return roundFloat$1(degrees, maxDecimals);
2186
+ return roundFloat(degrees, maxDecimals);
2178
2187
  var minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
2179
2188
  var seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
2180
2189
  var direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
2181
2190
  var sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
2182
2191
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
2183
- return roundFloat$1(degrees, maxDecimals);
2192
+ return roundFloat(degrees, maxDecimals);
2184
2193
  }
2185
- function roundFloat$1(input, maxDecimals) {
2194
+ function roundFloat(input, maxDecimals) {
2186
2195
  if (maxDecimals > 0) {
2187
2196
  var powDecimal = Math.pow(10, maxDecimals);
2188
2197
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -2205,7 +2214,7 @@
2205
2214
  };
2206
2215
  return LatLongFormatPipe;
2207
2216
  }());
2208
- LatLongFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2217
+ LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2209
2218
  LatLongFormatPipe.decorators = [
2210
2219
  { type: i0.Pipe, args: [{
2211
2220
  name: 'latLongFormat'
@@ -2218,7 +2227,7 @@
2218
2227
  }
2219
2228
  return LatitudeFormatPipe;
2220
2229
  }());
2221
- LatitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2230
+ LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2222
2231
  LatitudeFormatPipe.decorators = [
2223
2232
  { type: i0.Pipe, args: [{
2224
2233
  name: 'latitudeFormat'
@@ -2231,7 +2240,7 @@
2231
2240
  }
2232
2241
  return LongitudeFormatPipe;
2233
2242
  }());
2234
- LongitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2243
+ LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2235
2244
  LongitudeFormatPipe.decorators = [
2236
2245
  { type: i0.Pipe, args: [{
2237
2246
  name: 'longitudeFormat'
@@ -2254,7 +2263,7 @@
2254
2263
  };
2255
2264
  return NumberFormatPipe;
2256
2265
  }());
2257
- NumberFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2266
+ NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2258
2267
  NumberFormatPipe.decorators = [
2259
2268
  { type: i0.Pipe, args: [{
2260
2269
  name: 'numberFormat'
@@ -2297,7 +2306,7 @@
2297
2306
  };
2298
2307
  return HighlightPipe;
2299
2308
  }());
2300
- HighlightPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2309
+ HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2301
2310
  HighlightPipe.decorators = [
2302
2311
  { type: i0.Pipe, args: [{
2303
2312
  name: 'highlight'
@@ -2365,7 +2374,7 @@
2365
2374
  { type: i0.Pipe, args: [{ name: 'fileSize' },] }
2366
2375
  ];
2367
2376
 
2368
- var moment$5 = momentImported__namespace;
2377
+ var moment$1 = momentImported__namespace;
2369
2378
  var DATE_UNIX_TIMESTAMP = 'X';
2370
2379
  var DATE_UNIX_MS_TIMESTAMP = 'x';
2371
2380
  var DateUtils = /** @class */ (function () {
@@ -2400,32 +2409,32 @@
2400
2409
  if (!value || momentImported.isMoment(value))
2401
2410
  return value;
2402
2411
  // Parse the input value, as a ISO date time
2403
- var date = moment$5(value, DATE_ISO_PATTERN);
2412
+ var date = moment$1(value, DATE_ISO_PATTERN);
2404
2413
  if (date.isValid())
2405
2414
  return date;
2406
2415
  // Not valid: trying to convert from unix timestamp
2407
2416
  if (typeof value === 'string') {
2408
2417
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2409
2418
  if (value.length === 10) {
2410
- return moment$5(value, DATE_UNIX_TIMESTAMP);
2419
+ return moment$1(value, DATE_UNIX_TIMESTAMP);
2411
2420
  }
2412
2421
  else if (value.length === 13) {
2413
- return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
2422
+ return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2414
2423
  }
2415
2424
  }
2416
2425
  console.warn('Unable to parse date: ' + value);
2417
2426
  return undefined;
2418
2427
  }
2419
2428
  function fromUnixTimestamp(timeInSec) {
2420
- return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
2429
+ return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2421
2430
  }
2422
2431
  function fromUnixMsTimestamp(timeInMs) {
2423
- return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2432
+ return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2424
2433
  }
2425
2434
  function toDuration(value, unit) {
2426
2435
  if (!value)
2427
2436
  return undefined;
2428
- var duration = moment$5.duration(value, unit);
2437
+ var duration = moment$1.duration(value, unit);
2429
2438
  // fix 990+ ms
2430
2439
  if (duration.milliseconds() >= 990) {
2431
2440
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2455,7 +2464,7 @@
2455
2464
  };
2456
2465
  return DurationPipe;
2457
2466
  }());
2458
- DurationPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2467
+ DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$2.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2459
2468
  DurationPipe.decorators = [
2460
2469
  { type: i0.Pipe, args: [{
2461
2470
  name: 'duration'
@@ -2479,7 +2488,7 @@
2479
2488
  };
2480
2489
  return MathAbsPipe;
2481
2490
  }());
2482
- MathAbsPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2491
+ MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2483
2492
  MathAbsPipe.decorators = [
2484
2493
  { type: i0.Pipe, args: [{
2485
2494
  name: 'mathAbs'
@@ -2494,7 +2503,7 @@
2494
2503
  };
2495
2504
  return EvenPipe;
2496
2505
  }());
2497
- EvenPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2506
+ EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2498
2507
  EvenPipe.decorators = [
2499
2508
  { type: i0.Pipe, args: [{
2500
2509
  name: 'even'
@@ -2509,7 +2518,7 @@
2509
2518
  };
2510
2519
  return OddPipe;
2511
2520
  }());
2512
- OddPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2521
+ OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2513
2522
  OddPipe.decorators = [
2514
2523
  { type: i0.Pipe, args: [{
2515
2524
  name: 'odd'
@@ -2641,7 +2650,7 @@
2641
2650
  };
2642
2651
  return MapGetPipe;
2643
2652
  }());
2644
- MapGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2653
+ MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2645
2654
  MapGetPipe.decorators = [
2646
2655
  { type: i0.Pipe, args: [{
2647
2656
  name: 'mapGet'
@@ -2658,7 +2667,7 @@
2658
2667
  };
2659
2668
  return MapKeysPipe;
2660
2669
  }());
2661
- MapKeysPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2670
+ MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2662
2671
  MapKeysPipe.decorators = [
2663
2672
  { type: i0.Pipe, args: [{
2664
2673
  name: 'mapKeys'
@@ -2675,7 +2684,7 @@
2675
2684
  };
2676
2685
  return MapValuesPipe;
2677
2686
  }());
2678
- MapValuesPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2687
+ MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2679
2688
  MapValuesPipe.decorators = [
2680
2689
  { type: i0.Pipe, args: [{
2681
2690
  name: 'mapValues'
@@ -2691,7 +2700,7 @@
2691
2700
  };
2692
2701
  return IsNotNilOrBlankPipe;
2693
2702
  }());
2694
- IsNotNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2703
+ IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2695
2704
  IsNotNilOrBlankPipe.decorators = [
2696
2705
  { type: i0.Pipe, args: [{
2697
2706
  name: 'isNotNilOrBlank'
@@ -2706,7 +2715,7 @@
2706
2715
  };
2707
2716
  return IsNilOrBlankPipe;
2708
2717
  }());
2709
- IsNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2718
+ IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2710
2719
  IsNilOrBlankPipe.decorators = [
2711
2720
  { type: i0.Pipe, args: [{
2712
2721
  name: 'isNilOrBlank'
@@ -2721,7 +2730,7 @@
2721
2730
  };
2722
2731
  return ToStringPipe;
2723
2732
  }());
2724
- ToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2733
+ ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2725
2734
  ToStringPipe.decorators = [
2726
2735
  { type: i0.Pipe, args: [{
2727
2736
  name: 'toString'
@@ -2736,7 +2745,7 @@
2736
2745
  };
2737
2746
  return StrLengthPipe;
2738
2747
  }());
2739
- StrLengthPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2748
+ StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2740
2749
  StrLengthPipe.decorators = [
2741
2750
  { type: i0.Pipe, args: [{
2742
2751
  name: 'strLength'
@@ -2789,7 +2798,7 @@
2789
2798
  };
2790
2799
  return TranslateContextService;
2791
2800
  }());
2792
- TranslateContextService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2801
+ TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$2.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2793
2802
  TranslateContextService.decorators = [
2794
2803
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
2795
2804
  ];
@@ -2806,7 +2815,7 @@
2806
2815
  };
2807
2816
  return TranslateContextPipe;
2808
2817
  }());
2809
- TranslateContextPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0__namespace.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2818
+ TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2810
2819
  TranslateContextPipe.decorators = [
2811
2820
  { type: i0.Pipe, args: [{
2812
2821
  name: 'translateContext'
@@ -2826,7 +2835,7 @@
2826
2835
  };
2827
2836
  return TranslatablePipe;
2828
2837
  }());
2829
- TranslatablePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2838
+ TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2830
2839
  TranslatablePipe.decorators = [
2831
2840
  { type: i0.Pipe, args: [{
2832
2841
  name: 'translatable'
@@ -2846,7 +2855,7 @@
2846
2855
  };
2847
2856
  return PropertyGetPipe;
2848
2857
  }());
2849
- PropertyGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2858
+ PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2850
2859
  PropertyGetPipe.decorators = [
2851
2860
  { type: i0.Pipe, args: [{
2852
2861
  name: 'propertyGet'
@@ -3103,14 +3112,14 @@
3103
3112
  },] }
3104
3113
  ];
3105
3114
 
3106
- var moment$4 = momentImported__namespace;
3115
+ var moment$2 = momentImported__namespace;
3107
3116
  // @dynamic
3108
3117
  var SharedValidators = /** @class */ (function () {
3109
3118
  function SharedValidators() {
3110
3119
  }
3111
3120
  SharedValidators.validDate = function (control) {
3112
3121
  var value = control.value;
3113
- var date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
3122
+ var date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
3114
3123
  if (date && (!date.isValid() || date.year() < 1970)) {
3115
3124
  return { validDate: true };
3116
3125
  }
@@ -3581,9 +3590,9 @@
3581
3590
  var hour = parseInt(durationParts[0] || '0');
3582
3591
  var minute = parseInt(durationParts[1] || '0');
3583
3592
  var value = hour + (minute + 0.5) / 60;
3584
- return roundFloat(value, maxDecimals);
3593
+ return roundFloat$1(value, maxDecimals);
3585
3594
  }
3586
- function roundFloat(input, maxDecimals) {
3595
+ function roundFloat$1(input, maxDecimals) {
3587
3596
  if (maxDecimals > 0) {
3588
3597
  var powDecimal = Math.pow(10, maxDecimals);
3589
3598
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -3607,9 +3616,9 @@
3607
3616
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
3608
3617
  }
3609
3618
  };
3610
- var noop$6 = function () {
3619
+ var noop$1 = function () {
3611
3620
  };
3612
- var ɵ0$9 = noop$6;
3621
+ var ɵ0$1 = noop$1;
3613
3622
  var MatLatLongField = /** @class */ (function () {
3614
3623
  function MatLatLongField(platform, translate, formBuilder, cd, formGroupDir) {
3615
3624
  this.platform = platform;
@@ -3617,8 +3626,8 @@
3617
3626
  this.formBuilder = formBuilder;
3618
3627
  this.cd = cd;
3619
3628
  this.formGroupDir = formGroupDir;
3620
- this._onChangeCallback = noop$6;
3621
- this._onTouchedCallback = noop$6;
3629
+ this._onChangeCallback = noop$1;
3630
+ this._onTouchedCallback = noop$1;
3622
3631
  this._subscription = new rxjs.Subscription();
3623
3632
  this.disabling = false;
3624
3633
  this.writing = false;
@@ -3971,14 +3980,14 @@
3971
3980
  },] }
3972
3981
  ];
3973
3982
 
3974
- var DEFAULT_VALUE_ACCESSOR$5 = {
3983
+ var DEFAULT_VALUE_ACCESSOR$1 = {
3975
3984
  provide: i1.NG_VALUE_ACCESSOR,
3976
3985
  useExisting: i0.forwardRef(function () { return MatDate; }),
3977
3986
  multi: true
3978
3987
  };
3979
- var DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3980
- var noop$5 = function () { };
3981
- var ɵ0$8 = noop$5;
3988
+ var DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3989
+ var noop$2 = function () { };
3990
+ var ɵ0$2 = noop$2;
3982
3991
  var MatDate = /** @class */ (function () {
3983
3992
  function MatDate(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
3984
3993
  this.dateAdapter = dateAdapter;
@@ -3987,12 +3996,12 @@
3987
3996
  this.cd = cd;
3988
3997
  this.keyboard = keyboard;
3989
3998
  this.formGroupDir = formGroupDir;
3990
- this._onChangeCallback = noop$5;
3991
- this._onTouchedCallback = noop$5;
3999
+ this._onChangeCallback = noop$2;
4000
+ this._onTouchedCallback = noop$2;
3992
4001
  this._subscription = new rxjs.Subscription();
3993
4002
  this.writing = true;
3994
4003
  this.disabling = false;
3995
- this.dayMask = DAY_MASK$2;
4004
+ this.dayMask = DAY_MASK;
3996
4005
  this.disabled = false;
3997
4006
  this.floatLabel = 'auto';
3998
4007
  this.readonly = false;
@@ -4261,7 +4270,7 @@
4261
4270
  selector: 'mat-date-field',
4262
4271
  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_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 control -->\n <input matInput type=\"text\"\n [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button matSuffix mat-icon-button tabindex=\"-1\"\n type=\"button\"\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)=\"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 </mat-form-field>\n\n <mat-datepicker #datePicker\n [touchUi]=\"mobile\"\n [disabled]=\"formControl.disabled\"\n [startAt]=\"startDate\"></mat-datepicker>\n\n <ng-template #iconDesktop>\n <mat-icon>keyboard_arrow_down</mat-icon>\n </ng-template>\n\n <ng-template #iconDate>\n <mat-icon>date_range</mat-icon>\n </ng-template>\n\n</ng-template>\n\n",
4263
4272
  providers: [
4264
- DEFAULT_VALUE_ACCESSOR$5,
4273
+ DEFAULT_VALUE_ACCESSOR$1,
4265
4274
  ],
4266
4275
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
4267
4276
  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%}"]
@@ -4294,17 +4303,17 @@
4294
4303
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
4295
4304
  };
4296
4305
 
4297
- var DEFAULT_VALUE_ACCESSOR$4 = {
4306
+ var DEFAULT_VALUE_ACCESSOR$2 = {
4298
4307
  provide: i1.NG_VALUE_ACCESSOR,
4299
4308
  useExisting: i0.forwardRef(function () { return MatDateTime; }),
4300
4309
  multi: true
4301
4310
  };
4302
4311
  var DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4303
4312
  var HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
4304
- var HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4305
- var noop$4 = function () {
4313
+ var HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4314
+ var noop$3 = function () {
4306
4315
  };
4307
- var ɵ0$7 = noop$4;
4316
+ var ɵ0$3 = noop$3;
4308
4317
  var MatDateTime = /** @class */ (function () {
4309
4318
  function MatDateTime(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
4310
4319
  this.platform = platform;
@@ -4314,14 +4323,14 @@
4314
4323
  this.keyboard = keyboard;
4315
4324
  this.cd = cd;
4316
4325
  this.formGroupDir = formGroupDir;
4317
- this._onChangeCallback = noop$4;
4318
- this._onTouchedCallback = noop$4;
4326
+ this._onChangeCallback = noop$3;
4327
+ this._onTouchedCallback = noop$3;
4319
4328
  this._subscription = new rxjs.Subscription();
4320
4329
  this.writing = true;
4321
4330
  this.disabling = false;
4322
4331
  this._onDestroy = new i0.EventEmitter();
4323
4332
  this.dayMask = DAY_MASK$1;
4324
- this.hourMask = HOUR_MASK$1;
4333
+ this.hourMask = HOUR_MASK;
4325
4334
  this.floatLabel = 'auto';
4326
4335
  this.readonly = false;
4327
4336
  this.compact = false;
@@ -4668,7 +4677,7 @@
4668
4677
  selector: 'mat-date-time-field',
4669
4678
  template: "<!-- readonly -->\n<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled\">\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><ng-content select=\"[matPrefix]\"></ng-content></div>\n\n <input matInput #matInput autocomplete=\"off\" type=\"text\"\n *ngIf=\"!mobile\"\n [formControl]=\"dateFormControl\"\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]=\"dateFormControl\"\n (click)=\"openDatePickerIfMobile($event, datePicker)\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n readonly>\n <input matInput type=\"text\" [formControl]=\"formControl\"\n hidden\n [matDatepicker]=\"datePicker\"\n (dateChange)=\"onDatePickerChange($event)\">\n\n <button type=\"button\" mat-icon-button tabindex=\"-1\" matSuffix #datePickerButton2 (click)=\"openDatePicker($event, datePicker)\" [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=\"'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 && (timeFormControl.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]=\"timeFormControl\"\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]=\"timeFormControl\"\n (click)=\"openTimePickerIfMobile($event)\"\n readonly>\n\n <input matInput type=\"text\"\n [formControl]=\"timeFormControl\"\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",
4670
4679
  providers: [
4671
- DEFAULT_VALUE_ACCESSOR$4,
4680
+ DEFAULT_VALUE_ACCESSOR$2,
4672
4681
  ],
4673
4682
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
4674
4683
  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%}"]
@@ -4707,10 +4716,10 @@
4707
4716
  useExisting: i0.forwardRef(function () { return MatDateShort; }),
4708
4717
  multi: true
4709
4718
  };
4710
- var DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
4711
- var noop$3 = function () {
4719
+ var DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
4720
+ var noop$4 = function () {
4712
4721
  };
4713
- var ɵ0$6 = noop$3;
4722
+ var ɵ0$4 = noop$4;
4714
4723
  var MatDateShort = /** @class */ (function () {
4715
4724
  function MatDateShort(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4716
4725
  this.dateAdapter = dateAdapter;
@@ -4719,11 +4728,11 @@
4719
4728
  this.cd = cd;
4720
4729
  this.keyboard = keyboard;
4721
4730
  this.formGroupDir = formGroupDir;
4722
- this._onChangeCallback = noop$3;
4723
- this._onTouchedCallback = noop$3;
4731
+ this._onChangeCallback = noop$4;
4732
+ this._onTouchedCallback = noop$4;
4724
4733
  this.writing = true;
4725
4734
  this.disabling = false;
4726
- this.dayMask = DAY_MASK;
4735
+ this.dayMask = DAY_MASK$2;
4727
4736
  this.disabled = false;
4728
4737
  this.floatLabel = 'auto';
4729
4738
  this.readonly = false;
@@ -5071,16 +5080,16 @@
5071
5080
  },] }
5072
5081
  ];
5073
5082
 
5074
- var DEFAULT_VALUE_ACCESSOR$2 = {
5083
+ var DEFAULT_VALUE_ACCESSOR$4 = {
5075
5084
  provide: i1.NG_VALUE_ACCESSOR,
5076
5085
  useExisting: i0.forwardRef(function () { return MatDuration; }),
5077
5086
  multi: true
5078
5087
  };
5079
5088
  var HOUR_TIME_PATTERN = /[0-9]\d\d:[0-5]\d/;
5080
- var HOUR_MASK = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5081
- var noop$2 = function () {
5089
+ var HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5090
+ var noop$5 = function () {
5082
5091
  };
5083
- var ɵ0$5 = noop$2;
5092
+ var ɵ0$5 = noop$5;
5084
5093
  var MatDuration = /** @class */ (function () {
5085
5094
  function MatDuration(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
5086
5095
  this.dateAdapter = dateAdapter;
@@ -5089,11 +5098,11 @@
5089
5098
  this.cd = cd;
5090
5099
  this.formGroupDir = formGroupDir;
5091
5100
  this._subscription = new rxjs.Subscription();
5092
- this._onChangeCallback = noop$2;
5093
- this._onTouchedCallback = noop$2;
5101
+ this._onChangeCallback = noop$5;
5102
+ this._onTouchedCallback = noop$5;
5094
5103
  this.writing = true;
5095
5104
  this.disabling = false;
5096
- this.hourMask = HOUR_MASK;
5105
+ this.hourMask = HOUR_MASK$1;
5097
5106
  this.disabled = false;
5098
5107
  this.floatLabel = 'auto';
5099
5108
  this.readonly = false;
@@ -5286,7 +5295,7 @@
5286
5295
  selector: 'mat-duration-field',
5287
5296
  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",
5288
5297
  providers: [
5289
- DEFAULT_VALUE_ACCESSOR$2,
5298
+ DEFAULT_VALUE_ACCESSOR$4,
5290
5299
  ],
5291
5300
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
5292
5301
  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%}"]
@@ -5346,22 +5355,22 @@
5346
5355
  },] }
5347
5356
  ];
5348
5357
 
5349
- var DEFAULT_VALUE_ACCESSOR$1 = {
5358
+ var DEFAULT_VALUE_ACCESSOR$5 = {
5350
5359
  provide: i1.NG_VALUE_ACCESSOR,
5351
5360
  useExisting: i0.forwardRef(function () { return MatBooleanField; }),
5352
5361
  multi: true
5353
5362
  };
5354
- var noop$1 = function () {
5363
+ var noop$6 = function () {
5355
5364
  };
5356
- var ɵ0$4 = noop$1;
5365
+ var ɵ0$6 = noop$6;
5357
5366
  var MatBooleanField = /** @class */ (function () {
5358
5367
  function MatBooleanField(translate, formBuilder, cd, formGroupDir) {
5359
5368
  this.translate = translate;
5360
5369
  this.formBuilder = formBuilder;
5361
5370
  this.cd = cd;
5362
5371
  this.formGroupDir = formGroupDir;
5363
- this._onChangeCallback = noop$1;
5364
- this._onTouchedCallback = noop$1;
5372
+ this._onChangeCallback = noop$6;
5373
+ this._onTouchedCallback = noop$6;
5365
5374
  this._writing = false;
5366
5375
  this.showRadio = false;
5367
5376
  this.disabled = false;
@@ -5547,10 +5556,10 @@
5547
5556
  selector: 'mat-boolean-field',
5548
5557
  template: "<mat-form-field *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel\"\n class=\"mat-form-field-disabled {{classList}}\">\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</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\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 <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\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\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 <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\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 <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 <div matSuffix #injectMatSuffix></div>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n </mat-form-field>\n </ng-container>\n\n <div class=\"cdk-visually-hidden\">\n <div #suffix><ng-content select=\"[matSuffix]\"></ng-content></div>\n </div>\n\n</ng-template>\n\n\n",
5549
5558
  providers: [
5550
- DEFAULT_VALUE_ACCESSOR$1
5559
+ DEFAULT_VALUE_ACCESSOR$5
5551
5560
  ],
5552
5561
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
5553
- 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:calc(min(var(--flex-basis), 150px));white-space:normal;padding:0 2px;height:40px}"]
5562
+ 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}"]
5554
5563
  },] }
5555
5564
  ];
5556
5565
  MatBooleanField.ctorParameters = function () { return [
@@ -5636,7 +5645,6 @@
5636
5645
  return MatNumpadEvent;
5637
5646
  }(KeyboardEvent));
5638
5647
 
5639
- exports.AnimationState = void 0;
5640
5648
  (function (AnimationState) {
5641
5649
  AnimationState["ENTER"] = "enter";
5642
5650
  AnimationState["ENTER_INPUT"] = "enter-input";
@@ -5804,7 +5812,7 @@
5804
5812
  };
5805
5813
  return MatNumpadDomService;
5806
5814
  }());
5807
- 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" });
5815
+ 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" });
5808
5816
  MatNumpadDomService.decorators = [
5809
5817
  { type: i0.Injectable, args: [{
5810
5818
  providedIn: 'root'
@@ -6210,7 +6218,7 @@
6210
6218
  },] }
6211
6219
  ];
6212
6220
 
6213
- var DEFAULT_VALUE_ACCESSOR = {
6221
+ var DEFAULT_VALUE_ACCESSOR$6 = {
6214
6222
  provide: i1.NG_VALUE_ACCESSOR,
6215
6223
  useExisting: i0.forwardRef(function () { return MatSwipeField; }),
6216
6224
  multi: true
@@ -6530,7 +6538,7 @@
6530
6538
  { type: i0.Component, args: [{
6531
6539
  selector: 'mat-swipe-field',
6532
6540
  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",
6533
- providers: [DEFAULT_VALUE_ACCESSOR],
6541
+ providers: [DEFAULT_VALUE_ACCESSOR$6],
6534
6542
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6535
6543
  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}"]
6536
6544
  },] }
@@ -7088,7 +7096,7 @@
7088
7096
  };
7089
7097
  return ProgressBarService;
7090
7098
  }());
7091
- ProgressBarService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7099
+ ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7092
7100
  ProgressBarService.decorators = [
7093
7101
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7094
7102
  ];
@@ -7135,7 +7143,7 @@
7135
7143
  };
7136
7144
  return AppGestureConfig;
7137
7145
  }(i1$6.HammerGestureConfig));
7138
- AppGestureConfig.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7146
+ AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7139
7147
  AppGestureConfig.decorators = [
7140
7148
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7141
7149
  ];
@@ -7400,7 +7408,7 @@
7400
7408
  };
7401
7409
  return MatPaginatorI18n;
7402
7410
  }(paginator.MatPaginatorIntl));
7403
- MatPaginatorI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7411
+ MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7404
7412
  MatPaginatorI18n.decorators = [
7405
7413
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7406
7414
  ];
@@ -7492,17 +7500,17 @@
7492
7500
  return rgbArrayToHex(rgb.map(function (v) { return 255 - v; }));
7493
7501
  }
7494
7502
 
7495
- var noop = function () {
7503
+ var noop$7 = function () {
7496
7504
  };
7497
- var ɵ0$3 = noop;
7505
+ var ɵ0$7 = noop$7;
7498
7506
  var AppFormField = /** @class */ (function () {
7499
7507
  function AppFormField(translate, cd, injector, formGroupDir) {
7500
7508
  this.translate = translate;
7501
7509
  this.cd = cd;
7502
7510
  this.injector = injector;
7503
7511
  this.formGroupDir = formGroupDir;
7504
- this._onChangeCallback = noop;
7505
- this._onTouchedCallback = noop;
7512
+ this._onChangeCallback = noop$7;
7513
+ this._onTouchedCallback = noop$7;
7506
7514
  this.readonly = false;
7507
7515
  this.compact = false;
7508
7516
  this.floatLabel = 'auto';
@@ -7961,7 +7969,7 @@
7961
7969
  };
7962
7970
  return AudioProvider;
7963
7971
  }());
7964
- 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" });
7972
+ 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" });
7965
7973
  AudioProvider.decorators = [
7966
7974
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7967
7975
  ];
@@ -8061,7 +8069,7 @@
8061
8069
  };
8062
8070
  return Hotkeys;
8063
8071
  }());
8064
- 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" });
8072
+ 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)); }, token: Hotkeys, providedIn: "root" });
8065
8073
  Hotkeys.decorators = [
8066
8074
  { type: i0.Injectable, args: [{
8067
8075
  providedIn: 'root'
@@ -8265,7 +8273,7 @@
8265
8273
  return Base64ImageReader;
8266
8274
  }());
8267
8275
 
8268
- var uuidv4$1 = uuidv4Imported__namespace;
8276
+ var uuidv4 = uuidv4Imported__namespace;
8269
8277
  var FileService = /** @class */ (function () {
8270
8278
  function FileService(platform,
8271
8279
  //private transfer: FileTransfer,
@@ -8311,7 +8319,7 @@
8311
8319
  lastSlashIndex = source.lastIndexOf('/');
8312
8320
  if (lastSlashIndex === -1)
8313
8321
  throw new Error('Invalid URL: ' + source);
8314
- fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
8322
+ fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
8315
8323
  if (!(responseType === 'file' && this.canUseFileSystem)) return [3 /*break*/, 4];
8316
8324
  console.warn("WARN: [file] Fetching image {" + source + "} in local file...");
8317
8325
  targetFilePath = this._imageDirectory + fileName;
@@ -8374,7 +8382,7 @@
8374
8382
  };
8375
8383
  return FileService;
8376
8384
  }());
8377
- 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" });
8385
+ 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" });
8378
8386
  FileService.decorators = [
8379
8387
  { type: i0.Injectable, args: [{
8380
8388
  providedIn: 'root',
@@ -8537,7 +8545,7 @@
8537
8545
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
8538
8546
 
8539
8547
  var scrypt = require('scrypt-async');
8540
- var sha256$1 = require('hash.js/lib/hash/sha/256');
8548
+ var sha256 = require('hash.js/lib/hash/sha/256');
8541
8549
  var sha512 = require('hash.js/lib/hash/sha/512');
8542
8550
  var nacl = {
8543
8551
  sign: tweetnacl.sign,
@@ -8643,7 +8651,7 @@
8643
8651
  * Hash (using SHA256) a message
8644
8652
  */
8645
8653
  CryptoService.prototype.sha256 = function (message) {
8646
- return sha256$1().update(message).digest('hex');
8654
+ return sha256().update(message).digest('hex');
8647
8655
  };
8648
8656
  /**
8649
8657
  * Hash (using SHA512) a message
@@ -8657,7 +8665,7 @@
8657
8665
  };
8658
8666
  return CryptoService;
8659
8667
  }());
8660
- CryptoService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8668
+ CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8661
8669
  CryptoService.decorators = [
8662
8670
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
8663
8671
  ];
@@ -9641,7 +9649,7 @@
9641
9649
  .then(function () {
9642
9650
  _this.data.mobile = isNotNil(_this.data.mobile) ? _this.data.mobile : _this.platform.is('mobile');
9643
9651
  _this.data.touchUi = _this.data.mobile || _this.platform.is('phablet') || _this.platform.is('tablet');
9644
- _this.data.usageMode = _this.data.mobile ? 'FIELD' : 'DESK'; // FIELD by default, if mobile detected
9652
+ _this.data.usageMode = _this.platform.is('android') ? 'FIELD' : 'DESK'; // FIELD by default if Android
9645
9653
  })
9646
9654
  .then(function () { return _this.restoreLocally(); })
9647
9655
  .then(function (data) {
@@ -10070,7 +10078,7 @@
10070
10078
  };
10071
10079
  return LocalSettingsService;
10072
10080
  }());
10073
- 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" });
10081
+ 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" });
10074
10082
  LocalSettingsService.decorators = [
10075
10083
  { type: i0.Injectable, args: [{
10076
10084
  providedIn: 'root',
@@ -10915,7 +10923,7 @@
10915
10923
  };
10916
10924
  return NetworkService;
10917
10925
  }());
10918
- 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" });
10926
+ 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" });
10919
10927
  NetworkService.decorators = [
10920
10928
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
10921
10929
  ];
@@ -10935,7 +10943,7 @@
10935
10943
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] }
10936
10944
  ]; };
10937
10945
 
10938
- var ErrorCodes$2 = {
10946
+ var ErrorCodes = {
10939
10947
  UNKNOWN_ERROR: 0,
10940
10948
  LOAD_ACCOUNT_ERROR: 1,
10941
10949
  BAD_PASSWORD: 2,
@@ -11343,7 +11351,7 @@
11343
11351
  case 13:
11344
11352
  err_1 = _a.sent();
11345
11353
  console.error(err_1);
11346
- throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
11354
+ throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
11347
11355
  case 14:
11348
11356
  // Emit update event
11349
11357
  if (!opts || opts.emitEvent !== false) {
@@ -12103,7 +12111,7 @@
12103
12111
  }());
12104
12112
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
12105
12113
  EntitiesStorage.REMOTE_PREFIX = 'Remote#';
12106
- 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" });
12114
+ 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" });
12107
12115
  EntitiesStorage.decorators = [
12108
12116
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
12109
12117
  ];
@@ -12220,10 +12228,10 @@
12220
12228
  function referentialsToString(values, properties, separator) {
12221
12229
  return (values || []).map(function (v) { return referentialToString(v, properties); }).join(separator || ', ');
12222
12230
  }
12223
- var ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12231
+ var ɵ0$8 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12224
12232
  var StatusList = Object.freeze([
12225
12233
  {
12226
- id: ɵ0$2,
12234
+ id: ɵ0$8,
12227
12235
  icon: 'checkmark',
12228
12236
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
12229
12237
  },
@@ -12526,7 +12534,7 @@
12526
12534
  (data.lastName || '')) || '';
12527
12535
  }
12528
12536
 
12529
- var uuidv4 = uuidv4Imported__namespace;
12537
+ var uuidv4$1 = uuidv4Imported__namespace;
12530
12538
  var _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
12531
12539
  var NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
12532
12540
  /**
@@ -12570,7 +12578,7 @@
12570
12578
  // Skip if not tracked
12571
12579
  if (!context || !context.tracked)
12572
12580
  return forward(operation);
12573
- var id = context.serializationKey || uuidv4();
12581
+ var id = context.serializationKey || uuidv4$1();
12574
12582
  console.debug("[apollo-tracker-link] Watching tracked query {" + operation.operationName + "#" + id + "}");
12575
12583
  // Clean context, before calling JSON.stringify (remove unused attributes)
12576
12584
  var cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -13381,7 +13389,7 @@
13381
13389
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
13382
13390
  || this.toAppError(err.networkError)
13383
13391
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
13384
- || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
13392
+ || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
13385
13393
  // If graphQL: try to convert the first error found
13386
13394
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
13387
13395
  || this.toAppError(err)
@@ -13389,7 +13397,7 @@
13389
13397
  || (err.graphQLErrors && err.graphQLErrors[0])
13390
13398
  || err;
13391
13399
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
13392
- if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13400
+ if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13393
13401
  console.error('[graphql] original error: ' + err.networkError.message);
13394
13402
  this.onNetworkError.next(error);
13395
13403
  }
@@ -13425,7 +13433,7 @@
13425
13433
  return 'ERROR.UNAUTHORIZED';
13426
13434
  case ServerErrorCodes.FORBIDDEN:
13427
13435
  return 'ERROR.FORBIDDEN';
13428
- case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
13436
+ case ErrorCodes.UNKNOWN_NETWORK_ERROR:
13429
13437
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
13430
13438
  case ServerErrorCodes.BAD_UPDATE_DATE:
13431
13439
  return 'ERROR.BAD_UPDATE_DATE';
@@ -13470,7 +13478,7 @@
13470
13478
  };
13471
13479
  return GraphqlService;
13472
13480
  }());
13473
- 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" });
13481
+ 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" });
13474
13482
  GraphqlService.decorators = [
13475
13483
  { type: i0.Injectable, args: [{
13476
13484
  providedIn: 'root'
@@ -13487,7 +13495,7 @@
13487
13495
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
13488
13496
  ]; };
13489
13497
 
13490
- var sha256 = require('hash.js/lib/hash/sha/256');
13498
+ var sha256$1 = require('hash.js/lib/hash/sha/256');
13491
13499
  var BaseGraphqlServiceOptions = /** @class */ (function () {
13492
13500
  function BaseGraphqlServiceOptions() {
13493
13501
  }
@@ -13654,8 +13662,8 @@
13654
13662
  };
13655
13663
  /* -- protected methods -- */
13656
13664
  BaseGraphqlService.prototype.computeMutableWatchQueryId = function (opts) {
13657
- var queryName = opts.queryName || sha256().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
13658
- var variablesKey = opts.variables && sha256().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
13665
+ var queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
13666
+ var variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
13659
13667
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
13660
13668
  };
13661
13669
  BaseGraphqlService.prototype.findMutableWatchQueries = function (opts) {
@@ -13721,17 +13729,17 @@
13721
13729
  /* ------------------------------------
13722
13730
  * GraphQL queries
13723
13731
  * ------------------------------------*/
13724
- var Fragments$1 = {
13725
- 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 id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }\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 id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }\n "])))
13732
+ var Fragments = {
13733
+ 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 id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }\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 id\n locale\n latLongFormat\n content\n nonce\n updateDate\n __typename\n }\n department {\n id\n label\n name\n __typename\n }\n __typename\n }\n "])))
13726
13734
  };
13727
13735
  // Load account query
13728
- var LoadQuery$1 = core.gql(templateObject_2$4 || (templateObject_2$4 = __makeTemplateObject(["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n"], ["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n"])), Fragments$1.account);
13736
+ var LoadQuery = core.gql(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n"], ["\n query Account {\n data: account {\n ...AccountFragment\n }\n }\n ", "\n"])), Fragments.account);
13729
13737
  // Check email query
13730
- var IsEmailExistsQuery = core.gql(templateObject_3$3 || (templateObject_3$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"])));
13738
+ var IsEmailExistsQuery = core.gql(templateObject_3 || (templateObject_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"])));
13731
13739
  // Save (create or update) account mutation
13732
- var SaveMutation$1 = core.gql(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject(["\n mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"], ["\n mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"])), Fragments$1.account);
13740
+ var SaveMutation = core.gql(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"], ["\n mutation SaveAccount($data:AccountVOInput){\n data: saveAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"])), Fragments.account);
13733
13741
  // Create account mutation
13734
- var CreateMutation = core.gql(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject(["\n mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"], ["\n mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"])), Fragments$1.account);
13742
+ var CreateMutation = core.gql(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"], ["\n mutation CreateAccount($data:AccountVOInput){\n data: createAccount(account: $data){\n ...AccountFragment\n }\n }\n ", "\n"])), Fragments.account);
13735
13743
  // Sent confirmation email
13736
13744
  var SendConfirmEmailMutation = core.gql(templateObject_6 || (templateObject_6 = __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"])));
13737
13745
  // Confirm account email
@@ -14130,7 +14138,7 @@
14130
14138
  error_3 = _b.sent();
14131
14139
  console.error(error_3);
14132
14140
  this.resetData();
14133
- throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
14141
+ throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
14134
14142
  case 4:
14135
14143
  // Store pubkey+keypair
14136
14144
  this.data.pubkey = Base58.encode(keypair.publicKey);
@@ -14166,7 +14174,7 @@
14166
14174
  return [3 /*break*/, 18];
14167
14175
  case 11:
14168
14176
  err_1 = _b.sent();
14169
- if (!(err_1 && +(err_1.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
14177
+ if (!(err_1 && +(err_1.code) === ErrorCodes.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
14170
14178
  if (!(data.username.indexOf('@') !== -1)) return [3 /*break*/, 16];
14171
14179
  isEmailExists = void 0;
14172
14180
  _b.label = 12;
@@ -14182,12 +14190,12 @@
14182
14190
  case 15:
14183
14191
  // Email not exists (no account)
14184
14192
  if (!isEmailExists) {
14185
- throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
14193
+ throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
14186
14194
  }
14187
14195
  _b.label = 16;
14188
14196
  case 16:
14189
14197
  // Email exists, so error = 'bad password'
14190
- throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
14198
+ throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
14191
14199
  case 17: throw err_1; // resend the first error
14192
14200
  case 18:
14193
14201
  _b.trys.push([18, 20, , 21]);
@@ -14359,8 +14367,8 @@
14359
14367
  _b.label = 3;
14360
14368
  case 3: return [3 /*break*/, 6];
14361
14369
  case 4: return [4 /*yield*/, this.graphql.query({
14362
- query: LoadQuery$1,
14363
- error: { code: ErrorCodes$2.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
14370
+ query: LoadQuery,
14371
+ error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
14364
14372
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
14365
14373
  })];
14366
14374
  case 5:
@@ -14398,7 +14406,7 @@
14398
14406
  case 1:
14399
14407
  isEmailExists = _b.sent();
14400
14408
  if (isEmailExists) {
14401
- throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14409
+ throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14402
14410
  }
14403
14411
  return [2 /*return*/];
14404
14412
  }
@@ -14448,7 +14456,7 @@
14448
14456
  locale: locale
14449
14457
  },
14450
14458
  error: {
14451
- code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
14459
+ code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
14452
14460
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
14453
14461
  }
14454
14462
  })];
@@ -14471,7 +14479,7 @@
14471
14479
  code: code
14472
14480
  },
14473
14481
  error: {
14474
- code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
14482
+ code: ErrorCodes.CONFIRM_EMAIL_FAILED,
14475
14483
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
14476
14484
  }
14477
14485
  })];
@@ -14493,7 +14501,7 @@
14493
14501
  interval: 10
14494
14502
  },
14495
14503
  error: {
14496
- code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
14504
+ code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
14497
14505
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
14498
14506
  }
14499
14507
  }).subscribe({
@@ -14639,7 +14647,7 @@
14639
14647
  throw error_6;
14640
14648
  console.error(error_6);
14641
14649
  throw {
14642
- code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
14650
+ code: ErrorCodes.LOAD_ACCOUNT_ERROR,
14643
14651
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
14644
14652
  };
14645
14653
  case 4: return [2 /*return*/];
@@ -14813,7 +14821,7 @@
14813
14821
  case 1:
14814
14822
  existingAccount = _b.sent();
14815
14823
  if (!existingAccount || !existingAccount.updateDate) {
14816
- throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14824
+ throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14817
14825
  }
14818
14826
  this.copyIdAndUpdateDate(existingAccount, account);
14819
14827
  _b.label = 2;
@@ -14822,10 +14830,10 @@
14822
14830
  // User not allow to change his profiles
14823
14831
  delete json.profiles;
14824
14832
  return [4 /*yield*/, this.graphql.mutate({
14825
- mutation: isNew ? CreateMutation : SaveMutation$1,
14833
+ mutation: isNew ? CreateMutation : SaveMutation,
14826
14834
  variables: { data: json },
14827
14835
  error: {
14828
- code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
14836
+ code: ErrorCodes.SAVE_ACCOUNT_ERROR,
14829
14837
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
14830
14838
  }
14831
14839
  })];
@@ -14853,7 +14861,7 @@
14853
14861
  if (counter > 4) {
14854
14862
  if (this._debug)
14855
14863
  console.debug("[account] Failed to authentication on pod (after " + counter + " attempts)");
14856
- throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14864
+ throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14857
14865
  }
14858
14866
  if (!token) return [3 /*break*/, 2];
14859
14867
  return [4 /*yield*/, this.graphql.query({
@@ -14862,7 +14870,7 @@
14862
14870
  token: token
14863
14871
  },
14864
14872
  error: {
14865
- code: ErrorCodes$2.UNAUTHORIZED,
14873
+ code: ErrorCodes.UNAUTHORIZED,
14866
14874
  message: 'ERROR.UNAUTHORIZED'
14867
14875
  },
14868
14876
  fetchPolicy: 'no-cache'
@@ -14879,7 +14887,7 @@
14879
14887
  _b.label = 2;
14880
14888
  case 2:
14881
14889
  challengeError = {
14882
- code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
14890
+ code: ErrorCodes.AUTH_CHALLENGE_ERROR,
14883
14891
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
14884
14892
  };
14885
14893
  return [4 /*yield*/, this.graphql.query({
@@ -14921,7 +14929,7 @@
14921
14929
  };
14922
14930
  return AccountService;
14923
14931
  }(BaseGraphqlService));
14924
- 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(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
14932
+ 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(ENVIRONMENT)); }, token: AccountService, providedIn: "root" });
14925
14933
  AccountService.decorators = [
14926
14934
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
14927
14935
  ];
@@ -14934,7 +14942,7 @@
14934
14942
  { type: FileService },
14935
14943
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
14936
14944
  ]; };
14937
- 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;
14945
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
14938
14946
 
14939
14947
  var Software_1, Configuration_1;
14940
14948
  // @dynamic
@@ -15186,13 +15194,13 @@
15186
15194
  /* ------------------------------------
15187
15195
  * GraphQL queries
15188
15196
  * ------------------------------------*/
15189
- var Fragments = {
15190
- 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 "])))
15197
+ var Fragments$1 = {
15198
+ 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 "])))
15191
15199
  };
15192
- 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);
15200
+ 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);
15193
15201
  // Save (create or update) account mutation
15194
- 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);
15195
- 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"])));
15202
+ var SaveMutation$1 = 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);
15203
+ 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"])));
15196
15204
  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"])));
15197
15205
  var APP_CONFIG_OPTIONS = new i0.InjectionToken('defaultOptions');
15198
15206
  var ConfigService = /** @class */ (function (_super) {
@@ -15285,12 +15293,12 @@
15285
15293
  case 0:
15286
15294
  now = Date.now();
15287
15295
  console.debug('[config] Loading Pod configuration...');
15288
- query = opts && opts.query || LoadQuery;
15296
+ query = opts && opts.query || LoadQuery$1;
15289
15297
  variables = opts && opts.variables || undefined;
15290
15298
  return [4 /*yield*/, this.graphql.query({
15291
15299
  query: query,
15292
15300
  variables: variables,
15293
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15301
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15294
15302
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
15295
15303
  })];
15296
15304
  case 1:
@@ -15324,12 +15332,12 @@
15324
15332
  console.debug('[config] Saving Pod configuration...', config);
15325
15333
  json = config.asObject();
15326
15334
  return [4 /*yield*/, this.graphql.mutate({
15327
- mutation: SaveMutation,
15335
+ mutation: SaveMutation$1,
15328
15336
  variables: {
15329
15337
  data: json
15330
15338
  },
15331
15339
  error: {
15332
- code: ErrorCodes$2.SAVE_CONFIG_ERROR,
15340
+ code: ErrorCodes.SAVE_CONFIG_ERROR,
15333
15341
  message: 'ERROR.SAVE_CONFIG_ERROR'
15334
15342
  }
15335
15343
  })];
@@ -15364,7 +15372,7 @@
15364
15372
  return [4 /*yield*/, this.graphql.query({
15365
15373
  query: CacheStatistics,
15366
15374
  variables: null,
15367
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15375
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15368
15376
  fetchPolicy: 'network-only'
15369
15377
  })];
15370
15378
  case 1:
@@ -15388,7 +15396,7 @@
15388
15396
  return [4 /*yield*/, this.graphql.query({
15389
15397
  query: ClearCache,
15390
15398
  variables: variables,
15391
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15399
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15392
15400
  fetchPolicy: 'network-only'
15393
15401
  })];
15394
15402
  case 1:
@@ -15589,7 +15597,7 @@
15589
15597
  };
15590
15598
  return ConfigService;
15591
15599
  }(BaseGraphqlService));
15592
- 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(ENVIRONMENT), i0__namespace.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
15600
+ 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(ENVIRONMENT), i0.ɵɵinject(APP_CONFIG_OPTIONS, 8)); }, token: ConfigService, providedIn: "root" });
15593
15601
  ConfigService.decorators = [
15594
15602
  { type: i0.Injectable, args: [{
15595
15603
  providedIn: 'root',
@@ -15607,9 +15615,9 @@
15607
15615
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] },
15608
15616
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_CONFIG_OPTIONS,] }] }
15609
15617
  ]; };
15610
- var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2, templateObject_5$1;
15618
+ var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
15611
15619
 
15612
- var moment$2 = momentImported__namespace;
15620
+ var moment$4 = momentImported__namespace;
15613
15621
  var PlatformService = /** @class */ (function () {
15614
15622
  function PlatformService(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser) {
15615
15623
  this.platform = platform;
@@ -15785,16 +15793,16 @@
15785
15793
  }
15786
15794
  // config moment lib
15787
15795
  try {
15788
- moment$2.locale(event.lang);
15796
+ moment$4.locale(event.lang);
15789
15797
  console.debug('[platform] Use locale {' + event.lang + '}');
15790
15798
  }
15791
15799
  // If error, fallback to en
15792
15800
  catch (err) {
15793
- moment$2.locale('en');
15801
+ moment$4.locale('en');
15794
15802
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
15795
15803
  }
15796
15804
  // Config date adapter
15797
- _this.dateAdapter.setLocale(moment$2.locale());
15805
+ _this.dateAdapter.setLocale(moment$4.locale());
15798
15806
  }
15799
15807
  });
15800
15808
  this.settings.onChange.subscribe(function (data) {
@@ -15979,7 +15987,7 @@
15979
15987
  };
15980
15988
  return PlatformService;
15981
15989
  }());
15982
- 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)); }, token: PlatformService, providedIn: "root" });
15990
+ 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)); }, token: PlatformService, providedIn: "root" });
15983
15991
  PlatformService.decorators = [
15984
15992
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
15985
15993
  ];
@@ -16076,7 +16084,7 @@
16076
16084
  };
16077
16085
  return MatStepperI18n;
16078
16086
  }(stepper.MatStepperIntl));
16079
- MatStepperI18n.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
16087
+ MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
16080
16088
  MatStepperI18n.decorators = [
16081
16089
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
16082
16090
  ];
@@ -17268,7 +17276,7 @@
17268
17276
  return 1;
17269
17277
  }
17270
17278
  }
17271
- var ɵ0$1 = function (defaultStateSize) { return [
17279
+ var ɵ0$9 = function (defaultStateSize) { return [
17272
17280
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
17273
17281
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
17274
17282
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -17276,7 +17284,7 @@
17276
17284
  var SCALE_OPTIONS_DEFAULT = {
17277
17285
  startColor: rgbArrayMap.red,
17278
17286
  startStates: [0, 2, 3],
17279
- startStepsFn: ɵ0$1
17287
+ startStepsFn: ɵ0$9
17280
17288
  };
17281
17289
  /**
17282
17290
  * Internal function, that create a colors scale, using iteration
@@ -17368,24 +17376,24 @@
17368
17376
  return result;
17369
17377
  }
17370
17378
 
17371
- var EntityTestClass$1 = /** @class */ (function () {
17379
+ var EntityTestClass = /** @class */ (function () {
17372
17380
  function EntityTestClass() {
17373
17381
  }
17374
17382
  return EntityTestClass;
17375
17383
  }());
17376
- var FAKE_ENTITIES$1 = [
17384
+ var FAKE_ENTITIES = [
17377
17385
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
17378
17386
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
17379
17387
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
17380
17388
  ];
17381
- function deepCopy$1(values, size) {
17389
+ function deepCopy(values, size) {
17382
17390
  if (isNil(size)) {
17383
- return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
17391
+ return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
17384
17392
  }
17385
17393
  var result = [];
17386
17394
  var i = 1;
17387
17395
  while (result.length < size) {
17388
- result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
17396
+ result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
17389
17397
  var name = entity.name + ' #' + i;
17390
17398
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
17391
17399
  }));
@@ -17395,7 +17403,7 @@
17395
17403
  var AutocompleteTestPage = /** @class */ (function () {
17396
17404
  function AutocompleteTestPage(formBuilder) {
17397
17405
  this.formBuilder = formBuilder;
17398
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
17406
+ this._items = deepCopy(FAKE_ENTITIES, 100);
17399
17407
  this.$items = new rxjs.BehaviorSubject(undefined);
17400
17408
  this.autocompleteFields = new MatAutocompleteConfigHolder();
17401
17409
  this.memoryHide = false;
@@ -17440,7 +17448,7 @@
17440
17448
  });
17441
17449
  // From items
17442
17450
  this.autocompleteFields.add('entity-items-large', {
17443
- items: FAKE_ENTITIES$1.slice(),
17451
+ items: FAKE_ENTITIES.slice(),
17444
17452
  attributes: ['label', 'name', 'description', 'comments'],
17445
17453
  displayWith: this.entityToString
17446
17454
  });
@@ -17453,12 +17461,12 @@
17453
17461
  var _this = this;
17454
17462
  return __generator(this, function (_a) {
17455
17463
  data = {
17456
- entity: deepCopy$1(FAKE_ENTITIES$1)[0],
17464
+ entity: deepCopy(FAKE_ENTITIES)[0],
17457
17465
  // This item is NOT in the items list => i should be displayed anyway
17458
17466
  missingEntity: {
17459
17467
  id: -1, label: '??', name: 'Missing item'
17460
17468
  },
17461
- disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
17469
+ disableEntity: deepCopy(FAKE_ENTITIES)[2]
17462
17470
  };
17463
17471
  this.form.setValue(data);
17464
17472
  // Load observables
@@ -17544,7 +17552,7 @@
17544
17552
  AutocompleteTestPage.decorators = [
17545
17553
  { type: i0.Component, args: [{
17546
17554
  selector: 'app-autocomplete-test',
17547
- 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 class=\"ion-padding\">\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><ion-col><ion-text><h4>Debug memory leak</h4></ion-text></ion-col></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 [compareWith]=\"compareWithFn\"\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><pre>mobile: true, suggestFn: (searchText, filter) =&gt; any[]</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-suggestFn')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\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><pre>mobile: true, 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 [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\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><pre>mobile: true, 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=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\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 [compareWith]=\"compareWithFn\"\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><pre></pre></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 [compareWith]=\"compareWithFn\"\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><pre>class=\"min-width-large\"</pre></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 [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-large]'\"\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><ion-text><h4>Desktop mode</h4></ion-text></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;\nsuggestLengthThreshold: '3'</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-filter')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\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><pre>items: [], value: {{stringify(form.controls.entity.value)}}</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-array-1]'\"\n [compareWith]=\"compareWithFn\"\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><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\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><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=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [compareWith]=\"compareWithFn\"\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><pre>class: 'mat-autocomplete-panel-full-size'</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 [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\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 [compareWith]=\"compareWithFn\"\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 [compareWith]=\"compareWithFn\"\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><pre>class=\"mat-autocomplete-panel-full-size\"</pre></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 [compareWith]=\"compareWithFn\"\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><pre>panelWidth: string</pre></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 [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"
17555
+ 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 class=\"ion-padding\">\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><ion-col><ion-text><h4>Debug memory leak</h4></ion-text></ion-col></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 [compareWith]=\"compareWithFn\"\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><pre>mobile: true, suggestFn: (searchText, filter) =&gt; any[]</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-suggestFn')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\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><pre>mobile: true, 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 [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\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><pre>mobile: true, 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=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [mobile]=\"true\"\n [compareWith]=\"compareWithFn\"\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 [compareWith]=\"compareWithFn\"\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><pre></pre></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 [compareWith]=\"compareWithFn\"\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><pre>class=\"min-width-large\"</pre></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 [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-mobile-large]'\"\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><ion-text><h4>Desktop mode</h4></ion-text></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;\nsuggestLengthThreshold: '3'</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-filter')\"\n [mobile]=\"false\"\n [compareWith]=\"compareWithFn\"\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><pre>items: [], value: {{stringify(form.controls.entity.value)}}</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-array-1]'\"\n [compareWith]=\"compareWithFn\"\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><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\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><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=\"missingEntity\"\n [config]=\"autocompleteFields.get('entity-$items')\"\n [compareWith]=\"compareWithFn\"\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><pre>class: 'mat-autocomplete-panel-full-size'</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 [mobile]=\"false\"\n [class]=\"'mat-autocomplete-panel-full-size'\"\n [compareWith]=\"compareWithFn\"\n [matAutocompletePosition]=\"'above'\"\n [logPrefix]=\"'[combo-desktop-full-size]'\"\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 [compareWith]=\"compareWithFn\"\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 [compareWith]=\"compareWithFn\"\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><pre>class=\"mat-autocomplete-panel-full-size\"</pre></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 [compareWith]=\"compareWithFn\"\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><pre>panelWidth: string</pre></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 [compareWith]=\"compareWithFn\"\n [logPrefix]=\"'[combo-desktop-large]'\"\n ></mat-autocomplete-field>\n </ion-card-content>\n </ion-card>\n </ion-col>\n </ion-row>\n\n\n\n\n </ion-grid>\n\n </form>\n\n</ion-content>\n"
17548
17556
  },] }
17549
17557
  ];
17550
17558
  AutocompleteTestPage.ctorParameters = function () { return [
@@ -17656,13 +17664,13 @@
17656
17664
  { type: Array, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_TESTING_PAGES,] }] }
17657
17665
  ]; };
17658
17666
 
17659
- var moment$1 = momentImported__namespace;
17667
+ var moment$5 = momentImported__namespace;
17660
17668
  var SwipeTestPage = /** @class */ (function () {
17661
17669
  function SwipeTestPage(formBuilder, dateFormatPipe) {
17662
17670
  this.formBuilder = formBuilder;
17663
17671
  this.dateFormatPipe = dateFormatPipe;
17664
17672
  this.$dates = new rxjs.BehaviorSubject(undefined);
17665
- this._today = moment$1().startOf('day');
17673
+ this._today = moment$5().startOf('day');
17666
17674
  this.form = formBuilder.group({
17667
17675
  empty: [null, i1.Validators.required],
17668
17676
  date: [null, i1.Validators.compose([i1.Validators.required, SharedValidators.validDate])],
@@ -17676,7 +17684,7 @@
17676
17684
  var _this = this;
17677
17685
  var dates = [];
17678
17686
  for (var d = 0; d < 7; d++) {
17679
- dates[d] = moment$1(this._today).add(d - 3, 'day');
17687
+ dates[d] = moment$5(this._today).add(d - 3, 'day');
17680
17688
  }
17681
17689
  this.$dates.next(dates);
17682
17690
  this.loadData();
@@ -18359,7 +18367,7 @@
18359
18367
  return FormArrayHelper;
18360
18368
  }());
18361
18369
 
18362
- var moment = momentImported__namespace;
18370
+ var moment$6 = momentImported__namespace;
18363
18371
  var DateTimeTestPage = /** @class */ (function () {
18364
18372
  function DateTimeTestPage(platform, formBuilder, cd) {
18365
18373
  this.platform = platform;
@@ -18394,7 +18402,7 @@
18394
18402
  var now, data;
18395
18403
  var _this = this;
18396
18404
  return __generator(this, function (_a) {
18397
- now = moment();
18405
+ now = moment$6();
18398
18406
  data = {
18399
18407
  empty: toDateISOString(now.clone().add(2, 'hours')),
18400
18408
  enable: toDateISOString(now),
@@ -18458,23 +18466,23 @@
18458
18466
  { type: i0.ChangeDetectorRef }
18459
18467
  ]; };
18460
18468
 
18461
- var EntityTestClass = /** @class */ (function () {
18469
+ var EntityTestClass$1 = /** @class */ (function () {
18462
18470
  function EntityTestClass() {
18463
18471
  }
18464
18472
  return EntityTestClass;
18465
18473
  }());
18466
- var FAKE_ENTITIES = [
18474
+ var FAKE_ENTITIES$1 = [
18467
18475
  { id: 1, label: 'AAA', name: 'Item A' },
18468
18476
  { id: 2, label: 'BBB', name: 'Item B' },
18469
18477
  { id: 3, label: 'CCC', name: 'Item C' }
18470
18478
  ];
18471
- function deepCopy(values) {
18472
- return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
18479
+ function deepCopy$1(values) {
18480
+ return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
18473
18481
  }
18474
18482
  var ChipsTestPage = /** @class */ (function () {
18475
18483
  function ChipsTestPage(formBuilder) {
18476
18484
  this.formBuilder = formBuilder;
18477
- this._items = deepCopy(FAKE_ENTITIES);
18485
+ this._items = deepCopy$1(FAKE_ENTITIES$1);
18478
18486
  this._$items = new rxjs.BehaviorSubject(undefined);
18479
18487
  this.autocompleteFields = new MatAutocompleteConfigHolder();
18480
18488
  this.form = formBuilder.group({
@@ -18494,7 +18502,7 @@
18494
18502
  });
18495
18503
  // From items
18496
18504
  this.autocompleteFields.add('entity-items', {
18497
- items: FAKE_ENTITIES.slice(),
18505
+ items: FAKE_ENTITIES$1.slice(),
18498
18506
  attributes: ['label', 'name'],
18499
18507
  displayWith: this.entityToString
18500
18508
  });
@@ -18517,8 +18525,8 @@
18517
18525
  data = {
18518
18526
  entity: [],
18519
18527
  // THis item is NOT in the items list => i should be displayed anyway
18520
- entityInitial: FAKE_ENTITIES.slice(1, 2),
18521
- disableEntity: FAKE_ENTITIES.slice(1, 2)
18528
+ entityInitial: FAKE_ENTITIES$1.slice(1, 2),
18529
+ disableEntity: FAKE_ENTITIES$1.slice(1, 2)
18522
18530
  };
18523
18531
  this.form.setValue(data);
18524
18532
  return [2 /*return*/];
@@ -18528,7 +18536,7 @@
18528
18536
  ChipsTestPage.prototype.loadItems = function () {
18529
18537
  return __awaiter(this, void 0, void 0, function () {
18530
18538
  return __generator(this, function (_a) {
18531
- this._$items.next(deepCopy(FAKE_ENTITIES));
18539
+ this._$items.next(deepCopy$1(FAKE_ENTITIES$1));
18532
18540
  return [2 /*return*/];
18533
18541
  });
18534
18542
  });
@@ -18565,7 +18573,7 @@
18565
18573
  { type: i1.FormBuilder }
18566
18574
  ]; };
18567
18575
 
18568
- var routes$1 = [
18576
+ var routes = [
18569
18577
  {
18570
18578
  path: '',
18571
18579
  pathMatch: 'full',
@@ -18615,7 +18623,7 @@
18615
18623
  i1.ReactiveFormsModule,
18616
18624
  SharedMaterialModule,
18617
18625
  i1$2.TranslateModule.forChild(),
18618
- i3.RouterModule.forChild(routes$1)
18626
+ i3.RouterModule.forChild(routes)
18619
18627
  ],
18620
18628
  declarations: [
18621
18629
  MaterialTestingPage,
@@ -19733,7 +19741,7 @@
19733
19741
  };
19734
19742
  return UserSettingsValidatorService;
19735
19743
  }(AppValidatorService));
19736
- UserSettingsValidatorService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0__namespace.ɵɵinject(i1__namespace$6.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
19744
+ UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
19737
19745
  UserSettingsValidatorService.decorators = [
19738
19746
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19739
19747
  ];
@@ -19781,7 +19789,7 @@
19781
19789
  };
19782
19790
  return AccountValidatorService;
19783
19791
  }(AppValidatorService));
19784
- 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" });
19792
+ AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
19785
19793
  AccountValidatorService.decorators = [
19786
19794
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19787
19795
  ];
@@ -20047,6 +20055,7 @@
20047
20055
  .subscribe(function (event) { return _this.onCancel.emit(event); }));
20048
20056
  // Escape
20049
20057
  this._subscription.add(hotkeys.addShortcut({ keys: 'escape', description: 'COMMON.BTN_CLOSE', preventDefault: false })
20058
+ .pipe(operators.filter(function (e) { return !e.defaultPrevented; }))
20050
20059
  .subscribe(function (event) { return _this.onBack.emit(event); }));
20051
20060
  }
20052
20061
  FormButtonsBarComponent.prototype.ngOnDestroy = function () {
@@ -20377,7 +20386,7 @@
20377
20386
  };
20378
20387
  return LocalSettingsValidatorService;
20379
20388
  }(AppValidatorService));
20380
- 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" });
20389
+ LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
20381
20390
  LocalSettingsValidatorService.decorators = [
20382
20391
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
20383
20392
  ];
@@ -21161,7 +21170,7 @@
21161
21170
  };
21162
21171
  return IsOnFieldModePipe;
21163
21172
  }());
21164
- IsOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
21173
+ IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
21165
21174
  IsOnFieldModePipe.decorators = [
21166
21175
  { type: i0.Pipe, args: [{
21167
21176
  name: 'isOnField'
@@ -21176,7 +21185,7 @@
21176
21185
  };
21177
21186
  return IsNotOnFieldModePipe;
21178
21187
  }());
21179
- IsNotOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
21188
+ IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
21180
21189
  IsNotOnFieldModePipe.decorators = [
21181
21190
  { type: i0.Pipe, args: [{
21182
21191
  name: 'isNotOnField'
@@ -21194,7 +21203,7 @@
21194
21203
  };
21195
21204
  return PersonToStringPipe;
21196
21205
  }());
21197
- PersonToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
21206
+ PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
21198
21207
  PersonToStringPipe.decorators = [
21199
21208
  { type: i0.Pipe, args: [{
21200
21209
  name: 'personToString'
@@ -21429,7 +21438,7 @@
21429
21438
  };
21430
21439
  return IsLoginAccountPipe;
21431
21440
  }());
21432
- IsLoginAccountPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
21441
+ IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
21433
21442
  IsLoginAccountPipe.decorators = [
21434
21443
  { type: i0.Pipe, args: [{
21435
21444
  name: 'isLogin'
@@ -21444,7 +21453,7 @@
21444
21453
  };
21445
21454
  return AccountToStringPipe;
21446
21455
  }());
21447
- AccountToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
21456
+ AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
21448
21457
  AccountToStringPipe.decorators = [
21449
21458
  { type: i0.Pipe, args: [{
21450
21459
  name: 'accountToString'
@@ -21462,7 +21471,7 @@
21462
21471
  };
21463
21472
  return DepartmentToStringPipe;
21464
21473
  }());
21465
- DepartmentToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
21474
+ DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
21466
21475
  DepartmentToStringPipe.decorators = [
21467
21476
  { type: i0.Pipe, args: [{
21468
21477
  name: 'departmentToString'
@@ -21497,7 +21506,7 @@
21497
21506
  };
21498
21507
  return MenuService;
21499
21508
  }());
21500
- MenuService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
21509
+ MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
21501
21510
  MenuService.decorators = [
21502
21511
  { type: i0.Injectable, args: [{
21503
21512
  providedIn: 'root'
@@ -22076,7 +22085,7 @@
22076
22085
  };
22077
22086
  return AuthGuardService;
22078
22087
  }());
22079
- 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" });
22088
+ 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" });
22080
22089
  AuthGuardService.decorators = [
22081
22090
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22082
22091
  ];
@@ -22127,7 +22136,7 @@
22127
22136
  query: query,
22128
22137
  variables: { id: id },
22129
22138
  fetchPolicy: opts && opts.fetchPolicy || undefined,
22130
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22139
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22131
22140
  })
22132
22141
  .pipe(operators.map(function (_b) {
22133
22142
  var data = _b.data;
@@ -22149,7 +22158,7 @@
22149
22158
  query: query,
22150
22159
  variables: { id: id },
22151
22160
  fetchPolicy: opts && opts.fetchPolicy || undefined,
22152
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22161
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22153
22162
  })];
22154
22163
  case 1:
22155
22164
  data = (_b.sent()).data;
@@ -22185,7 +22194,7 @@
22185
22194
  totalFieldName: withTotal ? 'total' : undefined,
22186
22195
  insertFilterFn: filter && filter.asFilterFn(),
22187
22196
  variables: variables,
22188
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
22197
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
22189
22198
  fetchPolicy: opts && opts.fetchPolicy || undefined
22190
22199
  })
22191
22200
  .pipe(operators.map(function (_b) {
@@ -22227,7 +22236,7 @@
22227
22236
  return [4 /*yield*/, this.graphql.query({
22228
22237
  query: query,
22229
22238
  variables: variables,
22230
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
22239
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
22231
22240
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
22232
22241
  })];
22233
22242
  case 1:
@@ -22275,7 +22284,7 @@
22275
22284
  variables: {
22276
22285
  filter: filter && filter.asPodObject()
22277
22286
  },
22278
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
22287
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
22279
22288
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
22280
22289
  })];
22281
22290
  case 3:
@@ -22317,7 +22326,7 @@
22317
22326
  variables: {
22318
22327
  data: json
22319
22328
  },
22320
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22329
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22321
22330
  update: function (proxy, _b) {
22322
22331
  var data = _b.data;
22323
22332
  var savedEntities = data && data.data;
@@ -22384,7 +22393,7 @@
22384
22393
  variables: {
22385
22394
  data: json
22386
22395
  },
22387
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22396
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22388
22397
  update: function (cache, _b) {
22389
22398
  var data = _b.data;
22390
22399
  // Update entity
@@ -22442,7 +22451,7 @@
22442
22451
  refetchQueries: this.getRefetchQueriesForMutation(opts),
22443
22452
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
22444
22453
  variables: { ids: ids },
22445
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22454
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22446
22455
  update: function (cache, res) {
22447
22456
  // Remove from cache
22448
22457
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -22495,7 +22504,7 @@
22495
22504
  refetchQueries: this.getRefetchQueriesForMutation(opts),
22496
22505
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
22497
22506
  variables: { id: id },
22498
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22507
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22499
22508
  update: function (proxy, res) {
22500
22509
  // Remove from cache
22501
22510
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -22534,7 +22543,7 @@
22534
22543
  query: opts && opts.query || this.subscriptions.listenChanges,
22535
22544
  variables: variables,
22536
22545
  error: {
22537
- code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
22546
+ code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
22538
22547
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
22539
22548
  }
22540
22549
  })
@@ -22743,7 +22752,7 @@
22743
22752
  if (this._debug)
22744
22753
  invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._logTypeName + " row #" + row.id); });
22745
22754
  // Stop with an error
22746
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
22755
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
22747
22756
  }
22748
22757
  this._editingRowCount = 0;
22749
22758
  data = void 0;
@@ -23091,17 +23100,6 @@
23091
23100
  enumerable: false,
23092
23101
  configurable: true
23093
23102
  });
23094
- Object.defineProperty(AppTable.prototype, "focusColumn", {
23095
- get: function () {
23096
- return this._focusColumn;
23097
- },
23098
- // Focus manager
23099
- set: function (name) {
23100
- this._focusColumn = name;
23101
- },
23102
- enumerable: false,
23103
- configurable: true
23104
- });
23105
23103
  Object.defineProperty(AppTable.prototype, "firstUserColumn", {
23106
23104
  get: function () {
23107
23105
  return this.displayedColumns[RESERVED_START_COLUMNS.length];
@@ -23710,14 +23708,14 @@
23710
23708
  case 0:
23711
23709
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
23712
23710
  if (this.readOnly) {
23713
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23711
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23714
23712
  }
23715
23713
  this.resetError();
23716
23714
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
23717
23715
  this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
23718
23716
  previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
23719
23717
  if (!this.confirmEditCreate()) {
23720
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
23718
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
23721
23719
  }
23722
23720
  // Mark as saving
23723
23721
  this.markAsSaving();
@@ -23870,7 +23868,7 @@
23870
23868
  switch (_d.label) {
23871
23869
  case 0:
23872
23870
  if (this.readOnly) {
23873
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23871
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23874
23872
  }
23875
23873
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
23876
23874
  return [2 /*return*/, 0]; // SKip
@@ -24063,13 +24061,15 @@
24063
24061
  row = row || this.editedRow;
24064
24062
  if (!row || !row.editing)
24065
24063
  return;
24064
+ // DEBUG
24065
+ //console.debug('[app-table] Cancel the row (keydown.escape)');
24066
24066
  if (event) {
24067
24067
  // Avoid to cancel the editor
24068
24068
  event.preventDefault();
24069
24069
  event.stopPropagation();
24070
24070
  }
24071
- // If new row: delete silently
24072
- if (row.id === -1) {
24071
+ // If new row is invalid: delete silently
24072
+ if (row.id === -1 && row.validator.invalid) {
24073
24073
  this.deleteNewRow(event, row);
24074
24074
  }
24075
24075
  // If exists
@@ -24096,7 +24096,7 @@
24096
24096
  return false;
24097
24097
  }
24098
24098
  if (!row.editing && !this.loading) {
24099
- this._focusColumn = opts && opts.focusColumn || this._focusColumn;
24099
+ this.focusColumn = opts && opts.focusColumn || this.focusColumn;
24100
24100
  this._dataSource.startEdit(row);
24101
24101
  }
24102
24102
  this.editedRow = row;
@@ -25564,7 +25564,7 @@
25564
25564
  case 4:
25565
25565
  data = _b.sent();
25566
25566
  if (!data)
25567
- throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
25567
+ throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
25568
25568
  this._usageMode = this.computeUsageMode(data);
25569
25569
  return [4 /*yield*/, this.onEntityLoaded(data, opts)];
25570
25570
  case 5:
@@ -26294,10 +26294,10 @@
26294
26294
  exports.UserEventFilter = __decorate([
26295
26295
  EntityClass({ typename: 'UserEventVO' })
26296
26296
  ], exports.UserEventFilter);
26297
- 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);
26298
- 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);
26299
- 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"])));
26300
- 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);
26297
+ 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);
26298
+ 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);
26299
+ 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"])));
26300
+ 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);
26301
26301
  var UserEventService = /** @class */ (function (_super) {
26302
26302
  __extends(UserEventService, _super);
26303
26303
  function UserEventService(graphql, accountService, network, translate, toastController, environment) {
@@ -26618,7 +26618,7 @@
26618
26618
  };
26619
26619
  return UserEventService;
26620
26620
  }(BaseGraphqlService));
26621
- 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" });
26621
+ 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" });
26622
26622
  UserEventService.decorators = [
26623
26623
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
26624
26624
  ];
@@ -26630,7 +26630,7 @@
26630
26630
  { type: i1$5.ToastController },
26631
26631
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
26632
26632
  ]; };
26633
- var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1;
26633
+ var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2;
26634
26634
 
26635
26635
  var ICONS_MAP = {
26636
26636
  DEBUG_DATA: { matIcon: 'bug_report' },
@@ -26891,16 +26891,16 @@
26891
26891
  ], exports.PersonFilter);
26892
26892
 
26893
26893
  var PersonFragments = {
26894
- 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 }"])))
26894
+ 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 }"])))
26895
26895
  };
26896
26896
  // Load persons query
26897
26897
  var PersonQueries = {
26898
- 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),
26899
- 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)
26898
+ 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),
26899
+ 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)
26900
26900
  };
26901
26901
  var PersonMutations = {
26902
- 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),
26903
- 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 }"])))
26902
+ 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),
26903
+ 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 }"])))
26904
26904
  };
26905
26905
  var PersonService = /** @class */ (function (_super_1) {
26906
26906
  __extends(PersonService, _super_1);
@@ -27023,7 +27023,7 @@
27023
27023
  };
27024
27024
  return PersonService;
27025
27025
  }(BaseEntityService));
27026
- 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" });
27026
+ 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" });
27027
27027
  PersonService.decorators = [
27028
27028
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
27029
27029
  ];
@@ -27033,7 +27033,7 @@
27033
27033
  { type: NetworkService },
27034
27034
  { type: EntitiesStorage }
27035
27035
  ]; };
27036
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
27036
+ var templateObject_1$4, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2;
27037
27037
 
27038
27038
  var PersonValidatorService = /** @class */ (function () {
27039
27039
  function PersonValidatorService(formBuilder, accountValidatorService) {
@@ -27056,7 +27056,7 @@
27056
27056
  };
27057
27057
  return PersonValidatorService;
27058
27058
  }());
27059
- 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" });
27059
+ PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
27060
27060
  PersonValidatorService.decorators = [
27061
27061
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
27062
27062
  ];
@@ -27228,7 +27228,7 @@
27228
27228
  ],
27229
27229
  animations: [slideUpDownAnimation],
27230
27230
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
27231
- styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:calc(100%)}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
27231
+ styles: [".mat-expansion-panel{margin-bottom:5px}.mat-expansion-panel .form-container mat-form-field{width:100%}.mat-expansion-panel mat-action-row ion-label{line-height:36px}.table-container{height:100%}.mat-table .mat-cell .avatar{height:40px;width:40px;margin:2px 0 0;background-size:cover;background-repeat:no-repeat;background-position:50%}.mat-table .mat-column-avatar{min-width:50px}.mat-table .mat-column-profile{min-width:110px}.mat-table .mat-column-status{min-width:130px}.mat-table .mat-column-department{min-width:150px}"]
27232
27232
  },] }
27233
27233
  ];
27234
27234
  UsersPage.ctorParameters = function () { return [
@@ -27277,16 +27277,16 @@
27277
27277
  ];
27278
27278
  AdminModule.ctorParameters = function () { return []; };
27279
27279
 
27280
- var ɵ0 = {
27280
+ var ɵ0$a = {
27281
27281
  profile: 'ADMIN'
27282
27282
  };
27283
- var routes = [
27283
+ var routes$1 = [
27284
27284
  {
27285
27285
  path: 'users',
27286
27286
  pathMatch: 'full',
27287
27287
  component: UsersPage,
27288
27288
  canActivate: [AuthGuardService],
27289
- data: ɵ0
27289
+ data: ɵ0$a
27290
27290
  }
27291
27291
  ];
27292
27292
  var AdminRoutingModule = /** @class */ (function () {
@@ -27299,13 +27299,13 @@
27299
27299
  imports: [
27300
27300
  SharedRoutingModule,
27301
27301
  AdminModule,
27302
- i3.RouterModule.forChild(routes)
27302
+ i3.RouterModule.forChild(routes$1)
27303
27303
  ],
27304
27304
  exports: [i3.RouterModule]
27305
27305
  },] }
27306
27306
  ];
27307
27307
 
27308
- var ErrorCodes = {
27308
+ var ErrorCodes$2 = {
27309
27309
  LOAD_PERSONS_ERROR: 100,
27310
27310
  SAVE_PERSONS_ERROR: 101,
27311
27311
  DELETE_PERSONS_ERROR: 102,
@@ -27414,7 +27414,7 @@
27414
27414
  exports.EntityStore = EntityStore;
27415
27415
  exports.EntityUtils = EntityUtils;
27416
27416
  exports.Environment = Environment;
27417
- exports.ErrorCodes = ErrorCodes;
27417
+ exports.ErrorCodes = ErrorCodes$2;
27418
27418
  exports.EvenPipe = EvenPipe;
27419
27419
  exports.FileService = FileService;
27420
27420
  exports.FileSizePipe = FileSizePipe;
@@ -27422,7 +27422,7 @@
27422
27422
  exports.FormButtonsBarComponent = FormButtonsBarComponent;
27423
27423
  exports.FormButtonsBarToken = FormButtonsBarToken;
27424
27424
  exports.FormFieldValuesHolder = FormFieldValuesHolder;
27425
- exports.Fragments = Fragments;
27425
+ exports.Fragments = Fragments$1;
27426
27426
  exports.GraphqlService = GraphqlService;
27427
27427
  exports.HAMMER_PRESS_TIME = HAMMER_PRESS_TIME;
27428
27428
  exports.HAMMER_TAP_TIME = HAMMER_TAP_TIME;