@sumaris-net/ngx-components 0.22.0 → 0.23.2-beta

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,11 @@
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));
516
+ // const sortAttribute = keys && keys[0]
517
+ // if (sortAttribute) {
518
+ // items = sort(items, sortAttribute);
519
+ // }
543
520
  // Truncate if need
544
521
  var total = (items === null || items === void 0 ? void 0 : items.length) || 0;
545
522
  if (opts) {
@@ -1162,19 +1139,19 @@
1162
1139
  };
1163
1140
  return MatAutocompleteConfigHolder;
1164
1141
  }());
1165
- var DEFAULT_VALUE_ACCESSOR$6 = {
1142
+ var DEFAULT_VALUE_ACCESSOR = {
1166
1143
  provide: i1.NG_VALUE_ACCESSOR,
1167
1144
  useExisting: i0.forwardRef(function () { return MatAutocompleteField; }),
1168
1145
  multi: true
1169
1146
  };
1170
- var noop$7 = function () { };
1171
- var ɵ0$a = noop$7;
1147
+ var noop = function () { };
1148
+ var ɵ0 = noop;
1172
1149
  var MatAutocompleteField = /** @class */ (function () {
1173
1150
  function MatAutocompleteField(cd, formGroupDir) {
1174
1151
  this.cd = cd;
1175
1152
  this.formGroupDir = formGroupDir;
1176
- this._onChangeCallback = noop$7;
1177
- this._onTouchedCallback = noop$7;
1153
+ this._onChangeCallback = noop;
1154
+ this._onTouchedCallback = noop;
1178
1155
  this._subscription = new rxjs.Subscription();
1179
1156
  this._filter$ = new rxjs.BehaviorSubject(undefined);
1180
1157
  this._reload$ = new rxjs.Subject();
@@ -1202,6 +1179,8 @@
1202
1179
  this.onBlur = new i0.EventEmitter();
1203
1180
  this.onFocus = new i0.EventEmitter();
1204
1181
  this.onDropButtonClick = new i0.EventEmitter(true);
1182
+ this.onKeydownEscape = new i0.EventEmitter();
1183
+ this.onKeyupEnter = new i0.EventEmitter();
1205
1184
  }
1206
1185
  Object.defineProperty(MatAutocompleteField.prototype, "itemCount", {
1207
1186
  get: function () {
@@ -1356,7 +1335,7 @@
1356
1335
  // No suggestFn: filter on the given items
1357
1336
  if (!this.suggestFn) {
1358
1337
  var suggestFromArrayFn_1 = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
1359
- return __generator(this, function (_c) {
1338
+ return __generator(this, function (_e) {
1360
1339
  // DEBUG
1361
1340
  //console.debug(this.logPrefix + " Calling suggestFromArray with value=", value);
1362
1341
  return [2 /*return*/, suggestFromArray(this.$inputItems.value, value, Object.assign({ searchAttributes: this.displayAttributes }, filter))];
@@ -1364,8 +1343,8 @@
1364
1343
  }); };
1365
1344
  // Wait (once) that items are loaded, then call suggest from array fn
1366
1345
  this.suggestFn = function (value, filter) { return __awaiter(_this, void 0, void 0, function () {
1367
- return __generator(this, function (_c) {
1368
- switch (_c.label) {
1346
+ return __generator(this, function (_e) {
1347
+ switch (_e.label) {
1369
1348
  case 0:
1370
1349
  if (!isNil(this.$inputItems.value)) return [3 /*break*/, 2];
1371
1350
  // DEBUG
@@ -1374,8 +1353,8 @@
1374
1353
  case 1:
1375
1354
  // DEBUG
1376
1355
  //console.debug(this.logPrefix + " Waiting items to be set...");
1377
- _c.sent();
1378
- _c.label = 2;
1356
+ _e.sent();
1357
+ _e.label = 2;
1379
1358
  case 2:
1380
1359
  this.suggestFn = suggestFromArrayFn_1;
1381
1360
  return [2 /*return*/, this.suggestFn(value, filter)]; // Loop
@@ -1494,6 +1473,15 @@
1494
1473
  .pipe(operators.distinctUntilChanged())
1495
1474
  // Update component state
1496
1475
  .subscribe(function () { return _this.checkIfTouched(); }));
1476
+ this._subscription.add(this.onKeydownEscape.subscribe(function (event) {
1477
+ if (_this.isOpen) {
1478
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
1479
+ event === null || event === void 0 ? void 0 : event.preventDefault();
1480
+ // DEBUG
1481
+ //console.debug(this.logPrefix + " Closing the panel (keydown.escape)");
1482
+ _this.closePanel();
1483
+ }
1484
+ }));
1497
1485
  };
1498
1486
  MatAutocompleteField.prototype.ngOnDestroy = function () {
1499
1487
  this._subscription.unsubscribe();
@@ -1505,6 +1493,8 @@
1505
1493
  this.onClick.complete();
1506
1494
  this.onBlur.complete();
1507
1495
  this.onFocus.complete();
1496
+ this.onKeydownEscape.complete();
1497
+ this.onKeyupEnter.complete();
1508
1498
  this._implicitValue = undefined;
1509
1499
  this.formControl = null;
1510
1500
  this.displayWith = null;
@@ -1518,8 +1508,8 @@
1518
1508
  this._onTouchedCallback = null;
1519
1509
  this._onFetchMoreCallback = null;
1520
1510
  // Destroy the 'autocomplete' instance, to avoid memory leak
1521
- if (this.matAutoComplete) {
1522
- this.matAutoComplete.ngOnDestroy();
1511
+ if (this.matAutocomplete) {
1512
+ this.matAutocomplete.ngOnDestroy();
1523
1513
  }
1524
1514
  };
1525
1515
  /**
@@ -1545,8 +1535,8 @@
1545
1535
  };
1546
1536
  MatAutocompleteField.prototype.setDisabledState = function (isDisabled) {
1547
1537
  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 ?');
1538
+ if (isDisabled && ((_a = this.matAutocomplete) === null || _a === void 0 ? void 0 : _a.isOpen)) {
1539
+ this.closePanel();
1550
1540
  }
1551
1541
  this.cd.markForCheck();
1552
1542
  };
@@ -1645,7 +1635,7 @@
1645
1635
  };
1646
1636
  MatAutocompleteField.prototype._initAutocompleteInfiniteScroll = function (threshold) {
1647
1637
  var _this = this;
1648
- if (!this.matAutoComplete)
1638
+ if (!this.matAutocomplete)
1649
1639
  return; // Skip
1650
1640
  // DEBUG
1651
1641
  //console.debug(this.logPrefix + ' Init autocomplete scroll listener');
@@ -1653,12 +1643,12 @@
1653
1643
  this._openedSubscription.unsubscribe();
1654
1644
  this._subscription.remove(this._openedSubscription);
1655
1645
  }
1656
- var opened$ = this.matAutoComplete._isOpen
1646
+ var opened$ = this.matAutocomplete._isOpen
1657
1647
  ? rxjs.timer(0)
1658
- : this.matAutoComplete.opened.pipe(operators.debounceTime(200));
1648
+ : this.matAutocomplete.opened.pipe(operators.debounceTime(200));
1659
1649
  var scrollEnd$ = opened$
1660
1650
  .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)); }));
1651
+ .pipe(operators.takeUntil(_this.matAutocomplete.closed)); }));
1662
1652
  // Trigger fetch more, end end scroll reached
1663
1653
  this._openedSubscription = scrollEnd$
1664
1654
  .subscribe(function () { return _this._fetchMore$.emit(); });
@@ -1688,15 +1678,35 @@
1688
1678
  // Register subscription
1689
1679
  this._subscription.add(this._openedSubscription);
1690
1680
  };
1681
+ Object.defineProperty(MatAutocompleteField.prototype, "isOpen", {
1682
+ get: function () {
1683
+ var _a, _b;
1684
+ return (this.searchable && ((_a = this.matAutocomplete) === null || _a === void 0 ? void 0 : _a.isOpen))
1685
+ || ((_b = this.matSelect) === null || _b === void 0 ? void 0 : _b.panelOpen)
1686
+ || false;
1687
+ },
1688
+ enumerable: false,
1689
+ configurable: true
1690
+ });
1691
+ MatAutocompleteField.prototype.closePanel = function () {
1692
+ var _a, _b, _c, _d;
1693
+ if ((_a = this.matAutocomplete) === null || _a === void 0 ? void 0 : _a.isOpen) {
1694
+ (_b = this.matAutocompleteTrigger) === null || _b === void 0 ? void 0 : _b.closePanel();
1695
+ return;
1696
+ }
1697
+ if ((_c = this.matSelect) === null || _c === void 0 ? void 0 : _c.panelOpen) {
1698
+ (_d = this.matSelect) === null || _d === void 0 ? void 0 : _d.close();
1699
+ }
1700
+ };
1691
1701
  /* -- private method -- */
1692
1702
  MatAutocompleteField.prototype.suggest = function (value, filter) {
1693
1703
  return __awaiter(this, void 0, void 0, function () {
1694
1704
  var res, data, total, fetchMore;
1695
- return __generator(this, function (_c) {
1696
- switch (_c.label) {
1705
+ return __generator(this, function (_e) {
1706
+ switch (_e.label) {
1697
1707
  case 0: return [4 /*yield*/, this.suggestFn(value, filter)];
1698
1708
  case 1:
1699
- res = _c.sent();
1709
+ res = _e.sent();
1700
1710
  // DEBUG
1701
1711
  //console.debug(this.logPrefix + ' Filtered items by suggestFn:', value, res);
1702
1712
  if (!res) {
@@ -1723,9 +1733,9 @@
1723
1733
  };
1724
1734
  MatAutocompleteField.prototype.fetchMore = function () {
1725
1735
  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) {
1736
+ var fetchMoreFn, _e, data, total, fetchMore;
1737
+ return __generator(this, function (_f) {
1738
+ switch (_f.label) {
1729
1739
  case 0:
1730
1740
  if (!this._onFetchMoreCallback)
1731
1741
  return [2 /*return*/, []];
@@ -1733,7 +1743,7 @@
1733
1743
  this._onFetchMoreCallback = undefined;
1734
1744
  return [4 /*yield*/, fetchMoreFn()];
1735
1745
  case 1:
1736
- _c = _d.sent(), data = _c.data, total = _c.total, fetchMore = _c.fetchMore;
1746
+ _e = _f.sent(), data = _e.data, total = _e.total, fetchMore = _e.fetchMore;
1737
1747
  this._itemCount = total || this._itemCount;
1738
1748
  this._onFetchMoreCallback = fetchMore;
1739
1749
  this._moreItemsCount = Math.max(0, this._moreItemsCount - data.length); // Borne min = 0
@@ -1762,7 +1772,7 @@
1762
1772
  };
1763
1773
  MatAutocompleteField.prototype.getAutocompletePanel = function () {
1764
1774
  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;
1775
+ 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
1776
  if (!ele) {
1767
1777
  // DEBUG
1768
1778
  console.warn(this.logPrefix + ' Unable to find the autocomplete div...');
@@ -1797,8 +1807,8 @@
1797
1807
  { type: i0.Component, args: [{
1798
1808
  // eslint-disable-next-line @angular-eslint/component-selector
1799
1809
  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],
1810
+ 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",
1811
+ providers: [DEFAULT_VALUE_ACCESSOR],
1802
1812
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
1803
1813
  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
1814
  },] }
@@ -1847,9 +1857,12 @@
1847
1857
  onBlur: [{ type: i0.Output, args: ['blur',] }],
1848
1858
  onFocus: [{ type: i0.Output, args: ['focus',] }],
1849
1859
  onDropButtonClick: [{ type: i0.Output, args: ['dropButtonClick',] }],
1860
+ onKeydownEscape: [{ type: i0.Output, args: ['keydown.escape',] }],
1861
+ onKeyupEnter: [{ type: i0.Output, args: ['keyup.enter',] }],
1850
1862
  matSelect: [{ type: i0.ViewChild, args: ['matSelect',] }],
1851
1863
  matInputText: [{ type: i0.ViewChild, args: ['matInputText',] }],
1852
- matAutoComplete: [{ type: i0.ViewChild, args: ['autoComplete',] }]
1864
+ matAutocomplete: [{ type: i0.ViewChild, args: [autocomplete.MatAutocomplete,] }],
1865
+ matAutocompleteTrigger: [{ type: i0.ViewChild, args: [autocomplete.MatAutocompleteTrigger,] }]
1853
1866
  };
1854
1867
 
1855
1868
  var DateFormatPipe = /** @class */ (function () {
@@ -1873,7 +1886,7 @@
1873
1886
  };
1874
1887
  return DateFormatPipe;
1875
1888
  }());
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" });
1889
+ 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
1890
  DateFormatPipe.decorators = [
1878
1891
  { type: i0.Pipe, args: [{
1879
1892
  name: 'dateFormat'
@@ -1885,7 +1898,7 @@
1885
1898
  { type: i1$2.TranslateService }
1886
1899
  ]; };
1887
1900
 
1888
- var moment$6 = momentImported__namespace;
1901
+ var moment = momentImported__namespace;
1889
1902
  var DateDiffDurationPipe = /** @class */ (function () {
1890
1903
  function DateDiffDurationPipe(dateAdapter, translate) {
1891
1904
  var _this = this;
@@ -1902,10 +1915,10 @@
1902
1915
  return this.format(startDate, endDate);
1903
1916
  };
1904
1917
  DateDiffDurationPipe.prototype.format = function (startDate, endDate) {
1905
- var duration = moment$6.duration(endDate.diff(startDate));
1918
+ var duration = moment.duration(endDate.diff(startDate));
1906
1919
  if (duration.asMinutes() < 0)
1907
1920
  return '';
1908
- var timeDuration = moment$6(0)
1921
+ var timeDuration = moment(0)
1909
1922
  .hour(duration.hours())
1910
1923
  .minute(duration.minutes());
1911
1924
  var days = Math.floor(duration.asDays());
@@ -1913,7 +1926,7 @@
1913
1926
  };
1914
1927
  return DateDiffDurationPipe;
1915
1928
  }());
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" });
1929
+ 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
1930
  DateDiffDurationPipe.decorators = [
1918
1931
  { type: i0.Pipe, args: [{
1919
1932
  name: 'dateDiffDuration'
@@ -1935,7 +1948,7 @@
1935
1948
  };
1936
1949
  return DateFromNowPipe;
1937
1950
  }());
1938
- DateFromNowPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0__namespace.ɵɵinject(i1__namespace.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1951
+ DateFromNowPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DateFromNowPipe_Factory() { return new DateFromNowPipe(i0.ɵɵinject(i1$1.MomentDateAdapter)); }, token: DateFromNowPipe, providedIn: "root" });
1939
1952
  DateFromNowPipe.decorators = [
1940
1953
  { type: i0.Pipe, args: [{
1941
1954
  name: 'dateFromNow'
@@ -2004,7 +2017,7 @@
2004
2017
  value *= -1;
2005
2018
  }
2006
2019
  }
2007
- var degrees = roundFloat$1(value, opts.maxDecimals).toString();
2020
+ var degrees = roundFloat(value, opts.maxDecimals).toString();
2008
2021
  // Add sign
2009
2022
  var sign = negative ? '-' : '+';
2010
2023
  if (opts.placeholderChar) {
@@ -2055,7 +2068,7 @@
2055
2068
  }
2056
2069
  var degrees = Math.trunc(value);
2057
2070
  var minutes = Math.trunc((value - degrees) * 60);
2058
- var seconds = roundFloat$1(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2071
+ var seconds = roundFloat(((value - degrees) * 60 - minutes) * 60, opts.maxDecimals);
2059
2072
  while (seconds >= 60) {
2060
2073
  seconds -= 60;
2061
2074
  minutes += 1;
@@ -2123,7 +2136,7 @@
2123
2136
  }
2124
2137
  }
2125
2138
  var degrees = Math.trunc(value);
2126
- var minutes = roundFloat$1((value - degrees) * 60, opts.maxDecimals);
2139
+ var minutes = roundFloat((value - degrees) * 60, opts.maxDecimals);
2127
2140
  while (minutes >= 60) {
2128
2141
  minutes -= 60;
2129
2142
  degrees += 1;
@@ -2174,15 +2187,15 @@
2174
2187
  return NaN;
2175
2188
  }
2176
2189
  if (pattern === 'DD')
2177
- return roundFloat$1(degrees, maxDecimals);
2190
+ return roundFloat(degrees, maxDecimals);
2178
2191
  var minutes = (pattern === 'DDMMSS' || pattern === 'DDMM') && parts[1] && parseFloat(parts[1].replace(/,/g, '.')) || 0;
2179
2192
  var seconds = (pattern === 'DDMMSS') && parts[2] && parseFloat(parts[2].replace(/,/g, '.')) || 0;
2180
2193
  var direction = ((pattern === 'DDMMSS') && parts[3]) || ((pattern === 'DDMM') && parts[2]) || undefined;
2181
2194
  var sign = (direction && (direction === 's' || direction === 'S' || direction === 'w' || direction === 'W')) ? -1 : 1;
2182
2195
  degrees = sign * (degrees + minutes / 60 + seconds / (60 * 60));
2183
- return roundFloat$1(degrees, maxDecimals);
2196
+ return roundFloat(degrees, maxDecimals);
2184
2197
  }
2185
- function roundFloat$1(input, maxDecimals) {
2198
+ function roundFloat(input, maxDecimals) {
2186
2199
  if (maxDecimals > 0) {
2187
2200
  var powDecimal = Math.pow(10, maxDecimals);
2188
2201
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -2205,7 +2218,7 @@
2205
2218
  };
2206
2219
  return LatLongFormatPipe;
2207
2220
  }());
2208
- LatLongFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2221
+ LatLongFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatLongFormatPipe_Factory() { return new LatLongFormatPipe(); }, token: LatLongFormatPipe, providedIn: "root" });
2209
2222
  LatLongFormatPipe.decorators = [
2210
2223
  { type: i0.Pipe, args: [{
2211
2224
  name: 'latLongFormat'
@@ -2218,7 +2231,7 @@
2218
2231
  }
2219
2232
  return LatitudeFormatPipe;
2220
2233
  }());
2221
- LatitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2234
+ LatitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LatitudeFormatPipe_Factory() { return new LatitudeFormatPipe(); }, token: LatitudeFormatPipe, providedIn: "root" });
2222
2235
  LatitudeFormatPipe.decorators = [
2223
2236
  { type: i0.Pipe, args: [{
2224
2237
  name: 'latitudeFormat'
@@ -2231,7 +2244,7 @@
2231
2244
  }
2232
2245
  return LongitudeFormatPipe;
2233
2246
  }());
2234
- LongitudeFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2247
+ LongitudeFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function LongitudeFormatPipe_Factory() { return new LongitudeFormatPipe(); }, token: LongitudeFormatPipe, providedIn: "root" });
2235
2248
  LongitudeFormatPipe.decorators = [
2236
2249
  { type: i0.Pipe, args: [{
2237
2250
  name: 'longitudeFormat'
@@ -2254,7 +2267,7 @@
2254
2267
  };
2255
2268
  return NumberFormatPipe;
2256
2269
  }());
2257
- NumberFormatPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2270
+ NumberFormatPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function NumberFormatPipe_Factory() { return new NumberFormatPipe(); }, token: NumberFormatPipe, providedIn: "root" });
2258
2271
  NumberFormatPipe.decorators = [
2259
2272
  { type: i0.Pipe, args: [{
2260
2273
  name: 'numberFormat'
@@ -2297,7 +2310,7 @@
2297
2310
  };
2298
2311
  return HighlightPipe;
2299
2312
  }());
2300
- HighlightPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2313
+ HighlightPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function HighlightPipe_Factory() { return new HighlightPipe(); }, token: HighlightPipe, providedIn: "root" });
2301
2314
  HighlightPipe.decorators = [
2302
2315
  { type: i0.Pipe, args: [{
2303
2316
  name: 'highlight'
@@ -2365,7 +2378,7 @@
2365
2378
  { type: i0.Pipe, args: [{ name: 'fileSize' },] }
2366
2379
  ];
2367
2380
 
2368
- var moment$5 = momentImported__namespace;
2381
+ var moment$1 = momentImported__namespace;
2369
2382
  var DATE_UNIX_TIMESTAMP = 'X';
2370
2383
  var DATE_UNIX_MS_TIMESTAMP = 'x';
2371
2384
  var DateUtils = /** @class */ (function () {
@@ -2400,32 +2413,32 @@
2400
2413
  if (!value || momentImported.isMoment(value))
2401
2414
  return value;
2402
2415
  // Parse the input value, as a ISO date time
2403
- var date = moment$5(value, DATE_ISO_PATTERN);
2416
+ var date = moment$1(value, DATE_ISO_PATTERN);
2404
2417
  if (date.isValid())
2405
2418
  return date;
2406
2419
  // Not valid: trying to convert from unix timestamp
2407
2420
  if (typeof value === 'string') {
2408
2421
  console.warn('Wrong date format - Trying to convert from local time: ' + value);
2409
2422
  if (value.length === 10) {
2410
- return moment$5(value, DATE_UNIX_TIMESTAMP);
2423
+ return moment$1(value, DATE_UNIX_TIMESTAMP);
2411
2424
  }
2412
2425
  else if (value.length === 13) {
2413
- return moment$5(value, DATE_UNIX_MS_TIMESTAMP);
2426
+ return moment$1(value, DATE_UNIX_MS_TIMESTAMP);
2414
2427
  }
2415
2428
  }
2416
2429
  console.warn('Unable to parse date: ' + value);
2417
2430
  return undefined;
2418
2431
  }
2419
2432
  function fromUnixTimestamp(timeInSec) {
2420
- return moment$5(timeInSec, DATE_UNIX_TIMESTAMP);
2433
+ return moment$1(timeInSec, DATE_UNIX_TIMESTAMP);
2421
2434
  }
2422
2435
  function fromUnixMsTimestamp(timeInMs) {
2423
- return moment$5(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2436
+ return moment$1(timeInMs, DATE_UNIX_MS_TIMESTAMP);
2424
2437
  }
2425
2438
  function toDuration(value, unit) {
2426
2439
  if (!value)
2427
2440
  return undefined;
2428
- var duration = moment$5.duration(value, unit);
2441
+ var duration = moment$1.duration(value, unit);
2429
2442
  // fix 990+ ms
2430
2443
  if (duration.milliseconds() >= 990) {
2431
2444
  duration.add(1000 - duration.milliseconds(), 'ms');
@@ -2455,7 +2468,7 @@
2455
2468
  };
2456
2469
  return DurationPipe;
2457
2470
  }());
2458
- DurationPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2471
+ DurationPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DurationPipe_Factory() { return new DurationPipe(i0.ɵɵinject(i1$2.TranslateService)); }, token: DurationPipe, providedIn: "root" });
2459
2472
  DurationPipe.decorators = [
2460
2473
  { type: i0.Pipe, args: [{
2461
2474
  name: 'duration'
@@ -2479,7 +2492,7 @@
2479
2492
  };
2480
2493
  return MathAbsPipe;
2481
2494
  }());
2482
- MathAbsPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2495
+ MathAbsPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MathAbsPipe_Factory() { return new MathAbsPipe(); }, token: MathAbsPipe, providedIn: "root" });
2483
2496
  MathAbsPipe.decorators = [
2484
2497
  { type: i0.Pipe, args: [{
2485
2498
  name: 'mathAbs'
@@ -2494,7 +2507,7 @@
2494
2507
  };
2495
2508
  return EvenPipe;
2496
2509
  }());
2497
- EvenPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2510
+ EvenPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function EvenPipe_Factory() { return new EvenPipe(); }, token: EvenPipe, providedIn: "root" });
2498
2511
  EvenPipe.decorators = [
2499
2512
  { type: i0.Pipe, args: [{
2500
2513
  name: 'even'
@@ -2509,7 +2522,7 @@
2509
2522
  };
2510
2523
  return OddPipe;
2511
2524
  }());
2512
- OddPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2525
+ OddPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function OddPipe_Factory() { return new OddPipe(); }, token: OddPipe, providedIn: "root" });
2513
2526
  OddPipe.decorators = [
2514
2527
  { type: i0.Pipe, args: [{
2515
2528
  name: 'odd'
@@ -2641,7 +2654,7 @@
2641
2654
  };
2642
2655
  return MapGetPipe;
2643
2656
  }());
2644
- MapGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2657
+ MapGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapGetPipe_Factory() { return new MapGetPipe(); }, token: MapGetPipe, providedIn: "root" });
2645
2658
  MapGetPipe.decorators = [
2646
2659
  { type: i0.Pipe, args: [{
2647
2660
  name: 'mapGet'
@@ -2658,7 +2671,7 @@
2658
2671
  };
2659
2672
  return MapKeysPipe;
2660
2673
  }());
2661
- MapKeysPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2674
+ MapKeysPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapKeysPipe_Factory() { return new MapKeysPipe(); }, token: MapKeysPipe, providedIn: "root" });
2662
2675
  MapKeysPipe.decorators = [
2663
2676
  { type: i0.Pipe, args: [{
2664
2677
  name: 'mapKeys'
@@ -2675,7 +2688,7 @@
2675
2688
  };
2676
2689
  return MapValuesPipe;
2677
2690
  }());
2678
- MapValuesPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2691
+ MapValuesPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapValuesPipe_Factory() { return new MapValuesPipe(); }, token: MapValuesPipe, providedIn: "root" });
2679
2692
  MapValuesPipe.decorators = [
2680
2693
  { type: i0.Pipe, args: [{
2681
2694
  name: 'mapValues'
@@ -2691,7 +2704,7 @@
2691
2704
  };
2692
2705
  return IsNotNilOrBlankPipe;
2693
2706
  }());
2694
- IsNotNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2707
+ IsNotNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotNilOrBlankPipe_Factory() { return new IsNotNilOrBlankPipe(); }, token: IsNotNilOrBlankPipe, providedIn: "root" });
2695
2708
  IsNotNilOrBlankPipe.decorators = [
2696
2709
  { type: i0.Pipe, args: [{
2697
2710
  name: 'isNotNilOrBlank'
@@ -2706,7 +2719,7 @@
2706
2719
  };
2707
2720
  return IsNilOrBlankPipe;
2708
2721
  }());
2709
- IsNilOrBlankPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2722
+ IsNilOrBlankPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNilOrBlankPipe_Factory() { return new IsNilOrBlankPipe(); }, token: IsNilOrBlankPipe, providedIn: "root" });
2710
2723
  IsNilOrBlankPipe.decorators = [
2711
2724
  { type: i0.Pipe, args: [{
2712
2725
  name: 'isNilOrBlank'
@@ -2721,7 +2734,7 @@
2721
2734
  };
2722
2735
  return ToStringPipe;
2723
2736
  }());
2724
- ToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2737
+ ToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function ToStringPipe_Factory() { return new ToStringPipe(); }, token: ToStringPipe, providedIn: "root" });
2725
2738
  ToStringPipe.decorators = [
2726
2739
  { type: i0.Pipe, args: [{
2727
2740
  name: 'toString'
@@ -2736,7 +2749,7 @@
2736
2749
  };
2737
2750
  return StrLengthPipe;
2738
2751
  }());
2739
- StrLengthPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2752
+ StrLengthPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function StrLengthPipe_Factory() { return new StrLengthPipe(); }, token: StrLengthPipe, providedIn: "root" });
2740
2753
  StrLengthPipe.decorators = [
2741
2754
  { type: i0.Pipe, args: [{
2742
2755
  name: 'strLength'
@@ -2789,7 +2802,7 @@
2789
2802
  };
2790
2803
  return TranslateContextService;
2791
2804
  }());
2792
- TranslateContextService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0__namespace.ɵɵinject(i1__namespace$1.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2805
+ TranslateContextService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextService_Factory() { return new TranslateContextService(i0.ɵɵinject(i1$2.TranslateService)); }, token: TranslateContextService, providedIn: "root" });
2793
2806
  TranslateContextService.decorators = [
2794
2807
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
2795
2808
  ];
@@ -2806,7 +2819,7 @@
2806
2819
  };
2807
2820
  return TranslateContextPipe;
2808
2821
  }());
2809
- TranslateContextPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0__namespace.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2822
+ TranslateContextPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0.ɵɵinject(TranslateContextService)); }, token: TranslateContextPipe, providedIn: "root" });
2810
2823
  TranslateContextPipe.decorators = [
2811
2824
  { type: i0.Pipe, args: [{
2812
2825
  name: 'translateContext'
@@ -2826,7 +2839,7 @@
2826
2839
  };
2827
2840
  return TranslatablePipe;
2828
2841
  }());
2829
- TranslatablePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2842
+ TranslatablePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2830
2843
  TranslatablePipe.decorators = [
2831
2844
  { type: i0.Pipe, args: [{
2832
2845
  name: 'translatable'
@@ -2846,7 +2859,7 @@
2846
2859
  };
2847
2860
  return PropertyGetPipe;
2848
2861
  }());
2849
- PropertyGetPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2862
+ PropertyGetPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PropertyGetPipe_Factory() { return new PropertyGetPipe(); }, token: PropertyGetPipe, providedIn: "root" });
2850
2863
  PropertyGetPipe.decorators = [
2851
2864
  { type: i0.Pipe, args: [{
2852
2865
  name: 'propertyGet'
@@ -3103,14 +3116,14 @@
3103
3116
  },] }
3104
3117
  ];
3105
3118
 
3106
- var moment$4 = momentImported__namespace;
3119
+ var moment$2 = momentImported__namespace;
3107
3120
  // @dynamic
3108
3121
  var SharedValidators = /** @class */ (function () {
3109
3122
  function SharedValidators() {
3110
3123
  }
3111
3124
  SharedValidators.validDate = function (control) {
3112
3125
  var value = control.value;
3113
- var date = !value || moment$4.isMoment(value) ? value : moment$4(control.value, DATE_ISO_PATTERN);
3126
+ var date = !value || moment$2.isMoment(value) ? value : moment$2(control.value, DATE_ISO_PATTERN);
3114
3127
  if (date && (!date.isValid() || date.year() < 1970)) {
3115
3128
  return { validDate: true };
3116
3129
  }
@@ -3581,9 +3594,9 @@
3581
3594
  var hour = parseInt(durationParts[0] || '0');
3582
3595
  var minute = parseInt(durationParts[1] || '0');
3583
3596
  var value = hour + (minute + 0.5) / 60;
3584
- return roundFloat(value, maxDecimals);
3597
+ return roundFloat$1(value, maxDecimals);
3585
3598
  }
3586
- function roundFloat(input, maxDecimals) {
3599
+ function roundFloat$1(input, maxDecimals) {
3587
3600
  if (maxDecimals > 0) {
3588
3601
  var powDecimal = Math.pow(10, maxDecimals);
3589
3602
  return Math.trunc(input * powDecimal + 0.5) / powDecimal;
@@ -3607,9 +3620,9 @@
3607
3620
  DD: [/[+-]/, /\d/, /\d/, /\d/, '.', /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, /\d/, '°']
3608
3621
  }
3609
3622
  };
3610
- var noop$6 = function () {
3623
+ var noop$1 = function () {
3611
3624
  };
3612
- var ɵ0$9 = noop$6;
3625
+ var ɵ0$1 = noop$1;
3613
3626
  var MatLatLongField = /** @class */ (function () {
3614
3627
  function MatLatLongField(platform, translate, formBuilder, cd, formGroupDir) {
3615
3628
  this.platform = platform;
@@ -3617,8 +3630,8 @@
3617
3630
  this.formBuilder = formBuilder;
3618
3631
  this.cd = cd;
3619
3632
  this.formGroupDir = formGroupDir;
3620
- this._onChangeCallback = noop$6;
3621
- this._onTouchedCallback = noop$6;
3633
+ this._onChangeCallback = noop$1;
3634
+ this._onTouchedCallback = noop$1;
3622
3635
  this._subscription = new rxjs.Subscription();
3623
3636
  this.disabling = false;
3624
3637
  this.writing = false;
@@ -3971,14 +3984,14 @@
3971
3984
  },] }
3972
3985
  ];
3973
3986
 
3974
- var DEFAULT_VALUE_ACCESSOR$5 = {
3987
+ var DEFAULT_VALUE_ACCESSOR$1 = {
3975
3988
  provide: i1.NG_VALUE_ACCESSOR,
3976
3989
  useExisting: i0.forwardRef(function () { return MatDate; }),
3977
3990
  multi: true
3978
3991
  };
3979
- var DAY_MASK$2 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3980
- var noop$5 = function () { };
3981
- var ɵ0$8 = noop$5;
3992
+ var DAY_MASK = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
3993
+ var noop$2 = function () { };
3994
+ var ɵ0$2 = noop$2;
3982
3995
  var MatDate = /** @class */ (function () {
3983
3996
  function MatDate(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
3984
3997
  this.dateAdapter = dateAdapter;
@@ -3987,12 +4000,12 @@
3987
4000
  this.cd = cd;
3988
4001
  this.keyboard = keyboard;
3989
4002
  this.formGroupDir = formGroupDir;
3990
- this._onChangeCallback = noop$5;
3991
- this._onTouchedCallback = noop$5;
4003
+ this._onChangeCallback = noop$2;
4004
+ this._onTouchedCallback = noop$2;
3992
4005
  this._subscription = new rxjs.Subscription();
3993
4006
  this.writing = true;
3994
4007
  this.disabling = false;
3995
- this.dayMask = DAY_MASK$2;
4008
+ this.dayMask = DAY_MASK;
3996
4009
  this.disabled = false;
3997
4010
  this.floatLabel = 'auto';
3998
4011
  this.readonly = false;
@@ -4261,7 +4274,7 @@
4261
4274
  selector: 'mat-date-field',
4262
4275
  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
4276
  providers: [
4264
- DEFAULT_VALUE_ACCESSOR$5,
4277
+ DEFAULT_VALUE_ACCESSOR$1,
4265
4278
  ],
4266
4279
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
4267
4280
  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 +4307,17 @@
4294
4307
  matInputs: [{ type: i0.ViewChildren, args: ['matInput',] }]
4295
4308
  };
4296
4309
 
4297
- var DEFAULT_VALUE_ACCESSOR$4 = {
4310
+ var DEFAULT_VALUE_ACCESSOR$2 = {
4298
4311
  provide: i1.NG_VALUE_ACCESSOR,
4299
4312
  useExisting: i0.forwardRef(function () { return MatDateTime; }),
4300
4313
  multi: true
4301
4314
  };
4302
4315
  var DAY_MASK$1 = [/\d/, /\d/, '/', /\d/, /\d/, '/', /\d/, /\d/, /\d/, /\d/];
4303
4316
  var HOUR_REGEXP = /^[012][0-9][:][012345][0-9]$/;
4304
- var HOUR_MASK$1 = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4305
- var noop$4 = function () {
4317
+ var HOUR_MASK = [/[012]/, /\d/, ':', /[012345]/, /\d/];
4318
+ var noop$3 = function () {
4306
4319
  };
4307
- var ɵ0$7 = noop$4;
4320
+ var ɵ0$3 = noop$3;
4308
4321
  var MatDateTime = /** @class */ (function () {
4309
4322
  function MatDateTime(platform, dateAdapter, translate, formBuilder, keyboard, cd, formGroupDir) {
4310
4323
  this.platform = platform;
@@ -4314,14 +4327,14 @@
4314
4327
  this.keyboard = keyboard;
4315
4328
  this.cd = cd;
4316
4329
  this.formGroupDir = formGroupDir;
4317
- this._onChangeCallback = noop$4;
4318
- this._onTouchedCallback = noop$4;
4330
+ this._onChangeCallback = noop$3;
4331
+ this._onTouchedCallback = noop$3;
4319
4332
  this._subscription = new rxjs.Subscription();
4320
4333
  this.writing = true;
4321
4334
  this.disabling = false;
4322
4335
  this._onDestroy = new i0.EventEmitter();
4323
4336
  this.dayMask = DAY_MASK$1;
4324
- this.hourMask = HOUR_MASK$1;
4337
+ this.hourMask = HOUR_MASK;
4325
4338
  this.floatLabel = 'auto';
4326
4339
  this.readonly = false;
4327
4340
  this.compact = false;
@@ -4668,7 +4681,7 @@
4668
4681
  selector: 'mat-date-time-field',
4669
4682
  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
4683
  providers: [
4671
- DEFAULT_VALUE_ACCESSOR$4,
4684
+ DEFAULT_VALUE_ACCESSOR$2,
4672
4685
  ],
4673
4686
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
4674
4687
  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 +4720,10 @@
4707
4720
  useExisting: i0.forwardRef(function () { return MatDateShort; }),
4708
4721
  multi: true
4709
4722
  };
4710
- var DAY_MASK = [/\d/, /\d/, /\d/, /\d/];
4711
- var noop$3 = function () {
4723
+ var DAY_MASK$2 = [/\d/, /\d/, /\d/, /\d/];
4724
+ var noop$4 = function () {
4712
4725
  };
4713
- var ɵ0$6 = noop$3;
4726
+ var ɵ0$4 = noop$4;
4714
4727
  var MatDateShort = /** @class */ (function () {
4715
4728
  function MatDateShort(platform, dateAdapter, translate, formBuilder, cd, keyboard, formGroupDir) {
4716
4729
  this.dateAdapter = dateAdapter;
@@ -4719,11 +4732,11 @@
4719
4732
  this.cd = cd;
4720
4733
  this.keyboard = keyboard;
4721
4734
  this.formGroupDir = formGroupDir;
4722
- this._onChangeCallback = noop$3;
4723
- this._onTouchedCallback = noop$3;
4735
+ this._onChangeCallback = noop$4;
4736
+ this._onTouchedCallback = noop$4;
4724
4737
  this.writing = true;
4725
4738
  this.disabling = false;
4726
- this.dayMask = DAY_MASK;
4739
+ this.dayMask = DAY_MASK$2;
4727
4740
  this.disabled = false;
4728
4741
  this.floatLabel = 'auto';
4729
4742
  this.readonly = false;
@@ -5071,16 +5084,16 @@
5071
5084
  },] }
5072
5085
  ];
5073
5086
 
5074
- var DEFAULT_VALUE_ACCESSOR$2 = {
5087
+ var DEFAULT_VALUE_ACCESSOR$4 = {
5075
5088
  provide: i1.NG_VALUE_ACCESSOR,
5076
5089
  useExisting: i0.forwardRef(function () { return MatDuration; }),
5077
5090
  multi: true
5078
5091
  };
5079
5092
  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 () {
5093
+ var HOUR_MASK$1 = [/\d/, /\d/, /\d/, ':', /[0-5]/, /\d/];
5094
+ var noop$5 = function () {
5082
5095
  };
5083
- var ɵ0$5 = noop$2;
5096
+ var ɵ0$5 = noop$5;
5084
5097
  var MatDuration = /** @class */ (function () {
5085
5098
  function MatDuration(platform, dateAdapter, translate, formBuilder, cd, formGroupDir) {
5086
5099
  this.dateAdapter = dateAdapter;
@@ -5089,11 +5102,11 @@
5089
5102
  this.cd = cd;
5090
5103
  this.formGroupDir = formGroupDir;
5091
5104
  this._subscription = new rxjs.Subscription();
5092
- this._onChangeCallback = noop$2;
5093
- this._onTouchedCallback = noop$2;
5105
+ this._onChangeCallback = noop$5;
5106
+ this._onTouchedCallback = noop$5;
5094
5107
  this.writing = true;
5095
5108
  this.disabling = false;
5096
- this.hourMask = HOUR_MASK;
5109
+ this.hourMask = HOUR_MASK$1;
5097
5110
  this.disabled = false;
5098
5111
  this.floatLabel = 'auto';
5099
5112
  this.readonly = false;
@@ -5286,7 +5299,7 @@
5286
5299
  selector: 'mat-duration-field',
5287
5300
  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
5301
  providers: [
5289
- DEFAULT_VALUE_ACCESSOR$2,
5302
+ DEFAULT_VALUE_ACCESSOR$4,
5290
5303
  ],
5291
5304
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
5292
5305
  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 +5359,22 @@
5346
5359
  },] }
5347
5360
  ];
5348
5361
 
5349
- var DEFAULT_VALUE_ACCESSOR$1 = {
5362
+ var DEFAULT_VALUE_ACCESSOR$5 = {
5350
5363
  provide: i1.NG_VALUE_ACCESSOR,
5351
5364
  useExisting: i0.forwardRef(function () { return MatBooleanField; }),
5352
5365
  multi: true
5353
5366
  };
5354
- var noop$1 = function () {
5367
+ var noop$6 = function () {
5355
5368
  };
5356
- var ɵ0$4 = noop$1;
5369
+ var ɵ0$6 = noop$6;
5357
5370
  var MatBooleanField = /** @class */ (function () {
5358
5371
  function MatBooleanField(translate, formBuilder, cd, formGroupDir) {
5359
5372
  this.translate = translate;
5360
5373
  this.formBuilder = formBuilder;
5361
5374
  this.cd = cd;
5362
5375
  this.formGroupDir = formGroupDir;
5363
- this._onChangeCallback = noop$1;
5364
- this._onTouchedCallback = noop$1;
5376
+ this._onChangeCallback = noop$6;
5377
+ this._onTouchedCallback = noop$6;
5365
5378
  this._writing = false;
5366
5379
  this.showRadio = false;
5367
5380
  this.disabled = false;
@@ -5547,10 +5560,10 @@
5547
5560
  selector: 'mat-boolean-field',
5548
5561
  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
5562
  providers: [
5550
- DEFAULT_VALUE_ACCESSOR$1
5563
+ DEFAULT_VALUE_ACCESSOR$5
5551
5564
  ],
5552
5565
  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}"]
5566
+ 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
5567
  },] }
5555
5568
  ];
5556
5569
  MatBooleanField.ctorParameters = function () { return [
@@ -5636,7 +5649,6 @@
5636
5649
  return MatNumpadEvent;
5637
5650
  }(KeyboardEvent));
5638
5651
 
5639
- exports.AnimationState = void 0;
5640
5652
  (function (AnimationState) {
5641
5653
  AnimationState["ENTER"] = "enter";
5642
5654
  AnimationState["ENTER_INPUT"] = "enter-input";
@@ -5804,7 +5816,7 @@
5804
5816
  };
5805
5817
  return MatNumpadDomService;
5806
5818
  }());
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" });
5819
+ 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
5820
  MatNumpadDomService.decorators = [
5809
5821
  { type: i0.Injectable, args: [{
5810
5822
  providedIn: 'root'
@@ -6210,7 +6222,7 @@
6210
6222
  },] }
6211
6223
  ];
6212
6224
 
6213
- var DEFAULT_VALUE_ACCESSOR = {
6225
+ var DEFAULT_VALUE_ACCESSOR$6 = {
6214
6226
  provide: i1.NG_VALUE_ACCESSOR,
6215
6227
  useExisting: i0.forwardRef(function () { return MatSwipeField; }),
6216
6228
  multi: true
@@ -6530,7 +6542,7 @@
6530
6542
  { type: i0.Component, args: [{
6531
6543
  selector: 'mat-swipe-field',
6532
6544
  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],
6545
+ providers: [DEFAULT_VALUE_ACCESSOR$6],
6534
6546
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
6535
6547
  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
6548
  },] }
@@ -7088,7 +7100,7 @@
7088
7100
  };
7089
7101
  return ProgressBarService;
7090
7102
  }());
7091
- ProgressBarService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7103
+ ProgressBarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ProgressBarService_Factory() { return new ProgressBarService(); }, token: ProgressBarService, providedIn: "root" });
7092
7104
  ProgressBarService.decorators = [
7093
7105
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7094
7106
  ];
@@ -7135,7 +7147,7 @@
7135
7147
  };
7136
7148
  return AppGestureConfig;
7137
7149
  }(i1$6.HammerGestureConfig));
7138
- AppGestureConfig.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7150
+ AppGestureConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function AppGestureConfig_Factory() { return new AppGestureConfig(); }, token: AppGestureConfig, providedIn: "root" });
7139
7151
  AppGestureConfig.decorators = [
7140
7152
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7141
7153
  ];
@@ -7400,7 +7412,7 @@
7400
7412
  };
7401
7413
  return MatPaginatorI18n;
7402
7414
  }(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" });
7415
+ MatPaginatorI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatPaginatorI18n_Factory() { return new MatPaginatorI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatPaginatorI18n, providedIn: "root" });
7404
7416
  MatPaginatorI18n.decorators = [
7405
7417
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7406
7418
  ];
@@ -7492,17 +7504,17 @@
7492
7504
  return rgbArrayToHex(rgb.map(function (v) { return 255 - v; }));
7493
7505
  }
7494
7506
 
7495
- var noop = function () {
7507
+ var noop$7 = function () {
7496
7508
  };
7497
- var ɵ0$3 = noop;
7509
+ var ɵ0$7 = noop$7;
7498
7510
  var AppFormField = /** @class */ (function () {
7499
7511
  function AppFormField(translate, cd, injector, formGroupDir) {
7500
7512
  this.translate = translate;
7501
7513
  this.cd = cd;
7502
7514
  this.injector = injector;
7503
7515
  this.formGroupDir = formGroupDir;
7504
- this._onChangeCallback = noop;
7505
- this._onTouchedCallback = noop;
7516
+ this._onChangeCallback = noop$7;
7517
+ this._onTouchedCallback = noop$7;
7506
7518
  this.readonly = false;
7507
7519
  this.compact = false;
7508
7520
  this.floatLabel = 'auto';
@@ -7961,7 +7973,7 @@
7961
7973
  };
7962
7974
  return AudioProvider;
7963
7975
  }());
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" });
7976
+ 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
7977
  AudioProvider.decorators = [
7966
7978
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
7967
7979
  ];
@@ -8061,7 +8073,7 @@
8061
8073
  };
8062
8074
  return Hotkeys;
8063
8075
  }());
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" });
8076
+ 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
8077
  Hotkeys.decorators = [
8066
8078
  { type: i0.Injectable, args: [{
8067
8079
  providedIn: 'root'
@@ -8265,7 +8277,7 @@
8265
8277
  return Base64ImageReader;
8266
8278
  }());
8267
8279
 
8268
- var uuidv4$1 = uuidv4Imported__namespace;
8280
+ var uuidv4 = uuidv4Imported__namespace;
8269
8281
  var FileService = /** @class */ (function () {
8270
8282
  function FileService(platform,
8271
8283
  //private transfer: FileTransfer,
@@ -8311,7 +8323,7 @@
8311
8323
  lastSlashIndex = source.lastIndexOf('/');
8312
8324
  if (lastSlashIndex === -1)
8313
8325
  throw new Error('Invalid URL: ' + source);
8314
- fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4$1();
8326
+ fileName = lastSlashIndex < (source.length - 1) && source.substring(lastSlashIndex + 1) || uuidv4();
8315
8327
  if (!(responseType === 'file' && this.canUseFileSystem)) return [3 /*break*/, 4];
8316
8328
  console.warn("WARN: [file] Fetching image {" + source + "} in local file...");
8317
8329
  targetFilePath = this._imageDirectory + fileName;
@@ -8374,7 +8386,7 @@
8374
8386
  };
8375
8387
  return FileService;
8376
8388
  }());
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" });
8389
+ 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
8390
  FileService.decorators = [
8379
8391
  { type: i0.Injectable, args: [{
8380
8392
  providedIn: 'root',
@@ -8537,7 +8549,7 @@
8537
8549
  Base58.alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
8538
8550
 
8539
8551
  var scrypt = require('scrypt-async');
8540
- var sha256$1 = require('hash.js/lib/hash/sha/256');
8552
+ var sha256 = require('hash.js/lib/hash/sha/256');
8541
8553
  var sha512 = require('hash.js/lib/hash/sha/512');
8542
8554
  var nacl = {
8543
8555
  sign: tweetnacl.sign,
@@ -8643,7 +8655,7 @@
8643
8655
  * Hash (using SHA256) a message
8644
8656
  */
8645
8657
  CryptoService.prototype.sha256 = function (message) {
8646
- return sha256$1().update(message).digest('hex');
8658
+ return sha256().update(message).digest('hex');
8647
8659
  };
8648
8660
  /**
8649
8661
  * Hash (using SHA512) a message
@@ -8657,7 +8669,7 @@
8657
8669
  };
8658
8670
  return CryptoService;
8659
8671
  }());
8660
- CryptoService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8672
+ CryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CryptoService_Factory() { return new CryptoService(); }, token: CryptoService, providedIn: "root" });
8661
8673
  CryptoService.decorators = [
8662
8674
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
8663
8675
  ];
@@ -9641,7 +9653,7 @@
9641
9653
  .then(function () {
9642
9654
  _this.data.mobile = isNotNil(_this.data.mobile) ? _this.data.mobile : _this.platform.is('mobile');
9643
9655
  _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
9656
+ _this.data.usageMode = _this.platform.is('android') ? 'FIELD' : 'DESK'; // FIELD by default if Android
9645
9657
  })
9646
9658
  .then(function () { return _this.restoreLocally(); })
9647
9659
  .then(function (data) {
@@ -10070,7 +10082,7 @@
10070
10082
  };
10071
10083
  return LocalSettingsService;
10072
10084
  }());
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" });
10085
+ 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
10086
  LocalSettingsService.decorators = [
10075
10087
  { type: i0.Injectable, args: [{
10076
10088
  providedIn: 'root',
@@ -10915,7 +10927,7 @@
10915
10927
  };
10916
10928
  return NetworkService;
10917
10929
  }());
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" });
10930
+ 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
10931
  NetworkService.decorators = [
10920
10932
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
10921
10933
  ];
@@ -10935,7 +10947,7 @@
10935
10947
  { type: i1$5.ToastController, decorators: [{ type: i0.Optional }] }
10936
10948
  ]; };
10937
10949
 
10938
- var ErrorCodes$2 = {
10950
+ var ErrorCodes = {
10939
10951
  UNKNOWN_ERROR: 0,
10940
10952
  LOAD_ACCOUNT_ERROR: 1,
10941
10953
  BAD_PASSWORD: 2,
@@ -11343,7 +11355,7 @@
11343
11355
  case 13:
11344
11356
  err_1 = _a.sent();
11345
11357
  console.error(err_1);
11346
- throw { code: ErrorCodes$2.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
11358
+ throw { code: ErrorCodes.ENTITY_STORAGE_MIGRATION_FAILED, message: 'ERROR.ENTITY_STORAGE_MIGRATION_FAILED', details: err_1 };
11347
11359
  case 14:
11348
11360
  // Emit update event
11349
11361
  if (!opts || opts.emitEvent !== false) {
@@ -12103,7 +12115,7 @@
12103
12115
  }());
12104
12116
  EntitiesStorage.TRASH_PREFIX = 'Trash#';
12105
12117
  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" });
12118
+ 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
12119
  EntitiesStorage.decorators = [
12108
12120
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
12109
12121
  ];
@@ -12220,10 +12232,10 @@
12220
12232
  function referentialsToString(values, properties, separator) {
12221
12233
  return (values || []).map(function (v) { return referentialToString(v, properties); }).join(separator || ', ');
12222
12234
  }
12223
- var ɵ0$2 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12235
+ var ɵ0$8 = StatusIds.ENABLE, ɵ1 = StatusIds.DISABLE, ɵ2 = StatusIds.TEMPORARY;
12224
12236
  var StatusList = Object.freeze([
12225
12237
  {
12226
- id: ɵ0$2,
12238
+ id: ɵ0$8,
12227
12239
  icon: 'checkmark',
12228
12240
  label: 'REFERENTIAL.STATUS_ENUM.ENABLE'
12229
12241
  },
@@ -12526,7 +12538,7 @@
12526
12538
  (data.lastName || '')) || '';
12527
12539
  }
12528
12540
 
12529
- var uuidv4 = uuidv4Imported__namespace;
12541
+ var uuidv4$1 = uuidv4Imported__namespace;
12530
12542
  var _global = typeof global !== 'undefined' ? global : (typeof window !== 'undefined' ? window : {});
12531
12543
  var NativeWebSocket = _global.WebSocket || _global.MozWebSocket;
12532
12544
  /**
@@ -12570,7 +12582,7 @@
12570
12582
  // Skip if not tracked
12571
12583
  if (!context || !context.tracked)
12572
12584
  return forward(operation);
12573
- var id = context.serializationKey || uuidv4();
12585
+ var id = context.serializationKey || uuidv4$1();
12574
12586
  console.debug("[apollo-tracker-link] Watching tracked query {" + operation.operationName + "#" + id + "}");
12575
12587
  // Clean context, before calling JSON.stringify (remove unused attributes)
12576
12588
  var cleanContext = Object.assign(Object.assign({}, context), { optimisticResponse: null, cache: null });
@@ -13381,7 +13393,7 @@
13381
13393
  (err.networkError && ((err.networkError.error && this.toAppError(err.networkError.error))
13382
13394
  || this.toAppError(err.networkError)
13383
13395
  || (err.networkError.error && this.createAppErrorByCode(err.networkError.error.status))
13384
- || this.createAppErrorByCode(ErrorCodes$2.UNKNOWN_NETWORK_ERROR)))
13396
+ || this.createAppErrorByCode(ErrorCodes.UNKNOWN_NETWORK_ERROR)))
13385
13397
  // If graphQL: try to convert the first error found
13386
13398
  || (err.graphQLErrors && err.graphQLErrors.length && this.toAppError(err.graphQLErrors[0]))
13387
13399
  || this.toAppError(err)
@@ -13389,7 +13401,7 @@
13389
13401
  || (err.graphQLErrors && err.graphQLErrors[0])
13390
13402
  || err;
13391
13403
  console.error('[graphql] ' + (error && error.message || error), error.stack || '');
13392
- if (error && error.code === ErrorCodes$2.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13404
+ if (error && error.code === ErrorCodes.UNKNOWN_NETWORK_ERROR && err.networkError && err.networkError.message) {
13393
13405
  console.error('[graphql] original error: ' + err.networkError.message);
13394
13406
  this.onNetworkError.next(error);
13395
13407
  }
@@ -13425,7 +13437,7 @@
13425
13437
  return 'ERROR.UNAUTHORIZED';
13426
13438
  case ServerErrorCodes.FORBIDDEN:
13427
13439
  return 'ERROR.FORBIDDEN';
13428
- case ErrorCodes$2.UNKNOWN_NETWORK_ERROR:
13440
+ case ErrorCodes.UNKNOWN_NETWORK_ERROR:
13429
13441
  return 'ERROR.UNKNOWN_NETWORK_ERROR';
13430
13442
  case ServerErrorCodes.BAD_UPDATE_DATE:
13431
13443
  return 'ERROR.BAD_UPDATE_DATE';
@@ -13470,7 +13482,7 @@
13470
13482
  };
13471
13483
  return GraphqlService;
13472
13484
  }());
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" });
13485
+ 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
13486
  GraphqlService.decorators = [
13475
13487
  { type: i0.Injectable, args: [{
13476
13488
  providedIn: 'root'
@@ -13487,7 +13499,7 @@
13487
13499
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_GRAPHQL_TYPE_POLICIES,] }] }
13488
13500
  ]; };
13489
13501
 
13490
- var sha256 = require('hash.js/lib/hash/sha/256');
13502
+ var sha256$1 = require('hash.js/lib/hash/sha/256');
13491
13503
  var BaseGraphqlServiceOptions = /** @class */ (function () {
13492
13504
  function BaseGraphqlServiceOptions() {
13493
13505
  }
@@ -13654,8 +13666,8 @@
13654
13666
  };
13655
13667
  /* -- protected methods -- */
13656
13668
  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) || '';
13669
+ var queryName = opts.queryName || sha256$1().update(JSON.stringify(opts.query)).digest('hex').substring(0, 8);
13670
+ var variablesKey = opts.variables && sha256$1().update(JSON.stringify(opts.variables)).digest('hex').substring(0, 8) || '';
13659
13671
  return [queryName, opts.arrayFieldName, variablesKey].join('|');
13660
13672
  };
13661
13673
  BaseGraphqlService.prototype.findMutableWatchQueries = function (opts) {
@@ -13721,17 +13733,17 @@
13721
13733
  /* ------------------------------------
13722
13734
  * GraphQL queries
13723
13735
  * ------------------------------------*/
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 "])))
13736
+ var Fragments = {
13737
+ 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
13738
  };
13727
13739
  // 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);
13740
+ 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
13741
  // 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"])));
13742
+ 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
13743
  // 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);
13744
+ 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
13745
  // 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);
13746
+ 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
13747
  // Sent confirmation email
13736
13748
  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
13749
  // Confirm account email
@@ -14130,7 +14142,7 @@
14130
14142
  error_3 = _b.sent();
14131
14143
  console.error(error_3);
14132
14144
  this.resetData();
14133
- throw { code: ErrorCodes$2.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
14145
+ throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
14134
14146
  case 4:
14135
14147
  // Store pubkey+keypair
14136
14148
  this.data.pubkey = Base58.encode(keypair.publicKey);
@@ -14166,7 +14178,7 @@
14166
14178
  return [3 /*break*/, 18];
14167
14179
  case 11:
14168
14180
  err_1 = _b.sent();
14169
- if (!(err_1 && +(err_1.code) === ErrorCodes$2.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
14181
+ if (!(err_1 && +(err_1.code) === ErrorCodes.LOAD_ACCOUNT_ERROR)) return [3 /*break*/, 17];
14170
14182
  if (!(data.username.indexOf('@') !== -1)) return [3 /*break*/, 16];
14171
14183
  isEmailExists = void 0;
14172
14184
  _b.label = 12;
@@ -14182,12 +14194,12 @@
14182
14194
  case 15:
14183
14195
  // Email not exists (no account)
14184
14196
  if (!isEmailExists) {
14185
- throw { code: ErrorCodes$2.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
14197
+ throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
14186
14198
  }
14187
14199
  _b.label = 16;
14188
14200
  case 16:
14189
14201
  // Email exists, so error = 'bad password'
14190
- throw { code: ErrorCodes$2.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
14202
+ throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
14191
14203
  case 17: throw err_1; // resend the first error
14192
14204
  case 18:
14193
14205
  _b.trys.push([18, 20, , 21]);
@@ -14359,8 +14371,8 @@
14359
14371
  _b.label = 3;
14360
14372
  case 3: return [3 /*break*/, 6];
14361
14373
  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' },
14374
+ query: LoadQuery,
14375
+ error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
14364
14376
  fetchPolicy: opts && opts.fetchPolicy || 'no-cache' || undefined
14365
14377
  })];
14366
14378
  case 5:
@@ -14398,7 +14410,7 @@
14398
14410
  case 1:
14399
14411
  isEmailExists = _b.sent();
14400
14412
  if (isEmailExists) {
14401
- throw { code: ErrorCodes$2.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14413
+ throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
14402
14414
  }
14403
14415
  return [2 /*return*/];
14404
14416
  }
@@ -14448,7 +14460,7 @@
14448
14460
  locale: locale
14449
14461
  },
14450
14462
  error: {
14451
- code: ErrorCodes$2.SENT_CONFIRMATION_EMAIL_FAILED,
14463
+ code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
14452
14464
  message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED'
14453
14465
  }
14454
14466
  })];
@@ -14471,7 +14483,7 @@
14471
14483
  code: code
14472
14484
  },
14473
14485
  error: {
14474
- code: ErrorCodes$2.CONFIRM_EMAIL_FAILED,
14486
+ code: ErrorCodes.CONFIRM_EMAIL_FAILED,
14475
14487
  message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED'
14476
14488
  }
14477
14489
  })];
@@ -14493,7 +14505,7 @@
14493
14505
  interval: 10
14494
14506
  },
14495
14507
  error: {
14496
- code: ErrorCodes$2.SUBSCRIBE_ACCOUNT_ERROR,
14508
+ code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
14497
14509
  message: 'ERROR.ACCOUNT.SUBSCRIBE_ACCOUNT_ERROR'
14498
14510
  }
14499
14511
  }).subscribe({
@@ -14639,7 +14651,7 @@
14639
14651
  throw error_6;
14640
14652
  console.error(error_6);
14641
14653
  throw {
14642
- code: ErrorCodes$2.LOAD_ACCOUNT_ERROR,
14654
+ code: ErrorCodes.LOAD_ACCOUNT_ERROR,
14643
14655
  message: 'ERROR.LOAD_ACCOUNT_ERROR'
14644
14656
  };
14645
14657
  case 4: return [2 /*return*/];
@@ -14813,7 +14825,7 @@
14813
14825
  case 1:
14814
14826
  existingAccount = _b.sent();
14815
14827
  if (!existingAccount || !existingAccount.updateDate) {
14816
- throw { code: ErrorCodes$2.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14828
+ throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
14817
14829
  }
14818
14830
  this.copyIdAndUpdateDate(existingAccount, account);
14819
14831
  _b.label = 2;
@@ -14822,10 +14834,10 @@
14822
14834
  // User not allow to change his profiles
14823
14835
  delete json.profiles;
14824
14836
  return [4 /*yield*/, this.graphql.mutate({
14825
- mutation: isNew ? CreateMutation : SaveMutation$1,
14837
+ mutation: isNew ? CreateMutation : SaveMutation,
14826
14838
  variables: { data: json },
14827
14839
  error: {
14828
- code: ErrorCodes$2.SAVE_ACCOUNT_ERROR,
14840
+ code: ErrorCodes.SAVE_ACCOUNT_ERROR,
14829
14841
  message: 'ERROR.SAVE_ACCOUNT_ERROR'
14830
14842
  }
14831
14843
  })];
@@ -14853,7 +14865,7 @@
14853
14865
  if (counter > 4) {
14854
14866
  if (this._debug)
14855
14867
  console.debug("[account] Failed to authentication on pod (after " + counter + " attempts)");
14856
- throw { code: ErrorCodes$2.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14868
+ throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
14857
14869
  }
14858
14870
  if (!token) return [3 /*break*/, 2];
14859
14871
  return [4 /*yield*/, this.graphql.query({
@@ -14862,7 +14874,7 @@
14862
14874
  token: token
14863
14875
  },
14864
14876
  error: {
14865
- code: ErrorCodes$2.UNAUTHORIZED,
14877
+ code: ErrorCodes.UNAUTHORIZED,
14866
14878
  message: 'ERROR.UNAUTHORIZED'
14867
14879
  },
14868
14880
  fetchPolicy: 'no-cache'
@@ -14879,7 +14891,7 @@
14879
14891
  _b.label = 2;
14880
14892
  case 2:
14881
14893
  challengeError = {
14882
- code: ErrorCodes$2.AUTH_CHALLENGE_ERROR,
14894
+ code: ErrorCodes.AUTH_CHALLENGE_ERROR,
14883
14895
  message: 'ERROR.AUTH_CHALLENGE_ERROR'
14884
14896
  };
14885
14897
  return [4 /*yield*/, this.graphql.query({
@@ -14921,7 +14933,7 @@
14921
14933
  };
14922
14934
  return AccountService;
14923
14935
  }(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" });
14936
+ 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
14937
  AccountService.decorators = [
14926
14938
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
14927
14939
  ];
@@ -14934,7 +14946,7 @@
14934
14946
  { type: FileService },
14935
14947
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
14936
14948
  ]; };
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;
14949
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
14938
14950
 
14939
14951
  var Software_1, Configuration_1;
14940
14952
  // @dynamic
@@ -15186,13 +15198,13 @@
15186
15198
  /* ------------------------------------
15187
15199
  * GraphQL queries
15188
15200
  * ------------------------------------*/
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 "])))
15201
+ var Fragments$1 = {
15202
+ 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
15203
  };
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);
15204
+ 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
15205
  // 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"])));
15206
+ 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);
15207
+ 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
15208
  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
15209
  var APP_CONFIG_OPTIONS = new i0.InjectionToken('defaultOptions');
15198
15210
  var ConfigService = /** @class */ (function (_super) {
@@ -15285,12 +15297,12 @@
15285
15297
  case 0:
15286
15298
  now = Date.now();
15287
15299
  console.debug('[config] Loading Pod configuration...');
15288
- query = opts && opts.query || LoadQuery;
15300
+ query = opts && opts.query || LoadQuery$1;
15289
15301
  variables = opts && opts.variables || undefined;
15290
15302
  return [4 /*yield*/, this.graphql.query({
15291
15303
  query: query,
15292
15304
  variables: variables,
15293
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15305
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15294
15306
  fetchPolicy: opts && opts.fetchPolicy || undefined /*default*/
15295
15307
  })];
15296
15308
  case 1:
@@ -15324,12 +15336,12 @@
15324
15336
  console.debug('[config] Saving Pod configuration...', config);
15325
15337
  json = config.asObject();
15326
15338
  return [4 /*yield*/, this.graphql.mutate({
15327
- mutation: SaveMutation,
15339
+ mutation: SaveMutation$1,
15328
15340
  variables: {
15329
15341
  data: json
15330
15342
  },
15331
15343
  error: {
15332
- code: ErrorCodes$2.SAVE_CONFIG_ERROR,
15344
+ code: ErrorCodes.SAVE_CONFIG_ERROR,
15333
15345
  message: 'ERROR.SAVE_CONFIG_ERROR'
15334
15346
  }
15335
15347
  })];
@@ -15364,7 +15376,7 @@
15364
15376
  return [4 /*yield*/, this.graphql.query({
15365
15377
  query: CacheStatistics,
15366
15378
  variables: null,
15367
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15379
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15368
15380
  fetchPolicy: 'network-only'
15369
15381
  })];
15370
15382
  case 1:
@@ -15388,7 +15400,7 @@
15388
15400
  return [4 /*yield*/, this.graphql.query({
15389
15401
  query: ClearCache,
15390
15402
  variables: variables,
15391
- error: { code: ErrorCodes$2.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15403
+ error: { code: ErrorCodes.LOAD_CONFIG_ERROR, message: 'ERROR.LOAD_CONFIG_ERROR' },
15392
15404
  fetchPolicy: 'network-only'
15393
15405
  })];
15394
15406
  case 1:
@@ -15589,7 +15601,7 @@
15589
15601
  };
15590
15602
  return ConfigService;
15591
15603
  }(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" });
15604
+ 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
15605
  ConfigService.decorators = [
15594
15606
  { type: i0.Injectable, args: [{
15595
15607
  providedIn: 'root',
@@ -15607,9 +15619,9 @@
15607
15619
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] },
15608
15620
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_CONFIG_OPTIONS,] }] }
15609
15621
  ]; };
15610
- var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2, templateObject_5$1;
15622
+ var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1, templateObject_5$1;
15611
15623
 
15612
- var moment$2 = momentImported__namespace;
15624
+ var moment$4 = momentImported__namespace;
15613
15625
  var PlatformService = /** @class */ (function () {
15614
15626
  function PlatformService(platform, cdkPlatform, toastController, translate, dateAdapter, entitiesStorage, settings, networkService, accountService, configService, cache, storage, audioProvider, environment, statusBar, keyboard, splashScreen, browser) {
15615
15627
  this.platform = platform;
@@ -15785,16 +15797,16 @@
15785
15797
  }
15786
15798
  // config moment lib
15787
15799
  try {
15788
- moment$2.locale(event.lang);
15800
+ moment$4.locale(event.lang);
15789
15801
  console.debug('[platform] Use locale {' + event.lang + '}');
15790
15802
  }
15791
15803
  // If error, fallback to en
15792
15804
  catch (err) {
15793
- moment$2.locale('en');
15805
+ moment$4.locale('en');
15794
15806
  console.warn('[platform] Unknown local for moment lib. Using default [en]');
15795
15807
  }
15796
15808
  // Config date adapter
15797
- _this.dateAdapter.setLocale(moment$2.locale());
15809
+ _this.dateAdapter.setLocale(moment$4.locale());
15798
15810
  }
15799
15811
  });
15800
15812
  this.settings.onChange.subscribe(function (data) {
@@ -15979,7 +15991,7 @@
15979
15991
  };
15980
15992
  return PlatformService;
15981
15993
  }());
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" });
15994
+ 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
15995
  PlatformService.decorators = [
15984
15996
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
15985
15997
  ];
@@ -16076,7 +16088,7 @@
16076
16088
  };
16077
16089
  return MatStepperI18n;
16078
16090
  }(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" });
16091
+ MatStepperI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function MatStepperI18n_Factory() { return new MatStepperI18n(i0.ɵɵinject(i1$2.TranslateService)); }, token: MatStepperI18n, providedIn: "root" });
16080
16092
  MatStepperI18n.decorators = [
16081
16093
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
16082
16094
  ];
