@sumaris-net/ngx-components 2.4.106 → 2.4.107

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,6 +1,6 @@
1
1
  import { AppFormUtils } from '../form/form.utils';
2
2
  import { EntityUtils } from '../services/model/entity.model';
3
- import { isNotNil, isNotNilOrNaN } from '../../shared/functions';
3
+ import { isNotNil } from '../../shared/functions';
4
4
  export class AppTableUtils {
5
5
  static waitIdle(table) {
6
6
  if (!table || !table.dataSource) {
@@ -12,6 +12,9 @@ export class AppTableUtils {
12
12
  AppFormUtils.logFormErrors(row.validator, logPrefix);
13
13
  }
14
14
  static getEntityId(row) {
15
+ // When using validator: use the control (avoid to load the full form's value)
16
+ if (row.validator)
17
+ return row.validator.get('id').value;
15
18
  return EntityUtils.getId(row.currentData);
16
19
  }
17
20
  static getEntityIds(rows) {
@@ -19,7 +22,7 @@ export class AppTableUtils {
19
22
  .map((row) => row.currentData)
20
23
  .filter(isNotNil)
21
24
  .map(EntityUtils.getId)
22
- .filter(isNotNilOrNaN);
25
+ .filter(isNotNil);
23
26
  }
24
27
  static getEntities(rows) {
25
28
  return (rows || [])
@@ -27,4 +30,4 @@ export class AppTableUtils {
27
30
  .filter(isNotNil);
28
31
  }
29
32
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBQyxXQUFXLEVBQVUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsUUFBUSxFQUFFLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRS9ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBOEI7UUFDNUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1NBQ3JFO1FBQ0QsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQTZDLEVBQUUsU0FBa0I7UUFDbkYsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUF5RCxHQUEyQztRQUNwSCxPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUF5RCxJQUFnRDtRQUMxSCxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQzthQUNoQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7YUFDN0IsTUFBTSxDQUFDLFFBQVEsQ0FBQzthQUNoQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUN0QixNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQXlELElBQWdEO1FBQ3pILE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQ2hCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQzthQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBUYWJsZX0gZnJvbSAnLi90YWJsZS5jbGFzcyc7XG5pbXBvcnQge1RhYmxlRWxlbWVudH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7QXBwRm9ybVV0aWxzfSBmcm9tICcuLi9mb3JtL2Zvcm0udXRpbHMnO1xuaW1wb3J0IHtBc3luY1RhYmxlRWxlbWVudH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlL3NyYy9hcHAvbmd4LW1hdGVyaWFsLXRhYmxlL2FzeW5jL2FzeW5jLXRhYmxlLWVsZW1lbnQnO1xuaW1wb3J0IHtFbnRpdHlVdGlscywgSUVudGl0eX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7aXNOb3ROaWwsIGlzTm90TmlsT3JOYU59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgY2xhc3MgQXBwVGFibGVVdGlscyB7XG5cbiAgc3RhdGljIHdhaXRJZGxlKHRhYmxlOiBBcHBUYWJsZTxhbnksIGFueSwgYW55Pik6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCF0YWJsZSB8fCAhdGFibGUuZGF0YVNvdXJjZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhYmxlLiBNaXNzaW5nIHRhYmxlIG9yIHRhYmxlLmRhdGFTb3VyY2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlLmRhdGFTb3VyY2Uud2FpdElkbGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBsb2dSb3dFcnJvcnMocm93OiBUYWJsZUVsZW1lbnQ8YW55PnxBc3luY1RhYmxlRWxlbWVudDxhbnk+LCBsb2dQcmVmaXg/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBBcHBGb3JtVXRpbHMubG9nRm9ybUVycm9ycyhyb3cudmFsaWRhdG9yLCBsb2dQcmVmaXgpO1xuICB9XG5cbiAgc3RhdGljIGdldEVudGl0eUlkPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiA9IElFbnRpdHk8YW55LCBhbnk+LCBJRCA9IGFueT4ocm93OiBUYWJsZUVsZW1lbnQ8VD4gfCBBc3luY1RhYmxlRWxlbWVudDxUPik6IElEIHtcbiAgICByZXR1cm4gRW50aXR5VXRpbHMuZ2V0SWQocm93LmN1cnJlbnREYXRhKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRFbnRpdHlJZHM8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+ID0gSUVudGl0eTxhbnksIGFueT4sIElEID0gYW55Pihyb3dzOiBUYWJsZUVsZW1lbnQ8VD5bXSB8IEFzeW5jVGFibGVFbGVtZW50PFQ+W10pOiBJRFtdIHtcbiAgICByZXR1cm4gKHJvd3MgfHwgW10pXG4gICAgICAubWFwKChyb3cpID0+IHJvdy5jdXJyZW50RGF0YSlcbiAgICAgIC5maWx0ZXIoaXNOb3ROaWwpXG4gICAgICAubWFwKEVudGl0eVV0aWxzLmdldElkKVxuICAgICAgLmZpbHRlcihpc05vdE5pbE9yTmFOKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRFbnRpdGllczxUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4gPSBJRW50aXR5PGFueSwgYW55PiwgSUQgPSBhbnk+KHJvd3M6IFRhYmxlRWxlbWVudDxUPltdIHwgQXN5bmNUYWJsZUVsZW1lbnQ8VD5bXSk6IFRbXSB7XG4gICAgcmV0dXJuIChyb3dzIHx8IFtdKVxuICAgICAgLm1hcCgocm93KSA9PiByb3cuY3VycmVudERhdGEpXG4gICAgICAuZmlsdGVyKGlzTm90TmlsKTtcbiAgfVxufVxuIl19
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvdGFibGUvdGFibGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBRWhELE9BQU8sRUFBQyxXQUFXLEVBQVUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUMsUUFBUSxFQUFnQixNQUFNLHdCQUF3QixDQUFDO0FBRS9ELE1BQU0sT0FBTyxhQUFhO0lBRXhCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBOEI7UUFDNUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1NBQ3JFO1FBQ0QsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQTZDLEVBQUUsU0FBa0I7UUFDbkYsWUFBWSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUF5RCxHQUEyQztRQUNwSCw4RUFBOEU7UUFDOUUsSUFBSSxHQUFHLENBQUMsU0FBUztZQUFFLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBVyxDQUFDO1FBQzlELE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQXlELElBQWdEO1FBQzFILE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2FBQ2hCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQzthQUM3QixNQUFNLENBQUMsUUFBUSxDQUFDO2FBQ2hCLEdBQUcsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQ3RCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBeUQsSUFBZ0Q7UUFDekgsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7YUFDaEIsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO2FBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcFRhYmxlfSBmcm9tICcuL3RhYmxlLmNsYXNzJztcbmltcG9ydCB7VGFibGVFbGVtZW50fSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtBcHBGb3JtVXRpbHN9IGZyb20gJy4uL2Zvcm0vZm9ybS51dGlscyc7XG5pbXBvcnQge0FzeW5jVGFibGVFbGVtZW50fSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUvc3JjL2FwcC9uZ3gtbWF0ZXJpYWwtdGFibGUvYXN5bmMvYXN5bmMtdGFibGUtZWxlbWVudCc7XG5pbXBvcnQge0VudGl0eVV0aWxzLCBJRW50aXR5fSBmcm9tICcuLi9zZXJ2aWNlcy9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtpc05vdE5pbCwgaXNOb3ROaWxPck5hTn0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBBcHBUYWJsZVV0aWxzIHtcblxuICBzdGF0aWMgd2FpdElkbGUodGFibGU6IEFwcFRhYmxlPGFueSwgYW55LCBhbnk+KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRhYmxlIHx8ICF0YWJsZS5kYXRhU291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdGFibGUuIE1pc3NpbmcgdGFibGUgb3IgdGFibGUuZGF0YVNvdXJjZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGFibGUuZGF0YVNvdXJjZS53YWl0SWRsZSgpO1xuICB9XG5cbiAgc3RhdGljIGxvZ1Jvd0Vycm9ycyhyb3c6IFRhYmxlRWxlbWVudDxhbnk+fEFzeW5jVGFibGVFbGVtZW50PGFueT4sIGxvZ1ByZWZpeD86IHN0cmluZyk6IHZvaWQge1xuICAgIEFwcEZvcm1VdGlscy5sb2dGb3JtRXJyb3JzKHJvdy52YWxpZGF0b3IsIGxvZ1ByZWZpeCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RW50aXR5SWQ8VCBleHRlbmRzIElFbnRpdHk8VCwgSUQ+ID0gSUVudGl0eTxhbnksIGFueT4sIElEID0gYW55Pihyb3c6IFRhYmxlRWxlbWVudDxUPiB8IEFzeW5jVGFibGVFbGVtZW50PFQ+KTogSUQge1xuICAgIC8vIFdoZW4gdXNpbmcgdmFsaWRhdG9yOiB1c2UgdGhlIGNvbnRyb2wgKGF2b2lkIHRvIGxvYWQgdGhlIGZ1bGwgZm9ybSdzIHZhbHVlKVxuICAgIGlmIChyb3cudmFsaWRhdG9yKSByZXR1cm4gcm93LnZhbGlkYXRvci5nZXQoJ2lkJykudmFsdWUgYXMgSUQ7XG4gICAgcmV0dXJuIEVudGl0eVV0aWxzLmdldElkKHJvdy5jdXJyZW50RGF0YSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0RW50aXR5SWRzPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiA9IElFbnRpdHk8YW55LCBhbnk+LCBJRCA9IGFueT4ocm93czogVGFibGVFbGVtZW50PFQ+W10gfCBBc3luY1RhYmxlRWxlbWVudDxUPltdKTogSURbXSB7XG4gICAgcmV0dXJuIChyb3dzIHx8IFtdKVxuICAgICAgLm1hcCgocm93KSA9PiByb3cuY3VycmVudERhdGEpXG4gICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgLm1hcChFbnRpdHlVdGlscy5nZXRJZClcbiAgICAgIC5maWx0ZXIoaXNOb3ROaWwpO1xuICB9XG5cbiAgc3RhdGljIGdldEVudGl0aWVzPFQgZXh0ZW5kcyBJRW50aXR5PFQsIElEPiA9IElFbnRpdHk8YW55LCBhbnk+LCBJRCA9IGFueT4ocm93czogVGFibGVFbGVtZW50PFQ+W10gfCBBc3luY1RhYmxlRWxlbWVudDxUPltdKTogVFtdIHtcbiAgICByZXR1cm4gKHJvd3MgfHwgW10pXG4gICAgICAubWFwKChyb3cpID0+IHJvdy5jdXJyZW50RGF0YSlcbiAgICAgIC5maWx0ZXIoaXNOb3ROaWwpO1xuICB9XG59XG4iXX0=
@@ -11659,6 +11659,9 @@ class EntityUtils {
11659
11659
  static getId(entity) {
11660
11660
  return entity.id;
11661
11661
  }
11662
+ static hasId(entity) {
11663
+ return isNotNil(entity.id);
11664
+ }
11662
11665
  static collectById(entities) {
11663
11666
  return (entities || []).map(e => e.id);
11664
11667
  }
@@ -26976,6 +26979,9 @@ class AppTableUtils {
26976
26979
  AppFormUtils.logFormErrors(row.validator, logPrefix);
26977
26980
  }
26978
26981
  static getEntityId(row) {
26982
+ // When using validator: use the control (avoid to load the full form's value)
26983
+ if (row.validator)
26984
+ return row.validator.get('id').value;
26979
26985
  return EntityUtils.getId(row.currentData);
26980
26986
  }
26981
26987
  static getEntityIds(rows) {
@@ -26983,7 +26989,7 @@ class AppTableUtils {
26983
26989
  .map((row) => row.currentData)
26984
26990
  .filter(isNotNil)
26985
26991
  .map(EntityUtils.getId)
26986
- .filter(isNotNilOrNaN);
26992
+ .filter(isNotNil);
26987
26993
  }
26988
26994
  static getEntities(rows) {
26989
26995
  return (rows || [])
@@ -27747,6 +27753,11 @@ class AppTable {
27747
27753
  // Listen dataSource loading events
27748
27754
  if (this._dataSource)
27749
27755
  this.listenDatasourceLoading(this._dataSource);
27756
+ // Enable permanent selection (to keep selected rows after reloading)
27757
+ // (only on desktop, if not already done)
27758
+ if (!this.mobile && !this.permanentSelection) {
27759
+ this.initPermanentSelection();
27760
+ }
27750
27761
  }
27751
27762
  ngAfterViewInit() {
27752
27763
  // Detect when parent ngOnInit() not call
@@ -28156,6 +28167,7 @@ class AppTable {
28156
28167
  if (row.id === -1 || (!row.editing && row.invalid /*do not use !valid because if row is disabled, it will be always !valid */)) {
28157
28168
  if (this.debug)
28158
28169
  console.debug(`[table] Delete row #${row.id}`);
28170
+ this.selection.deselect(row);
28159
28171
  row.delete();
28160
28172
  this.visibleRowCount--;
28161
28173
  this.totalRowCount--;
@@ -28166,6 +28178,7 @@ class AppTable {
28166
28178
  }
28167
28179
  // Cancel the row (and mark as pristine), when not valid but in edition
28168
28180
  else if (row.editing && !row.valid) {
28181
+ this.selection.deselect(row);
28169
28182
  row.cancel();
28170
28183
  // Mark row as pristine (if possible)
28171
28184
  this.checkIfRowPristine(row, { emitEvent: false, onlySelf: true /*avoid propagation to table*/ });
@@ -29040,7 +29053,7 @@ class AppTable {
29040
29053
  if (selectionChange.added.length) {
29041
29054
  this.permanentSelection.setSelection(...(this.permanentSelection.selected || [])
29042
29055
  // Add new elements
29043
- .concat(...AppTableUtils.getEntities(selectionChange.added))
29056
+ .concat(...AppTableUtils.getEntities(selectionChange.added).filter(EntityUtils.hasId))
29044
29057
  // Avoid duplicated entities (Mantis #55351)
29045
29058
  .filter(EntityUtils.arrayDistinctFilterFn));
29046
29059
  }
@@ -29048,7 +29061,7 @@ class AppTable {
29048
29061
  if (selectionChange.removed.length) {
29049
29062
  const removedIds = AppTableUtils.getEntityIds(selectionChange.removed);
29050
29063
  this.permanentSelection.setSelection(...(this.permanentSelection.selected || [])
29051
- .filter((entity) => !removedIds.includes(entity.id)));
29064
+ .filter((entity) => EntityUtils.hasId(entity) && !removedIds.includes(entity.id)));
29052
29065
  }
29053
29066
  this.markForCheck();
29054
29067
  }));