@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.
- package/fesm2022/igo2-common-action.mjs +62 -77
- package/fesm2022/igo2-common-action.mjs.map +1 -1
- package/fesm2022/igo2-common-backdrop.mjs +11 -20
- package/fesm2022/igo2-common-backdrop.mjs.map +1 -1
- package/fesm2022/igo2-common-badge.mjs +7 -8
- package/fesm2022/igo2-common-badge.mjs.map +1 -1
- package/fesm2022/igo2-common-clickout.mjs +11 -11
- package/fesm2022/igo2-common-clickout.mjs.map +1 -1
- package/fesm2022/igo2-common-clone.mjs +8 -9
- package/fesm2022/igo2-common-clone.mjs.map +1 -1
- package/fesm2022/igo2-common-collapsible.mjs +18 -27
- package/fesm2022/igo2-common-collapsible.mjs.map +1 -1
- package/fesm2022/igo2-common-color.mjs +10 -10
- package/fesm2022/igo2-common-color.mjs.map +1 -1
- package/fesm2022/igo2-common-confirm-dialog.mjs +12 -11
- package/fesm2022/igo2-common-confirm-dialog.mjs.map +1 -1
- package/fesm2022/igo2-common-context-menu.mjs +23 -27
- package/fesm2022/igo2-common-context-menu.mjs.map +1 -1
- package/fesm2022/igo2-common-custom-html.mjs +11 -12
- package/fesm2022/igo2-common-custom-html.mjs.map +1 -1
- package/fesm2022/igo2-common-datepicker.mjs +26 -20
- package/fesm2022/igo2-common-datepicker.mjs.map +1 -1
- package/fesm2022/igo2-common-dom.mjs +10 -8
- package/fesm2022/igo2-common-dom.mjs.map +1 -1
- package/fesm2022/igo2-common-drag-drop.mjs +83 -55
- package/fesm2022/igo2-common-drag-drop.mjs.map +1 -1
- package/fesm2022/igo2-common-dynamic-component.mjs +27 -21
- package/fesm2022/igo2-common-dynamic-component.mjs.map +1 -1
- package/fesm2022/igo2-common-entity.mjs +181 -148
- package/fesm2022/igo2-common-entity.mjs.map +1 -1
- package/fesm2022/igo2-common-flexible.mjs +26 -78
- package/fesm2022/igo2-common-flexible.mjs.map +1 -1
- package/fesm2022/igo2-common-form.mjs +426 -125
- package/fesm2022/igo2-common-form.mjs.map +1 -1
- package/fesm2022/igo2-common-home-button.mjs +7 -7
- package/fesm2022/igo2-common-icon.mjs +8 -8
- package/fesm2022/igo2-common-icon.mjs.map +1 -1
- package/fesm2022/igo2-common-image.mjs +14 -16
- package/fesm2022/igo2-common-image.mjs.map +1 -1
- package/fesm2022/igo2-common-interactive-tour.mjs +55 -32
- package/fesm2022/igo2-common-interactive-tour.mjs.map +1 -1
- package/fesm2022/igo2-common-json-dialog.mjs +11 -11
- package/fesm2022/igo2-common-json-dialog.mjs.map +1 -1
- package/fesm2022/igo2-common-keyvalue.mjs +11 -10
- package/fesm2022/igo2-common-keyvalue.mjs.map +1 -1
- package/fesm2022/igo2-common-list.mjs +28 -31
- package/fesm2022/igo2-common-list.mjs.map +1 -1
- package/fesm2022/igo2-common-panel.mjs +12 -13
- package/fesm2022/igo2-common-panel.mjs.map +1 -1
- package/fesm2022/igo2-common-resizable-bar.mjs +11 -17
- package/fesm2022/igo2-common-resizable-bar.mjs.map +1 -1
- package/fesm2022/igo2-common-select-value-dialog.mjs +23 -13
- package/fesm2022/igo2-common-select-value-dialog.mjs.map +1 -1
- package/fesm2022/igo2-common-sidenav.mjs +14 -19
- package/fesm2022/igo2-common-sidenav.mjs.map +1 -1
- package/fesm2022/igo2-common-spinner.mjs +14 -15
- package/fesm2022/igo2-common-spinner.mjs.map +1 -1
- package/fesm2022/igo2-common-stop-propagation.mjs +12 -14
- package/fesm2022/igo2-common-stop-propagation.mjs.map +1 -1
- package/fesm2022/igo2-common-table.mjs +62 -69
- package/fesm2022/igo2-common-table.mjs.map +1 -1
- package/fesm2022/igo2-common-timepicker.mjs +14 -15
- package/fesm2022/igo2-common-timepicker.mjs.map +1 -1
- package/fesm2022/igo2-common-tool.mjs +35 -32
- package/fesm2022/igo2-common-tool.mjs.map +1 -1
- package/fesm2022/igo2-common-widget.mjs +18 -18
- package/fesm2022/igo2-common-widget.mjs.map +1 -1
- package/fesm2022/igo2-common-workspace.mjs +28 -32
- package/fesm2022/igo2-common-workspace.mjs.map +1 -1
- package/package.json +60 -59
- package/{action/index.d.ts → types/igo2-common-action.d.ts} +2 -5
- package/{backdrop/index.d.ts → types/igo2-common-backdrop.d.ts} +2 -4
- package/{badge/index.d.ts → types/igo2-common-badge.d.ts} +4 -4
- package/{clickout/index.d.ts → types/igo2-common-clickout.d.ts} +1 -1
- package/{collapsible/index.d.ts → types/igo2-common-collapsible.d.ts} +2 -4
- package/{confirm-dialog/index.d.ts → types/igo2-common-confirm-dialog.d.ts} +1 -1
- package/{context-menu/index.d.ts → types/igo2-common-context-menu.d.ts} +2 -2
- package/{datepicker/index.d.ts → types/igo2-common-datepicker.d.ts} +9 -9
- package/{drag-drop/index.d.ts → types/igo2-common-drag-drop.d.ts} +15 -13
- package/{dynamic-component/index.d.ts → types/igo2-common-dynamic-component.d.ts} +3 -3
- package/{entity/index.d.ts → types/igo2-common-entity.d.ts} +64 -60
- package/types/igo2-common-flexible.d.ts +42 -0
- package/types/igo2-common-form.d.ts +568 -0
- package/{icon/index.d.ts → types/igo2-common-icon.d.ts} +1 -1
- package/{interactive-tour/index.d.ts → types/igo2-common-interactive-tour.d.ts} +6 -6
- package/{json-dialog/index.d.ts → types/igo2-common-json-dialog.d.ts} +4 -4
- package/{keyvalue/index.d.ts → types/igo2-common-keyvalue.d.ts} +4 -1
- package/{list/index.d.ts → types/igo2-common-list.d.ts} +7 -7
- package/{panel/index.d.ts → types/igo2-common-panel.d.ts} +1 -1
- package/{resizable-bar/index.d.ts → types/igo2-common-resizable-bar.d.ts} +4 -5
- package/{select-value-dialog/index.d.ts → types/igo2-common-select-value-dialog.d.ts} +2 -2
- package/{sidenav/index.d.ts → types/igo2-common-sidenav.d.ts} +2 -2
- package/{spinner/index.d.ts → types/igo2-common-spinner.d.ts} +1 -1
- package/{table/index.d.ts → types/igo2-common-table.d.ts} +17 -18
- package/{timepicker/index.d.ts → types/igo2-common-timepicker.d.ts} +3 -3
- package/{tool/index.d.ts → types/igo2-common-tool.d.ts} +7 -8
- package/{widget/index.d.ts → types/igo2-common-widget.d.ts} +7 -7
- package/{workspace/index.d.ts → types/igo2-common-workspace.d.ts} +12 -12
- package/flexible/index.d.ts +0 -56
- package/form/index.d.ts +0 -429
- /package/{clone/index.d.ts → types/igo2-common-clone.d.ts} +0 -0
- /package/{color/index.d.ts → types/igo2-common-color.d.ts} +0 -0
- /package/{custom-html/index.d.ts → types/igo2-common-custom-html.d.ts} +0 -0
- /package/{dom/index.d.ts → types/igo2-common-dom.d.ts} +0 -0
- /package/{environment/index.d.ts → types/igo2-common-environment.d.ts} +0 -0
- /package/{home-button/index.d.ts → types/igo2-common-home-button.d.ts} +0 -0
- /package/{image/index.d.ts → types/igo2-common-image.d.ts} +0 -0
- /package/{stop-propagation/index.d.ts → types/igo2-common-stop-propagation.d.ts} +0 -0
- /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
|
|
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
|
|
205
|
+
if (relation?.url)
|
|
206
206
|
return relation.url;
|
|
207
207
|
const baseUrl = this.configService.getConfig('edition.url');
|
|
208
|
-
if (!relation
|
|
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
|
|
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
|
|
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: "
|
|
247
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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
|
|
1165
|
-
this.state$$ = this.store
|
|
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
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
1853
|
-
|
|
1854
|
-
.
|
|
1855
|
-
.
|
|
1856
|
-
|
|
1857
|
-
|
|
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 (
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
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: "
|
|
1919
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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()
|
|
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: "
|
|
1931
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
1932
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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(
|
|
1972
|
+
store = input(...(ngDevMode ? [undefined, { debugName: "store" }] : /* istanbul ignore next */ []));
|
|
1959
1973
|
/**
|
|
1960
1974
|
* Paginator options
|
|
1961
1975
|
*/
|
|
1962
|
-
paginatorOptions = input(
|
|
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
|
-
|
|
1972
|
-
|
|
1973
|
-
this.
|
|
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()
|
|
2023
|
+
const p = this.paginator();
|
|
2024
|
+
if (p)
|
|
2025
|
+
p._intl.firstPageLabel = label;
|
|
2007
2026
|
}));
|
|
2008
|
-
this.paginator()
|
|
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()
|
|
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()
|
|
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()
|
|
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()
|
|
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.
|
|
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: "
|
|
2063
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
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: "
|
|
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: "
|
|
2175
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
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: "
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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()
|
|
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()
|
|
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()
|
|
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
|
|
2354
|
+
return template?.fixedHeader === undefined ? true : template.fixedHeader;
|
|
2325
2355
|
}
|
|
2326
2356
|
get tableHeight() {
|
|
2327
2357
|
const template = this.template();
|
|
2328
|
-
return template
|
|
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
|
-
|
|
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
|
|
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()
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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()
|
|
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()
|
|
2575
|
-
if (direction === 'asc' || direction === 'desc') {
|
|
2576
|
-
this.store()
|
|
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()
|
|
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()
|
|
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()
|
|
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()
|
|
2653
|
+
const entities = this.store()?.view.all();
|
|
2654
|
+
if (entities === undefined)
|
|
2655
|
+
return;
|
|
2622
2656
|
this.entitySelectChange.emit({ added: [entities] });
|
|
2623
|
-
this.store()
|
|
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()
|
|
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()
|
|
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()
|
|
2665
|
-
window.getSelection()
|
|
2698
|
+
window.getSelection()?.removeAllRanges();
|
|
2699
|
+
window.getSelection()?.addRange(range);
|
|
2666
2700
|
event.stopImmediatePropagation();
|
|
2667
|
-
const records = this.store()
|
|
2701
|
+
const records = this.store()?.stateView.all();
|
|
2702
|
+
if (!records)
|
|
2703
|
+
return;
|
|
2668
2704
|
const recordIndex = records.indexOf(record);
|
|
2669
|
-
const lastRecordChecked = this.store()
|
|
2670
|
-
const lastRecordIndex =
|
|
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()
|
|
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()
|
|
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()
|
|
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
|
|
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()
|
|
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
|
-
|
|
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
|
|
2782
|
+
if (template?.valueAccessor !== undefined) {
|
|
2750
2783
|
return template.valueAccessor(entity, column.name, record);
|
|
2751
2784
|
}
|
|
2752
|
-
value = this.store()
|
|
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
|
-
|
|
2862
|
-
return
|
|
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()
|
|
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()
|
|
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()
|
|
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: "
|
|
2961
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
3008
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
3009
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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: "
|
|
3024
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
3025
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
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: "
|
|
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: "
|
|
3045
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
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: "
|
|
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: "
|
|
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],
|