@igo2/common 20.2.0 → 21.0.0-next.10

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.
Files changed (109) hide show
  1. package/fesm2022/igo2-common-action.mjs +62 -77
  2. package/fesm2022/igo2-common-action.mjs.map +1 -1
  3. package/fesm2022/igo2-common-backdrop.mjs +11 -20
  4. package/fesm2022/igo2-common-backdrop.mjs.map +1 -1
  5. package/fesm2022/igo2-common-badge.mjs +7 -8
  6. package/fesm2022/igo2-common-badge.mjs.map +1 -1
  7. package/fesm2022/igo2-common-clickout.mjs +11 -11
  8. package/fesm2022/igo2-common-clickout.mjs.map +1 -1
  9. package/fesm2022/igo2-common-clone.mjs +8 -9
  10. package/fesm2022/igo2-common-clone.mjs.map +1 -1
  11. package/fesm2022/igo2-common-collapsible.mjs +18 -27
  12. package/fesm2022/igo2-common-collapsible.mjs.map +1 -1
  13. package/fesm2022/igo2-common-color.mjs +10 -10
  14. package/fesm2022/igo2-common-color.mjs.map +1 -1
  15. package/fesm2022/igo2-common-confirm-dialog.mjs +12 -11
  16. package/fesm2022/igo2-common-confirm-dialog.mjs.map +1 -1
  17. package/fesm2022/igo2-common-context-menu.mjs +23 -27
  18. package/fesm2022/igo2-common-context-menu.mjs.map +1 -1
  19. package/fesm2022/igo2-common-custom-html.mjs +11 -12
  20. package/fesm2022/igo2-common-custom-html.mjs.map +1 -1
  21. package/fesm2022/igo2-common-datepicker.mjs +26 -20
  22. package/fesm2022/igo2-common-datepicker.mjs.map +1 -1
  23. package/fesm2022/igo2-common-dom.mjs +10 -8
  24. package/fesm2022/igo2-common-dom.mjs.map +1 -1
  25. package/fesm2022/igo2-common-drag-drop.mjs +83 -55
  26. package/fesm2022/igo2-common-drag-drop.mjs.map +1 -1
  27. package/fesm2022/igo2-common-dynamic-component.mjs +27 -21
  28. package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -1
  29. package/fesm2022/igo2-common-entity.mjs +181 -148
  30. package/fesm2022/igo2-common-entity.mjs.map +1 -1
  31. package/fesm2022/igo2-common-flexible.mjs +26 -78
  32. package/fesm2022/igo2-common-flexible.mjs.map +1 -1
  33. package/fesm2022/igo2-common-form.mjs +426 -125
  34. package/fesm2022/igo2-common-form.mjs.map +1 -1
  35. package/fesm2022/igo2-common-home-button.mjs +7 -7
  36. package/fesm2022/igo2-common-icon.mjs +8 -8
  37. package/fesm2022/igo2-common-icon.mjs.map +1 -1
  38. package/fesm2022/igo2-common-image.mjs +14 -16
  39. package/fesm2022/igo2-common-image.mjs.map +1 -1
  40. package/fesm2022/igo2-common-interactive-tour.mjs +55 -32
  41. package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -1
  42. package/fesm2022/igo2-common-json-dialog.mjs +11 -11
  43. package/fesm2022/igo2-common-json-dialog.mjs.map +1 -1
  44. package/fesm2022/igo2-common-keyvalue.mjs +11 -10
  45. package/fesm2022/igo2-common-keyvalue.mjs.map +1 -1
  46. package/fesm2022/igo2-common-list.mjs +28 -31
  47. package/fesm2022/igo2-common-list.mjs.map +1 -1
  48. package/fesm2022/igo2-common-panel.mjs +12 -13
  49. package/fesm2022/igo2-common-panel.mjs.map +1 -1
  50. package/fesm2022/igo2-common-resizable-bar.mjs +11 -17
  51. package/fesm2022/igo2-common-resizable-bar.mjs.map +1 -1
  52. package/fesm2022/igo2-common-select-value-dialog.mjs +23 -13
  53. package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -1
  54. package/fesm2022/igo2-common-sidenav.mjs +14 -19
  55. package/fesm2022/igo2-common-sidenav.mjs.map +1 -1
  56. package/fesm2022/igo2-common-spinner.mjs +14 -15
  57. package/fesm2022/igo2-common-spinner.mjs.map +1 -1
  58. package/fesm2022/igo2-common-stop-propagation.mjs +12 -14
  59. package/fesm2022/igo2-common-stop-propagation.mjs.map +1 -1
  60. package/fesm2022/igo2-common-table.mjs +62 -69
  61. package/fesm2022/igo2-common-table.mjs.map +1 -1
  62. package/fesm2022/igo2-common-timepicker.mjs +14 -15
  63. package/fesm2022/igo2-common-timepicker.mjs.map +1 -1
  64. package/fesm2022/igo2-common-tool.mjs +35 -32
  65. package/fesm2022/igo2-common-tool.mjs.map +1 -1
  66. package/fesm2022/igo2-common-widget.mjs +18 -18
  67. package/fesm2022/igo2-common-widget.mjs.map +1 -1
  68. package/fesm2022/igo2-common-workspace.mjs +28 -32
  69. package/fesm2022/igo2-common-workspace.mjs.map +1 -1
  70. package/package.json +60 -59
  71. package/{action/index.d.ts → types/igo2-common-action.d.ts} +2 -5
  72. package/{backdrop/index.d.ts → types/igo2-common-backdrop.d.ts} +2 -4
  73. package/{badge/index.d.ts → types/igo2-common-badge.d.ts} +4 -4
  74. package/{clickout/index.d.ts → types/igo2-common-clickout.d.ts} +1 -1
  75. package/{collapsible/index.d.ts → types/igo2-common-collapsible.d.ts} +2 -4
  76. package/{confirm-dialog/index.d.ts → types/igo2-common-confirm-dialog.d.ts} +1 -1
  77. package/{context-menu/index.d.ts → types/igo2-common-context-menu.d.ts} +2 -2
  78. package/{datepicker/index.d.ts → types/igo2-common-datepicker.d.ts} +9 -9
  79. package/{drag-drop/index.d.ts → types/igo2-common-drag-drop.d.ts} +15 -13
  80. package/{dynamic-component/index.d.ts → types/igo2-common-dynamic-component.d.ts} +3 -3
  81. package/{entity/index.d.ts → types/igo2-common-entity.d.ts} +64 -60
  82. package/types/igo2-common-flexible.d.ts +42 -0
  83. package/types/igo2-common-form.d.ts +568 -0
  84. package/{icon/index.d.ts → types/igo2-common-icon.d.ts} +1 -1
  85. package/{interactive-tour/index.d.ts → types/igo2-common-interactive-tour.d.ts} +6 -6
  86. package/{json-dialog/index.d.ts → types/igo2-common-json-dialog.d.ts} +4 -4
  87. package/{keyvalue/index.d.ts → types/igo2-common-keyvalue.d.ts} +4 -1
  88. package/{list/index.d.ts → types/igo2-common-list.d.ts} +7 -7
  89. package/{panel/index.d.ts → types/igo2-common-panel.d.ts} +1 -1
  90. package/{resizable-bar/index.d.ts → types/igo2-common-resizable-bar.d.ts} +4 -5
  91. package/{select-value-dialog/index.d.ts → types/igo2-common-select-value-dialog.d.ts} +2 -2
  92. package/{sidenav/index.d.ts → types/igo2-common-sidenav.d.ts} +2 -2
  93. package/{spinner/index.d.ts → types/igo2-common-spinner.d.ts} +1 -1
  94. package/{table/index.d.ts → types/igo2-common-table.d.ts} +17 -18
  95. package/{timepicker/index.d.ts → types/igo2-common-timepicker.d.ts} +3 -3
  96. package/{tool/index.d.ts → types/igo2-common-tool.d.ts} +7 -8
  97. package/{widget/index.d.ts → types/igo2-common-widget.d.ts} +7 -7
  98. package/{workspace/index.d.ts → types/igo2-common-workspace.d.ts} +12 -12
  99. package/flexible/index.d.ts +0 -56
  100. package/form/index.d.ts +0 -429
  101. /package/{clone/index.d.ts → types/igo2-common-clone.d.ts} +0 -0
  102. /package/{color/index.d.ts → types/igo2-common-color.d.ts} +0 -0
  103. /package/{custom-html/index.d.ts → types/igo2-common-custom-html.d.ts} +0 -0
  104. /package/{dom/index.d.ts → types/igo2-common-dom.d.ts} +0 -0
  105. /package/{environment/index.d.ts → types/igo2-common-environment.d.ts} +0 -0
  106. /package/{home-button/index.d.ts → types/igo2-common-home-button.d.ts} +0 -0
  107. /package/{image/index.d.ts → types/igo2-common-image.d.ts} +0 -0
  108. /package/{stop-propagation/index.d.ts → types/igo2-common-stop-propagation.d.ts} +0 -0
  109. /package/{index.d.ts → types/igo2-common.d.ts} +0 -0
@@ -6,7 +6,7 @@ import { ObjectUtils, uuid, StringUtils } from '@igo2/utils';
6
6
  import { map, catchError, throwError, ReplaySubject, BehaviorSubject, combineLatest, of, Observable } from 'rxjs';
7
7
  import { t } from 'typy';
8
8
  import { map as map$1, skip, debounceTime, catchError as catchError$1, tap } from 'rxjs/operators';
9
- import { AsyncPipe, NgClass, NgStyle } from '@angular/common';
9
+ import { AsyncPipe, NgClass } from '@angular/common';
10
10
  import { MatOptionModule, ErrorStateMatcher, DateAdapter, MatNativeDateModule } from '@angular/material/core';
11
11
  import * as i1 from '@angular/material/form-field';
12
12
  import { MatFormFieldModule, MatFormFieldControl } from '@angular/material/form-field';
@@ -202,11 +202,11 @@ class EntityService {
202
202
  }
