@sumaris-net/ngx-components 0.27.23 → 0.28.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ngx-translate/core/lib/util'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/animations'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs')) :
3
- typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ngx-translate/core/lib/util', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/animations', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global.util, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.animations, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global.ngx$6, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global.i18, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"]));
5
- })(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, i1$2, i1$5, momentImported, i1$1, util, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, animations, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, ngxMaterialTable, collections, ngxJdenticon) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/animations'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs')) :
3
+ typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/animations', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.animations, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global.ngx$6, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global.i18, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"]));
5
+ })(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, animations, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, ngxMaterialTable, collections, ngxJdenticon) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -2481,7 +2481,7 @@
2481
2481
  return date1 && date2 && date1.isSameOrBefore(date2) ? date1 : date2;
2482
2482
  };
2483
2483
  DateUtils.max = function (date1, date2) {
2484
- return date1 && date2 && date1.isSameOrAfter(date2) ? date1 : date2;
2484
+ return !date1 ? date2 : (!date2 || date1.isSameOrAfter(date2) ? date1 : date2);
2485
2485
  };
2486
2486
  return DateUtils;
2487
2487
  }());
@@ -2854,7 +2854,7 @@
2854
2854
  TranslateContextService.prototype.get = function (key, context, interpolateParams) {
2855
2855
  var _this = this;
2856
2856
  // No context: do a normal translate
2857
- if (!util.isDefined(context))
2857
+ if (!isNil(context))
2858
2858
  return this.translate.get(key, interpolateParams);
2859
2859
  // Compute a contextual i18n key, using the context as suffix
2860
2860
  var contextKey = this.contextualKey(key, context);
@@ -2937,12 +2937,11 @@
2937
2937
  };
2938
2938
  return TranslateContextPipe;
2939
2939
  }());
2940
- TranslateContextPipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslateContextPipe_Factory() { return new TranslateContextPipe(i0__namespace.ɵɵinject(TranslateContextService), i0__namespace.ɵɵinject(i0__namespace.ChangeDetectorRef)); }, token: TranslateContextPipe, providedIn: "root" });
2941
2940
  TranslateContextPipe.decorators = [
2941
+ { type: i0.Injectable },
2942
2942
  { type: i0.Pipe, args: [{
2943
2943
  name: 'translateContext'
2944
- },] },
2945
- { type: i0.Injectable, args: [{ providedIn: 'root' },] }
2944
+ },] }
2946
2945
  ];
2947
2946
  TranslateContextPipe.ctorParameters = function () { return [
2948
2947
  { type: TranslateContextService },
@@ -2958,12 +2957,11 @@
2958
2957
  };
2959
2958
  return TranslatablePipe;
2960
2959
  }());
2961
- TranslatablePipe.ɵprov = i0__namespace.ɵɵdefineInjectable({ factory: function TranslatablePipe_Factory() { return new TranslatablePipe(); }, token: TranslatablePipe, providedIn: "root" });
2962
2960
  TranslatablePipe.decorators = [
2963
2961
  { type: i0.Pipe, args: [{
2964
2962
  name: 'translatable'
2965
2963
  },] },
2966
- { type: i0.Injectable, args: [{ providedIn: 'root' },] }
2964
+ { type: i0.Injectable }
2967
2965
  ];
2968
2966
 
2969
2967
  var PropertyGetPipe = /** @class */ (function () {
@@ -19141,7 +19139,7 @@
19141
19139
  this.error = null;
19142
19140
  this._enable = false;
19143
19141
  this._$ready = new rxjs.BehaviorSubject(false);
19144
- this._loading = true;
19142
+ this._$loading = new rxjs.BehaviorSubject(true);
19145
19143
  this.i18nFieldPrefix = null;
19146
19144
  this._subscription = new rxjs.Subscription();
19147
19145
  this.debug = false;
@@ -19157,9 +19155,25 @@
19157
19155
  });
19158
19156
  this.autocompleteFields = this.autocompleteHelper.fields;
19159
19157
  }