@@ -17268,7 +17280,7 @@
17268
17280
  return 1;
17269
17281
  }
17270
17282
  }
17271
- var ɵ0$1 = function (defaultStateSize) { return [
17283
+ var ɵ0$9 = function (defaultStateSize) { return [
17272
17284
  Math.round((rgbArrayMap.red[0] - 50) / defaultStateSize),
17273
17285
  Math.round((255 - rgbArrayMap.red[1]) / defaultStateSize),
17274
17286
  Math.round((255 - rgbArrayMap.red[2]) / defaultStateSize)
@@ -17276,7 +17288,7 @@
17276
17288
  var SCALE_OPTIONS_DEFAULT = {
17277
17289
  startColor: rgbArrayMap.red,
17278
17290
  startStates: [0, 2, 3],
17279
- startStepsFn: ɵ0$1
17291
+ startStepsFn: ɵ0$9
17280
17292
  };
17281
17293
  /**
17282
17294
  * Internal function, that create a colors scale, using iteration
@@ -17368,24 +17380,24 @@
17368
17380
  return result;
17369
17381
  }
17370
17382
 
17371
- var EntityTestClass$1 = /** @class */ (function () {
17383
+ var EntityTestClass = /** @class */ (function () {
17372
17384
  function EntityTestClass() {
17373
17385
  }
17374
17386
  return EntityTestClass;
17375
17387
  }());
17376
- var FAKE_ENTITIES$1 = [
17388
+ var FAKE_ENTITIES = [
17377
17389
  { id: 1, label: 'AAA', name: 'Item A', description: 'Very long description A', comments: 'Very very long comments... again for A' },
17378
17390
  { id: 2, label: 'BBB', name: 'Item B', description: 'Very long description B', comments: 'Very very long comments... again for B' },
17379
17391
  { id: 3, label: 'CCC', name: 'Item C', description: 'Very long description C', comments: 'Very very long comments... again for C' }
17380
17392
  ];
17381
- function deepCopy$1(values, size) {
17393
+ function deepCopy(values, size) {
17382
17394
  if (isNil(size)) {
17383
- return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
17395
+ return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
17384
17396
  }
17385
17397
  var result = [];
17386
17398
  var i = 1;
17387
17399
  while (result.length < size) {
17388
- result = result.concat((values || FAKE_ENTITIES$1).map(function (entity) {
17400
+ result = result.concat((values || FAKE_ENTITIES).map(function (entity) {
17389
17401
  var name = entity.name + ' #' + i;
17390
17402
  return Object.assign(Object.assign({}, entity), { id: i++, name: name });
17391
17403
  }));
@@ -17395,7 +17407,7 @@
17395
17407
  var AutocompleteTestPage = /** @class */ (function () {
17396
17408
  function AutocompleteTestPage(formBuilder) {
17397
17409
  this.formBuilder = formBuilder;
17398
- this._items = deepCopy$1(FAKE_ENTITIES$1, 100);
17410
+ this._items = deepCopy(FAKE_ENTITIES, 100);
17399
17411
  this.$items = new rxjs.BehaviorSubject(undefined);
17400
17412
  this.autocompleteFields = new MatAutocompleteConfigHolder();
17401
17413
  this.memoryHide = false;
@@ -17440,7 +17452,7 @@
17440
17452
  });
17441
17453
  // From items
17442
17454
  this.autocompleteFields.add('entity-items-large', {
17443
- items: FAKE_ENTITIES$1.slice(),
17455
+ items: FAKE_ENTITIES.slice(),
17444
17456
  attributes: ['label', 'name', 'description', 'comments'],
17445
17457
  displayWith: this.entityToString
17446
17458
  });
@@ -17453,12 +17465,12 @@
17453
17465
  var _this = this;
17454
17466
  return __generator(this, function (_a) {
17455
17467
  data = {
17456
- entity: deepCopy$1(FAKE_ENTITIES$1)[0],
17468
+ entity: deepCopy(FAKE_ENTITIES)[0],
17457
17469
  // This item is NOT in the items list => i should be displayed anyway
17458
17470
  missingEntity: {
17459
17471
  id: -1, label: '??', name: 'Missing item'
17460
17472
  },
17461
- disableEntity: deepCopy$1(FAKE_ENTITIES$1)[2]
17473
+ disableEntity: deepCopy(FAKE_ENTITIES)[2]
17462
17474
  };
17463
17475
  this.form.setValue(data);
17464
17476
  // Load observables
@@ -17544,7 +17556,7 @@
17544
17556
  AutocompleteTestPage.decorators = [
17545
17557
  { type: i0.Component, args: [{
17546
17558
  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"
17559
+ 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
17560
  },] }
17549
17561
  ];
17550
17562
  AutocompleteTestPage.ctorParameters = function () { return [
@@ -17656,13 +17668,13 @@
17656
17668
  { type: Array, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [APP_TESTING_PAGES,] }] }
17657
17669
  ]; };
17658
17670
 
17659
- var moment$1 = momentImported__namespace;
17671
+ var moment$5 = momentImported__namespace;
17660
17672
  var SwipeTestPage = /** @class */ (function () {
17661
17673
  function SwipeTestPage(formBuilder, dateFormatPipe) {
17662
17674
  this.formBuilder = formBuilder;
17663
17675
  this.dateFormatPipe = dateFormatPipe;
17664
17676
  this.$dates = new rxjs.BehaviorSubject(undefined);
17665
- this._today = moment$1().startOf('day');
17677
+ this._today = moment$5().startOf('day');
17666
17678
  this.form = formBuilder.group({
17667
17679
  empty: [null, i1.Validators.required],
17668
17680
  date: [null, i1.Validators.compose([i1.Validators.required, SharedValidators.validDate])],
@@ -17676,7 +17688,7 @@
17676
17688
  var _this = this;
17677
17689
  var dates = [];
17678
17690
  for (var d = 0; d < 7; d++) {
17679
- dates[d] = moment$1(this._today).add(d - 3, 'day');
17691
+ dates[d] = moment$5(this._today).add(d - 3, 'day');
17680
17692
  }
17681
17693
  this.$dates.next(dates);
17682
17694
  this.loadData();
@@ -17950,7 +17962,7 @@
17950
17962
  }
17951
17963
  // Skip if value is not an array
17952
17964
  if (!(source instanceof Array) || control.length === 0) {
17953
- if (isNotNil(source))
17965
+ if (isNotEmptyArray(source))
17954
17966
  console.warn("WARN: please resize the FormArray '" + path + "' to the same length of the input array");
17955
17967
  return [];
17956
17968
  }
@@ -18359,7 +18371,7 @@
18359
18371
  return FormArrayHelper;
18360
18372
  }());
18361
18373
 
18362
- var moment = momentImported__namespace;
18374
+ var moment$6 = momentImported__namespace;
18363
18375
  var DateTimeTestPage = /** @class */ (function () {
18364
18376
  function DateTimeTestPage(platform, formBuilder, cd) {
18365
18377
  this.platform = platform;
@@ -18394,7 +18406,7 @@
18394
18406
  var now, data;
18395
18407
  var _this = this;
18396
18408
  return __generator(this, function (_a) {
18397
- now = moment();
18409
+ now = moment$6();
18398
18410
  data = {
18399
18411
  empty: toDateISOString(now.clone().add(2, 'hours')),
18400
18412
  enable: toDateISOString(now),
@@ -18458,23 +18470,23 @@
18458
18470
  { type: i0.ChangeDetectorRef }
18459
18471
  ]; };
18460
18472
 
18461
- var EntityTestClass = /** @class */ (function () {
18473
+ var EntityTestClass$1 = /** @class */ (function () {
18462
18474
  function EntityTestClass() {
18463
18475
  }
18464
18476
  return EntityTestClass;
18465
18477
  }());
18466
- var FAKE_ENTITIES = [
18478
+ var FAKE_ENTITIES$1 = [
18467
18479
  { id: 1, label: 'AAA', name: 'Item A' },
18468
18480
  { id: 2, label: 'BBB', name: 'Item B' },
18469
18481
  { id: 3, label: 'CCC', name: 'Item C' }
18470
18482
  ];
18471
- function deepCopy(values) {
18472
- return (values || FAKE_ENTITIES).map(function (entity) { return Object.assign({}, entity); });
18483
+ function deepCopy$1(values) {
18484
+ return (values || FAKE_ENTITIES$1).map(function (entity) { return Object.assign({}, entity); });
18473
18485
  }
18474
18486
  var ChipsTestPage = /** @class */ (function () {
18475
18487
  function ChipsTestPage(formBuilder) {
18476
18488
  this.formBuilder = formBuilder;
18477
- this._items = deepCopy(FAKE_ENTITIES);
18489
+ this._items = deepCopy$1(FAKE_ENTITIES$1);
18478
18490
  this._$items = new rxjs.BehaviorSubject(undefined);
18479
18491
  this.autocompleteFields = new MatAutocompleteConfigHolder();
18480
18492
  this.form = formBuilder.group({
@@ -18494,7 +18506,7 @@
18494
18506
  });
18495
18507
  // From items
18496
18508
  this.autocompleteFields.add('entity-items', {
18497
- items: FAKE_ENTITIES.slice(),
18509
+ items: FAKE_ENTITIES$1.slice(),
18498
18510
  attributes: ['label', 'name'],
18499
18511
  displayWith: this.entityToString
18500
18512
  });
@@ -18517,8 +18529,8 @@
18517
18529
  data = {
18518
18530
  entity: [],
18519
18531
  // 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)
18532
+ entityInitial: FAKE_ENTITIES$1.slice(1, 2),
18533
+ disableEntity: FAKE_ENTITIES$1.slice(1, 2)
18522
18534
  };
18523
18535
  this.form.setValue(data);
18524
18536
  return [2 /*return*/];
@@ -18528,7 +18540,7 @@
18528
18540
  ChipsTestPage.prototype.loadItems = function () {
18529
18541
  return __awaiter(this, void 0, void 0, function () {
18530
18542
  return __generator(this, function (_a) {
18531
- this._$items.next(deepCopy(FAKE_ENTITIES));
18543
+ this._$items.next(deepCopy$1(FAKE_ENTITIES$1));
18532
18544
  return [2 /*return*/];
18533
18545
  });
18534
18546
  });
@@ -18565,7 +18577,7 @@
18565
18577
  { type: i1.FormBuilder }
18566
18578
  ]; };
18567
18579
 
18568
- var routes$1 = [
18580
+ var routes = [
18569
18581
  {
18570
18582
  path: '',
18571
18583
  pathMatch: 'full',
@@ -18615,7 +18627,7 @@
18615
18627
  i1.ReactiveFormsModule,
18616
18628
  SharedMaterialModule,
18617
18629
  i1$2.TranslateModule.forChild(),
18618
- i3.RouterModule.forChild(routes$1)
18630
+ i3.RouterModule.forChild(routes)
18619
18631
  ],
18620
18632
  declarations: [
18621
18633
  MaterialTestingPage,
@@ -19733,7 +19745,7 @@
19733
19745
  };
19734
19746
  return UserSettingsValidatorService;
19735
19747
  }(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" });
19748
+ UserSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function UserSettingsValidatorService_Factory() { return new UserSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder)); }, token: UserSettingsValidatorService, providedIn: "root" });
19737
19749
  UserSettingsValidatorService.decorators = [
19738
19750
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19739
19751
  ];
@@ -19781,7 +19793,7 @@
19781
19793
  };
19782
19794
  return AccountValidatorService;
19783
19795
  }(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" });
19796
+ AccountValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountValidatorService_Factory() { return new AccountValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountService)); }, token: AccountValidatorService, providedIn: "root" });
19785
19797
  AccountValidatorService.decorators = [
19786
19798
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
19787
19799
  ];
@@ -20047,6 +20059,7 @@
20047
20059
  .subscribe(function (event) { return _this.onCancel.emit(event); }));
20048
20060
  // Escape
20049
20061
  this._subscription.add(hotkeys.addShortcut({ keys: 'escape', description: 'COMMON.BTN_CLOSE', preventDefault: false })
20062
+ .pipe(operators.filter(function (e) { return !e.defaultPrevented; }))
20050
20063
  .subscribe(function (event) { return _this.onBack.emit(event); }));
20051
20064
  }
20052
20065
  FormButtonsBarComponent.prototype.ngOnDestroy = function () {
@@ -20377,7 +20390,7 @@
20377
20390
  };
20378
20391
  return LocalSettingsValidatorService;
20379
20392
  }(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" });
20393
+ LocalSettingsValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function LocalSettingsValidatorService_Factory() { return new LocalSettingsValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(NetworkService)); }, token: LocalSettingsValidatorService, providedIn: "root" });
20381
20394
  LocalSettingsValidatorService.decorators = [
20382
20395
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
20383
20396
  ];
@@ -20976,7 +20989,13 @@
20976
20989
  });
20977
20990
  AppListForm.prototype.markAsTouched = function (opts) {
20978
20991
  AppFormUtils.markAsTouched(this.formArray, opts);
20979
- this.markForCheck();
20992
+ if (!opts || opts.emitEvent !== false)
20993
+ this.markForCheck();
20994
+ };
20995
+ AppListForm.prototype.markAllAsTouched = function (opts) {
20996
+ AppFormUtils.markAllAsTouched(this.formArray, opts);
20997
+ if (!opts || opts.emitEvent !== false)
20998
+ this.markForCheck();
20980
20999
  };
20981
21000
  AppListForm.prototype.ngOnInit = function () {
20982
21001
  var _this = this;
@@ -21008,6 +21027,9 @@
21008
21027
  this.helper.resize(data.length);
21009
21028
  this.helper.formArray.patchValue(data, { emitEvent: false });
21010
21029
  }
21030
+ else {
21031
+ console.warn('TODO: cannot applyied setValue() on fromArray, because formArrayHelper not exists yet !');
21032
+ }
21011
21033
  this.selection.clear();
21012
21034
  this.markAsPristine();
21013
21035
  this.loading = false;
@@ -21152,7 +21174,7 @@
21152
21174
  };
21153
21175
  return IsOnFieldModePipe;
21154
21176
  }());
21155
- IsOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
21177
+ IsOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsOnFieldModePipe_Factory() { return new IsOnFieldModePipe(); }, token: IsOnFieldModePipe, providedIn: "root" });
21156
21178
  IsOnFieldModePipe.decorators = [
21157
21179
  { type: i0.Pipe, args: [{
21158
21180
  name: 'isOnField'
@@ -21167,7 +21189,7 @@
21167
21189
  };
21168
21190
  return IsNotOnFieldModePipe;
21169
21191
  }());
21170
- IsNotOnFieldModePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
21192
+ IsNotOnFieldModePipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsNotOnFieldModePipe_Factory() { return new IsNotOnFieldModePipe(); }, token: IsNotOnFieldModePipe, providedIn: "root" });
21171
21193
  IsNotOnFieldModePipe.decorators = [
21172
21194
  { type: i0.Pipe, args: [{
21173
21195
  name: 'isNotOnField'
@@ -21185,7 +21207,7 @@
21185
21207
  };
21186
21208
  return PersonToStringPipe;
21187
21209
  }());
21188
- PersonToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
21210
+ PersonToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonToStringPipe_Factory() { return new PersonToStringPipe(); }, token: PersonToStringPipe, providedIn: "root" });
21189
21211
  PersonToStringPipe.decorators = [
21190
21212
  { type: i0.Pipe, args: [{
21191
21213
  name: 'personToString'
@@ -21420,7 +21442,7 @@
21420
21442
  };
21421
21443
  return IsLoginAccountPipe;
21422
21444
  }());
21423
- IsLoginAccountPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
21445
+ IsLoginAccountPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function IsLoginAccountPipe_Factory() { return new IsLoginAccountPipe(); }, token: IsLoginAccountPipe, providedIn: "root" });
21424
21446
  IsLoginAccountPipe.decorators = [
21425
21447
  { type: i0.Pipe, args: [{
21426
21448
  name: 'isLogin'
@@ -21435,7 +21457,7 @@
21435
21457
  };
21436
21458
  return AccountToStringPipe;
21437
21459
  }());
21438
- AccountToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
21460
+ AccountToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function AccountToStringPipe_Factory() { return new AccountToStringPipe(); }, token: AccountToStringPipe, providedIn: "root" });
21439
21461
  AccountToStringPipe.decorators = [
21440
21462
  { type: i0.Pipe, args: [{
21441
21463
  name: 'accountToString'
@@ -21453,7 +21475,7 @@
21453
21475
  };
21454
21476
  return DepartmentToStringPipe;
21455
21477
  }());
21456
- DepartmentToStringPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
21478
+ DepartmentToStringPipe.ɵprov = i0.ɵɵdefineInjectable({ factory: function DepartmentToStringPipe_Factory() { return new DepartmentToStringPipe(); }, token: DepartmentToStringPipe, providedIn: "root" });
21457
21479
  DepartmentToStringPipe.decorators = [
21458
21480
  { type: i0.Pipe, args: [{
21459
21481
  name: 'departmentToString'
@@ -21488,7 +21510,7 @@
21488
21510
  };
21489
21511
  return MenuService;
21490
21512
  }());
21491
- MenuService.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
21513
+ MenuService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MenuService_Factory() { return new MenuService(); }, token: MenuService, providedIn: "root" });
21492
21514
  MenuService.decorators = [
21493
21515
  { type: i0.Injectable, args: [{
21494
21516
  providedIn: 'root'
@@ -22067,7 +22089,7 @@
22067
22089
  };
22068
22090
  return AuthGuardService;
22069
22091
  }());
22070
- 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" });
22092
+ 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" });
22071
22093
  AuthGuardService.decorators = [
22072
22094
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
22073
22095
  ];
@@ -22118,7 +22140,7 @@
22118
22140
  query: query,
22119
22141
  variables: { id: id },
22120
22142
  fetchPolicy: opts && opts.fetchPolicy || undefined,
22121
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22143
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22122
22144
  })
22123
22145
  .pipe(operators.map(function (_b) {
22124
22146
  var data = _b.data;
@@ -22140,7 +22162,7 @@
22140
22162
  query: query,
22141
22163
  variables: { id: id },
22142
22164
  fetchPolicy: opts && opts.fetchPolicy || undefined,
22143
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22165
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' }
22144
22166
  })];
22145
22167
  case 1:
22146
22168
  data = (_b.sent()).data;
@@ -22176,7 +22198,7 @@
22176
22198
  totalFieldName: withTotal ? 'total' : undefined,
22177
22199
  insertFilterFn: filter && filter.asFilterFn(),
22178
22200
  variables: variables,
22179
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
22201
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'REFERENTIAL.ERROR.LOAD_DATA_ERROR' },
22180
22202
  fetchPolicy: opts && opts.fetchPolicy || undefined
22181
22203
  })