203
203
  buildUrl(field) {
204
204
  const relation = field.relation;
205
- if (relation.url)
205
+ if (relation?.url)
206
206
  return relation.url;
207
207
  const baseUrl = this.configService.getConfig('edition.url');
208
- if (!relation.table) {
209
- return;
208
+ if (!relation?.table) {
209
+ return undefined;
210
210
  }
211
211
  return baseUrl ? baseUrl + relation.table : relation.table;
212
212
  }
@@ -216,7 +216,9 @@ class EntityService {
216
216
  ? ObjectUtils.resolve(options, path.list)
217
217
  : options;
218
218
  return items.map((item) => {
219
- const id = path?.id ? ObjectUtils.resolve(item, path.id) : item.id;
219
+ const id = path?.id
220
+ ? ObjectUtils.resolve(item, path.id)
221
+ : item.id;
220
222
  const value = path?.value
221
223
  ? ObjectUtils.resolve(item, path.value)
222
224
  : item.value;
@@ -225,7 +227,7 @@ class EntityService {
225
227
  }
226
228
  getRelationFilterParamName(field, relation) {
227
229
  const param = relation.params;
228
- if (param.field !== field) {
230
+ if (param?.field !== field) {
229
231
  return field;
230
232
  }
231
233
  return param?.name ?? field;
@@ -243,10 +245,10 @@ class EntityService {
243
245
  }
244
246
  return value?.split(',').map((v) => v.trim()) ?? [];
245
247
  }
246
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
247
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityService, providedIn: 'root' });
248
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
249
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityService, providedIn: 'root' });
248
250
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityService, decorators: [{
251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityService, decorators: [{
250
252
  type: Injectable,
251
253
  args: [{
252
254
  providedIn: 'root'
@@ -1161,8 +1163,8 @@ class EntityStoreWatcher {
1161
1163
  */
1162
1164
  setupObservers() {
1163
1165
  this.teardownObservers();
1164
- this.entities$$ = this.store.entities$.subscribe(() => this.onEntitiesChange());
1165
- this.state$$ = this.store.state.change$
1166
+ this.entities$$ = this.store?.entities$.subscribe(() => this.onEntitiesChange());
1167
+ this.state$$ = this.store?.state.change$
1166
1168
  .pipe(skip(1))
1167
1169
  .subscribe(() => this.onStateChange());
1168
1170
  }
@@ -1192,7 +1194,9 @@ class EntityStoreWatcher {
1192
1194
  */
1193
1195
  onStateChange() {
1194
1196
  let changesDetected = false;
1195
- const storeIndex = this.store.state.index;
1197
+ const storeIndex = this.store?.state.index;
1198
+ if (!storeIndex)
1199
+ return;
1196
1200
  const innerIndex = this.innerStateIndex;
1197
1201
  if (storeIndex.size !== innerIndex.size) {
1198
1202
  changesDetected = this.detectChanges();
@@ -1209,7 +1213,7 @@ class EntityStoreWatcher {
1209
1213
  changesDetected = this.detectChanges();
1210
1214
  }
1211
1215
  }
1212
- this.innerStateIndex.set(key, Object.assign({}, storeValue));
1216
+ this.innerStateIndex.set(key, Object.assign({}, storeValue || {}));
1213
1217
  }
1214
1218
  }
1215
1219
  /**
@@ -1298,7 +1302,9 @@ class EntityTransaction {
1298
1302
  return;
1299
1303
  }
1300
1304
  else if (existingOperation.type === EntityOperationType.Update) {
1301
- previous = existingOperation.previous;
1305
+ if (existingOperation.previous) {
1306
+ previous = existingOperation.previous;
1307
+ }
1302
1308
  }
1303
1309
  }
1304
1310
  this.doUpdate(previous, current, store, meta);
@@ -1811,35 +1817,35 @@ class EntitySelectorComponent {
1811
1817
  /**
1812
1818
  * Entity store
1813
1819
  */
1814
- store = input(undefined, ...(ngDevMode ? [{ debugName: "store" }] : []));
1820
+ store = input(...(ngDevMode ? [undefined, { debugName: "store" }] : /* istanbul ignore next */ []));
1815
1821
  /**
1816
1822
  * Title accessor
1817
1823
  */
1818
- titleAccessor = input(getEntityTitle, ...(ngDevMode ? [{ debugName: "titleAccessor" }] : []));
1824
+ titleAccessor = input(getEntityTitle, ...(ngDevMode ? [{ debugName: "titleAccessor" }] : /* istanbul ignore next */ []));
1819
1825
  /**
1820
1826
  * Text to display when nothing is selected
1821
1827
  */
1822
- emptyText = input(undefined, ...(ngDevMode ? [{ debugName: "emptyText" }] : []));
1828
+ emptyText = input(...(ngDevMode ? [undefined, { debugName: "emptyText" }] : /* istanbul ignore next */ []));
1823
1829
  /**
1824
1830
  * Wheter selecting many entities is allowed
1825
1831
  */
1826
- multi = input(false, ...(ngDevMode ? [{ debugName: "multi" }] : []));
1832
+ multi = input(false, ...(ngDevMode ? [{ debugName: "multi" }] : /* istanbul ignore next */ []));
1827
1833
  /**
1828
1834
  * Text to display for the select all option
1829
1835
  */
1830
- multiAllText = input('All', ...(ngDevMode ? [{ debugName: "multiAllText" }] : []));
1836
+ multiAllText = input('All', ...(ngDevMode ? [{ debugName: "multiAllText" }] : /* istanbul ignore next */ []));
1831
1837
  /**
1832
1838
  * Text to display for the select none option
1833
1839
  */
1834
- multiNoneText = input('None', ...(ngDevMode ? [{ debugName: "multiNoneText" }] : []));
1840
+ multiNoneText = input('None', ...(ngDevMode ? [{ debugName: "multiNoneText" }] : /* istanbul ignore next */ []));
1835
1841
  /**
1836
1842
  * Field placeholder
1837
1843
  */
1838
- placeholder = input(undefined, ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
1844
+ placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
1839
1845
  /**
1840
1846
  * Wheter the selector is disabled or not
1841
1847
  */
1842
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
1848
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
1843
1849
  /**
1844
1850
  * Event emitted when the selection changes
1845
1851
  */
@@ -1849,13 +1855,16 @@ class EntitySelectorComponent {
1849
1855
  * @internal
1850
1856
  */
1851
1857
  ngOnInit() {
1852
- this.watcher = new EntityStoreWatcher(this.store(), this.cdRef);
1853
- this.selected$$ = this.store()
1854
- .stateView.manyBy$((record) => record.state.selected === true)
1855
- .subscribe((records) => {
1856
- const entities = records.map((record) => record.entity);
1857
- this.onSelectFromStore(entities);
1858
- });
1858
+ const store = this.store();
1859
+ if (store) {
1860
+ this.watcher = new EntityStoreWatcher(store, this.cdRef);
1861
+ this.selected$$ = store.stateView
1862
+ .manyBy$((record) => record.state.selected === true)
1863
+ .subscribe((records) => {
1864
+ const entities = records.map((record) => record.entity);
1865
+ this.onSelectFromStore(entities);
1866
+ });
1867
+ }
1859
1868
  }
1860
1869
  /**
1861
1870
  * Unsubscribe to the selected entity and destroy the store watcher
@@ -1874,7 +1883,7 @@ class EntitySelectorComponent {
1874
1883
  const multiSelect = values.find((_value) => _value === this.multiSelectValue);
1875
1884
  let entities = values.filter((_value) => _value !== this.multiSelectValue);
1876
1885
  const store = this.store();
1877
- if (multiSelect !== undefined) {
1886
+ if (store && multiSelect !== undefined) {
1878
1887
  if (entities.length === store.count) {
1879
1888
  entities = [];
1880
1889
  }
@@ -1883,11 +1892,13 @@ class EntitySelectorComponent {
1883
1892
  }
1884
1893
  }
1885
1894
  entities = entities.filter((entity) => entity !== this.emptyValue);
1886
- if (entities.length === 0) {
1887
- store.state.updateAll({ selected: false });
1888
- }
1889
- else {
1890
- store.state.updateMany(entities, { selected: true }, true);
1895
+ if (store) {
1896
+ if (entities.length === 0) {
1897
+ store.state.updateAll({ selected: false });
1898
+ }
1899
+ else {
1900
+ store.state.updateMany(entities, { selected: true }, true);
1901
+ }
1891
1902
  }
1892
1903
  const value = this.multi() ? entities : event.value;
1893
1904
  this.selectedChange.emit({ selected: true, value });
@@ -1904,6 +1915,9 @@ class EntitySelectorComponent {
1904
1915
  }
1905
1916
  updateMultiToggleWithEntities(entities) {
1906
1917
  const store = this.store();
1918
+ if (!store) {
1919
+ return;
1920
+ }
1907
1921
  const multiNoneText = this.multiNoneText();
1908
1922
  const multiAllText = this.multiAllText();
1909
1923
  if (entities.length === store.count &&
@@ -1915,23 +1929,23 @@ class EntitySelectorComponent {
1915
1929
  this.multiText$.next(multiAllText);
1916
1930
  }
1917
1931
  }
1918
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntitySelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1919
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: EntitySelectorComponent, isStandalone: true, selector: "igo-entity-selector", inputs: { store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, titleAccessor: { classPropertyName: "titleAccessor", publicName: "titleAccessor", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, multiAllText: { classPropertyName: "multiAllText", publicName: "multiAllText", isSignal: true, isRequired: false, transformFunction: null }, multiNoneText: { classPropertyName: "multiNoneText", publicName: "multiNoneText", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange" }, ngImport: i0, template: "<mat-form-field class=\"igo-entity-selector\" subscriptSizing=\"dynamic\">\n <mat-select\n [disabled]=\"disabled()\"\n [value]=\"selected$ | async\"\n [multiple]=\"multi()\"\n [placeholder]=\"placeholder()\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @if (emptyText() !== undefined && multi() === false) {\n <mat-option [value]=\"emptyValue\">{{ emptyText() }}</mat-option>\n }\n @if (multi() === true) {\n <mat-option [value]=\"multiSelectValue\">{{\n multiText$ | async\n }}</mat-option>\n }\n @for (record of store().stateView.all$() | async; track record) {\n <mat-option [value]=\"record.entity\">\n {{ titleAccessor()(record.entity) }}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>\n", styles: [":host{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px}mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1932
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntitySelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1933
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EntitySelectorComponent, isStandalone: true, selector: "igo-entity-selector", inputs: { store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, titleAccessor: { classPropertyName: "titleAccessor", publicName: "titleAccessor", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, multiAllText: { classPropertyName: "multiAllText", publicName: "multiAllText", isSignal: true, isRequired: false, transformFunction: null }, multiNoneText: { classPropertyName: "multiNoneText", publicName: "multiNoneText", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange" }, ngImport: i0, template: "<mat-form-field class=\"igo-entity-selector\" subscriptSizing=\"dynamic\">\n <mat-select\n [disabled]=\"disabled()\"\n [value]=\"selected$ | async\"\n [multiple]=\"multi()\"\n [placeholder]=\"placeholder() ?? ''\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @if (emptyText() !== undefined && multi() === false) {\n <mat-option [value]=\"emptyValue\">{{ emptyText() }}</mat-option>\n }\n @if (multi() === true) {\n <mat-option [value]=\"multiSelectValue\">{{\n multiText$ | async\n }}</mat-option>\n }\n @for (record of store()?.stateView?.all$() | async; track record) {\n <mat-option [value]=\"record.entity\">\n {{ titleAccessor()(record.entity) }}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>\n", styles: [":host{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px}mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1920
1934
  }
1921
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntitySelectorComponent, decorators: [{
1935
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntitySelectorComponent, decorators: [{
1922
1936
  type: Component,
1923
- args: [{ selector: 'igo-entity-selector', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatFormFieldModule, MatSelectModule, MatOptionModule, AsyncPipe], template: "<mat-form-field class=\"igo-entity-selector\" subscriptSizing=\"dynamic\">\n <mat-select\n [disabled]=\"disabled()\"\n [value]=\"selected$ | async\"\n [multiple]=\"multi()\"\n [placeholder]=\"placeholder()\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @if (emptyText() !== undefined && multi() === false) {\n <mat-option [value]=\"emptyValue\">{{ emptyText() }}</mat-option>\n }\n @if (multi() === true) {\n <mat-option [value]=\"multiSelectValue\">{{\n multiText$ | async\n }}</mat-option>\n }\n @for (record of store().stateView.all$() | async; track record) {\n <mat-option [value]=\"record.entity\">\n {{ titleAccessor()(record.entity) }}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>\n", styles: [":host{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px}mat-form-field{width:100%}\n"] }]
1937
+ args: [{ selector: 'igo-entity-selector', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatFormFieldModule, MatSelectModule, MatOptionModule, AsyncPipe], template: "<mat-form-field class=\"igo-entity-selector\" subscriptSizing=\"dynamic\">\n <mat-select\n [disabled]=\"disabled()\"\n [value]=\"selected$ | async\"\n [multiple]=\"multi()\"\n [placeholder]=\"placeholder() ?? ''\"\n (selectionChange)=\"onSelectionChange($event)\"\n >\n @if (emptyText() !== undefined && multi() === false) {\n <mat-option [value]=\"emptyValue\">{{ emptyText() }}</mat-option>\n }\n @if (multi() === true) {\n <mat-option [value]=\"multiSelectValue\">{{\n multiText$ | async\n }}</mat-option>\n }\n @for (record of store()?.stateView?.all$() | async; track record) {\n <mat-option [value]=\"record.entity\">\n {{ titleAccessor()(record.entity) }}\n </mat-option>\n }\n </mat-select>\n</mat-form-field>\n", styles: [":host{--mat-form-field-container-height: 48px;--mat-form-field-container-vertical-padding: 12px}mat-form-field{width:100%}\n"] }]
1924
1938
  }], propDecorators: { store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: false }] }], titleAccessor: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleAccessor", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], multi: [{ type: i0.Input, args: [{ isSignal: true, alias: "multi", required: false }] }], multiAllText: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiAllText", required: false }] }], multiNoneText: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiNoneText", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }] } });
1925
1939
 
1926
1940
  /**
1927
1941
  * @deprecated import the EntitySelectorComponent directly
1928
1942
  */
1929
1943
  class IgoEntitySelectorModule {
1930
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntitySelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1931
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent], exports: [EntitySelectorComponent] });
1932
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent] });
1944
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntitySelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1945
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent], exports: [EntitySelectorComponent] });
1946
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntitySelectorModule, imports: [EntitySelectorComponent] });
1933
1947
  }