19160
- Object.defineProperty(AppForm.prototype, "_ready", {
19158
+ Object.defineProperty(AppForm.prototype, "_loading", {
19159
+ /**
19160
+ * @deprecated
19161
+ */
19162
+ get: function () {
19163
+ return this._$loading.value;
19164
+ },
19165
+ /**
19166
+ * @deprecated
19167
+ */
19168
+ set: function (value) {
19169
+ this._$loading.next(value);
19170
+ },
19171
+ enumerable: false,
19172
+ configurable: true
19173
+ });
19174
+ Object.defineProperty(AppForm.prototype, "loading", {
19161
19175
  get: function () {
19162
- return this._$ready.value == true;
19176
+ return this._$loading.value;
19163
19177
  },
19164
19178
  enumerable: false,
19165
19179
  configurable: true
@@ -19297,9 +19311,11 @@
19297
19311
  if (this.debug)
19298
19312
  console.debug('[form] Updating form (using entity)', data);
19299
19313
  // Convert object to json, then apply it to form (e.g. convert 'undefined' into 'null')
19300
- AppFormUtils.copyEntity2Form(data, this.form, Object.assign({ emitEvent: false, onlySelf: true }, opts));
19301
- if (!opts || opts.emitEvent !== true)
19314
+ AppFormUtils.copyEntity2Form(data, this.form, opts);
19315
+ if (!opts || opts.emitEvent !== false) {
19316
+ this.markAsLoaded({ emitEvent: false });
19302
19317
  this.markForCheck();
19318
+ }
19303
19319
  };
19304
19320
  AppForm.prototype.reset = function (data, opts) {
19305
19321
  if (data) {
@@ -19348,15 +19364,15 @@
19348
19364
  this.markForCheck();
19349
19365
  };
19350
19366
  AppForm.prototype.markAsLoading = function (opts) {
19351
- if (!this._loading) {
19352
- this._loading = true;
19367
+ if (this._$loading.value !== true) {
19368
+ this._$loading.next(true);
19353
19369
  if (!opts || opts.emitEvent !== false)
19354
19370
  this.markForCheck();
19355
19371
  }
19356
19372
  };
19357
19373
  AppForm.prototype.markAsLoaded = function (opts) {
19358
- if (this._loading) {
19359
- this._loading = false;
19374
+ if (this._$loading.value !== false) {
19375
+ this._$loading.next(false);
19360
19376
  if (!opts || opts.emitEvent !== false)
19361
19377
  this.markForCheck();
19362
19378
  }
@@ -19457,7 +19473,6 @@
19457
19473
  _this.network = network;
19458
19474
  _this.cd = cd;
19459
19475
  _this.environment = environment;
19460
- _this.loading = false;
19461
19476
  _this.canWorkOffline = false;
19462
19477
  _this.showPwd = false;
19463
19478
  _this.onCancel = new i0.EventEmitter();
@@ -19508,13 +19523,13 @@
19508
19523
  }
19509
19524
  if (this.form.invalid || this.loading)
19510
19525
  return;
19511
- this.loading = true;
19526
+ this.markAsLoading();
19512
19527
  var data = this.form.value;
19513
19528
  this.showPwd = false; // Hide password
19514
19529
  this.error = null; // Reset error
19515
19530
  this.registerSubscription(this.onSubmit
19516
19531
  .pipe(operators.debounceTime(500))
19517
- .subscribe(function (res) { return _this.loading = false; }));
19532
+ .subscribe(function (res) { return _this.markAsLoaded(); }));
19518
19533
  setTimeout(function () { return _this.onSubmit.emit({
19519
19534
  username: data.username,
19520
19535
  password: data.password,
@@ -20269,7 +20284,6 @@
20269
20284
  _this.translate = translate;
20270
20285
  _this.settings = settings;
20271
20286
  _this.cd = cd;
20272
- _this.loading = true;
20273
20287
  _this.email = {
20274
20288
  confirmed: false,
20275
20289
  notConfirmed: false,
@@ -20299,7 +20313,7 @@
20299
20313
  _this.onLogin(_this.accountService.account);
20300
20314
  }
20301
20315
  else {
20302
- _this.loading = false;
20316
+ _this.markAsLoaded();
20303
20317
  }
20304
20318
  }));
20305
20319
  return _this;
@@ -20317,7 +20331,7 @@
20317
20331
  this.enable();
20318
20332
  this.markAsPristine();
20319
20333
  this.startListenChanges();
20320
- this.loading = false;
20334
+ this.markAsLoaded();
20321
20335
  };
20322
20336
  AccountPage.prototype.onLogout = function () {
20323
20337
  this.isLogin = false;
@@ -20335,7 +20349,7 @@
20335
20349
  return __awaiter(this, void 0, void 0, function () {
20336
20350
  return __generator(this, function (_a) {
20337
20351
  this.disable();
20338
- this.loading = true;
20352
+ this.markAsLoading();
20339
20353
  return [2 /*return*/, this.accountService.refresh()];
20340
20354
  });
20341
20355
  });
@@ -20869,7 +20883,6 @@
20869
20883
  _this.cd = cd;
20870
20884
  _this.network = network;
20871
20885
  _this.locales = locales;
20872
- _this.loading = true;
20873
20886
  _this.saving = false;
20874
20887
  _this.usageModes = ['FIELD', 'DESK'];
20875
20888
  _this.propertyDefinitionsByKey = {};
@@ -20959,7 +20972,7 @@
20959
20972
  return __generator(this, function (_a) {
20960
20973
  switch (_a.label) {
20961
20974
  case 0:
20962
- this.loading = true;
20975
+ this.markAsLoading();
20963
20976
  console.debug('[settings] Loading settings...');
20964
20977
  data = this.settings.settings;
20965
20978
  // Set defaults
@@ -20995,7 +21008,7 @@
20995
21008
  this.enable({ emitEvent: false });
20996
21009
  // Apply inheritance
20997
21010
  this.setAccountInheritance(data.accountInheritance, { emitEvent: false });
20998
- this.loading = false;
21011
+ this.markAsLoaded();
20999
21012
  this.error = null;
21000
21013
  this.markForCheck();
21001
21014
  };
@@ -21234,7 +21247,6 @@
21234
21247
  _this.settings = settings;
21235
21248
  _this.cd = cd;
21236
21249
  _this.formGroupDir = formGroupDir;
21237
- _this.loading = true;
21238
21250
  _this.definitionsMapByKey = {};
21239
21251
  _this.definitionsByIndex = {};
21240
21252
  return _this;
@@ -21313,7 +21325,7 @@
21313
21325
  this.helper.resize(values.length);
21314
21326
  this.helper.formArray.patchValue(values, { emitEvent: false });
21315
21327
  this.markAsPristine();
21316
- this.loading = false;
21328
+ this.markAsLoaded();
21317
21329
  };
21318
21330
  /* -- protected methods -- */
21319
21331
  AppPropertiesForm.prototype.getPropertyFormGroup = function (data) {
@@ -21359,7 +21371,6 @@
21359
21371
  _this.settings = settings;
21360
21372
  _this.cd = cd;
21361
21373
  _this.formGroupDir = formGroupDir;
21362
- _this.loading = true;
21363
21374
  _this.selection = new collections.SelectionModel(true, []);
21364
21375
  _this.displayWithFn = referentialToString;
21365
21376
  _this.onNewItem = new i0.EventEmitter();
@@ -21485,7 +21496,7 @@
21485
21496
  }
21486
21497
  this.selection.clear();
21487
21498
  this.markAsPristine();
21488
- this.loading = false;
21499
+ this.markAsLoaded();
21489
21500
  };
21490
21501
  /** Whether the number of selected elements matches the total number of rows. */
21491
21502
  AppListForm.prototype.isAllSelected = function () {
@@ -25518,6 +25529,13 @@
25518
25529
  enumerable: false,
25519
25530
  configurable: true
25520
25531
  });
25532
+ Object.defineProperty(AppEditor.prototype, "forms", {
25533
+ get: function () {
25534
+ return this._children && this._children.filter(function (c) { return c instanceof AppForm; });
25535
+ },
25536
+ enumerable: false,
25537
+ configurable: true
25538
+ });
25521
25539
  Object.defineProperty(AppEditor.prototype, "dirty", {
25522
25540
  get: function () {
25523
25541
  var _a;
@@ -25676,10 +25694,15 @@
25676
25694
  }
25677
25695
  };
25678
25696
  AppEditor.prototype.markAsLoaded = function (opts) {
25697
+ var _a;
25679
25698
  if (this._loading) {
25680
25699
  this._loading = false;
25681
- if (!opts || opts.emitEvent !== false)
25700
+ if (!opts || opts.emitEvent !== false) {
25701
+ // Emit to children forms
25702
+ // Tables should be changed by parent
25703
+ (_a = this.forms) === null || _a === void 0 ? void 0 : _a.forEach(function (c) { return c.markAsLoaded(opts); });
25682
25704
  this.markForCheck();
25705
+ }
25683
25706
  }
25684
25707
  };
25685
25708
  AppEditor.prototype.markAsReady = function (opts) {
@@ -26300,49 +26323,60 @@
26300
26323
  */
26301
26324
  AppEntityEditor.prototype.load = function (id, opts) {
26302
26325
  return __awaiter(this, void 0, void 0, function () {
26303
- var data, data, err_1;
26326
+ var data, err_1, data, err_2;
26304
26327
  return __generator(this, function (_b) {
26305
26328
  switch (_b.label) {
26306
26329
  case 0:
26307
26330
  if (!this.dataService)
26308
26331
  throw new Error('Cannot load data: missing \'dataService\'!');
26309
26332
  this.error = null;
26310
- if (!isNil(id)) return [3 /*break*/, 3];
26333
+ if (!isNil(id)) return [3 /*break*/, 7];
26334
+ _b.label = 1;
26335
+ case 1:
26336
+ _b.trys.push([1, 4, 5, 6]);
26311
26337
  data = new this.dataType();
26312
26338
  this._usageMode = this.computeUsageMode(data);
26313
26339
  return [4 /*yield*/, this.onNewEntity(data, opts)];
26314
- case 1:
26340
+ case 2:
26315
26341
  _b.sent();
26316
26342
  return [4 /*yield*/, this.updateView(data, Object.assign({ openTabIndex: 0 }, opts))];
26317
- case 2:
26343
+ case 3:
26318
26344
  _b.sent();
26345
+ return [3 /*break*/, 6];
26346
+ case 4:
26347
+ err_1 = _b.sent();
26348
+ this.setError(err_1);
26349
+ this.selectedTabIndex = 0;
26350
+ return [3 /*break*/, 6];
26351
+ case 5:
26319
26352
  this.markAsLoaded();
26320
- return [3 /*break*/, 9];
26321
- case 3:
26322
- _b.trys.push([3, 7, 8, 9]);
26353
+ return [7 /*endfinally*/];
26354
+ case 6: return [3 /*break*/, 13];
26355
+ case 7:
26356
+ _b.trys.push([7, 11, 12, 13]);
26323
26357
  return [4 /*yield*/, this.dataService.load(id, opts)];
26324
- case 4:
26358
+ case 8:
26325
26359
  data = _b.sent();
26326
26360
  if (!data)
26327
26361
  throw { code: ErrorCodes$2.DATA_NOT_FOUND_ERROR, message: 'ERROR.DATA_NO_FOUND' };
26328
26362
  this._usageMode = this.computeUsageMode(data);
26329
26363
  return [4 /*yield*/, this.onEntityLoaded(data, opts)];
26330
- case 5:
26364
+ case 9:
26331
26365
  _b.sent();
26332
26366
  return [4 /*yield*/, this.updateView(data, opts)];
26333
- case 6:
26367
+ case 10:
26334
26368
  _b.sent();
26335
26369
  this.startListenRemoteChanges();
26336
- return [3 /*break*/, 9];
26337
- case 7:
26338
- err_1 = _b.sent();
26339
- this.setError(err_1);
26370
+ return [3 /*break*/, 13];
26371
+ case 11:
26372
+ err_2 = _b.sent();
26373
+ this.setError(err_2);
26340
26374
  this.selectedTabIndex = 0;
26341
- return [3 /*break*/, 9];
26342
- case 8:
26375
+ return [3 /*break*/, 13];
26376
+ case 12:
26343
26377
  this.markAsLoaded();
26344
26378
  return [7 /*endfinally*/];
26345
- case 9: return [2 /*return*/];
26379
+ case 13: return [2 /*return*/];
26346
26380
  }
26347
26381
  });
26348
26382
  });
@@ -26517,7 +26551,7 @@
26517
26551
  */
26518
26552
  AppEntityEditor.prototype.save = function (event, opts) {
26519
26553
  return __awaiter(this, void 0, void 0, function () {
26520
- var data, updatedData, err_2;
26554
+ var data, updatedData, err_3;
26521
26555
  return __generator(this, function (_b) {
26522
26556
  switch (_b.label) {
26523
26557
  case 0:
@@ -26570,15 +26604,15 @@
26570
26604
  this.submitted = false;
26571
26605
  return [2 /*return*/, true];
26572
26606
  case 7:
26573
- err_2 = _b.sent();
26607
+ err_3 = _b.sent();
26574
26608
  this.submitted = true;
26575
- this.setError(err_2);
26609
+ this.setError(err_3);
26576
26610
  this.selectedTabIndex = 0;
26577
26611
  this.scrollToTop(); // Scroll to top (to show error)
26578
26612
  this.markAsDirty();
26579
26613
  this.enable();
26580
26614
  // Concurrent change on pod
26581
- if (err_2.code === ServerErrorCodes.BAD_UPDATE_DATE && isNotNil(this.data.id)) {
26615
+ if (err_3.code === ServerErrorCodes.BAD_UPDATE_DATE && isNotNil(this.data.id)) {
26582
26616
  // Call a data reload (in background), to update the GraphQL cache, and allow to cancel changes
26583
26617
  this.dataService.load(this.data.id, { fetchPolicy: 'network-only' }).then(function () {
26584
26618
  console.debug('[data-editor] Data cache reloaded. User can reload page');
@@ -26631,7 +26665,7 @@
26631
26665
  };
26632
26666
  AppEntityEditor.prototype.delete = function (event) {
26633
26667
  return __awaiter(this, void 0, void 0, function () {
26634
- var confirmation, data, isNew, err_3;
26668
+ var confirmation, data, isNew, err_4;
26635
26669
  var _this = this;
26636
26670
  return __generator(this, function (_b) {
26637
26671
  switch (_b.label) {
@@ -26666,9 +26700,9 @@
26666
26700
  this.removePageHistory();
26667
26701
  return [3 /*break*/, 8];
26668
26702
  case 7:
26669
- err_3 = _b.sent();
26703
+ err_4 = _b.sent();
26670
26704
  this.submitted = true;
26671
- this.setError(err_3);
26705
+ this.setError(err_4);
26672
26706
  this.selectedTabIndex = 0;
26673
26707
  this.markAsSaved();
26674
26708
  this.enable();