@sumaris-net/ngx-components 1.23.0-rc2 → 1.23.0-rc5

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('@angular/animations'), 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/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('rxjs/internal/operators'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs'), require('moment-timezone')) :
3
- typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', 'rxjs/internal/operators', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs', 'moment-timezone'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.rxjs["internal/operators"], global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global["ionic-native"].downloader.ngx, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global["ionic-native"].downloader.ngx.index, global.ng.cdk.textField, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"], null, null, null, global["moment-timezone"]));
5
- })(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, operators$1, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon, tweetnaclUtil, scryptAsync, hammerjs, momentTZImported) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/cdk/table'), require('@angular/cdk/a11y'), require('@angular/cdk/overlay'), require('@angular/cdk/scrolling'), require('@angular/material/core'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/checkbox'), require('@angular/material/expansion'), require('@angular/material/toolbar'), require('@angular/material/icon'), require('@angular/material/button'), require('@angular/material/menu'), require('@angular/material/select'), require('@angular/material/card'), require('@angular/material/tabs'), require('@angular/material/stepper'), require('@angular/material/list'), require('@angular/material/button-toggle'), require('@angular/material/progress-spinner'), require('@angular/material/progress-bar'), require('@angular/material/radio'), require('@angular/material/badge'), require('@angular/material/slide-toggle'), require('@angular/material/dialog'), require('@angular/material/autocomplete'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@angular/animations'), require('@ngx-translate/core'), require('@ionic/angular'), require('moment'), require('@angular/material-moment-adapter'), require('@ionic-native/keyboard/ngx'), require('angular2-text-mask'), require('ngx-material-timepicker'), require('@angular/material/datepicker'), require('@angular/material/divider'), require('@angular/material/tooltip'), require('@angular/material/chips'), require('@angular/router'), require('@angular/platform-browser'), require('@angular/common/http'), require('ngx-color-picker'), require('@ionic-native/native-audio/ngx'), require('@ionic-native/vibration/ngx'), require('@ionic-native/audio-management/ngx'), require('@ionic-native/native-audio/ngx/index'), require('@ionic-native/vibration/ngx/index'), require('@ionic-native/audio-management/ngx/index'), require('uuid/v4'), require('@angular/cdk/drag-drop'), require('ngx-markdown'), require('tweetnacl'), require('@ionic/storage'), require('zone.js/dist/zone-error'), require('@ionic-native/splash-screen/ngx'), require('@ionic-native/network/ngx'), require('ionic-cache'), require('ionic-cache/dist/cache.service'), require('@ionic-native/network/ngx/index'), require('@ionic-native/splash-screen/ngx/index'), require('@ionic-native/status-bar/ngx'), require('@angular/cdk/platform'), require('@ionic-native/in-app-browser/ngx'), require('@apollo/client/core'), require('apollo-angular'), require('@apollo/client/link/ws'), require('@apollo/client/utilities'), require('@apollo/client/link/retry'), require('apollo-link-queue'), require('apollo-link-serialize'), require('apollo-link-logger'), require('apollo-angular/http'), require('apollo3-cache-persist'), require('@ionic-native/downloader/ngx'), require('@ionic-native/status-bar/ngx/index'), require('@ionic-native/keyboard/ngx/index'), require('@ionic-native/in-app-browser/ngx/index'), require('@ionic-native/downloader/ngx/index'), require('@angular/cdk/text-field'), require('@e-is/ngx-material-table'), require('@angular/cdk/collections'), require('ngx-jdenticon'), require('tweetnacl-util'), require('scrypt-async'), require('hammerjs'), require('moment-timezone')) :
3
+ typeof define === 'function' && define.amd ? define('@sumaris-net/ngx-components', ['exports', '@angular/core', '@angular/common', '@angular/cdk/table', '@angular/cdk/a11y', '@angular/cdk/overlay', '@angular/cdk/scrolling', '@angular/material/core', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/material/form-field', '@angular/material/input', '@angular/material/checkbox', '@angular/material/expansion', '@angular/material/toolbar', '@angular/material/icon', '@angular/material/button', '@angular/material/menu', '@angular/material/select', '@angular/material/card', '@angular/material/tabs', '@angular/material/stepper', '@angular/material/list', '@angular/material/button-toggle', '@angular/material/progress-spinner', '@angular/material/progress-bar', '@angular/material/radio', '@angular/material/badge', '@angular/material/slide-toggle', '@angular/material/dialog', '@angular/material/autocomplete', '@angular/forms', 'rxjs', 'rxjs/operators', '@angular/animations', '@ngx-translate/core', '@ionic/angular', 'moment', '@angular/material-moment-adapter', '@ionic-native/keyboard/ngx', 'angular2-text-mask', 'ngx-material-timepicker', '@angular/material/datepicker', '@angular/material/divider', '@angular/material/tooltip', '@angular/material/chips', '@angular/router', '@angular/platform-browser', '@angular/common/http', 'ngx-color-picker', '@ionic-native/native-audio/ngx', '@ionic-native/vibration/ngx', '@ionic-native/audio-management/ngx', '@ionic-native/native-audio/ngx/index', '@ionic-native/vibration/ngx/index', '@ionic-native/audio-management/ngx/index', 'uuid/v4', '@angular/cdk/drag-drop', 'ngx-markdown', 'tweetnacl', '@ionic/storage', 'zone.js/dist/zone-error', '@ionic-native/splash-screen/ngx', '@ionic-native/network/ngx', 'ionic-cache', 'ionic-cache/dist/cache.service', '@ionic-native/network/ngx/index', '@ionic-native/splash-screen/ngx/index', '@ionic-native/status-bar/ngx', '@angular/cdk/platform', '@ionic-native/in-app-browser/ngx', '@apollo/client/core', 'apollo-angular', '@apollo/client/link/ws', '@apollo/client/utilities', '@apollo/client/link/retry', 'apollo-link-queue', 'apollo-link-serialize', 'apollo-link-logger', 'apollo-angular/http', 'apollo3-cache-persist', '@ionic-native/downloader/ngx', '@ionic-native/status-bar/ngx/index', '@ionic-native/keyboard/ngx/index', '@ionic-native/in-app-browser/ngx/index', '@ionic-native/downloader/ngx/index', '@angular/cdk/text-field', '@e-is/ngx-material-table', '@angular/cdk/collections', 'ngx-jdenticon', 'tweetnacl-util', 'scrypt-async', 'hammerjs', 'moment-timezone'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global["sumaris-net"] = global["sumaris-net"] || {}, global["sumaris-net"]["ngx-components"] = {}), global.ng.core, global.ng.common, global.ng.cdk.table, global.ng.cdk.a11y, global.ng.cdk.overlay, global.ng.cdk.scrolling, global.ng.material.core, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.material.formField, global.ng.material.input, global.ng.material.checkbox, global.ng.material.expansion, global.ng.material.toolbar, global.ng.material.icon, global.ng.material.button, global.ng.material.menu, global.ng.material.select, global.ng.material.card, global.ng.material.tabs, global.ng.material.stepper, global.ng.material.list, global.ng.material.buttonToggle, global.ng.material.progressSpinner, global.ng.material.progressBar, global.ng.material.radio, global.ng.material.badge, global.ng.material.slideToggle, global.ng.material.dialog, global.ng.material.autocomplete, global.ng.forms, global.rxjs, global.rxjs.operators, global.ng.animations, global["ngx-translate"].core, global.ionic.angular, global.moment, global.ng.materialMomentAdapter, global["ionic-native"].keyboard.ngx, global["angular2-text-mask"], global["ngx-material-timepicker"], global.ng.material.datepicker, global.ng.material.divider, global.ng.material.tooltip, global.ng.material.chips, global.ng.router, global.ng.platformBrowser, global.ng.common.http, global["ngx-color-picker"], global["ionic-native"]["native-audio"].ngx, global["ionic-native"].vibration.ngx, global["ionic-native"]["audio-management"].ngx, global["ionic-native"]["native-audio"].ngx.index, global["ionic-native"].vibration.ngx.index, global["ionic-native"]["audio-management"].ngx.index, global.uuid.v4, global.ng.cdk.dragDrop, global["ngx-markdown"], global.tweetnacl, global.ionic.storage, null, global["ionic-native"]["splash-screen"].ngx, global["ionic-native"].network.ngx, global["ionic-cache"], global["ionic-cache/dist/cache"].service, global["ionic-native"].network.ngx.index, global["ionic-native"]["splash-screen"].ngx.index, global["ionic-native"]["status-bar"].ngx, global.ng.cdk.platform, global["ionic-native"]["in-app-browser"].ngx, global.apollo.client.core, global["apollo-angular"], global.apollo.client.link.ws, global.apollo.client.utilities, global.apollo.client.link.retry, global["apollo-link-queue"], global["apollo-link-serialize"], global["apollo-link-logger"], global["apollo-angular"].http, global["apollo3-cache-persist"], global["ionic-native"].downloader.ngx, global["ionic-native"]["status-bar"].ngx.index, global["ionic-native"].keyboard.ngx.index, global["ionic-native"]["in-app-browser"].ngx.index, global["ionic-native"].downloader.ngx.index, global.ng.cdk.textField, global["e-is"]["ngx-material-table"], global.ng.cdk.collections, global["ngx-jdenticon"], null, null, null, global["moment-timezone"]));
5
+ })(this, (function (exports, i0, i1$4, table$1, a11y, overlay, scrolling, i1$3, table, sort$1, paginator, formField, input, checkbox, expansion, toolbar, icon, button, menu, select, card, tabs, stepper, list, buttonToggle, progressSpinner, progressBar, radio, badge, slideToggle, i2, autocomplete, i1, rxjs, operators, animations, i1$2, i1$5, momentImported, i1$1, ngx, angular2TextMask, ngxMaterialTimepicker, datepicker, divider, tooltip, chips, i3, i1$6, i2$1, ngxColorPicker, ngx$2, ngx$3, ngx$1, i2$2, i3$1, i4, uuidv4Imported, dragDrop, ngxMarkdown, tweetnacl, i3$2, zoneError, ngx$5, ngx$4, ionicCache, i6, i9, i10, ngx$7, i2$4, ngx$8, core, i2$3, ws, utilities, retry, QueueLink, SerializingLink, loggerLink, i3$3, apollo3CachePersist, ngx$6, i14, i15, i17, i18, textField, ngxMaterialTable, collections, ngxJdenticon, tweetnaclUtil, scryptAsync, hammerjs, momentTZImported) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -10690,7 +10690,7 @@
10690
10690
  reader.readAsDataURL(file);
10691
10691
  // Resize image, if need
10692
10692
  if (opts) {
10693
- return $progress.pipe(operators$1.mergeMap(function (event) { return __awaiter(_this, void 0, void 0, function () {
10693
+ return $progress.pipe(operators.mergeMap(function (event) { return __awaiter(_this, void 0, void 0, function () {
10694
10694
  var body;
10695
10695
  return __generator(this, function (_a) {
10696
10696
  switch (_a.label) {
@@ -20829,7 +20829,7 @@
20829
20829
  _this.debug = false;
20830
20830
  _this.dirty = false;
20831
20831
  _this._saving = false;
20832
- _this._onChange = new rxjs.BehaviorSubject(true);
20832
+ _this.dataSubject = new rxjs.BehaviorSubject(null);
20833
20833
  options = Object.assign({ onSort: _this.sort }, options);
20834
20834
  _this._sortFn = options.onSort;
20835
20835
  _this._onLoad = options.onLoad;
@@ -20850,7 +20850,7 @@
20850
20850
  }
20851
20851
  Object.defineProperty(InMemoryEntitiesService.prototype, "value", {
20852
20852
  get: function () {
20853
- return this.data;
20853
+ return this.dataSubject.getValue();
20854
20854
  },
20855
20855
  set: function (data) {
20856
20856
  this.setValue(data);
@@ -20861,56 +20861,49 @@
20861
20861
  InMemoryEntitiesService.prototype.ngOnDestroy = function () {
20862
20862
  if (this.debug)
20863
20863
  console.debug('[memory-data-service] Destroying...');
20864
- this._onChange.complete();
20865
- this._onChange.unsubscribe();
20864
+ this.dataSubject.complete();
20865
+ this.dataSubject.unsubscribe();
20866
20866
  };
20867
- InMemoryEntitiesService.prototype.setValue = function (data, opts) {
20868
- if (this.data !== data) {
20867
+ InMemoryEntitiesService.prototype.setValue = function (data) {
20868
+ if (this.dataSubject.value !== data) {
20869
20869
  this._hiddenData = [];
20870
- this.data = data;
20871
- // Send to observers
20872
- if (!opts || opts.emitEvent !== false) {
20873
- this._onChange.next(true);
20874
- }
20870
+ this.dataSubject.next(data);
20875
20871
  }
20876
20872
  this.dirty = false;
20877
20873
  };
20878
20874
  InMemoryEntitiesService.prototype.loadAll = function (offset, size, sortBy, sortDirection, filter, opts) {
20879
20875
  return __awaiter(this, void 0, void 0, function () {
20880
- var excludedDataByFilter, excludedDataByPagination, data, total, res, nextOffset_1;
20876
+ var originalData, excludedDataByFilter, excludedDataByPagination, data, total, res, nextOffset_1;
20881
20877
  var _this = this;
20882
20878
  return __generator(this, function (_b) {
20883
20879
  switch (_b.label) {
20884
20880
  case 0:
20885
20881
  offset = offset >= 0 ? offset : 0;
20886
20882
  size = size >= 0 ? size : -1;
20887
- if (!!this.data) return [3 /*break*/, 2];
20888
- console.warn('[memory-data-service] Waiting value to be set...');
20889
- return [4 /*yield*/, firstNotNilPromise(this._onChange)];
20883
+ originalData = this.dataSubject.value;
20884
+ if (isNil(originalData)) {
20885
+ console.warn('[memory-data-service] Cannot load all: no value set. Will return empty result');
20886
+ }
20887
+ if (!this._saving) return [3 /*break*/, 2];
20888
+ return [4 /*yield*/, waitFor(function () { return !_this._saving; })];
20890
20889
  case 1:
20891
20890
  _b.sent();
20892
20891
  _b.label = 2;
20893
20892
  case 2:
20894
- if (!this._saving) return [3 /*break*/, 4];
20895
- return [4 /*yield*/, waitFor(function () { return !_this._saving; })];
20896
- case 3:
20897
- _b.sent();
20898
- _b.label = 4;
20899
- case 4:
20900
20893
  excludedDataByFilter = [];
20901
- _b.label = 5;
20902
- case 5:
20903
- _b.trys.push([5, , 8, 9]);
20904
- if (!this.data.length) {
20894
+ _b.label = 3;
20895
+ case 3:
20896
+ _b.trys.push([3, , 6, 7]);
20897
+ if (isEmptyArray(originalData)) {
20905
20898
  return [2 /*return*/, { data: [], total: 0 }];
20906
20899
  }
20907
- data = this._sortFn(this.data || [], sortBy, sortDirection);
20908
- if (!this._onLoad) return [3 /*break*/, 7];
20900
+ data = this._sortFn(originalData, sortBy, sortDirection);
20901
+ if (!this._onLoad) return [3 /*break*/, 5];
20909
20902
  return [4 /*yield*/, this._onLoad(data)];
20910
- case 6:
20903
+ case 4:
20911
20904
  data = _b.sent();
20912
- _b.label = 7;
20913
- case 7:
20905
+ _b.label = 5;
20906
+ case 5:
20914
20907
  // Apply filter (will update hiddenData)
20915
20908
  data = this.filter(data, filter, excludedDataByFilter);
20916
20909
  total = data.length;
@@ -20927,16 +20920,16 @@
20927
20920
  data = [];
20928
20921
  }
20929
20922
  else {
20930
- excludedDataByPagination = (size > 0 && ((offset + size) < data.length)) ?
20923
+ excludedDataByPagination = (size > 0 && ((offset + size) < data.length))
20931
20924
  // Slice using limit to size
20932
- data.slice(0, offset - 1).concat(data.slice(offset + size)) :
20925
+ ? data.slice(0, offset - 1).concat(data.slice(offset + size))
20933
20926
  // Slice without limit
20934
- data.slice(0, offset - 1);
20935
- data = (size > 0 && ((offset + size) < data.length)) ?
20927
+ : data.slice(0, offset - 1);
20928
+ data = (size > 0 && ((offset + size) < data.length))
20936
20929
  // Slice using limit to size
20937
- data.slice(offset, offset + size) :
20930
+ ? data.slice(offset, offset + size)
20938
20931
  // Slice without limit
20939
- data.slice(offset);
20932
+ : data.slice(offset);
20940
20933
  }
20941
20934
  }
20942
20935
  // Apply a limit
@@ -20950,7 +20943,7 @@
20950
20943
  }
20951
20944
  // /!\ If already observed, then always create a copy of the original array
20952
20945
  // Because datasource will only update if the array changed
20953
- if (data === this.data) {
20946
+ if (data === originalData) {
20954
20947
  data = data.slice();
20955
20948
  }
20956
20949
  res = { data: data, total: total };
@@ -20967,13 +20960,13 @@
20967
20960
  }); };
20968
20961
  }
20969
20962
  return [2 /*return*/, res];
20970
- case 8:
20963
+ case 6:
20971
20964
  // Remember hidden data
20972
20965
  if (offset === 0) {
20973
20966
  this._hiddenData = !excludedDataByPagination ? excludedDataByFilter : excludedDataByFilter.concat.apply(excludedDataByFilter, __spread(excludedDataByPagination));
20974
20967
  }
20975
20968
  return [7 /*endfinally*/];
20976
- case 9: return [2 /*return*/];
20969
+ case 7: return [2 /*return*/];
20977
20970
  }
20978
20971
  });
20979
20972
  });
@@ -20982,11 +20975,10 @@
20982
20975
  var _this = this;
20983
20976
  offset = offset >= 0 ? offset : 0;
20984
20977
  size = size >= 0 ? size : -1;
20985
- if (!this.data) {
20986
- console.warn('[memory-data-service] Waiting value to be set...');
20987
- }
20988
- return this._onChange
20989
- .pipe(operators.filter(isNotNil), operators.mergeMap(function (_) { return _this.loadAll(offset, size, sortBy, sortDirection, filterData, options); }));
20978
+ return this.dataSubject
20979
+ .pipe(
20980
+ // Warn if waiting value to be set
20981
+ operators.tap(function (data) { return !data && console.warn('[memory-data-service] Waiting value to be set...'); }), operators.filter(isNotNil), operators.mergeMap(function (_) { return _this.loadAll(offset, size, sortBy, sortDirection, filterData, options); }));
20990
20982
  };
20991
20983
  InMemoryEntitiesService.prototype.saveAll = function (data, options) {
20992
20984
  return __awaiter(this, void 0, void 0, function () {
@@ -20994,7 +20986,7 @@
20994
20986
  return __generator(this, function (_c) {
20995
20987
  switch (_c.label) {
20996
20988
  case 0:
20997
- if (!this.data)
20989
+ if (!this.dataSubject.value)
20998
20990
  throw new Error('[memory-service] Could not save, because value not set');
20999
20991
  this.markAsSaving();
21000
20992
  _c.label = 1;
@@ -21017,9 +21009,9 @@
21017
21009
  data = _b;
21018
21010
  _c.label = 5;
21019
21011
  case 5:
21020
- this.data = data;
21012
+ this.dataSubject.next(data);
21021
21013
  this.dirty = true;
21022
- return [2 /*return*/, this.data];
21014
+ return [2 /*return*/, data];
21023
21015
  case 6:
21024
21016
  this.markAsSaved();
21025
21017
  return [7 /*endfinally*/];
@@ -21030,20 +21022,21 @@
21030
21022
  };
21031
21023
  InMemoryEntitiesService.prototype.deleteAll = function (dataToRemove, options) {
21032
21024
  return __awaiter(this, void 0, void 0, function () {
21033
- var updatedData, deleteCount;
21025
+ var data, updatedData, deleteCount;
21034
21026
  var _this = this;
21035
21027
  return __generator(this, function (_b) {
21036
- if (!this.data)
21028
+ data = this.dataSubject.value;
21029
+ if (!data)
21037
21030
  throw new Error('[memory-service] Could not delete, because value not set');
21038
- updatedData = this.data.filter(function (entity) {
21031
+ updatedData = data.filter(function (entity) {
21039
21032
  var removed = dataToRemove.findIndex(function (entityToRemove) { return _this.equals(entityToRemove, entity); }) !== -1;
21040
21033
  return !removed;
21041
21034
  });
21042
- deleteCount = this.data.length - updatedData.length;
21035
+ deleteCount = data.length - updatedData.length;
21043
21036
  if (deleteCount > 0) {
21044
- this.data = updatedData;
21037
+ data = updatedData;
21045
21038
  this.dirty = true;
21046
- this._onChange.next(true);
21039
+ this.dataSubject.next(data);
21047
21040
  }
21048
21041
  return [2 /*return*/];
21049
21042
  });
@@ -21073,7 +21066,7 @@
21073
21066
  */
21074
21067
  get: function () {
21075
21068
  var _a;
21076
- return (((_a = this.data) === null || _a === void 0 ? void 0 : _a.length) || 0);
21069
+ return (((_a = this.dataSubject.value) === null || _a === void 0 ? void 0 : _a.length) || 0);
21077
21070
  },
21078
21071
  enumerable: false,
21079
21072
  configurable: true
@@ -21104,9 +21097,8 @@
21104
21097
  return data;
21105
21098
  };
21106
21099
  InMemoryEntitiesService.prototype.connect = function () {
21107
- var _this = this;
21108
- return this._onChange.pipe(operators.map(function (_) {
21109
- var data = _this.data || [];
21100
+ return this.dataSubject.pipe(operators.map(function (data) {
21101
+ data = data || [];
21110
21102
  var total = data.length;
21111
21103
  return { data: data, total: total };
21112
21104
  }));
@@ -22903,7 +22895,7 @@
22903
22895
  FormButtonsBarComponent.decorators = [
22904
22896
  { type: i0.Component, args: [{
22905
22897
  selector: 'app-form-buttons-bar',
22906
- template: "\n<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <!-- show menu button -->\n <ion-col size=\"auto\" class=\"hidden-xs hidden-sm\">\n <ion-menu-toggle>\n <button\n mat-icon-button\n color=\"accent\"\n [title]=\"'COMMON.BTN_SHOW_MENU' | translate\"\n (click)=\"menu.toggleSplitPaneWhen()\">\n <mat-icon><span>&#xbb;</span></mat-icon>\n </button>\n </ion-menu-toggle>\n </ion-col>\n\n <ion-col>\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- close (go back) -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"onBack.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <!-- reload -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\" color=\"danger\"\n [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n",
22898
+ template: "\n<ion-toolbar [class]=\"classList\">\n <ion-row class=\"ion-no-padding\" nowrap>\n <!-- show menu button -->\n <ion-col size=\"auto\" class=\"hidden-xs hidden-sm\">\n <ion-menu-toggle>\n <button\n mat-icon-button\n color=\"accent\"\n [title]=\"'COMMON.BTN_SHOW_MENU' | translate\"\n (click)=\"menu.toggleSplitPaneWhen()\">\n <mat-icon><span>&#xbb;</span></mat-icon>\n </button>\n </ion-menu-toggle>\n </ion-col>\n\n <ion-col class=\"app-form-buttons-bar-content\">\n <ng-content></ng-content>\n </ion-col>\n\n <ion-col size=\"auto\">\n\n <ng-content select=\"[slot=end]\"></ng-content>\n\n <!-- close (go back) -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onBack.emit($event)\"\n (keyup.enter)=\"onBack.emit($event)\"\n *ngIf=\"onBack.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_CLOSE</ion-label>\n </ion-button>\n\n <!-- reload -->\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"onCancel.emit($event)\"\n (keyup.enter)=\"onCancel.emit($event)\"\n [disabled]=\"disabledCancel\">\n <ion-icon slot=\"start\" name=\"refresh\"></ion-icon>\n <ion-label translate>COMMON.BTN_RESET</ion-label>\n </ion-button>\n\n <!-- next -->\n <ion-button fill=\"solid\" (click)=\"onNext.emit($event)\" (keyup.enter)=\"onNext.emit($event)\" *ngIf=\"onNext.observers | isNotEmptyArray\">\n <ion-label translate>COMMON.BTN_NEXT</ion-label>\n <ion-icon slot=\"end\" name=\"arrow-forward\"></ion-icon>\n </ion-button>\n\n <!-- save -->\n <ion-button [fill]=\"disabled ? 'clear' : 'solid'\"\n (click)=\"onSave.emit($event)\"\n (keyup.enter)=\"onSave.emit($event)\" color=\"danger\"\n [disabled]=\"disabled\">\n <ion-label [innerHTML]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT'|translate\" [title]=\"'COMMON.BTN_SAVE_WITH_SHORTCUT_HELP'|translate\"></ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n</ion-toolbar>\n",
22907
22899
  providers: [
22908
22900
  { provide: FormButtonsBarToken, useExisting: FormButtonsBarComponent }
22909
22901
  ],
@@ -25825,8 +25817,9 @@
25825
25817
  * @param config Additional configuration for table.
25826
25818
  */
25827
25819
  function EntitiesTableDataSource(dataType, dataService, validatorService, options) {
25828
- var _this = _super_1.call(this, [], dataType, validatorService, Object.assign({ dataServiceOptions: {}, debug: (options === null || options === void 0 ? void 0 : options.suppressErrors) === false, keepOriginalDataAfterConfirm: false }, options)) || this;
25820
+ var _this = _super_1.call(this, [], dataType, validatorService, Object.assign({ keepOriginalDataAfterConfirm: false, readOnly: false, saveOnlyDirtyRows: false, dataServiceOptions: {} }, options)) || this;
25829
25821
  _this.dataService = dataService;
25822
+ _this._debug = false;
25830
25823
  _this._creating = false;
25831
25824
  _this._saving = false;
25832
25825
  _this._stopWatching$ = new rxjs.Subject();
@@ -25834,6 +25827,7 @@
25834
25827
  _this._fetchMoreFn = null;
25835
25828
  _this.loadingSubject = new rxjs.BehaviorSubject(undefined);
25836
25829
  _this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
25830
+ _this._debug = (options === null || options === void 0 ? void 0 : options.suppressErrors) === false && !environment.production;
25837
25831
  return _this;
25838
25832
  }
25839
25833
  Object.defineProperty(EntitiesTableDataSource.prototype, "serviceOptions", {
@@ -25911,8 +25905,8 @@
25911
25905
  return __generator(this, function (_b) {
25912
25906
  switch (_b.label) {
25913
25907
  case 0:
25914
- if (toBoolean(this.serviceOptions.readOnly, false)) {
25915
- console.error('[table-datasource] Enable to save, because serviceOptions.readOnly=true');
25908
+ if (this.config.readOnly) {
25909
+ console.error('[table-datasource] Enable to save, because config.readOnly=true');
25916
25910
  return [2 /*return*/, false];
25917
25911
  }
25918
25912
  // Saving twice (should never occur)
@@ -25922,18 +25916,18 @@
25922
25916
  }
25923
25917
  this._saving = true;
25924
25918
  this.markAsLoading();
25925
- onlyDirtyRows = toBoolean(this.serviceOptions.saveOnlyDirtyRows, false);
25919
+ onlyDirtyRows = this.config.saveOnlyDirtyRows;
25926
25920
  _b.label = 1;
25927
25921
  case 1:
25928
25922
  _b.trys.push([1, 3, 4, 5]);
25929
- if (this.config.debug)
25930
- console.debug("[table-datasource] Saving " + this._entityName + " rows... {onlyDirty: " + onlyDirtyRows + "}");
25923
+ if (this._debug)
25924
+ console.debug("[table-datasource] Saving " + this._entityName + " rows... {onlyDirtyRows: " + onlyDirtyRows + "}");
25931
25925
  rows = this.getRows();
25932
25926
  invalidRows = rows.filter(function (row) { return row.editing && !row.confirmEditCreate(); });
25933
25927
  // Cannot finish some rows: error
25934
25928
  if (invalidRows.length) {
25935
25929
  // log errors
25936
- if (this.config.debug)
25930
+ if (this._debug)
25937
25931
  invalidRows.forEach(function (row) { return AppTableUtils.logRowErrors(row, "[table-datasource] " + _this._entityName + " row #" + row.id); });
25938
25932
  // Stop with an error
25939
25933
  throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
@@ -25961,23 +25955,23 @@
25961
25955
  }
25962
25956
  // If no data to save: exit
25963
25957
  if (onlyDirtyRows && !dataToSave_1.length) {
25964
- if (this.config.debug)
25958
+ if (this._debug)
25965
25959
  console.debug("[table-datasource] No " + this._entityName + " data to save. Skip");
25966
25960
  return [2 /*return*/, false];
25967
25961
  }
25968
- if (this.config.debug)
25962
+ if (this._debug)
25969
25963
  console.debug("[table-datasource] Asking service to save this " + this._entityName + " data:", dataToSave_1);
25970
25964
  return [4 /*yield*/, this.dataService.saveAll(dataToSave_1, this.serviceOptions)];
25971
25965
  case 2:
25972
25966
  _b.sent();
25973
- if (this.config.debug)
25967
+ if (this._debug)
25974
25968
  console.debug("[table-datasource] Saving " + this._entityName + " data [OK]");
25975
25969
  // LP 23/03/2021: update datasource is necessary but can be changed to a refetch() on QueryRef (must be created and registered in GraphqlService.watchQuery)
25976
25970
  this.updateDatasource(data, { emitEvent: false });
25977
25971
  return [2 /*return*/, true];
25978
25972
  case 3:
25979
25973
  error_1 = _b.sent();
25980
- if (this.config.debug)
25974
+ if (this._debug)
25981
25975
  console.error('[table-datasource] Error while saving: ' + error_1 && error_1.message || error_1);
25982
25976
  throw error_1;
25983
25977
  case 4:
@@ -25990,7 +25984,7 @@
25990
25984
  });
25991
25985
  };
25992
25986
  EntitiesTableDataSource.prototype.updateDatasource = function (data, opts) {
25993
- if (this.config.debug)
25987
+ if (this._debug)
25994
25988
  console.debug("[table-datasource] Updating datasource with data:", data);
25995
25989
  _super_1.prototype.updateDatasource.call(this, data, opts);
25996
25990
  if (!opts || opts.emitEvent !== false) {
@@ -26122,6 +26116,9 @@
26122
26116
  });
26123
26117
  });
26124
26118
  };
26119
+ EntitiesTableDataSource.prototype.getRow = function (id) {
26120
+ return _super_1.prototype.getRow.call(this, id);
26121
+ };
26125
26122
  EntitiesTableDataSource.prototype.getRows = function () {
26126
26123
  return this.rowsSubject.getValue();
26127
26124
  };
@@ -33903,8 +33900,7 @@
33903
33900
  if (isNil(this.data)) {
33904
33901
  this.data = this.generateData(0, TableTestPage.maxRowCount);
33905
33902
  }
33906
- this.dataService.setValue(this.data, { emitEvent: false });
33907
- this.onRefresh.emit();
33903
+ this.dataService.value = this.data;
33908
33904
  };
33909
33905
  TableTestPage.prototype.fetchMore = function (event) {
33910
33906
  return __awaiter(this, void 0, void 0, function () {
@@ -33917,9 +33913,12 @@
33917
33913
  case 1:
33918
33914
  fetched = _a.sent();
33919
33915
  if (!(fetched && (event === null || event === void 0 ? void 0 : event.target) && event.target.complete)) return [3 /*break*/, 3];
33916
+ // Wait end of load
33920
33917
  return [4 /*yield*/, this.waitIdle()];
33921
33918
  case 2:
33919
+ // Wait end of load
33922
33920
  _a.sent();
33921
+ // Mark target event as completed (e.g. IonRefresher)
33923
33922
  event.target.complete();
33924
33923
  _a.label = 3;
33925
33924
  case 3: return [2 /*return*/];