@sumaris-net/ngx-components 1.19.3 → 1.20.0-rc3

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.
@@ -2908,7 +2908,7 @@ const moment$2 = momentImported;
2908
2908
  // @dynamic
2909
2909
  class SharedValidators {
2910
2910
  static getDoubleRegexp(maxDecimals) {
2911
- if (isNil(maxDecimals))
2911
+ if (isNil(maxDecimals) || maxDecimals === -1)
2912
2912
  return this._REGEXP_CACHE.DOUBLE_BY_MAX_DECIMALS.NO_LIMIT;
2913
2913
  if (maxDecimals < 0)
2914
2914
  throw new Error(`Invalid maxDecimals value: ${maxDecimals}`);
@@ -9730,6 +9730,10 @@ class EntityUtils {
9730
9730
  return isNotNil(obj.__typename) && (typeof obj.fromObject === 'function') && (typeof obj.asObject === 'function');
9731
9731
  }
9732
9732
  // Check that the object has a NOT nil attribute (ID by default)
9733
+ static isNotEntity(obj) {
9734
+ return isNil(obj.__typename) || (typeof obj.fromObject !== 'function') || (typeof obj.asObject !== 'function');
9735
+ }
9736
+ // Check that the object has a NOT nil attribute (ID by default)
9733
9737
  static isNotEmpty(obj, checkedAttribute) {
9734
9738
  return !!obj && obj[checkedAttribute] !== null && obj[checkedAttribute] !== undefined;
9735
9739
  }
@@ -20974,6 +20978,7 @@ CoreModule.decorators = [
20974
20978
  CacheModule,
20975
20979
  IonicStorageModule,
20976
20980
  NgxJdenticonModule,
20981
+ TranslateModule.forChild(),
20977
20982
  // Sub modules
20978
20983
  AppGraphQLModule,
20979
20984
  AppMenuModule
@@ -21562,8 +21567,6 @@ class AppTableUtils {
21562
21567
  }
21563
21568
  }
21564
21569
 
21565
- class AppTableDataSourceOptions {
21566
- }
21567
21570
  // @dynamic
21568
21571
  // eslint-disable-next-line @angular-eslint/directive-class-suffix
21569
21572
  class EntitiesTableDataSource extends TableDataSource {
@@ -21572,34 +21575,27 @@ class EntitiesTableDataSource extends TableDataSource {
21572
21575
  *
21573
21576
  * @param dataService A service to load and save data
21574
21577
  * @param dataType Type of data contained by the Table. If not specified, then `data` with at least one element must be specified.
21575
- * @param environment
21576
21578
  * @param validatorService Service that create instances of the FormGroup used to validate row fields.
21577
21579
  * @param config Additional configuration for table.
21578
21580
  */
21579
21581
  constructor(dataType, dataService, validatorService, config) {
21580
- super([], dataType, validatorService, config);
21582
+ super([], dataType, validatorService, Object.assign({ dataServiceOptions: {}, debug: config && config.suppressErrors === false, keepOriginalDataAfterConfirm: false }, config));
21581
21583
  this.dataService = dataService;
21582
21584
  this._creating = false;
21583
21585
  this._saving = false;
21584
- this._useValidator = false;
21585
21586
  this._stopWatching$ = new Subject();
21586
21587
  this._editingRowCount = 0;
21587
21588
  this._fetchMoreFn = null;
21588
21589
  this.loadingSubject = new BehaviorSubject(undefined);
21589
- this._options = Object.assign({ dataServiceOptions: {}, debug: config && config.suppressErrors === false, keepOriginalDataAfterConfirm: false }, config);
21590
- this._useValidator = isNotNil(validatorService);
21591
21590
  this._logTypeName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
21592
21591
  // For DEV ONLY
21593
- this._debug = this._options.debug === true;
21592
+ this._debug = this.config.debug === true;
21594
21593
  }
21595
21594
  get serviceOptions() {
21596
- return this._options.dataServiceOptions;
21595
+ return this.config.dataServiceOptions;
21597
21596
  }
21598
21597
  set serviceOptions(value) {
21599
- this._options.dataServiceOptions = value;
21600
- }
21601
- get options() {
21602
- return this._options;
21598
+ this.config.dataServiceOptions = value;
21603
21599
  }
21604
21600
  get loaded() {
21605
21601
  return this.loadingSubject.value === false; // Should be false when undefined (initial state)
@@ -21607,12 +21603,11 @@ class EntitiesTableDataSource extends TableDataSource {
21607
21603
  get loading() {
21608
21604
  return this.loadingSubject.value !== false; // Should be true when undefined (initial state)
21609
21605
  }
21610
- ngOnDestroy() {
21606
+ disconnect(collectionViewer) {
21607
+ super.disconnect(collectionViewer);
21611
21608
  this._stopWatching$.next();
21612
21609
  this._stopWatching$.complete();
21613
- this._stopWatching$.unsubscribe();
21614
21610
  this.loadingSubject.complete();
21615
- this.loadingSubject.unsubscribe();
21616
21611
  }
21617
21612
  watchAll(offset, size, sortBy, sortDirection, filter) {
21618
21613
  this._stopWatching$.next();
@@ -21656,27 +21651,26 @@ class EntitiesTableDataSource extends TableDataSource {
21656
21651
  // Get all rows
21657
21652
  const rows = yield this.getRows();
21658
21653
  // Finish editing all rows
21659
- const invalidRows = rows.filter(row => row.editing && !row.confirmEditCreate());
21654
+ const confirmed = yield this.confirmRows(rows);
21660
21655
  // Cannot finish some rows: error
21661
- if (invalidRows.length) {
21656
+ if (!confirmed) {
21662
21657
  // log errors
21663
21658
  if (this._debug)
21664
- invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
21659
+ this.getEditingRows(rows).forEach(row => AppTableUtils.logRowErrors(row, `[table-datasource] ${this._logTypeName} row #${row.id}`));
21665
21660
  // Stop with an error
21666
21661
  throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
21667
21662
  }
21668
21663
  this._editingRowCount = 0;
21669
21664
  let data;
21670
21665
  let dataToSave;
21671
- if (this._useValidator) {
21666
+ if (!!this.validatorService) {
21672
21667
  dataToSave = [];
21673
21668
  data = rows.map(row => {
21674
- const currentData = new this.dataConstructor();
21675
- currentData.fromObject(row.currentData);
21669
+ const entity = this.toEntity(row.currentData);
21676
21670
  // Filter to keep only dirty row
21677
21671
  if (onlyDirtyRows && row.validator.dirty)
21678
- dataToSave.push(currentData);
21679
- return currentData;
21672
+ dataToSave.push(entity);
21673
+ return entity;
21680
21674
  });
21681
21675
  if (!onlyDirtyRows)
21682
21676
  dataToSave = data;
@@ -21713,25 +21707,33 @@ class EntitiesTableDataSource extends TableDataSource {
21713
21707
  }
21714
21708
  });
21715
21709
  }
21716
- updateDatasource(data, opts) {
21717
- if (this._debug)
21718
- console.debug(`[table-datasource] Updating datasource with data:`, data);
21719
- super.updateDatasource(data, opts);
21720
- if (!opts || opts.emitEvent !== false) {
21721
- this.markAsLoaded();
21710
+ getDataFromRows(rows, options = { originalData: false, toEntity: false }) {
21711
+ if (options.toEntity) {
21712
+ return super.getDataFromRows(rows, options)
21713
+ .map(data => this.toEntity(data));
21722
21714
  }
21715
+ return super.getDataFromRows(rows, options);
21723
21716
  }
21724
- // Overwrite default signature
21725
- createNew(insertAt) {
21726
- this.asyncCreateNew(insertAt);
21727
- }
21728
- connect(collectionViewer) {
21729
- // DEBUG console.debug("[entities-datasource] connect");
21730
- return super.connect(collectionViewer);
21717
+ toEntity(data) {
21718
+ if (EntityUtils.isNotEntity(data)) {
21719
+ const entity = new this.dataConstructor();
21720
+ entity.fromObject(data);
21721
+ return entity;
21722
+ }
21723
+ return data;
21731
21724
  }
21732
- disconnect(collectionViewer) {
21733
- super.disconnect(collectionViewer);
21734
- this._stopWatching$.next();
21725
+ updateDatasource(data, opts = { emitEvent: true }) {
21726
+ const _super = Object.create(null, {
21727
+ updateDatasource: { get: () => super.updateDatasource }
21728
+ });
21729
+ return __awaiter(this, void 0, void 0, function* () {
21730
+ if (this._debug)
21731
+ console.debug(`[table-datasource] Updating datasource with data:`, data);
21732
+ yield _super.updateDatasource.call(this, data, opts);
21733
+ if (opts.emitEvent) {
21734
+ this.markAsLoaded();
21735
+ }
21736
+ });
21735
21737
  }
21736
21738
  waitIdle(debounceTimeMs) {
21737
21739
  return firstFalsePromise(this.loadingSubject
@@ -21740,34 +21742,60 @@ class EntitiesTableDataSource extends TableDataSource {
21740
21742
  ));
21741
21743
  }
21742
21744
  confirmCreate(row) {
21743
- if (!super.confirmCreate(row))
21744
- return false;
21745
- if (row.editing && row.validator) {
21746
- console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
21747
- row.validator.disable({ onlySelf: true, emitEvent: false });
21748
- }
21749
- return true;
21745
+ const _super = Object.create(null, {
21746
+ confirmCreate: { get: () => super.confirmCreate }
21747
+ });
21748
+ return __awaiter(this, void 0, void 0, function* () {
21749
+ if (!(yield _super.confirmCreate.call(this, row)))
21750
+ return false;
21751
+ if (row.editing && row.validator) {
21752
+ console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
21753
+ row.validator.disable({ onlySelf: true, emitEvent: false });
21754
+ }
21755
+ return true;
21756
+ });
21750
21757
  }
21751
21758
  confirmEdit(row) {
21752
- if (!super.confirmEdit(row))
21753
- return false;
21754
- if (row.editing && row.validator) {
21755
- console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
21756
- row.validator.disable({ onlySelf: true, emitEvent: false });
21757
- }
21758
- return true;
21759
+ const _super = Object.create(null, {
21760
+ confirmEdit: { get: () => super.confirmEdit }
21761
+ });
21762
+ return __awaiter(this, void 0, void 0, function* () {
21763
+ if (!(yield _super.confirmEdit.call(this, row)))
21764
+ return false;
21765
+ if (row.editing && row.validator) {
21766
+ console.warn('[table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
21767
+ row.validator.disable({ onlySelf: true, emitEvent: false });
21768
+ }
21769
+ return true;
21770
+ });
21759
21771
  }
21760
21772
  startEdit(row) {
21761
- if (this._debug)
21762
- console.debug('[table-datasource] Start to edit row', row);
21763
- row.startEdit();
21764
- this._editingRowCount++;
21773
+ const _super = Object.create(null, {
21774
+ startEdit: { get: () => super.startEdit }
21775
+ });
21776
+ return __awaiter(this, void 0, void 0, function* () {
21777
+ if (row.editing)
21778
+ return; // Already editing
21779
+ if (this._debug)
21780
+ console.debug('[table-datasource] Start to edit row', row);
21781
+ const done = yield _super.startEdit.call(this, row);
21782
+ if (done)
21783
+ this._editingRowCount++;
21784
+ return done;
21785
+ });
21765
21786
  }
21766
- cancelOrDelete(row) {
21767
- if (this._debug)
21768
- console.debug('[table-datasource] Cancelling or deleting row', row);
21769
- row.cancelOrDelete();
21770
- this._editingRowCount--;
21787
+ cancel(row) {
21788
+ const _super = Object.create(null, {
21789
+ cancel: { get: () => super.cancel }
21790
+ });
21791
+ return __awaiter(this, void 0, void 0, function* () {
21792
+ if (this._debug)
21793
+ console.debug('[table-datasource] Cancelling row', row);
21794
+ const done = yield _super.cancel.call(this, row);
21795
+ if (done)
21796
+ this._editingRowCount--;
21797
+ return done;
21798
+ });
21771
21799
  }
21772
21800
  handleError(error, message) {
21773
21801
  const errorMsg = error && error.message || error;
@@ -21782,59 +21810,77 @@ class EntitiesTableDataSource extends TableDataSource {
21782
21810
  throw error;
21783
21811
  }
21784
21812
  delete(id) {
21785
- // If new row: not need to propagate to the dataService
21786
- if (id === -1) {
21787
- return super.delete(id);
21788
- }
21789
- const row = this.getRow(id);
21790
- if (!row) {
21791
- console.error(`[table-datasource] Row to delete with id=${id} not found`);
21792
- return;
21793
- }
21794
- this.loadingSubject.next(true);
21795
- this.dataService.deleteAll([row.currentData], this.serviceOptions)
21796
- .catch(err => this.handleErrorPromise(err))
21797
- .then(() => {
21798
- setTimeout(() => {
21799
- // make sure row has been deleted (because GrapQHl cache remove can failed)
21813
+ const _super = Object.create(null, {
21814
+ delete: { get: () => super.delete }
21815
+ });
21816
+ return __awaiter(this, void 0, void 0, function* () {
21817
+ // If new row: not need to propagate to the dataService
21818
+ if (id === -1) {
21819
+ return _super.delete.call(this, id);
21820
+ }
21821
+ const row = this.getRow(id);
21822
+ if (!row) {
21823
+ console.error(`[table-datasource] Row to delete with id=${id} not found`);
21824
+ return;
21825
+ }
21826
+ this.markAsLoading();
21827
+ try {
21828
+ yield this.dataService.deleteAll([row.currentData], this.serviceOptions);
21829
+ // Make sure row has been deleted (because GrapQHl cache remove can failed)
21830
+ yield sleep(300);
21800
21831
  const present = this.getRow(id) === row;
21801
- if (present)
21802
- super.delete(id);
21803
- this.loadingSubject.next(false);
21804
- }, 300);
21832
+ if (present) {
21833
+ console.warn('[table-datasource] Force deletion of 1 row (Is service applying deletion to observable ?)');
21834
+ yield _super.delete.call(this, id);
21835
+ }
21836
+ }
21837
+ catch (err) {
21838
+ this.handleErrorPromise(err);
21839
+ }
21840
+ finally {
21841
+ this.markAsLoaded();
21842
+ }
21805
21843
  });
21806
21844
  }
21807
21845
  deleteAll(rows) {
21808
- this.markAsLoading();
21809
- const data = rows.map(r => r.currentData);
21810
- const rowsById = rows.reduce((res, row) => {
21811
- res[row.id] = row;
21812
- return res;
21813
- }, {});
21814
- const self = this;
21815
- const selfDelete = super.delete;
21816
- return this.dataService.deleteAll(data, this.serviceOptions)
21817
- .catch(err => this.handleErrorPromise(err))
21818
- .then(() => {
21819
- // Workaround, to be sure all rows has been deleted
21820
- // Sometimes, the service miss deletion, or GrapQHl cache remove failed
21821
- const rowNotDeleted = Object.getOwnPropertyNames(rowsById).reduce((res, id) => {
21822
- const row = rowsById[id];
21823
- const present = self.getRow(+id) === row;
21824
- return present ? res.concat(row) : res;
21825
- }, []).sort((a, b) => a.id > b.id ? -1 : 1);
21826
- // Apply missing deletion
21827
- if (isNotEmptyArray(rowNotDeleted)) {
21828
- console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows (Is service applying deletion to observable ?)`);
21829
- rowNotDeleted.forEach(r => selfDelete.call(self, r.id));
21846
+ const _super = Object.create(null, {
21847
+ delete: { get: () => super.delete }
21848
+ });
21849
+ return __awaiter(this, void 0, void 0, function* () {
21850
+ this.markAsLoading();
21851
+ const data = this.getDataFromRows(rows);
21852
+ const rowsById = rows.reduce((res, row) => {
21853
+ res[row.id] = row;
21854
+ return res;
21855
+ }, {});
21856
+ const self = this;
21857
+ try {
21858
+ yield this.dataService.deleteAll(data, this.serviceOptions);
21859
+ // Workaround, to be sure all rows has been deleted
21860
+ // Sometimes, the service miss deletion, or GrapQHl cache remove failed
21861
+ const rowNotDeleted = Object.getOwnPropertyNames(rowsById).reduce((res, id) => {
21862
+ const row = rowsById[id];
21863
+ const present = self.getRow(+id) === row;
21864
+ return present ? res.concat(row) : res;
21865
+ }, []).sort((a, b) => a.id > b.id ? -1 : 1);
21866
+ // Apply missing deletion
21867
+ if (isNotEmptyArray(rowNotDeleted)) {
21868
+ console.warn(`[table-datasource] Force deletion of ${rowNotDeleted.length} rows (Is service applying deletion to observable ?)`);
21869
+ yield Promise.all(rowNotDeleted.map(r => _super.delete.call(this, r.id)));
21870
+ }
21871
+ }
21872
+ catch (err) {
21873
+ this.handleErrorPromise(err);
21874
+ }
21875
+ finally {
21876
+ this.markAsLoaded();
21830
21877
  }
21831
- this.loadingSubject.next(false);
21832
21878
  });
21833
21879
  }
21834
21880
  getRows() {
21835
- return firstNotNilPromise(this.connect(null));
21881
+ return this.rowsSubject.toPromise();
21836
21882
  }
21837
- asyncCreateNew(insertAt) {
21883
+ createNew(insertAt) {
21838
21884
  const _super = Object.create(null, {
21839
21885
  createNew: { get: () => super.createNew }
21840
21886
  });
@@ -21842,22 +21888,39 @@ class EntitiesTableDataSource extends TableDataSource {
21842
21888
  if (this._creating)
21843
21889
  return; // Avoid multiple call (should never occur)
21844
21890
  this._creating = true;
21845
- _super.createNew.call(this, insertAt);
21846
- const row = this.getRow(-1);
21847
- if (row && this._options && this._options.onRowCreated) {
21848
- const res = this._options.onRowCreated(row);
21849
- // If async function, wait the end before ending
21850
- if (res instanceof Promise) {
21851
- try {
21852
- yield res;
21853
- }
21854
- catch (err) {
21855
- console.error(err && err.message || err, err);
21856
- }
21891
+ const done = yield _super.createNew.call(this, insertAt);
21892
+ if (done && this.config.onRowCreated) {
21893
+ const row = this.getRow(-1);
21894
+ try {
21895
+ yield this.config.onRowCreated(row);
21896
+ }
21897
+ catch (err) {
21898
+ console.error(err && err.message || err, err);
21899
+ // Continue
21857
21900
  }
21858
21901
  }
21859
- this._editingRowCount++;
21902
+ if (done)
21903
+ this._editingRowCount++;
21860
21904
  this._creating = false;
21905
+ return done;
21906
+ });
21907
+ }
21908
+ createRowValidator() {
21909
+ const _super = Object.create(null, {
21910
+ createRowValidator: { get: () => super.createRowValidator }
21911
+ });
21912
+ return __awaiter(this, void 0, void 0, function* () {
21913
+ const validator = yield _super.createRowValidator.call(this);
21914
+ if (validator && this.config.onRowValidator) {
21915
+ try {
21916
+ yield this.config.onRowValidator(validator);
21917
+ }
21918
+ catch (err) {
21919
+ console.error(err && err.message || err, err);
21920
+ // Continue
21921
+ }
21922
+ }
21923
+ return validator;
21861
21924
  });
21862
21925
  }
21863
21926
  getData() {
@@ -21872,21 +21935,24 @@ class EntitiesTableDataSource extends TableDataSource {
21872
21935
  });
21873
21936
  return __awaiter(this, void 0, void 0, function* () {
21874
21937
  if (!this._fetchMoreFn)
21875
- return false; // Avoid multiple call
21938
+ return false;
21876
21939
  if (this._editingRowCount > 0) {
21877
21940
  console.warn('Cannot fetch more because still editing row');
21878
21941
  return;
21879
21942
  }
21943
+ // Forget the fetchMore function, to avoid multiple call
21944
+ const fetchMoreFn = this._fetchMoreFn;
21945
+ this._fetchMoreFn = null;
21880
21946
  // Fetch next page
21881
- this._fetchMoreFn = null; // Avoid multiple call
21882
- const res = yield this._fetchMoreFn();
21947
+ const res = yield fetchMoreFn();
21883
21948
  // Skip if empty (no more data)
21884
21949
  if (isNotEmptyArray(res === null || res === void 0 ? void 0 : res.data))
21885
21950
  return false;
21886
21951
  // Update the data source
21952
+ // TODO review this, to keep existing rows, instead of creating new TableElement + validator !
21887
21953
  const existingData = yield this.getData();
21888
- _super.updateDatasource.call(this, existingData.concat(...res.data), opts);
21889
- // Remember fetchMore
21954
+ yield _super.updateDatasource.call(this, existingData.concat(...res.data), opts);
21955
+ // Store next fetchMore function
21890
21956
  this._fetchMoreFn = res.fetchMore;
21891
21957
  return true;
21892
21958
  });
@@ -21909,8 +21975,8 @@ EntitiesTableDataSource.decorators = [
21909
21975
  EntitiesTableDataSource.ctorParameters = () => [
21910
21976
  { type: Function },
21911
21977
  { type: undefined },
21912
- { type: ValidatorService },
21913
- { type: AppTableDataSourceOptions }
21978
+ { type: undefined },
21979
+ { type: undefined }
21914
21980
  ];
21915
21981
 
21916
21982
  const SETTINGS_DISPLAY_COLUMNS = 'displayColumns';
@@ -22302,7 +22368,6 @@ class AppTable {
22302
22368
  }
22303
22369
  }
22304
22370
  ngOnDestroy() {
22305
- var _a;
22306
22371
  this._subscription.unsubscribe();
22307
22372
  // Unsubscribe column value changes
22308
22373
  Object.keys(this._cellValueChangesDefs).forEach(col => this.stopCellValueChanges(col, true));
@@ -22327,7 +22392,6 @@ class AppTable {
22327
22392
  this.onError.unsubscribe();
22328
22393
  this._destroy$.next();
22329
22394
  this._destroy$.unsubscribe();
22330
- (_a = this._dataSource) === null || _a === void 0 ? void 0 : _a.ngOnDestroy();
22331
22395
  }
22332
22396
  updateView(res, opts) {
22333
22397
  return __awaiter(this, void 0, void 0, function* () {
@@ -22369,7 +22433,7 @@ class AppTable {
22369
22433
  this._dataSourceLoadingSubscription.unsubscribe();
22370
22434
  this._subscription.remove(this._dataSourceLoadingSubscription);
22371
22435
  }
22372
- (_a = this._dataSource) === null || _a === void 0 ? void 0 : _a.ngOnDestroy();
22436
+ (_a = this._dataSource) === null || _a === void 0 ? void 0 : _a.disconnect();
22373
22437
  this._dataSource = null;
22374
22438
  }
22375
22439
  addColumnDef(column) {
@@ -22424,13 +22488,15 @@ class AppTable {
22424
22488
  return true;
22425
22489
  }
22426
22490
  confirmAndForward(event, row) {
22427
- row = row || this.editedRow;
22428
- if (!this.confirmEditCreate(event, row)) {
22429
- return false;
22430
- }
22431
- // Edit next row
22432
- this.editRowById(event, row.id + 1, { focusColumn: this.firstUserColumn });
22433
- return true;
22491
+ return __awaiter(this, void 0, void 0, function* () {
22492
+ row = row || this.editedRow;
22493
+ const done = yield this.confirmEditCreate(event, row);
22494
+ if (done) {
22495
+ // Edit next row
22496
+ this.editRowById(event, row.id + 1, { focusColumn: this.firstUserColumn });
22497
+ }
22498
+ return done;
22499
+ });
22434
22500
  }
22435
22501
  editRowById(event, id, opts) {
22436
22502
  return __awaiter(this, void 0, void 0, function* () {
@@ -22454,48 +22520,44 @@ class AppTable {
22454
22520
  */
22455
22521
  confirmEditCreate(event, row) {
22456
22522
  var _a;
22457
- row = row || this.editedRow;
22458
- if (!row || !row.editing)
22459
- return true; // no row to confirm
22460
- // Stop event
22461
- event === null || event === void 0 ? void 0 : event.stopPropagation();
22462
- // Confirmation edition or creation
22463
- const confirmed = row.confirmEditCreate();
22464
- if (confirmed) {
22465
- // If edit finished, forget edited row
22466
- if (row === this.editedRow) {
22467
- this.editedRow = undefined;
22468
- }
22469
- // Mark table as dirty (if row is dirty)
22470
- if ((_a = row.validator) === null || _a === void 0 ? void 0 : _a.dirty) {
22471
- this.markAsDirty({ emitEvent: false /* because of resetError() */ });
22472
- }
22473
- // Clear error
22474
- this.resetError();
22475
- // Emit the confirm event
22476
- this.onConfirmEditCreateRow.next(row);
22477
- return true; // Continue
22478
- }
22479
- if (row.validator) {
22480
- // If pending: Wait end of validation, then loop
22481
- if (row.validator.pending) {
22482
- AppFormUtils.waitWhilePending(row.validator).then(() => this.confirmEditCreate(event, row));
22483
- return false;
22484
- }
22485
- // NOT confirmed = row has error
22486
- if (this.debug) {
22487
- console.warn('[table] Cannot confirm row, because invalid');
22488
- AppFormUtils.logFormErrors(row.validator, '[table] ');
22489
- }
22490
- // fix: mark all controls as touched to show errors
22491
- row.validator.markAllAsTouched();
22492
- // Compute row error, and propagate to table's error
22493
- if (this.propagateRowError) {
22494
- const error = this.getRowError(row);
22495
- this.setError(error);
22523
+ return __awaiter(this, void 0, void 0, function* () {
22524
+ row = row || this.editedRow;
22525
+ if (!row || !row.editing)
22526
+ return true; // no row to confirm
22527
+ // Stop event
22528
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
22529
+ // Confirmation edition or creation
22530
+ const done = yield row.confirmEditCreate();
22531
+ if (done) {
22532
+ // If edit finished, forget edited row
22533
+ if (row === this.editedRow) {
22534
+ this.editedRow = undefined;
22535
+ }
22536
+ // Mark table as dirty (if row is dirty)
22537
+ if ((_a = row.validator) === null || _a === void 0 ? void 0 : _a.dirty) {
22538
+ this.markAsDirty({ emitEvent: false /* because of resetError() */ });
22539
+ }
22540
+ // Clear error
22541
+ this.resetError();
22542
+ // Emit the confirm event
22543
+ this.onConfirmEditCreateRow.next(row);
22544
+ }
22545
+ else if (row.validator) {
22546
+ // NOT confirmed = row has error
22547
+ if (this.debug) {
22548
+ console.warn('[table] Cannot confirm row, because invalid');
22549
+ AppFormUtils.logFormErrors(row.validator, '[table] ');
22550
+ }
22551
+ // fix: mark all controls as touched to show errors
22552
+ row.validator.markAllAsTouched();
22553
+ // Compute row error, and propagate to table's error
22554
+ if (this.propagateRowError) {
22555
+ const error = this.getRowError(row);
22556
+ this.setError(error);
22557
+ }
22496
22558
  }
22497
- }
22498
- return false;
22559
+ return done;
22560
+ });
22499
22561
  }
22500
22562
  cancelOrDelete(event, row, opts) {
22501
22563
  // Delete new row
@@ -22540,6 +22602,7 @@ class AppTable {
22540
22602
  // Keep edited row id (should be done BEFORE confirmEditCreate() )
22541
22603
  this.previouslyEditedRowId = opts.keepEditing ? ((((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.editing) ? this.editedRow.id : undefined) || ((_b = this.singleSelectedRow) === null || _b === void 0 ? void 0 : _b.id)) : undefined;
22542
22604
  const previouslyEditedData = opts.keepEditing ? (isNotNil(this.previouslyEditedRowId) && ((_c = this.editedRow) === null || _c === void 0 ? void 0 : _c.currentData) || ((_d = this.singleSelectedRow) === null || _d === void 0 ? void 0 : _d.currentData)) : undefined;
22605
+ // TODO: remove this, has it redundant with dataSource.confirmAllRows() called in dataSource.save()
22543
22606
  if (!this.confirmEditCreate()) {
22544
22607
  throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
22545
22608
  }
@@ -23194,7 +23257,9 @@ class AppTable {
23194
23257
  addRowToTable(insertAt) {
23195
23258
  return __awaiter(this, void 0, void 0, function* () {
23196
23259
  this.focusFirstColumn = true;
23197
- yield this._dataSource.asyncCreateNew(insertAt);
23260
+ const done = yield this._dataSource.createNew(insertAt);
23261
+ if (!done)
23262
+ return undefined;
23198
23263
  this.editedRow = this._dataSource.getRow(-1);
23199
23264
  // Emit start editing event
23200
23265
  this.onStartEditingRow.emit(this.editedRow);
@@ -23325,59 +23390,64 @@ class AppTable {
23325
23390
  }
23326
23391
  }
23327
23392
  deleteNewRow(event, row) {
23328
- if (row.id !== -1)
23329
- throw new Error('Row must have id = -1');
23330
- event === null || event === void 0 ? void 0 : event.stopPropagation();
23331
- this.selection.clear();
23332
- this.editedRow = undefined; // unselect row
23333
- this._dataSource.cancelOrDelete(row);
23334
- this.onCancelOrDeleteRow.next(row);
23335
- this.resetError();
23336
- this.totalRowCount--;
23337
- this.visibleRowCount--;
23393
+ return __awaiter(this, void 0, void 0, function* () {
23394
+ if (row.id !== -1)
23395
+ throw new Error('Row must have id = -1');
23396
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
23397
+ this.selection.clear();
23398
+ this.editedRow = undefined; // unselect row
23399
+ const done = yield this._dataSource.cancelOrDelete(row);
23400
+ if (done) {
23401
+ this.onCancelOrDeleteRow.next(row);
23402
+ this.resetError();
23403
+ this.totalRowCount--;
23404
+ this.visibleRowCount--;
23405
+ }
23406
+ return done;
23407
+ });
23338
23408
  }
23339
23409
  deleteExistingRow(event, row, opts) {
23340
23410
  // Make sure row will be cancelled, and NOT deleted
23341
23411
  if (row.id === -1)
23342
23412
  throw new Error('Row must have an id');
23343
23413
  if (event === null || event === void 0 ? void 0 : event.defaultPrevented)
23344
- return 0; // SKip
23414
+ return Promise.resolve(false); // SKip
23345
23415
  event === null || event === void 0 ? void 0 : event.preventDefault();
23346
- this.deleteRow(null, row, opts);
23416
+ return this.deleteRow(null, row, opts);
23347
23417
  }
23348
23418
  cancelExistingRow(event, row, opts) {
23349
23419
  var _a;
23350
- // Make sure row will be cancelled, and NOT deleted
23351
- if (row.id === -1 || !row.editing)
23352
- throw new Error('Row cannot be canceling, but only deleting');
23353
- const confirmed = (!opts || opts.interactive !== false);
23354
- // Ask user confirmation, if cancel
23355
- if (!confirmed && ((_a = row.validator) === null || _a === void 0 ? void 0 : _a.dirty) && (this.confirmBeforeCancel || this.onBeforeCancelRows.observers.length > 0)) {
23356
- event.stopPropagation();
23357
- this.canCancelRows([row], opts)
23358
- .then(confirm => {
23359
- // If confirmed, loop
23360
- if (confirm)
23361
- this.cancelExistingRow(event, row, { interactive: false });
23362
- });
23363
- return;
23364
- }
23365
- const keepEditing = row.editing && (!opts || opts.keepEditing !== false);
23366
- this.editedRow = undefined; // unselect row
23367
- this._dataSource.cancelOrDelete(row);
23368
- this.onCancelOrDeleteRow.next(row);
23369
- // Mark row as pristine
23370
- this.checkIfRowPristine(row);
23371
- // Restore editing state
23372
- if (keepEditing) {
23373
- this.editRow(undefined, row);
23374
- }
23420
+ return __awaiter(this, void 0, void 0, function* () {
23421
+ // Make sure row will be cancelled, and NOT deleted
23422
+ if (row.id === -1 || !row.editing)
23423
+ throw new Error('Row cannot be canceling, but only deleting');
23424
+ const confirmed = (!opts || opts.interactive !== false);
23425
+ // Ask user confirmation, if cancel
23426
+ if (!confirmed && ((_a = row.validator) === null || _a === void 0 ? void 0 : _a.dirty) && (this.confirmBeforeCancel || this.onBeforeCancelRows.observers.length > 0)) {
23427
+ event.stopPropagation();
23428
+ const confirm = yield this.canCancelRows([row], opts);
23429
+ // If not confirmed: stop
23430
+ if (!confirm)
23431
+ return false;
23432
+ }
23433
+ const keepEditing = row.editing && (!opts || opts.keepEditing !== false);
23434
+ this.editedRow = undefined; // unselect row
23435
+ this._dataSource.cancelOrDelete(row);
23436
+ this.onCancelOrDeleteRow.next(row);
23437
+ // Mark row as pristine
23438
+ this.checkIfRowPristine(row);
23439
+ // Restore editing state
23440
+ if (keepEditing) {
23441
+ this.editRow(undefined, row);
23442
+ }
23443
+ return true;
23444
+ });
23375
23445
  }
23376
23446
  checkIfRowPristine(row, opts) {
23377
23447
  var _a, _b;
23378
23448
  return __awaiter(this, void 0, void 0, function* () {
23379
23449
  // Mark row as pristine
23380
- const markRowAsPristine = ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.options.keepOriginalDataAfterConfirm) === true;
23450
+ const markRowAsPristine = ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a.config.keepOriginalDataAfterConfirm) === true;
23381
23451
  if (markRowAsPristine) {
23382
23452
  (_b = row.validator) === null || _b === void 0 ? void 0 : _b.markAsPristine();
23383
23453
  // Check if table is now pristine
@@ -24786,7 +24856,7 @@ AppInMemoryTable.ctorParameters = () => [
24786
24856
  { type: Function },
24787
24857
  { type: InMemoryEntitiesService },
24788
24858
  { type: ValidatorService },
24789
- { type: AppTableDataSourceOptions },
24859
+ { type: undefined },
24790
24860
  { type: undefined }
24791
24861
  ];
24792
24862
  AppInMemoryTable.propDecorators = {
@@ -25962,7 +26032,11 @@ class UsersPage extends AppTable {
25962
26032
  switch (authTokenType) {
25963
26033
  case "basic":
25964
26034
  this.setShowColumn('pubkey', false, { emitEvent: false });
26035
+ this.setShowColumn('username', true, { emitEvent: false });
26036
+ this.setShowColumn('usernameExtranet', true, { emitEvent: false });
26037
+ break;
25965
26038
  case "basic-and-token":
26039
+ this.setShowColumn('pubkey', true, { emitEvent: false });
25966
26040
  this.setShowColumn('username', true, { emitEvent: false });
25967
26041
  this.setShowColumn('usernameExtranet', true, { emitEvent: false });
25968
26042
  break;
@@ -27493,5 +27567,5 @@ CoreTestingModule.decorators = [
27493
27567
  * Generated bundle index. Do not edit.
27494
27568
  */
27495
27569
 
27496
- export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableDataSourceOptions, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageService, MessageTypeList, MessageTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialErrorCodes, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UserEvent, UserEventFilter, UserEventFragments, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForTrue, waitIdle, waitWhilePending, ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh, AppIconComponent as ɵi, DateTestPage as ɵj, NumpadTestPage as ɵk, MatBadgeIconTestPage as ɵl, ToastTestingModule as ɵm, ToastTestingPage as ɵn };
27570
+ export { APP_ABOUT_DEVELOPERS, APP_ABOUT_PARTNERS, APP_CONFIG_OPTIONS, APP_FORM_ERROR_I18N_KEYS, APP_GRAPHQL_TYPE_POLICIES, APP_HOME_BUTTONS, APP_LOCALES, APP_LOCAL_SETTINGS, APP_LOCAL_SETTINGS_OPTIONS, APP_LOCAL_STORAGE_TYPE_POLICIES, APP_MENU_ITEMS, APP_TESTING_PAGES, AboutModal, Account, AccountPage, AccountService, AccountToStringPipe, ActionsColumnComponent, AdminModule, AdminRoutingModule, Alerts, AndroidOsEnvironment, AnimationState, AppEditor, AppEditorOptions, AppEntityEditor, AppForm, AppFormField, AppFormProvider, AppFormUtils, AppGestureConfig, AppGraphQLModule, AppHelpModal, AppInMemoryTable, AppInstallUpgradeCard, AppListForm, AppLoadingSpinner, AppMenuModule, AppNullForm, AppPropertiesForm, AppTabEditor, AppTabEditorOptions, AppTable, AppTableUtils, AppValidatorService, AppendToInputDirective, ArrayFilterPipe, ArrayFirstPipe, ArrayIncludesPipe, ArrayLengthPipe, ArrayPluckPipe, AudioProvider, AuthForm, AuthGuardService, AuthModal, AutocompleteTestPage, AutofocusDirective, Base58, BaseEntityService, BaseGraphqlService, BaseGraphqlServiceOptions, BaseReferential, Beans, CORE_CONFIG_OPTIONS, CORE_TESTING_PAGES, CellValueChangeListener, ChipsTestPage, Color, ColorScale, ComponentDirtyGuard, ConfigService, Configuration, CoreModule, CoreTestingModule, CryptoService, DATE_ISO_PATTERN, DATE_UNIX_MS_TIMESTAMP, DATE_UNIX_TIMESTAMP, DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLACEHOLDER_CHAR, DEFAULT_REQUIRED_COLUMNS, DateDiffDurationPipe, DateFormatPipe, DateFromNowPipe, DateTimeTestPage, DateUtils, Department, DepartmentToStringPipe, DragAndDropDirective, DurationPipe, ENTITIES_STORAGE_KEY_PREFIX, ENVIRONMENT, EmptyArrayPipe, EntitiesService, EntitiesStorage, EntitiesTableDataSource, Entity, EntityClass, EntityClasses, EntityFilter, EntityFilterUtils, EntityMetadataComponent, EntityStore, EntityUtils, Environment, EvenPipe, FileResponse, FileService, FileSizePipe, FilesUtils, FormArrayHelper, FormButtonsBarComponent, FormButtonsBarToken, FormErrorTranslatePipe, FormErrorTranslator, FormFieldValuesHolder, FormGetArrayPipe, FormGetControlPipe, FormGetGroupPipe, FormGetPipe, Fragments$1 as Fragments, GraphqlService, HAMMER_PRESS_TIME, HAMMER_TAP_TIME, HighlightPipe, HomePage, Hotkeys, HotkeysDialogComponent, InMemoryEntitiesService, IsLoginAccountPipe, IsNilOrBlankPipe, IsNotNilOrBlankPipe, IsNotOnFieldModePipe, IsOnFieldModePipe, JobUtils, KEYBOARD_HIDE_DELAY_MS, LAT_LONG_DEFAULT_MAX_DECIMALS, LAT_LONG_PATTERNS, LatLongFormatPipe, LatLongTestPage, LatitudeFormatPipe, LocalSettingsService, LongitudeFormatPipe, MINIFY_ENTITY_FOR_LOCAL_STORAGE, MINIFY_ENTITY_FOR_POD, MapGetPipe, MapKeysPipe, MapValuesPipe, MatAutocompleteConfigHolder, MatAutocompleteField, MatBadgeIconDirective, MatBooleanField, MatChipsField, MatDate, MatDateShort, MatDateTime, MatDuration, MatLatLongField, MatNumpadComponent, MatNumpadContainerComponent, MatNumpadContent, MatPaginatorI18n, MatStepperI18n, MatSwipeField, MaterialTestingModule, MathAbsPipe, MenuComponent, MenuItems, MenuService, Message, MessageFilter, MessageForm, MessageModal, MessageService, MessageTypeList, MessageTypes, ModalToolbarComponent, NetworkService, NgInitDirective, NgVarDirective, NotEmptyArrayPipe, NumberFormatPipe, NumpadDirective, OddPipe, PRIORITIZED_AUTHORITIES, PUBKEY_REGEXP, Peer, Person, PersonFilter, PersonFragments, PersonService, PersonToStringPipe, PersonUtils, PersonValidatorService, PlatformService, ProgressBarService, ProgressInterceptor, PropertyGetPipe, RESERVED_END_COLUMNS, RESERVED_START_COLUMNS, Referential, ReferentialFilter, ReferentialRef, ReferentialUtils, ReferentialValidatorService, RegisterConfirmPage, SETTINGS_DISPLAY_COLUMNS, SETTINGS_FILTER, SETTINGS_PAGE_SIZE, SETTINGS_SORTED_COLUMN, SETTINGS_STORAGE_KEY, SETTINGS_TRANSIENT_PROPERTIES, SHARED_MATERIAL_TESTING_PAGES, SHARED_TESTING_PAGES, SPACE_PLACEHOLDER_CHAR, SelectPeerModal, SettingsPage, SharedAsyncValidators, SharedDirectivesModule, SharedFormArrayValidators, SharedFormGroupValidators, SharedHotkeysModule, SharedMatAutocompleteModule, SharedMatBadgeIconModule, SharedMatBooleanModule, SharedMatChipsModule, SharedMatDateTimeModule, SharedMatDurationModule, SharedMatLatLongModule, SharedMatNumpadModule, SharedMatSwipeModule, SharedMaterialModule, SharedModule, SharedPipesModule, SharedRoutingModule, SharedTestingModule, SharedTestsPage, SharedValidators, SocialErrorCodes, SocialModule, Software, StartableService, StatusById, StatusIds, StatusList, StrIncludesPipe, StrLengthPipe, SwipeTestPage, TableSelectColumnsComponent, TableTestPage, TableTestingModule, TextForm, TextPopover, TextPopoverTestingModule, TextPopoverTestingPage, ToStringPipe, Toasts, ToolbarComponent, ToolbarToken, TranslatablePipe, TranslateContextPipe, TranslateContextService, UploadFile, UploadFileComponent, UploadFilePopover, UploadFileTestingModule, UploadFileTestingPage, UserEvent, UserEventFilter, UserEventFragments, UserEventService, UserEventTypes, UserEventsTable, UserSettings, UsersPage, accountToString, adaptValueToControl, addValueInArray, arrayDistinct, arrayGroupBy, arraySize, asInputElement, canHaveFocus, capitalizeFirstLetter, chainPromises, changeCaseToUnderscore, clearValueInArray, copyEntity2Form, createPromiseEvent, createPromiseEventEmitter, departmentToString, departmentsToString, disableControls, emitPromiseEvent, entityToString, equals, equalsOrNil, fadeInAnimation, fadeInOutAnimation, filterFalse, filterNotNil, filterNumberInput, filterTrue, firstArrayValue, firstFalse, firstFalsePromise, firstNotNil, firstNotNilPromise, firstTrue, firstTruePromise, focusInput, focusNextInput, focusPreviousInput, formatLatitude, formatLongitude, fromDateISOString, fromScrollEndEvent, fromUnixMsTimestamp, fromUnixTimestamp, getCaretPosition, getColorContrast, getColorShade, getColorTint, getConnectionType, getControlFromPath, getFocusableInputElements, getFormErrors, getFormValueFromEntity, getProperty, getPropertyByPath, getPropertyByPathAsString, getRandomImage, hexToRgb, hexToRgbArray, isAndroid, isBlankString, isControlHasInput, isCordova, isEmptyArray, isIOS, isInputElement, isInstanceOf, isInt, isMobile, isNil, isNilOrBlank, isNilOrNaN, isNotEmptyArray, isNotNil, isNotNilBoolean, isNotNilOrBlank, isNotNilOrNaN, isNotNilString, isNumber, isNumberRange, isProgressEvent, isResponseEvent, isTouchUi, isWindows, joinProperties, joinPropertiesPath, logFormErrors, markAllAsTouched, markAsUntouched, markControlAsTouched, markFormGroupAsTouched, matchMedia, matchUpperCase, mergeLoadResult, mixHex, moveInputCaretToSeparator, noTrailingSlash, notNilOrDefault, nullIfUndefined, parseLatitudeOrLongitude, propertiesPathComparator, propertyComparator, propertyPathComparator, referentialToString, referentialsToString, remove, removeAll, removeDiacritics, removeDuplicatesFromArray, removeEnd, removeValueInArray, replaceAll, resetCalculatedValue, resizeArray, rgbArrayToHex, rgbToHex, round, scrollFactory, selectInputContent, selectInputRange, setCalculatedValue, setTabIndex, sleep, slideInOutAnimation, slideUpDownAnimation, sort, splitById, splitByProperty, startsWithUpperCase, suggestFromArray, suggestFromStringArray, tabindexComparator, testUserAgent, toBoolean, toDateISOString, toDuration, toFloat, toInt, toNotNil, toNumber, trimEmptyToNull, uncapitalizeFirstLetter, updateValueAndValidity, waitFor, waitForTrue, waitIdle, waitWhilePending, ɵ0, CustomReuseStrategy as ɵa, MatNumpadDomService as ɵb, isFocusableElement as ɵc, RegisterForm as ɵd, AccountValidatorService as ɵe, RegisterModal as ɵf, UserSettingsValidatorService as ɵg, LocalSettingsValidatorService as ɵh, AppIconComponent as ɵi, DateTestPage as ɵj, NumpadTestPage as ɵk, MatBadgeIconTestPage as ɵl, ToastTestingModule as ɵm, ToastTestingPage as ɵn };
27497
27571
  //# sourceMappingURL=sumaris-net.ngx-components.js.map