22182
22204
  .pipe(operators.map(function (_b) {
@@ -22218,7 +22240,7 @@
22218
22240
  return [4 /*yield*/, this.graphql.query({
22219
22241
  query: query,
22220
22242
  variables: variables,
22221
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
22243
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.LOAD_DATA_ERROR' },
22222
22244
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
22223
22245
  })];
22224
22246
  case 1:
@@ -22266,7 +22288,7 @@
22266
22288
  variables: {
22267
22289
  filter: filter && filter.asPodObject()
22268
22290
  },
22269
- error: { code: ErrorCodes$2.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
22291
+ error: { code: ErrorCodes.LOAD_DATA_ERROR, message: 'ERROR.COUNT_DATA_ERROR' },
22270
22292
  fetchPolicy: opts && opts.fetchPolicy || 'network-only'
22271
22293
  })];
22272
22294
  case 3:
@@ -22308,7 +22330,7 @@
22308
22330
  variables: {
22309
22331
  data: json
22310
22332
  },
22311
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22333
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22312
22334
  update: function (proxy, _b) {
22313
22335
  var data = _b.data;
22314
22336
  var savedEntities = data && data.data;
@@ -22375,7 +22397,7 @@
22375
22397
  variables: {
22376
22398
  data: json
22377
22399
  },
22378
- error: { code: ErrorCodes$2.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22400
+ error: { code: ErrorCodes.SAVE_DATA_ERROR, message: 'ERROR.SAVE_DATA_ERROR' },
22379
22401
  update: function (cache, _b) {
22380
22402
  var data = _b.data;
22381
22403
  // Update entity
@@ -22433,7 +22455,7 @@
22433
22455
  refetchQueries: this.getRefetchQueriesForMutation(opts),
22434
22456
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
22435
22457
  variables: { ids: ids },
22436
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22458
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22437
22459
  update: function (cache, res) {
22438
22460
  // Remove from cache
22439
22461
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -22486,7 +22508,7 @@
22486
22508
  refetchQueries: this.getRefetchQueriesForMutation(opts),
22487
22509
  awaitRefetchQueries: opts && opts.awaitRefetchQueries,
22488
22510
  variables: { id: id },
22489
- error: { code: ErrorCodes$2.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22511
+ error: { code: ErrorCodes.DELETE_DATA_ERROR, message: 'ERROR.DELETE_DATA_ERROR' },
22490
22512
  update: function (proxy, res) {
22491
22513
  // Remove from cache
22492
22514
  if (_this.watchQueriesUpdatePolicy === 'update-cache') {
@@ -22525,7 +22547,7 @@
22525
22547
  query: opts && opts.query || this.subscriptions.listenChanges,
22526
22548
  variables: variables,
22527
22549
  error: {
22528
- code: ErrorCodes$2.SUBSCRIBE_DATA_ERROR,
22550
+ code: ErrorCodes.SUBSCRIBE_DATA_ERROR,
22529
22551
  message: 'ERROR.SUBSCRIBE_DATA_ERROR'
22530
22552
  }
22531
22553
  })
@@ -22734,7 +22756,7 @@
22734
22756
  if (this._debug)
22735
22757
  invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._logTypeName + " row #" + row.id); });
22736
22758
  // Stop with an error
22737
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
22759
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
22738
22760
  }
22739
22761
  this._editingRowCount = 0;
22740
22762
  data = void 0;
@@ -23082,17 +23104,6 @@
23082
23104
  enumerable: false,
23083
23105
  configurable: true
23084
23106
  });