1934
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntitySelectorModule, decorators: [{
1948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntitySelectorModule, decorators: [{
1935
1949
  type: NgModule,
1936
1950
  args: [{
1937
1951
  imports: [EntitySelectorComponent],
@@ -1951,27 +1965,30 @@ class EntityTablePaginatorComponent {
1951
1965
  count$$;
1952
1966
  entitySortChange$$;
1953
1967
  paginationLabelTranslation$$ = [];
1954
- entitySortChange$ = input(new BehaviorSubject(false), ...(ngDevMode ? [{ debugName: "entitySortChange$" }] : []));
1968
+ entitySortChange$ = input(new BehaviorSubject(false), ...(ngDevMode ? [{ debugName: "entitySortChange$" }] : /* istanbul ignore next */ []));
1955
1969
  /**
1956
1970
  * Entity store
1957
1971
  */
1958
- store = input(undefined, ...(ngDevMode ? [{ debugName: "store" }] : []));
1972
+ store = input(...(ngDevMode ? [undefined, { debugName: "store" }] : /* istanbul ignore next */ []));
1959
1973
  /**
1960
1974
  * Paginator options
1961
1975
  */
1962
- paginatorOptions = input(undefined, ...(ngDevMode ? [{ debugName: "paginatorOptions" }] : []));
1976
+ paginatorOptions = input(...(ngDevMode ? [undefined, { debugName: "paginatorOptions" }] : /* istanbul ignore next */ []));
1963
1977
  length = 0;
1964
1978
  /**
1965
1979
  * Paginator emitted.
1966
1980
  */
1967
1981
  paginatorChange = output();
1968
- paginator = viewChild(MatPaginator, ...(ngDevMode ? [{ debugName: "paginator" }] : []));
1982
+ paginator = viewChild(MatPaginator, ...(ngDevMode ? [{ debugName: "paginator" }] : /* istanbul ignore next */ []));
1969
1983
  ngOnChanges() {
1970
1984
  this.unsubscribeAll();
1971
- this.count$$ = this.store().stateView.count$.subscribe((count) => {
1972
- this.length = count;
1973
- this.emitPaginator();
1974
- });
1985
+ const store = this.store();
1986
+ if (store) {
1987
+ this.count$$ = store.stateView.count$.subscribe((count) => {
1988
+ this.length = count;
1989
+ this.emitPaginator();
1990
+ });
1991
+ }
1975
1992
  this.entitySortChange$$ = this.entitySortChange$().subscribe(() => {
1976
1993
  const paginator = this.paginator();
1977
1994
  if (paginator) {
@@ -2003,28 +2020,40 @@ class EntityTablePaginatorComponent {
2003
2020
  this.paginationLabelTranslation$$.push(this.languageService.translate
2004
2021
  .get('igo.common.paginator.firstPageLabel')
2005
2022
  .subscribe((label) => {
2006
- this.paginator()._intl.firstPageLabel = label;
2023
+ const p = this.paginator();
2024
+ if (p)
2025
+ p._intl.firstPageLabel = label;
2007
2026
  }));
2008
- this.paginator()._intl.getRangeLabel = this.rangeLabel;
2027
+ const p = this.paginator();
2028
+ if (p)
2029
+ p._intl.getRangeLabel = this.rangeLabel;
2009
2030
  this.paginationLabelTranslation$$.push(this.languageService.translate
2010
2031
  .get('igo.common.paginator.itemsPerPageLabel')
2011
2032
  .subscribe((label) => {
2012
- this.paginator()._intl.itemsPerPageLabel = label;
2033
+ const p = this.paginator();
2034
+ if (p)
2035
+ p._intl.itemsPerPageLabel = label;
2013
2036
  }));
2014
2037
  this.paginationLabelTranslation$$.push(this.languageService.translate
2015
2038
  .get('igo.common.paginator.lastPageLabel')
2016
2039
  .subscribe((label) => {
2017
- this.paginator()._intl.lastPageLabel = label;
2040
+ const p = this.paginator();
2041
+ if (p)
2042
+ p._intl.lastPageLabel = label;
2018
2043
  }));
2019
2044
  this.paginationLabelTranslation$$.push(this.languageService.translate
2020
2045
  .get('igo.common.paginator.nextPageLabel')
2021
2046
  .subscribe((label) => {
2022
- this.paginator()._intl.nextPageLabel = label;
2047
+ const p = this.paginator();
2048
+ if (p)
2049
+ p._intl.nextPageLabel = label;
2023
2050
  }));
2024
2051
  this.paginationLabelTranslation$$.push(this.languageService.translate
2025
2052
  .get('igo.common.paginator.previousPageLabel')
2026
2053
  .subscribe((label) => {
2027
- this.paginator()._intl.previousPageLabel = label;
2054
+ const p = this.paginator();
2055
+ if (p)
2056
+ p._intl.previousPageLabel = label;
2028
2057
  }));
2029
2058
  }
2030
2059
  rangeLabel = (page, pageSize, length) => {
@@ -2057,12 +2086,14 @@ class EntityTablePaginatorComponent {
2057
2086
  this.unsubscribeAll();
2058
2087
  }
2059
2088
  emitPaginator() {
2060
- this.paginatorChange.emit(this.paginator());
2089
+ const p = this.paginator();
2090
+ if (p)
2091
+ this.paginatorChange.emit(p);
2061
2092
  }
2062
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityTablePaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2063
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.19", type: EntityTablePaginatorComponent, isStandalone: true, selector: "igo-entity-table-paginator", inputs: { entitySortChange$: { classPropertyName: "entitySortChange$", publicName: "entitySortChange$", isSignal: true, isRequired: false, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, paginatorOptions: { classPropertyName: "paginatorOptions", publicName: "paginatorOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { paginatorChange: "paginatorChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<mat-paginator\n [disabled]=\"disabled\"\n [hidePageSize]=\"hidePageSize\"\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n (page)=\"emitPaginator()\"\n/>\n", styles: [":host ::ng-deep .mat-mdc-paginator-container{min-height:unset}\n"], dependencies: [{ kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2093
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityTablePaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2094
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.14", type: EntityTablePaginatorComponent, isStandalone: true, selector: "igo-entity-table-paginator", inputs: { entitySortChange$: { classPropertyName: "entitySortChange$", publicName: "entitySortChange$", isSignal: true, isRequired: false, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, paginatorOptions: { classPropertyName: "paginatorOptions", publicName: "paginatorOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { paginatorChange: "paginatorChange" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<mat-paginator\n [disabled]=\"disabled\"\n [hidePageSize]=\"hidePageSize\"\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n (page)=\"emitPaginator()\"\n/>\n", styles: [":host ::ng-deep .mat-mdc-paginator-container{min-height:unset}\n"], dependencies: [{ kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i1$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2064
2095
  }
2065
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityTablePaginatorComponent, decorators: [{
2096
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityTablePaginatorComponent, decorators: [{
2066
2097
  type: Component,
2067
2098
  args: [{ selector: 'igo-entity-table-paginator', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatPaginatorModule], template: "<mat-paginator\n [disabled]=\"disabled\"\n [hidePageSize]=\"hidePageSize\"\n [length]=\"length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [showFirstLastButtons]=\"showFirstLastButtons\"\n (page)=\"emitPaginator()\"\n/>\n", styles: [":host ::ng-deep .mat-mdc-paginator-container{min-height:unset}\n"] }]
2068
2099
  }], propDecorators: { entitySortChange$: [{ type: i0.Input, args: [{ isSignal: true, alias: "entitySortChange$", required: false }] }], store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: false }] }], paginatorOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginatorOptions", required: false }] }], paginatorChange: [{ type: i0.Output, args: ["paginatorChange"] }], paginator: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MatPaginator), { isSignal: true }] }] } });
@@ -2084,15 +2115,15 @@ class EntityTableRowDirective {
2084
2115
  /**
2085
2116
  * Whether a row supports selection
2086
2117
  */
2087
- selection = input(false, ...(ngDevMode ? [{ debugName: "selection" }] : []));
2118
+ selection = input(false, ...(ngDevMode ? [{ debugName: "selection" }] : /* istanbul ignore next */ []));
2088
2119
  /**
2089
2120
  * Whether clicking a row should select it (if selection is true)
2090
2121
  */
2091
- selectOnClick = input(true, ...(ngDevMode ? [{ debugName: "selectOnClick" }] : []));
2122
+ selectOnClick = input(true, ...(ngDevMode ? [{ debugName: "selectOnClick" }] : /* istanbul ignore next */ []));
2092
2123
  /**
2093
2124
  * Whether the selected row should be highlighted
2094
2125
  */
2095
- highlightSelection = input(true, ...(ngDevMode ? [{ debugName: "highlightSelection" }] : []));
2126
+ highlightSelection = input(true, ...(ngDevMode ? [{ debugName: "highlightSelection" }] : /* istanbul ignore next */ []));
2096
2127
  /**
2097
2128
  * Whether a row is selected
2098
2129
  */
@@ -2113,7 +2144,7 @@ class EntityTableRowDirective {
2113
2144
  /**
2114
2145
  * Scroll behavior on selection
2115
2146
  */
2116
- scrollBehavior = input(EntityTableScrollBehavior.Auto, ...(ngDevMode ? [{ debugName: "scrollBehavior" }] : []));
2147
+ scrollBehavior = input(EntityTableScrollBehavior.Auto, ...(ngDevMode ? [{ debugName: "scrollBehavior" }] : /* istanbul ignore next */ []));
2117
2148
  /**
2118
2149
  * Event emitted when a row is selected
2119
2150
  */
@@ -2171,14 +2202,13 @@ class EntityTableRowDirective {
2171
2202
  removeCls(cls) {
2172
2203
  this.renderer.removeClass(this.el.nativeElement, cls);
2173
2204
  }
2174
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityTableRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2175
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.19", type: EntityTableRowDirective, isStandalone: true, selector: "[igoEntityTableRow]", inputs: { selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, selectOnClick: { classPropertyName: "selectOnClick", publicName: "selectOnClick", isSignal: true, isRequired: false, transformFunction: null }, highlightSelection: { classPropertyName: "highlightSelection", publicName: "highlightSelection", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, scrollBehavior: { classPropertyName: "scrollBehavior", publicName: "scrollBehavior", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "select" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
2205
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityTableRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2206
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: EntityTableRowDirective, isStandalone: true, selector: "[igoEntityTableRow]", inputs: { selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, selectOnClick: { classPropertyName: "selectOnClick", publicName: "selectOnClick", isSignal: true, isRequired: false, transformFunction: null }, highlightSelection: { classPropertyName: "highlightSelection", publicName: "highlightSelection", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: false, isRequired: false, transformFunction: null }, scrollBehavior: { classPropertyName: "scrollBehavior", publicName: "scrollBehavior", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "select" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 });
2176
2207
  }
2177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityTableRowDirective, decorators: [{
2208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityTableRowDirective, decorators: [{
2178
2209
  type: Directive,
2179
2210
  args: [{
2180
- selector: '[igoEntityTableRow]',
2181
- standalone: true
2211
+ selector: '[igoEntityTableRow]'
2182
2212
  }]
2183
2213
  }], propDecorators: { selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }], selectOnClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectOnClick", required: false }] }], highlightSelection: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightSelection", required: false }] }], selected: [{
2184
2214
  type: Input
@@ -2232,7 +2262,7 @@ class EntityTableComponent {
2232
2262
  /**
2233
2263
  * Entity store
2234
2264
  */
2235
- store = input(undefined, ...(ngDevMode ? [{ debugName: "store" }] : []));
2265
+ store = input(...(ngDevMode ? [undefined, { debugName: "store" }] : /* istanbul ignore next */ []));
2236
2266
  /**
2237
2267
  * Table paginator
2238
2268
  */
@@ -2247,23 +2277,23 @@ class EntityTableComponent {
2247
2277
  /**
2248
2278
  * Table template
2249
2279
  */
2250
- template = input(undefined, ...(ngDevMode ? [{ debugName: "template" }] : []));
2280
+ template = input(...(ngDevMode ? [undefined, { debugName: "template" }] : /* istanbul ignore next */ []));
2251
2281
  /**
2252
2282
  * Scroll behavior on selection
2253
2283
  */
2254
- scrollBehavior = input(EntityTableScrollBehavior.Auto, ...(ngDevMode ? [{ debugName: "scrollBehavior" }] : []));
2284
+ scrollBehavior = input(EntityTableScrollBehavior.Auto, ...(ngDevMode ? [{ debugName: "scrollBehavior" }] : /* istanbul ignore next */ []));
2255
2285
  /**
2256
2286
  * Whether nulls should be first when sorting
2257
2287
  */
2258
- sortNullsFirst = input(false, ...(ngDevMode ? [{ debugName: "sortNullsFirst" }] : []));
2288
+ sortNullsFirst = input(false, ...(ngDevMode ? [{ debugName: "sortNullsFirst" }] : /* istanbul ignore next */ []));
2259
2289
  /**
2260
2290
  * Show the table paginator or not. False by default.
2261
2291
  */
2262
- withPaginator = input(false, ...(ngDevMode ? [{ debugName: "withPaginator" }] : []));
2292
+ withPaginator = input(false, ...(ngDevMode ? [{ debugName: "withPaginator" }] : /* istanbul ignore next */ []));
2263
2293
  /**
2264
2294
  * Paginator options
2265
2295
  */
2266
- paginatorOptions = input(undefined, ...(ngDevMode ? [{ debugName: "paginatorOptions" }] : []));
2296
+ paginatorOptions = input(...(ngDevMode ? [undefined, { debugName: "paginatorOptions" }] : /* istanbul ignore next */ []));
2267
2297
  /**
2268
2298
  * Event emitted when an entity (row) is clicked
2269
2299
  */
@@ -2282,8 +2312,8 @@ class EntityTableComponent {
2282
2312
  */
2283
2313
  get headers() {
2284
2314
  let columns = this.template()
2285
- .columns.filter((column) => column.visible !== false)
2286
- .map((column) => column.name);
2315
+ ?.columns.filter((column) => column.visible !== false)
2316
+ .map((column) => column.name) ?? [];
2287
2317
  if (this.selectionCheckbox === true) {
2288
2318
  columns = ['selectionCheckbox'].concat(columns);
2289
2319
  }
@@ -2299,21 +2329,21 @@ class EntityTableComponent {
2299
2329
  * @internal
2300
2330
  */
2301
2331
  get selection() {
2302
- return this.template().selection || false;
2332
+ return this.template()?.selection || false;
2303
2333
  }
2304
2334
  /**
2305
2335
  * Whether a selection checkbox should be displayed
2306
2336
  * @internal
2307
2337
  */
2308
2338
  get selectionCheckbox() {
2309
- return this.template().selectionCheckbox || false;
2339
+ return this.template()?.selectionCheckbox || false;
2310
2340
  }
2311
2341
  /**
2312
2342
  * Whether selection many entities should eb supported
2313
2343
  * @internal
2314
2344
  */
2315
2345
  get selectMany() {
2316
- return this.template().selectMany || false;
2346
+ return this.template()?.selectMany || false;
2317
2347
  }
2318
2348
  /**
2319
2349
  * Whether selection many entities should eb supported
@@ -2321,11 +2351,11 @@ class EntityTableComponent {
2321
2351
  */
2322
2352
  get fixedHeader() {
2323
2353
  const template = this.template();
2324
- return template.fixedHeader === undefined ? true : template.fixedHeader;
2354
+ return template?.fixedHeader === undefined ? true : template.fixedHeader;
2325
2355
  }
2326
2356
  get tableHeight() {
2327
2357
  const template = this.template();
2328
- return template.tableHeight ? template.tableHeight : 'auto';
2358
+ return template?.tableHeight ? template.tableHeight : 'auto';
2329
2359
  }
2330
2360
  constructor() {
2331
2361
  this.dateAdapter.setLocale('fr-CA');
@@ -2338,7 +2368,7 @@ class EntityTableComponent {
2338
2368
  this.handleDatasource();
2339
2369
  this.dataSource.paginator = this.paginator;
2340
2370
  this.store()
2341
- .state.change$.pipe(debounceTime(100))
2371
+ ?.state.change$.pipe(debounceTime(100))
2342
2372
  .subscribe(() => {
2343
2373
  this.handleDatasource();
2344
2374
  this.refresh();
@@ -2358,7 +2388,7 @@ class EntityTableComponent {
2358
2388
  */
2359
2389
  onValueChange(column, record, event) {
2360
2390
  const key = this.getColumnKeyWithoutPropertiesTag(column);
2361
- record.entity.properties[key] = event.target.value;
2391
+ record.entity.properties[key] = event.target?.value;
2362
2392
  }
2363
2393
  /**
2364
2394
  * Process boolean value change (edition)
@@ -2397,7 +2427,7 @@ class EntityTableComponent {
2397
2427
  */
2398
2428
  enableEdit(record) {
2399
2429
  const item = record.entity.properties || record.entity;
2400
- this.template().columns.forEach((column) => {
2430
+ this.template()?.columns.forEach((column) => {
2401
2431
  column.title =
2402
2432
  column.validation?.mandatory && !column.title.includes('*')
2403
2433
  ? column.title + ' *'
@@ -2428,7 +2458,7 @@ class EntityTableComponent {
2428
2458
  this.filteredOptions[column.name] = new Observable();
2429
2459
  this.filteredOptions[column.name] = this.formGroup.controls[column.name].valueChanges.pipe(map$1((value) => {
2430
2460
  if (value?.length) {
2431
- return column.domainValues?.filter((option) => {
2461
+ return (column.domainValues?.filter((option) => {
2432
2462
  const filterNormalized = value
2433
2463
  ? value
2434
2464
  .toLowerCase()
@@ -2440,11 +2470,12 @@ class EntityTableComponent {
2440
2470
  .normalize('NFD')
2441
2471
  .replace(/[\u0300-\u036f]/g, '');
2442
2472
  return featureNameNormalized.includes(filterNormalized);
2443
- });
2473
+ }) ?? []);
2444
2474
  }
2475
+ return [];
2445
2476
  }));
2446
2477
  let formControlValue = item[key];
2447
- column.domainValues.forEach((option) => {
2478
+ column.domainValues?.forEach((option) => {
2448
2479
  if (typeof formControlValue === 'string' &&
2449
2480
  StringUtils.isValidNumber(formControlValue) &&
2450
2481
  !StringUtils.isOctalNumber(formControlValue)) {
@@ -2487,17 +2518,18 @@ class EntityTableComponent {
2487
2518
  handleDatasource() {
2488
2519
  this.unsubscribeStore();
2489
2520
  this.selection$$ = this.store()
2490
- .stateView.manyBy$((record) => record.state.selected === true)
2521
+ ?.stateView.manyBy$((record) => record.state.selected === true)
2491
2522
  .subscribe((records) => {
2492
2523
  const firstSelected = records[0];
2493
2524
  const firstSelectedStateviewPosition = this.store()
2494
- .stateView.all()
2525
+ ?.stateView.all()
2495
2526
  .indexOf(firstSelected);
2496
2527
  const pageMax = this.paginator
2497
2528
  ? this.paginator.pageSize * (this.paginator.pageIndex + 1)
2498
2529
  : 0;
2499
2530
  const pageMin = this.paginator ? pageMax - this.paginator.pageSize : 0;
2500
2531
  if (this.paginator &&
2532
+ firstSelectedStateviewPosition !== undefined &&
2501
2533
  (firstSelectedStateviewPosition < pageMin ||
2502
2534
  firstSelectedStateviewPosition >= pageMax)) {
2503
2535
  const pageToReach = Math.floor(firstSelectedStateviewPosition / this.paginator.pageSize);
@@ -2506,7 +2538,7 @@ class EntityTableComponent {
2506
2538
  this.selectionState$.next(this.computeSelectionState(records));
2507
2539
  });
2508
2540
  this.dataSource$$ = this.store()
2509
- .stateView.all$()
2541
+ ?.stateView.all$()
2510
2542
  .subscribe((all) => {
2511
2543
  if (all[0]) {
2512
2544
  this.enableEdit(all[0]);
@@ -2514,7 +2546,7 @@ class EntityTableComponent {
2514
2546
  this.dataSource.data = all.map((record) => {
2515
2547
  return {
2516
2548
  record,
2517
- cellData: this.template().columns.reduce((cellData, column) => {
2549
+ cellData: (this.template()?.columns.reduce((cellData, column) => {
2518
2550
  const value = this.getValue(record, column);
2519
2551
  cellData[column.name] = {
2520
2552
  class: this.getCellClass(record, column),
@@ -2523,7 +2555,7 @@ class EntityTableComponent {
2523
2555
  isImg: this.isImg(value)
2524
2556
  };
2525
2557
  return cellData;
2526
- }, {})
2558
+ }, {}) ?? {})
2527
2559
  };
2528
2560
  });
2529
2561
  });
@@ -2571,9 +2603,9 @@ class EntityTableComponent {
2571
2603
  */
2572
2604
  onSort(event) {
2573
2605
  const direction = event.direction;
2574
- const column = this.template().columns.find((c) => c.name === event.active);
2575
- if (direction === 'asc' || direction === 'desc') {
2576
- this.store().stateView.sort({
2606
+ const column = this.template()?.columns.find((c) => c.name === event.active);
2607
+ if (column && (direction === 'asc' || direction === 'desc')) {
2608
+ this.store()?.stateView.sort({
2577
2609
  valueAccessor: (record) => this.getValue(record, column),
2578
2610
  direction,
2579
2611
  nullsFirst: this.sortNullsFirst()
@@ -2582,7 +2614,7 @@ class EntityTableComponent {
2582
2614
  this.entitySortChange$.next(true);
2583
2615
  }
2584
2616
  else {
2585
- this.store().stateView.sort(undefined);
2617
+ this.store()?.stateView.sort(undefined);
2586
2618
  }
2587
2619
  }
2588
2620
  /**
@@ -2591,7 +2623,7 @@ class EntityTableComponent {
2591
2623
  * @internal
2592
2624
  */
2593
2625
  onRowClick(record) {
2594
- this.lastRecordCheckedKey = this.store().stateView.getKey(record);
2626
+ this.lastRecordCheckedKey = this.store()?.stateView.getKey(record);
2595
2627
  this.entityClick.emit(record.entity);
2596
2628
  }
2597
2629
  /**
@@ -2606,7 +2638,7 @@ class EntityTableComponent {
2606
2638
  return;
2607
2639
  }
2608
2640
  const entity = record.entity;
2609
- this.store().state.update(entity, { selected: true }, true);
2641
+ this.store()?.state.update(entity, { selected: true }, true);
2610
2642
  this.entitySelectChange.emit({ added: [entity] });
2611
2643
  }
2612
2644
  /**
@@ -2618,9 +2650,11 @@ class EntityTableComponent {
2618
2650
  if (this.selection === false) {
2619
2651
  return;
2620
2652
  }
2621
- const entities = this.store().view.all();
2653
+ const entities = this.store()?.view.all();
2654
+ if (entities === undefined)
2655
+ return;
2622
2656
  this.entitySelectChange.emit({ added: [entities] });
2623
- this.store().state.updateMany(entities, { selected: toggle });
2657
+ this.store()?.state.updateMany(entities, { selected: toggle });
2624
2658
  }
2625
2659
  /**
2626
2660
  * When an entity is toggled, select or unselect it in the store. On select,
@@ -2635,11 +2669,11 @@ class EntityTableComponent {
2635
2669
  }
2636
2670
  const entity = record.entity;
2637
2671
  const exclusive = toggle === true && !this.selectMany;
2638
- this.store().state.update(entity, { selected: toggle }, exclusive);
2672
+ this.store()?.state.update(entity, { selected: toggle }, exclusive);
2639
2673
  if (toggle === true) {
2640
2674
  this.entitySelectChange.emit({ added: [entity] });
2641
2675
  }
2642
- this.lastRecordCheckedKey = this.store().stateView.getKey(record);
2676
+ this.lastRecordCheckedKey = this.store()?.stateView.getKey(record);
2643
2677
  }
2644
2678
  /**
2645
2679
  * When an entity is toggled, select or unselect it in the store. On select,
@@ -2661,21 +2695,25 @@ class EntityTableComponent {
2661
2695
  // See https://github.com/angular/components/issues/6232
2662
2696
  const range = window.document.createRange();
2663
2697
  range.selectNode(event.target);
2664
- window.getSelection().removeAllRanges();
2665
- window.getSelection().addRange(range);
2698
+ window.getSelection()?.removeAllRanges();
2699
+ window.getSelection()?.addRange(range);
2666
2700
  event.stopImmediatePropagation();
2667
- const records = this.store().stateView.all();
2701
+ const records = this.store()?.stateView.all();
2702
+ if (!records)
2703
+ return;
2668
2704
  const recordIndex = records.indexOf(record);
2669
- const lastRecordChecked = this.store().stateView.get(this.lastRecordCheckedKey);
2670
- const lastRecordIndex = records.indexOf(lastRecordChecked);
2705
+ const lastRecordChecked = this.store()?.stateView.get(this.lastRecordCheckedKey);
2706
+ const lastRecordIndex = lastRecordChecked
2707
+ ? records.indexOf(lastRecordChecked)
2708
+ : -1;
2671
2709
  const indexes = [recordIndex, lastRecordIndex];
2672
2710
  const selectRecords = records.slice(Math.min(...indexes), Math.max(...indexes) + 1);
2673
2711
  const entities = selectRecords.map((_record) => _record.entity);
2674
- this.store().state.updateMany(entities, { selected: toggle });
2712
+ this.store()?.state.updateMany(entities, { selected: toggle });
2675
2713
  if (toggle === true) {
2676
2714
  this.entitySelectChange.emit({ added: entities });
2677
2715
  }
2678
- this.lastRecordCheckedKey = this.store().stateView.getKey(record);
2716
+ this.lastRecordCheckedKey = this.store()?.stateView.getKey(record);
2679
2717
  }
2680
2718
  /**
2681
2719
  * Compute the selection state
@@ -2687,7 +2725,7 @@ class EntityTableComponent {
2687
2725
  const selectionCount = selectedRecords.length;
2688
2726
  return selectionCount === 0
2689
2727
  ? states.None
2690
- : selectionCount === this.store().stateView.count
2728
+ : selectionCount === this.store()?.stateView.count
2691
2729
  ? states.All
2692
2730
  : states.Some;
2693
2731
  }
@@ -2701,7 +2739,7 @@ class EntityTableComponent {
2701
2739
  let sortable = column.sort;
2702
2740
  if (sortable === undefined) {
2703
2741
  const template = this.template();
2704
- sortable = template.sort === undefined ? false : template.sort;
2742
+ sortable = template?.sort === undefined ? false : template.sort;
2705
2743
  }
2706
2744
  return sortable;
2707
2745
  }
@@ -2717,20 +2755,15 @@ class EntityTableComponent {
2717
2755
  }
2718
2756
  isImg(value) {
2719
2757
  if (this.isUrl(value)) {
2720
- return (['jpg', 'png', 'gif'].indexOf(value.split('.').pop().toLowerCase()) !==
2721
- -1);
2722
- }
2723
- else {
2724
- return false;
2758
+ return (['jpg', 'png', 'gif'].indexOf(value.split('.').pop()?.toLowerCase() ?? '') !== -1);
2725
2759
  }
2760
+ return false;
2726
2761
  }
2727
2762
  isUrl(value) {
2728
2763
  if (typeof value === 'string') {
2729
2764
  return (value.slice(0, 8) === 'https://' || value.slice(0, 7) === 'http://');
2730
2765
  }
2731
- else {
2732
- return false;
2733
- }
2766
+ return false;
2734
2767
  }
2735
2768
  /**
2736
2769
  * Method to access an entity's values
@@ -2746,10 +2779,10 @@ class EntityTableComponent {
2746
2779
  return column.valueAccessor(entity, record);
2747
2780
  }
2748
2781
  const template = this.template();
2749
- if (template.valueAccessor !== undefined) {
2782
+ if (template?.valueAccessor !== undefined) {
2750
2783
  return template.valueAccessor(entity, column.name, record);
2751
2784
  }
2752
- value = this.store().getProperty(entity, column.name);
2785
+ value = this.store()?.getProperty(entity, column.name);
2753
2786
  if (column.type === 'boolean') {
2754
2787
  if (value === undefined || value === null || value === '') {
2755
2788
  value = false;
@@ -2774,7 +2807,7 @@ class EntityTableComponent {
2774
2807
  if (column.multiple) {
2775
2808
  let list_id;
2776
2809
  typeof value === 'string'
2777
- ? (list_id = value.match(/[\w.-]+/g).map(Number))
2810
+ ? (list_id = (value.match(/[\w.-]+/g) ?? []).map(Number))
2778
2811
  : (list_id = value);
2779
2812
  const list_option = [];
2780
2813
  column.domainValues.forEach((option) => {
@@ -2857,9 +2890,10 @@ class EntityTableComponent {
2857
2890
  * @internal
2858
2891
  */
2859
2892
  getValidationAttributeValue(column, validationType) {
2893
+ const validation = column.validation;
2860
2894
  if (column.validation !== undefined &&
2861
- column.validation[validationType] !== undefined) {
2862
- return column.validation[validationType];
2895
+ validation[validationType] !== undefined) {
2896
+ return validation[validationType];
2863
2897
  }
2864
2898
  else {
2865
2899
  return false;
@@ -2896,7 +2930,7 @@ class EntityTableComponent {
2896
2930
  * @internal
2897
2931
  */
2898
2932
  getHeaderClass() {
2899
- const func = this.template().headerClassFunc;
2933
+ const func = this.template()?.headerClassFunc;
2900
2934
  if (func instanceof Function) {
2901
2935
  return func();
2902
2936
  }
@@ -2910,7 +2944,7 @@ class EntityTableComponent {
2910
2944
  */
2911
2945
  getRowClass(record) {
2912
2946
  const entity = record.entity;
2913
- const func = this.template().rowClassFunc;
2947
+ const func = this.template()?.rowClassFunc;
2914
2948
  if (func instanceof Function) {
2915
2949
  return func(entity, record);
2916
2950
  }
@@ -2926,7 +2960,7 @@ class EntityTableComponent {
2926
2960
  getCellClass(record, column) {
2927
2961
  const entity = record.entity;
2928
2962
  const cls = {};
2929
- const tableFunc = this.template().cellClassFunc;
2963
+ const tableFunc = this.template()?.cellClassFunc;
2930
2964
  if (tableFunc instanceof Function) {
2931
2965
  Object.assign(cls, tableFunc(entity, column, record));
2932
2966
  }
@@ -2957,14 +2991,14 @@ class EntityTableComponent {
2957
2991
  }
2958
2992
  return column;
2959
2993
  }
2960
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2961
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: EntityTableComponent, isStandalone: true, selector: "igo-entity-table", inputs: { store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: false, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, scrollBehavior: { classPropertyName: "scrollBehavior", publicName: "scrollBehavior", isSignal: true, isRequired: false, transformFunction: null }, sortNullsFirst: { classPropertyName: "sortNullsFirst", publicName: "sortNullsFirst", isSignal: true, isRequired: false, transformFunction: null }, withPaginator: { classPropertyName: "withPaginator", publicName: "withPaginator", isSignal: true, isRequired: false, transformFunction: null }, paginatorOptions: { classPropertyName: "paginatorOptions", publicName: "paginatorOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { entityClick: "entityClick", entitySelectChange: "entitySelectChange", entitySortChange: "entitySortChange" }, providers: [
2994
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2995
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EntityTableComponent, isStandalone: true, selector: "igo-entity-table", inputs: { store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: false, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, scrollBehavior: { classPropertyName: "scrollBehavior", publicName: "scrollBehavior", isSignal: true, isRequired: false, transformFunction: null }, sortNullsFirst: { classPropertyName: "sortNullsFirst", publicName: "sortNullsFirst", isSignal: true, isRequired: false, transformFunction: null }, withPaginator: { classPropertyName: "withPaginator", publicName: "withPaginator", isSignal: true, isRequired: false, transformFunction: null }, paginatorOptions: { classPropertyName: "paginatorOptions", publicName: "paginatorOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { entityClick: "entityClick", entitySelectChange: "entitySelectChange", entitySortChange: "entitySortChange" }, providers: [
2962
2996
  { provide: MatFormFieldControl, useExisting: EntityTableComponent },
2963
2997
  provideMomentDateAdapter()
2964
- ], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container\" [ngStyle]=\"{ height: tableHeight }\">\n <table\n id=\"currentWorkspaceTable\"\n mat-table\n matSort\n [ngClass]=\"getTableClass()\"\n [dataSource]=\"dataSource\"\n [trackBy]=\"getTrackByFunction()\"\n (matSortChange)=\"onSort($event)\"\n >\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\n <th mat-header-cell *matHeaderCellDef>\n @if (selectMany) {\n @let selectionState = selectionState$ | async;\n @if (selectionState) {\n <mat-checkbox\n (change)=\"onToggleRows($event.checked)\"\n [checked]=\"selectionState === entityTableSelectionState.All\"\n [indeterminate]=\"\n selectionState === entityTableSelectionState.Some\n \"\n />\n }\n }\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\"\n (click)=\"\n $event.shiftKey\n ? onShiftToggleRow(!rowIsSelected(row.record), row.record, $event)\n : $event.stopPropagation()\n \"\n (change)=\"onToggleRow($event.checked, row.record)\"\n [checked]=\"rowIsSelected(row.record)\"\n />\n </td>\n </ng-container>\n\n @for (column of template().columns; track column) {\n <ng-container [matColumnDef]=\"column.name\">\n @if (columnIsSortable(column)) {\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n } @else {\n <th\n mat-header-cell\n *matHeaderCellDef\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n }\n\n @let columnRenderer = getColumnRenderer(column);\n @if (columnRenderer) {\n @switch (columnRenderer) {\n @case (entityTableColumnRenderer.HTML) {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"row.cellData[column.name].value\"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{ 'igo.geo.targetHtmlUrl' | translate }} </span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.UnsanitizedHTML) {\n <ng-container *matCellDef=\"let row\">\n @if (isEdition(row.record)) {\n <td\n mat-cell\n class=\"mat-cell-text edition\"\n [formGroup]=\"formGroup\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @switch (column.type) {\n @case ('date') {\n <div class=\"date-picker\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\" />\n <input\n matInput\n [matDatepicker]=\"picker\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (dateChange)=\"\n onDateChange(column.name, row.record, $event)\n \"\n />\n <mat-datepicker #picker />\n </div>\n }\n @case ('time') {\n <input\n matInput\n type=\"time\"\n [formControlName]=\"column.name\"\n step=\"900\"\n (focus)=\"column.onFocus($event)\"\n (keypress)=\"column.onChange($event)\"\n (blur)=\"column.onBlur($event)\"\n />\n }\n @case ('number') {\n <input\n matInput\n type=\"number\"\n class=\"class_number_edition\"\n [formControlName]=\"column.name\"\n step=\"{{ column.step }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n min=\"{{\n getValidationAttributeValue(column, 'minValue')\n }}\"\n max=\"{{\n getValidationAttributeValue(column, 'maxValue')\n }}\"\n />\n }\n @case ('boolean') {\n <mat-checkbox\n [formControlName]=\"column.name\"\n [checked]=\"row.cellData[column.name].value\"\n (change)=\"\n onBooleanValueChange(\n column.name,\n row.record,\n $event\n )\n \"\n />\n }\n @case ('list') {\n <mat-select\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n [formControlName]=\"column.name\"\n [multiple]=\"column.multiple\"\n (selectionChange)=\"\n onSelectValueChange(column.name, row.record, $event)\n \"\n [value]=\"row.cellData[column.name].value\"\n >\n <mat-option\n *ngFor=\"let option of column.domainValues\"\n [value]=\"option.id\"\n [disabled]=\"option.disabled\"\n >\n {{ option.value }}\n </mat-option>\n </mat-select>\n }\n @case ('autocomplete') {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n [matAutocomplete]=\"auto\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"\n onAutocompleteValueChange(\n column,\n row.record,\n $event\n )\n \"\n panelWidth=\"430px\"\n >\n <mat-option\n *ngFor=\"\n let option of filteredOptions[column.name] | async\n \"\n [value]=\"option.id\"\n >\n {{ option.value }}\n </mat-option>\n </mat-autocomplete>\n }\n @default {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n />\n }\n }\n </td>\n } @else {\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"\n row.cellData[column.name].value | sanitizeHtml\n \"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n ><span\n >{{ 'igo.geo.targetHtmlUrl' | translate }}\n </span>\n }\n >\n </a>\n </td>\n }\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.Icon) {\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @if (column.onClick) {\n <mat-icon (click)=\"column.onClick($event)\">{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n } @else {\n <mat-icon>{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n }\n </td>\n }\n @case (entityTableColumnRenderer.ButtonGroup) {\n <ng-container *matCellDef=\"let row\">\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @for (\n button of row.cellData[column.name].value;\n track button\n ) {\n @if (\n isEdition(row.record) === button.editMode ||\n button.editMode === undefined\n ) {\n <span>\n @if (button.style === 'mat-icon-button') {\n <button\n igoStopPropagation\n mat-icon-button\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n } @else {\n <button\n igoStopPropagation\n mat-mini-fab\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n }\n </span>\n }\n }\n </td>\n </ng-container>\n }\n @default {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n {{ row.cellData[column.name].value }}\n </td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{\n 'igo.common.entity-table.targetHtmlUrl' | translate\n }}</span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n }\n }\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"headers; sticky: fixedHeader\"\n [ngClass]=\"getHeaderClass()\"\n ></tr>\n <tr\n mat-row\n igoEntityTableRow\n *matRowDef=\"let row; columns: headers\"\n [scrollBehavior]=\"scrollBehavior()\"\n [ngClass]=\"getRowClass(row.record)\"\n [selection]=\"selection\"\n [selected]=\"rowIsSelected(row.record)\"\n (select)=\"onRowSelect(row.record)\"\n (click)=\"onRowClick(row.record)\"\n ></tr>\n </table>\n @if (withPaginator()) {\n <igo-entity-table-paginator\n [store]=\"store()\"\n [paginatorOptions]=\"paginatorOptions()\"\n [entitySortChange$]=\"entitySortChange$\"\n (paginatorChange)=\"paginatorChange($event)\"\n />\n }\n</div>\n", styles: [":host{width:100%;height:100%;display:block;--mat-table-header-container-height: 52px}:host.table-compact tr.mat-mdc-header-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:36px}:host.table-compact tr.mat-mdc-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:28px}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text{overflow:hidden;word-wrap:break-word}table.igo-entity-table-with-selection tr:hover{-moz-box-shadow:2px 0px 2px 0px #dddddd;-webkit-box-shadow:2px 0px 2px 0px #dddddd;-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table button{margin:7px}.class_hidden{visibility:hidden}.class_display_none{display:none}.class_boolean,.class_icon,.class_number{text-align:center;padding-right:35px!important}.class_string,.class_text,.class_number_edition{text-align:left}td.edition{background:#a6a6a633}input{border-bottom:1px solid darkgrey}table.igo-entity-table-with-selection tr.igo-entity-table-row-highlighted{background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}\n"], dependencies: [{ kind: "component", type: EntityTablePaginatorComponent, selector: "igo-entity-table-paginator", inputs: ["entitySortChange$", "store", "paginatorOptions"], outputs: ["paginatorChange"] }, { kind: "directive", type: EntityTableRowDirective, selector: "[igoEntityTableRow]", inputs: ["selection", "selectOnClick", "highlightSelection", "selected", "scrollBehavior"], outputs: ["select"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: ImageErrorDirective, selector: "[igoImageError]", inputs: ["errorImageUrl", "hideError"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: // For the DateAdapter provider
2965
- MatOptionModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i10.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: SecureImagePipe, name: "secureImage" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2998
+ ], usesOnChanges: true, ngImport: i0, template: "<div class=\"table-container\" [style.height]=\"tableHeight\">\n <table\n id=\"currentWorkspaceTable\"\n mat-table\n matSort\n [ngClass]=\"getTableClass()\"\n [dataSource]=\"dataSource\"\n [trackBy]=\"getTrackByFunction()\"\n (matSortChange)=\"onSort($event)\"\n >\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\n <th mat-header-cell *matHeaderCellDef>\n @if (selectMany) {\n @let selectionState = selectionState$ | async;\n @if (selectionState) {\n <mat-checkbox\n (change)=\"onToggleRows($event.checked)\"\n [checked]=\"selectionState === entityTableSelectionState.All\"\n [indeterminate]=\"\n selectionState === entityTableSelectionState.Some\n \"\n />\n }\n }\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\"\n (click)=\"\n $event.shiftKey\n ? onShiftToggleRow(!rowIsSelected(row.record), row.record, $event)\n : $event.stopPropagation()\n \"\n (change)=\"onToggleRow($event.checked, row.record)\"\n [checked]=\"rowIsSelected(row.record)\"\n />\n </td>\n </ng-container>\n\n @let template = this.template();\n @if (template) {\n @for (column of template.columns; track column) {\n <ng-container [matColumnDef]=\"column.name\">\n @if (columnIsSortable(column)) {\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n } @else {\n <th\n mat-header-cell\n *matHeaderCellDef\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n }\n\n @let columnRenderer = getColumnRenderer(column);\n @if (columnRenderer) {\n @switch (columnRenderer) {\n @case (entityTableColumnRenderer.HTML) {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"row.cellData[column.name].value\"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span\n >{{ 'igo.geo.targetHtmlUrl' | translate }}\n </span>\n }\n </a>\n </td>\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.UnsanitizedHTML) {\n <ng-container *matCellDef=\"let row\">\n @if (isEdition(row.record)) {\n <td\n mat-cell\n class=\"mat-cell-text edition\"\n [formGroup]=\"formGroup\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @switch (column.type) {\n @case ('date') {\n <div class=\"date-picker\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\" />\n <input\n matInput\n [matDatepicker]=\"picker\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (dateChange)=\"\n onDateChange(column.name, row.record, $event)\n \"\n />\n <mat-datepicker #picker />\n </div>\n }\n @case ('time') {\n <input\n matInput\n type=\"time\"\n [formControlName]=\"column.name\"\n step=\"900\"\n (focus)=\"column?.onFocus($event)\"\n (keypress)=\"column?.onChange($event)\"\n (blur)=\"column?.onBlur($event)\"\n />\n }\n @case ('number') {\n <input\n matInput\n type=\"number\"\n class=\"class_number_edition\"\n [formControlName]=\"column.name\"\n step=\"{{ column.step }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n min=\"{{\n getValidationAttributeValue(column, 'minValue')\n }}\"\n max=\"{{\n getValidationAttributeValue(column, 'maxValue')\n }}\"\n />\n }\n @case ('boolean') {\n <mat-checkbox\n [formControlName]=\"column.name\"\n [checked]=\"row.cellData[column.name].value\"\n (change)=\"\n onBooleanValueChange(\n column.name,\n row.record,\n $event\n )\n \"\n />\n }\n @case ('list') {\n <mat-select\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n [formControlName]=\"column.name\"\n [multiple]=\"column.multiple\"\n (selectionChange)=\"\n onSelectValueChange(\n column.name,\n row.record,\n $event\n )\n \"\n [value]=\"row.cellData[column.name].value\"\n >\n @for (\n option of $any(column).domainValues;\n track option\n ) {\n <mat-option\n [value]=\"option.id\"\n [disabled]=\"option.disabled\"\n >\n {{ option.value }}\n </mat-option>\n }\n </mat-select>\n }\n @case ('autocomplete') {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n [matAutocomplete]=\"auto\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"\n onAutocompleteValueChange(\n column,\n row.record,\n $event\n )\n \"\n panelWidth=\"430px\"\n >\n @for (\n option of filteredOptions[column.name] | async;\n track option\n ) {\n <mat-option [value]=\"option.id\">\n {{ option.value }}\n </mat-option>\n }\n </mat-autocomplete>\n }\n @default {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n />\n }\n }\n </td>\n } @else {\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"\n row.cellData[column.name].value | sanitizeHtml\n \"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n ><span\n >{{ 'igo.geo.targetHtmlUrl' | translate }}\n </span>\n }\n >\n </a>\n </td>\n }\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.Icon) {\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @if (column.onClick) {\n <mat-icon (click)=\"column.onClick($event)\">{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n } @else {\n <mat-icon>{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n }\n </td>\n }\n @case (entityTableColumnRenderer.ButtonGroup) {\n <ng-container *matCellDef=\"let row\">\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @for (\n button of row.cellData[column.name].value;\n track button\n ) {\n @if (\n isEdition(row.record) === button.editMode ||\n button.editMode === undefined\n ) {\n <span>\n @if (button.style === 'mat-icon-button') {\n <button\n igoStopPropagation\n mat-icon-button\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n } @else {\n <button\n igoStopPropagation\n mat-mini-fab\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n }\n </span>\n }\n }\n </td>\n </ng-container>\n }\n @default {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n {{ row.cellData[column.name].value }}\n </td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{\n 'igo.common.entity-table.targetHtmlUrl' | translate\n }}</span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n }\n }\n </ng-container>\n }\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"headers; sticky: fixedHeader\"\n [ngClass]=\"getHeaderClass()\"\n ></tr>\n <tr\n mat-row\n igoEntityTableRow\n *matRowDef=\"let row; columns: headers\"\n [scrollBehavior]=\"scrollBehavior()\"\n [ngClass]=\"getRowClass(row.record)\"\n [selection]=\"selection\"\n [selected]=\"rowIsSelected(row.record)\"\n (select)=\"onRowSelect(row.record)\"\n (click)=\"onRowClick(row.record)\"\n ></tr>\n </table>\n @if (withPaginator()) {\n <igo-entity-table-paginator\n [store]=\"store()\"\n [paginatorOptions]=\"paginatorOptions()\"\n [entitySortChange$]=\"entitySortChange$\"\n (paginatorChange)=\"paginatorChange($event)\"\n />\n }\n</div>\n", styles: [":host{width:100%;height:100%;display:block;--mat-table-header-container-height: 52px}:host.table-compact tr.mat-mdc-header-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:36px}:host.table-compact tr.mat-mdc-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:28px}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text{overflow:hidden;word-wrap:break-word}table.igo-entity-table-with-selection tr:hover{-moz-box-shadow:2px 0px 2px 0px #dddddd;-webkit-box-shadow:2px 0px 2px 0px #dddddd;-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table button{margin:7px}.class_hidden{visibility:hidden}.class_display_none{display:none}.class_boolean,.class_icon,.class_number{text-align:center;padding-right:35px!important}.class_string,.class_text,.class_number_edition{text-align:left}td.edition{background:#a6a6a633}input{border-bottom:1px solid darkgrey}table.igo-entity-table-with-selection tr.igo-entity-table-row-highlighted{background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}\n"], dependencies: [{ kind: "component", type: EntityTablePaginatorComponent, selector: "igo-entity-table-paginator", inputs: ["entitySortChange$", "store", "paginatorOptions"], outputs: ["paginatorChange"] }, { kind: "directive", type: EntityTableRowDirective, selector: "[igoEntityTableRow]", inputs: ["selection", "selectOnClick", "highlightSelection", "selected", "scrollBehavior"], outputs: ["select"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: ImageErrorDirective, selector: "[igoImageError]", inputs: ["errorImageUrl", "hideError"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i1.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: // For the DateAdapter provider
2999
+ MatOptionModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i10.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i10.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i11.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i11.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i11.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i11.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i11.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i11.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i11.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i11.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i11.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i11.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: StopPropagationDirective, selector: "[igoStopPropagation]" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }, { kind: "pipe", type: SecureImagePipe, name: "secureImage" }, { kind: "pipe", type: i13.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2966
3000
  }
2967
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EntityTableComponent, decorators: [{
3001
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EntityTableComponent, decorators: [{
2968
3002
  type: Component,
2969
3003
  args: [{ selector: 'igo-entity-table', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
2970
3004
  { provide: MatFormFieldControl, useExisting: EntityTableComponent },
@@ -2989,13 +3023,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
2989
3023
  MatTableModule,
2990
3024
  MatTooltipModule,
2991
3025
  NgClass,
2992
- NgStyle,
2993
3026
  ReactiveFormsModule,
2994
3027
  SanitizeHtmlPipe,
2995
3028
  SecureImagePipe,
2996
3029
  StopPropagationDirective,
2997
3030
  IgoLanguageModule
2998
- ], template: "<div class=\"table-container\" [ngStyle]=\"{ height: tableHeight }\">\n <table\n id=\"currentWorkspaceTable\"\n mat-table\n matSort\n [ngClass]=\"getTableClass()\"\n [dataSource]=\"dataSource\"\n [trackBy]=\"getTrackByFunction()\"\n (matSortChange)=\"onSort($event)\"\n >\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\n <th mat-header-cell *matHeaderCellDef>\n @if (selectMany) {\n @let selectionState = selectionState$ | async;\n @if (selectionState) {\n <mat-checkbox\n (change)=\"onToggleRows($event.checked)\"\n [checked]=\"selectionState === entityTableSelectionState.All\"\n [indeterminate]=\"\n selectionState === entityTableSelectionState.Some\n \"\n />\n }\n }\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\"\n (click)=\"\n $event.shiftKey\n ? onShiftToggleRow(!rowIsSelected(row.record), row.record, $event)\n : $event.stopPropagation()\n \"\n (change)=\"onToggleRow($event.checked, row.record)\"\n [checked]=\"rowIsSelected(row.record)\"\n />\n </td>\n </ng-container>\n\n @for (column of template().columns; track column) {\n <ng-container [matColumnDef]=\"column.name\">\n @if (columnIsSortable(column)) {\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n } @else {\n <th\n mat-header-cell\n *matHeaderCellDef\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n }\n\n @let columnRenderer = getColumnRenderer(column);\n @if (columnRenderer) {\n @switch (columnRenderer) {\n @case (entityTableColumnRenderer.HTML) {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"row.cellData[column.name].value\"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{ 'igo.geo.targetHtmlUrl' | translate }} </span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.UnsanitizedHTML) {\n <ng-container *matCellDef=\"let row\">\n @if (isEdition(row.record)) {\n <td\n mat-cell\n class=\"mat-cell-text edition\"\n [formGroup]=\"formGroup\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @switch (column.type) {\n @case ('date') {\n <div class=\"date-picker\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\" />\n <input\n matInput\n [matDatepicker]=\"picker\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (dateChange)=\"\n onDateChange(column.name, row.record, $event)\n \"\n />\n <mat-datepicker #picker />\n </div>\n }\n @case ('time') {\n <input\n matInput\n type=\"time\"\n [formControlName]=\"column.name\"\n step=\"900\"\n (focus)=\"column.onFocus($event)\"\n (keypress)=\"column.onChange($event)\"\n (blur)=\"column.onBlur($event)\"\n />\n }\n @case ('number') {\n <input\n matInput\n type=\"number\"\n class=\"class_number_edition\"\n [formControlName]=\"column.name\"\n step=\"{{ column.step }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n min=\"{{\n getValidationAttributeValue(column, 'minValue')\n }}\"\n max=\"{{\n getValidationAttributeValue(column, 'maxValue')\n }}\"\n />\n }\n @case ('boolean') {\n <mat-checkbox\n [formControlName]=\"column.name\"\n [checked]=\"row.cellData[column.name].value\"\n (change)=\"\n onBooleanValueChange(\n column.name,\n row.record,\n $event\n )\n \"\n />\n }\n @case ('list') {\n <mat-select\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n [formControlName]=\"column.name\"\n [multiple]=\"column.multiple\"\n (selectionChange)=\"\n onSelectValueChange(column.name, row.record, $event)\n \"\n [value]=\"row.cellData[column.name].value\"\n >\n <mat-option\n *ngFor=\"let option of column.domainValues\"\n [value]=\"option.id\"\n [disabled]=\"option.disabled\"\n >\n {{ option.value }}\n </mat-option>\n </mat-select>\n }\n @case ('autocomplete') {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n [matAutocomplete]=\"auto\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"\n onAutocompleteValueChange(\n column,\n row.record,\n $event\n )\n \"\n panelWidth=\"430px\"\n >\n <mat-option\n *ngFor=\"\n let option of filteredOptions[column.name] | async\n \"\n [value]=\"option.id\"\n >\n {{ option.value }}\n </mat-option>\n </mat-autocomplete>\n }\n @default {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n />\n }\n }\n </td>\n } @else {\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"\n row.cellData[column.name].value | sanitizeHtml\n \"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n ><span\n >{{ 'igo.geo.targetHtmlUrl' | translate }}\n </span>\n }\n >\n </a>\n </td>\n }\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.Icon) {\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @if (column.onClick) {\n <mat-icon (click)=\"column.onClick($event)\">{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n } @else {\n <mat-icon>{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n }\n </td>\n }\n @case (entityTableColumnRenderer.ButtonGroup) {\n <ng-container *matCellDef=\"let row\">\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @for (\n button of row.cellData[column.name].value;\n track button\n ) {\n @if (\n isEdition(row.record) === button.editMode ||\n button.editMode === undefined\n ) {\n <span>\n @if (button.style === 'mat-icon-button') {\n <button\n igoStopPropagation\n mat-icon-button\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n } @else {\n <button\n igoStopPropagation\n mat-mini-fab\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n }\n </span>\n }\n }\n </td>\n </ng-container>\n }\n @default {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n {{ row.cellData[column.name].value }}\n </td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{\n 'igo.common.entity-table.targetHtmlUrl' | translate\n }}</span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n }\n }\n </ng-container>\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"headers; sticky: fixedHeader\"\n [ngClass]=\"getHeaderClass()\"\n ></tr>\n <tr\n mat-row\n igoEntityTableRow\n *matRowDef=\"let row; columns: headers\"\n [scrollBehavior]=\"scrollBehavior()\"\n [ngClass]=\"getRowClass(row.record)\"\n [selection]=\"selection\"\n [selected]=\"rowIsSelected(row.record)\"\n (select)=\"onRowSelect(row.record)\"\n (click)=\"onRowClick(row.record)\"\n ></tr>\n </table>\n @if (withPaginator()) {\n <igo-entity-table-paginator\n [store]=\"store()\"\n [paginatorOptions]=\"paginatorOptions()\"\n [entitySortChange$]=\"entitySortChange$\"\n (paginatorChange)=\"paginatorChange($event)\"\n />\n }\n</div>\n", styles: [":host{width:100%;height:100%;display:block;--mat-table-header-container-height: 52px}:host.table-compact tr.mat-mdc-header-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:36px}:host.table-compact tr.mat-mdc-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:28px}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text{overflow:hidden;word-wrap:break-word}table.igo-entity-table-with-selection tr:hover{-moz-box-shadow:2px 0px 2px 0px #dddddd;-webkit-box-shadow:2px 0px 2px 0px #dddddd;-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table button{margin:7px}.class_hidden{visibility:hidden}.class_display_none{display:none}.class_boolean,.class_icon,.class_number{text-align:center;padding-right:35px!important}.class_string,.class_text,.class_number_edition{text-align:left}td.edition{background:#a6a6a633}input{border-bottom:1px solid darkgrey}table.igo-entity-table-with-selection tr.igo-entity-table-row-highlighted{background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}\n"] }]
3031
+ ], template: "<div class=\"table-container\" [style.height]=\"tableHeight\">\n <table\n id=\"currentWorkspaceTable\"\n mat-table\n matSort\n [ngClass]=\"getTableClass()\"\n [dataSource]=\"dataSource\"\n [trackBy]=\"getTrackByFunction()\"\n (matSortChange)=\"onSort($event)\"\n >\n <ng-container matColumnDef=\"selectionCheckbox\" class=\"mat-cell-checkbox\">\n <th mat-header-cell *matHeaderCellDef>\n @if (selectMany) {\n @let selectionState = selectionState$ | async;\n @if (selectionState) {\n <mat-checkbox\n (change)=\"onToggleRows($event.checked)\"\n [checked]=\"selectionState === entityTableSelectionState.All\"\n [indeterminate]=\"\n selectionState === entityTableSelectionState.Some\n \"\n />\n }\n }\n </th>\n <td mat-cell *matCellDef=\"let row\">\n <mat-checkbox\n (mousedown)=\"$event.shiftKey ? $event.preventDefault() : null\"\n (click)=\"\n $event.shiftKey\n ? onShiftToggleRow(!rowIsSelected(row.record), row.record, $event)\n : $event.stopPropagation()\n \"\n (change)=\"onToggleRow($event.checked, row.record)\"\n [checked]=\"rowIsSelected(row.record)\"\n />\n </td>\n </ng-container>\n\n @let template = this.template();\n @if (template) {\n @for (column of template.columns; track column) {\n <ng-container [matColumnDef]=\"column.name\">\n @if (columnIsSortable(column)) {\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n } @else {\n <th\n mat-header-cell\n *matHeaderCellDef\n [matTooltip]=\"column.tooltip ? column.tooltip : undefined\"\n >\n {{ column.title }}\n </th>\n }\n\n @let columnRenderer = getColumnRenderer(column);\n @if (columnRenderer) {\n @switch (columnRenderer) {\n @case (entityTableColumnRenderer.HTML) {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"row.cellData[column.name].value\"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span\n >{{ 'igo.geo.targetHtmlUrl' | translate }}\n </span>\n }\n </a>\n </td>\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.UnsanitizedHTML) {\n <ng-container *matCellDef=\"let row\">\n @if (isEdition(row.record)) {\n <td\n mat-cell\n class=\"mat-cell-text edition\"\n [formGroup]=\"formGroup\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @switch (column.type) {\n @case ('date') {\n <div class=\"date-picker\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\" />\n <input\n matInput\n [matDatepicker]=\"picker\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (dateChange)=\"\n onDateChange(column.name, row.record, $event)\n \"\n />\n <mat-datepicker #picker />\n </div>\n }\n @case ('time') {\n <input\n matInput\n type=\"time\"\n [formControlName]=\"column.name\"\n step=\"900\"\n (focus)=\"column?.onFocus($event)\"\n (keypress)=\"column?.onChange($event)\"\n (blur)=\"column?.onBlur($event)\"\n />\n }\n @case ('number') {\n <input\n matInput\n type=\"number\"\n class=\"class_number_edition\"\n [formControlName]=\"column.name\"\n step=\"{{ column.step }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n min=\"{{\n getValidationAttributeValue(column, 'minValue')\n }}\"\n max=\"{{\n getValidationAttributeValue(column, 'maxValue')\n }}\"\n />\n }\n @case ('boolean') {\n <mat-checkbox\n [formControlName]=\"column.name\"\n [checked]=\"row.cellData[column.name].value\"\n (change)=\"\n onBooleanValueChange(\n column.name,\n row.record,\n $event\n )\n \"\n />\n }\n @case ('list') {\n <mat-select\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n [formControlName]=\"column.name\"\n [multiple]=\"column.multiple\"\n (selectionChange)=\"\n onSelectValueChange(\n column.name,\n row.record,\n $event\n )\n \"\n [value]=\"row.cellData[column.name].value\"\n >\n @for (\n option of $any(column).domainValues;\n track option\n ) {\n <mat-option\n [value]=\"option.id\"\n [disabled]=\"option.disabled\"\n >\n {{ option.value }}\n </mat-option>\n }\n </mat-select>\n }\n @case ('autocomplete') {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n [matAutocomplete]=\"auto\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n value=\"{{ row.cellData[column.name].value }}\"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n />\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"\n onAutocompleteValueChange(\n column,\n row.record,\n $event\n )\n \"\n panelWidth=\"430px\"\n >\n @for (\n option of filteredOptions[column.name] | async;\n track option\n ) {\n <mat-option [value]=\"option.id\">\n {{ option.value }}\n </mat-option>\n }\n </mat-autocomplete>\n }\n @default {\n <input\n matInput\n type=\"text\"\n [formControlName]=\"column.name\"\n value=\"{{ row.cellData[column.name].value }}\"\n (input)=\"\n onValueChange(column.name, row.record, $event)\n \"\n readonly=\"{{\n getValidationAttributeValue(column, 'readonly')\n }}\"\n required=\"{{\n getValidationAttributeValue(column, 'mandatory')\n }}\"\n />\n }\n }\n </td>\n } @else {\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n [innerHTML]=\"\n row.cellData[column.name].value | sanitizeHtml\n \"\n ></td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n ><span\n >{{ 'igo.geo.targetHtmlUrl' | translate }}\n </span>\n }\n >\n </a>\n </td>\n }\n }\n </ng-container>\n }\n @case (entityTableColumnRenderer.Icon) {\n <td\n mat-cell\n *matCellDef=\"let row\"\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @if (column.onClick) {\n <mat-icon (click)=\"column.onClick($event)\">{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n } @else {\n <mat-icon>{{\n row.cellData[column.name].value || column.icon\n }}</mat-icon>\n }\n </td>\n }\n @case (entityTableColumnRenderer.ButtonGroup) {\n <ng-container *matCellDef=\"let row\">\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n @for (\n button of row.cellData[column.name].value;\n track button\n ) {\n @if (\n isEdition(row.record) === button.editMode ||\n button.editMode === undefined\n ) {\n <span>\n @if (button.style === 'mat-icon-button') {\n <button\n igoStopPropagation\n mat-icon-button\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n } @else {\n <button\n igoStopPropagation\n mat-mini-fab\n [color]=\"button.color\"\n (mousedown)=\"\n onButtonClick(button.click, row.record)\n \"\n [disabled]=\"button.disabled\"\n >\n <mat-icon>{{ button.icon }}</mat-icon>\n </button>\n }\n </span>\n }\n }\n </td>\n </ng-container>\n }\n @default {\n <ng-container *matCellDef=\"let row\">\n @if (!row.cellData[column.name].isUrl) {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n {{ row.cellData[column.name].value }}\n </td>\n } @else {\n <td\n mat-cell\n class=\"mat-cell-text\"\n [ngClass]=\"row.cellData[column.name].class\"\n >\n <a\n href=\"{{ row.cellData[column.name].value }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n (click)=\"$event.stopPropagation()\"\n >\n @if (row.cellData[column.name].isImg) {\n <img\n igoImageError\n src=\"{{\n row.cellData[column.name].value\n | secureImage\n | async\n }}\"\n width=\"50\"\n heigth=\"auto\"\n />\n } @else {\n <span>{{\n 'igo.common.entity-table.targetHtmlUrl' | translate\n }}</span>\n }\n >\n </a>\n </td>\n }\n </ng-container>\n }\n }\n }\n </ng-container>\n }\n }\n\n <tr\n mat-header-row\n *matHeaderRowDef=\"headers; sticky: fixedHeader\"\n [ngClass]=\"getHeaderClass()\"\n ></tr>\n <tr\n mat-row\n igoEntityTableRow\n *matRowDef=\"let row; columns: headers\"\n [scrollBehavior]=\"scrollBehavior()\"\n [ngClass]=\"getRowClass(row.record)\"\n [selection]=\"selection\"\n [selected]=\"rowIsSelected(row.record)\"\n (select)=\"onRowSelect(row.record)\"\n (click)=\"onRowClick(row.record)\"\n ></tr>\n </table>\n @if (withPaginator()) {\n <igo-entity-table-paginator\n [store]=\"store()\"\n [paginatorOptions]=\"paginatorOptions()\"\n [entitySortChange$]=\"entitySortChange$\"\n (paginatorChange)=\"paginatorChange($event)\"\n />\n }\n</div>\n", styles: [":host{width:100%;height:100%;display:block;--mat-table-header-container-height: 52px}:host.table-compact tr.mat-mdc-header-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:36px}:host.table-compact tr.mat-mdc-row,:host.table-compact ::ng-deep mat-checkbox .mat-ripple{height:28px}.table-container{display:flex;flex-direction:column;height:100%;overflow:auto;flex:1 1 auto}.mat-cell-text{overflow:hidden;word-wrap:break-word}table.igo-entity-table-with-selection tr:hover{-moz-box-shadow:2px 0px 2px 0px #dddddd;-webkit-box-shadow:2px 0px 2px 0px #dddddd;-o-box-shadow:2px 0px 2px 0px #dddddd;box-shadow:2px 0 2px #ddd;cursor:pointer}table button{margin:7px}.class_hidden{visibility:hidden}.class_display_none{display:none}.class_boolean,.class_icon,.class_number{text-align:center;padding-right:35px!important}.class_string,.class_text,.class_number_edition{text-align:left}td.edition{background:#a6a6a633}input{border-bottom:1px solid darkgrey}table.igo-entity-table-with-selection tr.igo-entity-table-row-highlighted{background-color:var(--mat-sys-primary-container);color:var(--mat-sys-on-primary-container)}\n"] }]
2999
3032
  }], ctorParameters: () => [], propDecorators: { store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: false }] }], paginator: [{
3000
3033
  type: Input
3001
3034
  }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], scrollBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollBehavior", required: false }] }], sortNullsFirst: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortNullsFirst", required: false }] }], withPaginator: [{ type: i0.Input, args: [{ isSignal: true, alias: "withPaginator", required: false }] }], paginatorOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginatorOptions", required: false }] }], entityClick: [{ type: i0.Output, args: ["entityClick"] }], entitySelectChange: [{ type: i0.Output, args: ["entitySelectChange"] }], entitySortChange: [{ type: i0.Output, args: ["entitySortChange"] }] } });
@@ -3004,11 +3037,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
3004
3037
  * @deprecated import the EntityTableComponent directly
3005
3038
  */
3006
3039
  class IgoEntityTableModule {
3007
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3008
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent], exports: [EntityTableComponent] });
3009
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent] });
3040
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3041
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent], exports: [EntityTableComponent] });
3042
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTableModule, imports: [EntityTableComponent] });
3010
3043
  }
3011
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTableModule, decorators: [{
3044
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTableModule, decorators: [{
3012
3045
  type: NgModule,
3013
3046
  args: [{
3014
3047
  imports: [EntityTableComponent],
@@ -3020,11 +3053,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
3020
3053
  * @deprecated import the EntityTablePaginatorComponent directly
3021
3054
  */
3022
3055
  class IgoEntityTablePaginatorModule {
3023
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTablePaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3024
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent], exports: [EntityTablePaginatorComponent] });
3025
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent] });
3056
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTablePaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3057
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent], exports: [EntityTablePaginatorComponent] });
3058
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTablePaginatorModule, imports: [EntityTablePaginatorComponent] });
3026
3059
  }
3027
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityTablePaginatorModule, decorators: [{
3060
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityTablePaginatorModule, decorators: [{
3028
3061
  type: NgModule,
3029
3062
  args: [{
3030
3063
  imports: [EntityTablePaginatorComponent],
@@ -3041,15 +3074,15 @@ const ENTITY_DIRECTIVES = [
3041
3074
  * @deprecated import the components directly or ENTITY_DIRECTIVES for every components/directives
3042
3075
  */
3043
3076
  class IgoEntityModule {
3044
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3045
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityModule, imports: [EntitySelectorComponent,
3077
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3078
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityModule, imports: [EntitySelectorComponent,
3046
3079
  EntityTableComponent,
3047
3080
  EntityTablePaginatorComponent], exports: [EntitySelectorComponent,
3048
3081
  EntityTableComponent,
3049
3082
  EntityTablePaginatorComponent] });
3050
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityModule, imports: [ENTITY_DIRECTIVES] });
3083
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityModule, imports: [ENTITY_DIRECTIVES] });
3051
3084
  }
3052
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: IgoEntityModule, decorators: [{
3085
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IgoEntityModule, decorators: [{
3053
3086
  type: NgModule,
3054
3087
  args: [{
3055
3088
  imports: [...ENTITY_DIRECTIVES],