23085
- Object.defineProperty(AppTable.prototype, "focusColumn", {
23086
- get: function () {
23087
- return this._focusColumn;
23088
- },
23089
- // Focus manager
23090
- set: function (name) {
23091
- this._focusColumn = name;
23092
- },
23093
- enumerable: false,
23094
- configurable: true
23095
- });
23096
23107
  Object.defineProperty(AppTable.prototype, "firstUserColumn", {
23097
23108
  get: function () {
23098
23109
  return this.displayedColumns[RESERVED_START_COLUMNS.length];
@@ -23701,14 +23712,14 @@
23701
23712
  case 0:
23702
23713
  opts = Object.assign({ keepEditing: this.keepEditedRowOnSave }, opts);
23703
23714
  if (this.readOnly) {
23704
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23715
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23705
23716
  }
23706
23717
  this.resetError();
23707
23718
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
23708
23719
  this.previouslyEditedRowId = opts.keepEditing && ((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined;
23709
23720
  previouslyEditedData = isNotNil(this.previouslyEditedRowId) && this.editedRow.currentData || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.currentData);
23710
23721
  if (!this.confirmEditCreate()) {
23711
- throw { code: ErrorCodes$2.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
23722
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
23712
23723
  }
23713
23724
  // Mark as saving
23714
23725
  this.markAsSaving();
@@ -23861,7 +23872,7 @@
23861
23872
  switch (_d.label) {
23862
23873
  case 0:
23863
23874
  if (this.readOnly) {
23864
- throw { code: ErrorCodes$2.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23875
+ throw { code: ErrorCodes.TABLE_READ_ONLY, message: 'ERROR.TABLE_READ_ONLY' };
23865
23876
  }
23866
23877
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
23867
23878
  return [2 /*return*/, 0]; // SKip
@@ -24054,13 +24065,15 @@
24054
24065
  row = row || this.editedRow;
24055
24066
  if (!row || !row.editing)
24056
24067
  return;
24068
+ // DEBUG
24069
+ //console.debug('[app-table] Cancel the row (keydown.escape)');
24057
24070
  if (event) {
24058
24071
  // Avoid to cancel the editor
24059
24072
  event.preventDefault();
24060
24073
  event.stopPropagation();
24061
24074
  }
24062
- // If new row: delete silently
24063
- if (row.id === -1) {
24075
+ // If new row is invalid: delete silently
24076
+ if (row.id === -1 && row.validator.invalid) {
24064
24077
  this.deleteNewRow(event, row);
24065
24078
  }
24066
24079
  // If exists
@@ -24087,7 +24100,7 @@
24087
24100
  return false;
24088
24101
  }
24089
24102
  if (!row.editing && !this.loading) {
24090
- this._focusColumn = opts && opts.focusColumn || this._focusColumn;
24103
+ this.focusColumn = opts && opts.focusColumn || this.focusColumn;
24091
24104
  this._dataSource.startEdit(row);
24092
24105
  }
24093
24106
  this.editedRow = row;
@@ -25555,7 +25568,7 @@
25555
25568
  case 4:
25556
25569
  data = _b.sent();
25557
25570
  if (!data)
25558
- throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
25571
+ throw { code: ErrorCodes.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
25559
25572
  this._usageMode = this.computeUsageMode(data);
25560
25573
  return [4 /*yield*/, this.onEntityLoaded(data, opts)];
25561
25574
  case 5:
@@ -26285,10 +26298,10 @@
26285
26298
  exports.UserEventFilter = __decorate([
26286
26299
  EntityClass({ typename: 'UserEventVO' })
26287
26300
  ], exports.UserEventFilter);
26288
- 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);
26289
- 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);
26290
- 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"])));
26291
- 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);
26301
+ 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);
26302
+ 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);
26303
+ 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"])));
26304
+ 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);
26292
26305
  var UserEventService = /** @class */ (function (_super) {
26293
26306
  __extends(UserEventService, _super);
26294
26307
  function UserEventService(graphql, accountService, network, translate, toastController, environment) {
@@ -26609,7 +26622,7 @@
26609
26622
  };
26610
26623
  return UserEventService;
26611
26624
  }(BaseGraphqlService));
26612
- 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" });
26625
+ 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" });
26613
26626
  UserEventService.decorators = [
26614
26627
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
26615
26628
  ];
@@ -26621,7 +26634,7 @@
26621
26634
  { type: i1$5.ToastController },
26622
26635
  { type: undefined, decorators: [{ type: i0.Inject, args: [ENVIRONMENT,] }] }
26623
26636
  ]; };
26624
- var templateObject_1$1, templateObject_2$1, templateObject_3$1, templateObject_4$1;
26637
+ var templateObject_1$3, templateObject_2$3, templateObject_3$2, templateObject_4$2;
26625
26638
 
26626
26639
  var ICONS_MAP = {
26627
26640
  DEBUG_DATA: { matIcon: 'bug_report' },
@@ -26882,16 +26895,16 @@
26882
26895
  ], exports.PersonFilter);
26883
26896
 
26884
26897
  var PersonFragments = {
26885
- 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 }"])))
26898
+ 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 }"])))
26886
26899
  };
26887
26900
  // Load persons query
26888
26901
  var PersonQueries = {
26889
- 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),
26890
- 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)
26902
+ 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),
26903
+ 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)
26891
26904
  };
26892
26905
  var PersonMutations = {
26893
- 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),
26894
- 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 }"])))
26906
+ 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),
26907
+ 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 }"])))
26895
26908
  };
26896
26909
  var PersonService = /** @class */ (function (_super_1) {
26897
26910
  __extends(PersonService, _super_1);
@@ -27014,7 +27027,7 @@
27014
27027
  };
27015
27028
  return PersonService;
27016
27029
  }(BaseEntityService));
27017
- 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" });
27030
+ 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" });
27018
27031
  PersonService.decorators = [
27019
27032
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
27020
27033
  ];
@@ -27024,7 +27037,7 @@
27024
27037
  { type: NetworkService },
27025
27038
  { type: EntitiesStorage }
27026
27039
  ]; };
27027
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
27040
+ var templateObject_1$4, templateObject_2$4, templateObject_3$3, templateObject_4$3, templateObject_5$2;
27028
27041
 
27029
27042
  var PersonValidatorService = /** @class */ (function () {
27030
27043
  function PersonValidatorService(formBuilder, accountValidatorService) {
@@ -27047,7 +27060,7 @@
27047
27060
  };
27048
27061
  return PersonValidatorService;
27049
27062
  }());
27050
- 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" });
27063
+ PersonValidatorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function PersonValidatorService_Factory() { return new PersonValidatorService(i0.ɵɵinject(i1.FormBuilder), i0.ɵɵinject(AccountValidatorService)); }, token: PersonValidatorService, providedIn: "root" });
27051
27064
  PersonValidatorService.decorators = [
27052
27065
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
27053
27066
  ];
@@ -27219,7 +27232,7 @@
27219
27232
  ],
27220
27233
  animations: [slideUpDownAnimation],
27221
27234
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
27222
- 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}"]
27235
+ 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}"]
27223
27236
  },] }
27224
27237
  ];
27225
27238
  UsersPage.ctorParameters = function () { return [
@@ -27268,16 +27281,16 @@
27268
27281
  ];
27269
27282
  AdminModule.ctorParameters = function () { return []; };
27270
27283
 
27271
- var ɵ0 = {
27284
+ var ɵ0$a = {
27272
27285
  profile: 'ADMIN'
27273
27286
  };
27274
- var routes = [
27287
+ var routes$1 = [
27275
27288
  {
27276
27289
  path: 'users',
27277
27290
  pathMatch: 'full',
27278
27291
  component: UsersPage,
27279
27292
  canActivate: [AuthGuardService],
27280
- data: ɵ0
27293
+ data: ɵ0$a
27281
27294
  }
27282
27295
  ];
27283
27296
  var AdminRoutingModule = /** @class */ (function () {
@@ -27290,13 +27303,13 @@
27290
27303
  imports: [
27291
27304
  SharedRoutingModule,
27292
27305
  AdminModule,
27293
- i3.RouterModule.forChild(routes)
27306
+ i3.RouterModule.forChild(routes$1)
27294
27307
  ],
27295
27308
  exports: [i3.RouterModule]
27296
27309
  },] }
27297
27310
  ];
27298
27311
 
27299
- var ErrorCodes = {
27312
+ var ErrorCodes$2 = {
27300
27313
  LOAD_PERSONS_ERROR: 100,
27301
27314
  SAVE_PERSONS_ERROR: 101,
27302
27315
  DELETE_PERSONS_ERROR: 102,
@@ -27405,7 +27418,7 @@
27405
27418
  exports.EntityStore = EntityStore;
27406
27419
  exports.EntityUtils = EntityUtils;
27407
27420
  exports.Environment = Environment;
27408
- exports.ErrorCodes = ErrorCodes;
27421
+ exports.ErrorCodes = ErrorCodes$2;
27409
27422
  exports.EvenPipe = EvenPipe;
27410
27423
  exports.FileService = FileService;
27411
27424
  exports.FileSizePipe = FileSizePipe;
@@ -27413,7 +27426,7 @@
27413
27426
  exports.FormButtonsBarComponent = FormButtonsBarComponent;
27414
27427
  exports.FormButtonsBarToken = FormButtonsBarToken;
27415
27428
  exports.FormFieldValuesHolder = FormFieldValuesHolder;
27416
- exports.Fragments = Fragments;
27429
+ exports.Fragments = Fragments$1;
27417
27430
  exports.GraphqlService = GraphqlService;
27418
27431
  exports.HAMMER_PRESS_TIME = HAMMER_PRESS_TIME;
27419
27432
  exports.HAMMER_TAP_TIME = HAMMER_TAP_TIME;