@mediusinc/mng-commons 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/assets/i18n/en.json +3 -3
  2. package/assets/i18n/sl.json +3 -3
  3. package/esm2020/lib/api/models/builders/query-param.builder.mjs +7 -1
  4. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +2 -2
  5. package/esm2020/lib/api/utils/medius-rest.util.mjs +52 -26
  6. package/esm2020/lib/components/action/editor/action-editor.component.mjs +2 -2
  7. package/esm2020/lib/components/action/models/action-execution.model.mjs +3 -2
  8. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
  9. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +1 -1
  10. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +25 -34
  11. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +1 -1
  12. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +26 -9
  13. package/esm2020/lib/components/tableview/table/table.component.mjs +115 -29
  14. package/esm2020/lib/components/tableview/tableview.component.mjs +3 -11
  15. package/esm2020/lib/config/formly.config.mjs +3 -3
  16. package/esm2020/lib/data-providers/editor.data-provider.mjs +1 -1
  17. package/esm2020/lib/descriptors/action.descriptor.mjs +8 -15
  18. package/esm2020/lib/descriptors/column.descriptor.mjs +32 -1
  19. package/esm2020/lib/descriptors/field.descriptor.mjs +2 -2
  20. package/esm2020/lib/descriptors/filter.descriptor.mjs +61 -3
  21. package/esm2020/lib/descriptors/table.descriptor.mjs +52 -9
  22. package/esm2020/lib/services/action-executor.service.mjs +3 -3
  23. package/esm2020/lib/services/commons.service.mjs +3 -3
  24. package/esm2020/lib/utils/action-data-provider.util.mjs +116 -0
  25. package/esm2020/lib/utils/editor-formly.util.mjs +2 -42
  26. package/esm2020/lib/utils/enum.util.mjs +3 -3
  27. package/esm2020/lib/utils/index.mjs +2 -1
  28. package/esm2020/lib/utils/styles.util.mjs +41 -0
  29. package/fesm2015/mediusinc-mng-commons.mjs +541 -184
  30. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  31. package/fesm2020/mediusinc-mng-commons.mjs +527 -174
  32. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  33. package/lib/api/models/builders/query-param.builder.d.ts +1 -0
  34. package/lib/api/services/crud-api.abstract.service.d.ts +8 -2
  35. package/lib/api/utils/medius-rest.util.d.ts +4 -2
  36. package/lib/components/action/models/action-execution.model.d.ts +5 -3
  37. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +1 -4
  38. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +2 -0
  39. package/lib/components/tableview/table/table.component.d.ts +21 -12
  40. package/lib/components/tableview/tableview.component.d.ts +1 -3
  41. package/lib/data-providers/editor.data-provider.d.ts +4 -4
  42. package/lib/descriptors/action.descriptor.d.ts +5 -5
  43. package/lib/descriptors/column.descriptor.d.ts +10 -0
  44. package/lib/descriptors/filter.descriptor.d.ts +21 -2
  45. package/lib/descriptors/table.descriptor.d.ts +22 -5
  46. package/lib/utils/action-data-provider.util.d.ts +17 -0
  47. package/lib/utils/index.d.ts +1 -0
  48. package/lib/utils/styles.util.d.ts +14 -0
  49. package/package.json +1 -1
  50. package/scss/mng-overrides/_theme_datatable.scss +57 -0
  51. package/scss/mng-overrides/_theme_tableview.scss +0 -43
@@ -12,7 +12,7 @@ import { FieldType, FieldWrapper, FORMLY_CONFIG, FormlyModule } from '@ngx-forml
12
12
  import * as i1$1 from '@ngx-translate/core';
13
13
  import { TranslateService, TranslateModule } from '@ngx-translate/core';
14
14
  import * as i2 from 'primeng/api';
15
- import { ConfirmationService, MessageService, FilterMatchMode } from 'primeng/api';
15
+ import { FilterMatchMode, ConfirmationService, MessageService } from 'primeng/api';
16
16
  import * as i2$1 from 'primeng/autocomplete';
17
17
  import { AutoComplete, AutoCompleteModule } from 'primeng/autocomplete';
18
18
  import * as i2$4 from 'primeng/breadcrumb';
@@ -58,7 +58,7 @@ import { RadioButtonModule } from 'primeng/radiobutton';
58
58
  import * as i8 from 'primeng/ripple';
59
59
  import { RippleModule } from 'primeng/ripple';
60
60
  import { SelectButtonModule } from 'primeng/selectbutton';
61
- import * as i7$1 from 'primeng/skeleton';
61
+ import * as i8$1 from 'primeng/skeleton';
62
62
  import { SkeletonModule } from 'primeng/skeleton';
63
63
  import * as i4$5 from 'primeng/table';
64
64
  import { Table, TableModule } from 'primeng/table';
@@ -72,12 +72,135 @@ import * as i4$3 from 'primeng/toolbar';
72
72
  import { ToolbarModule } from 'primeng/toolbar';
73
73
  import * as i9 from 'primeng/tooltip';
74
74
  import { TooltipModule } from 'primeng/tooltip';
75
- import { throwError, of, Subject, Observable, from, combineLatest, tap, BehaviorSubject, ReplaySubject, distinctUntilChanged, switchMap, mergeMap as mergeMap$1 } from 'rxjs';
75
+ import { isObservable, throwError, of, Subject, Observable, from, combineLatest, tap, BehaviorSubject, ReplaySubject, distinctUntilChanged, switchMap, mergeMap as mergeMap$1 } from 'rxjs';
76
76
  import 'reflect-metadata';
77
77
  import { map, mergeMap, first, catchError, filter, finalize, startWith } from 'rxjs/operators';
78
78
  import * as i4$1 from '@angular/platform-browser';
79
79
  import { trigger, state, style, transition, animate } from '@angular/animations';
80
80
 
81
+ class ActionDataProviderUtil {
82
+ static runFetchOrFail(ctx) {
83
+ const dataProviderExec = ActionDataProviderUtil.runFetchDataProvider(ctx);
84
+ if (isObservable(dataProviderExec)) {
85
+ return dataProviderExec;
86
+ }
87
+ const serviceExec = ActionDataProviderUtil.runGetByIdService(ctx);
88
+ return isObservable(serviceExec)
89
+ ? serviceExec
90
+ : throwError(() => { var _a, _b; return new Error(`Data provider and service instance could not extract fetch function to execute in action ${ctx.action.actionName} (${(_a = ctx.action.model) === null || _a === void 0 ? void 0 : _a.typeName}) for item id ${(_b = ctx.data) === null || _b === void 0 ? void 0 : _b.itemId}.`); });
91
+ }
92
+ static runCreateOrFail(ctx) {
93
+ const dataProviderExec = ActionDataProviderUtil.runCreateDataProvider(ctx);
94
+ if (isObservable(dataProviderExec)) {
95
+ return dataProviderExec;
96
+ }
97
+ const serviceExec = ActionDataProviderUtil.runCreateService(ctx);
98
+ return isObservable(serviceExec)
99
+ ? serviceExec
100
+ : throwError(() => { var _a, _b; return new Error(`Data provider and service instance could not extract create function to execute in action ${ctx.action.actionName} (${(_a = ctx.action.model) === null || _a === void 0 ? void 0 : _a.typeName}) for item ${(_b = ctx.data) === null || _b === void 0 ? void 0 : _b.item}.`); });
101
+ }
102
+ static runUpdateOrFail(ctx) {
103
+ const dataProviderExec = ActionDataProviderUtil.runUpdateDataProvider(ctx);
104
+ if (isObservable(dataProviderExec)) {
105
+ return dataProviderExec;
106
+ }
107
+ const serviceExec = ActionDataProviderUtil.runUpdateService(ctx);
108
+ return isObservable(serviceExec)
109
+ ? serviceExec
110
+ : throwError(() => { var _a, _b; return new Error(`Data provider and service instance could not extract update function to execute in action ${ctx.action.actionName} (${(_a = ctx.action.model) === null || _a === void 0 ? void 0 : _a.typeName}) for item id ${(_b = ctx.data) === null || _b === void 0 ? void 0 : _b.itemId}.`); });
111
+ }
112
+ static runDeleteOrFail(ctx) {
113
+ const dataProviderExec = ActionDataProviderUtil.runDeleteDataProvider(ctx);
114
+ if (isObservable(dataProviderExec)) {
115
+ return dataProviderExec;
116
+ }
117
+ const serviceExec = ActionDataProviderUtil.runDeleteService(ctx);
118
+ return isObservable(serviceExec)
119
+ ? serviceExec
120
+ : throwError(() => { var _a, _b; return new Error(`Data provider and service instance could not extract delete function to execute in action ${ctx.action.actionName} (${(_a = ctx.action.model) === null || _a === void 0 ? void 0 : _a.typeName}) for item id ${(_b = ctx.data) === null || _b === void 0 ? void 0 : _b.itemId}.`); });
121
+ }
122
+ static runGetByIdService(ctx) {
123
+ var _a;
124
+ if (typeof ctx.serviceInstance !== 'undefined') {
125
+ const crudServiceInstance = ctx.serviceInstance;
126
+ if (typeof crudServiceInstance.getByIdGet === 'function') {
127
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.itemId) ? crudServiceInstance.getByIdGet(ctx.data.itemId) : null;
128
+ }
129
+ }
130
+ return null;
131
+ }
132
+ static runCreateService(ctx) {
133
+ var _a;
134
+ if (typeof ctx.serviceInstance !== 'undefined') {
135
+ const crudServiceInstance = ctx.serviceInstance;
136
+ if (typeof crudServiceInstance.createPost === 'function') {
137
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.item) ? crudServiceInstance.createPost(ctx.data.item) : null;
138
+ }
139
+ }
140
+ return null;
141
+ }
142
+ static runUpdateService(ctx) {
143
+ var _a;
144
+ if (typeof ctx.serviceInstance !== 'undefined') {
145
+ const crudServiceInstance = ctx.serviceInstance;
146
+ if (typeof crudServiceInstance.updatePut === 'function') {
147
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.itemId) && ctx.data.item ? crudServiceInstance.updatePut(ctx.data.itemId, ctx.data.item) : null;
148
+ }
149
+ }
150
+ return null;
151
+ }
152
+ static runDeleteService(ctx) {
153
+ var _a;
154
+ if (typeof ctx.serviceInstance !== 'undefined') {
155
+ const crudServiceInstance = ctx.serviceInstance;
156
+ if (typeof crudServiceInstance.removeDelete === 'function') {
157
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.itemId) ? crudServiceInstance.removeDelete(ctx.data.itemId, ctx.data.item) : null;
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ static runFetchDataProvider(ctx) {
163
+ var _a;
164
+ if (typeof ctx.dataProvider !== 'undefined') {
165
+ const editorDataProvider = ctx.dataProvider;
166
+ if (typeof editorDataProvider.fetch === 'function') {
167
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.itemId) ? editorDataProvider.fetch(ctx.data.itemId, ctx.serviceInstance) : null;
168
+ }
169
+ }
170
+ return null;
171
+ }
172
+ static runCreateDataProvider(ctx) {
173
+ var _a;
174
+ if (typeof ctx.dataProvider !== 'undefined') {
175
+ const editorDataProvider = ctx.dataProvider;
176
+ if (typeof editorDataProvider.create === 'function') {
177
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.item) ? editorDataProvider.create(ctx.data.item, ctx.serviceInstance) : null;
178
+ }
179
+ }
180
+ return null;
181
+ }
182
+ static runUpdateDataProvider(ctx) {
183
+ var _a;
184
+ if (typeof ctx.dataProvider !== 'undefined') {
185
+ const editorDataProvider = ctx.dataProvider;
186
+ if (typeof editorDataProvider.update === 'function') {
187
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.itemId) ? editorDataProvider.update(ctx.data.itemId, ctx.data.item, ctx.serviceInstance) : null;
188
+ }
189
+ }
190
+ return null;
191
+ }
192
+ static runDeleteDataProvider(ctx) {
193
+ var _a;
194
+ if (typeof ctx.dataProvider !== 'undefined') {
195
+ const editorDataProvider = ctx.dataProvider;
196
+ if (typeof editorDataProvider.delete === 'function') {
197
+ return ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.itemId) ? editorDataProvider.delete(ctx.data.itemId, ctx.data.item, ctx.serviceInstance) : null;
198
+ }
199
+ }
200
+ return null;
201
+ }
202
+ }
203
+
81
204
  class DataProvider {
82
205
  constructor(modelType, serviceType) {
83
206
  this._modelType = modelType;
@@ -317,6 +440,13 @@ class MediusQueryParamBuilder {
317
440
  queryParam.queryMode = MediusQueryMode.All;
318
441
  return new MediusQueryParamBuilder(queryParam);
319
442
  }
443
+ static createFromExisting(queryParam, itemsPerPage, itemsOffset) {
444
+ var _a, _b, _c;
445
+ queryParam.itemsPerPage = (_a = itemsPerPage !== null && itemsPerPage !== void 0 ? itemsPerPage : queryParam.itemsPerPage) !== null && _a !== void 0 ? _a : 50;
446
+ queryParam.itemsOffset = (_b = itemsOffset !== null && itemsOffset !== void 0 ? itemsOffset : queryParam.itemsOffset) !== null && _b !== void 0 ? _b : 0;
447
+ queryParam.queryMode = (_c = queryParam.queryMode) !== null && _c !== void 0 ? _c : MediusQueryMode.All;
448
+ return new MediusQueryParamBuilder(queryParam);
449
+ }
320
450
  withItemsPerPage(itemsPerPage) {
321
451
  this.queryParam.itemsPerPage = itemsPerPage;
322
452
  return this;
@@ -644,11 +774,13 @@ class ActionDescriptor {
644
774
  this._hasRunNotificationSuccess = hasNotification;
645
775
  this._runNotificationSuccessTitle = title;
646
776
  this._runNotificationSuccessMessage = message;
777
+ return this;
647
778
  }
648
779
  withRunNotificationError(title, message, hasNotification = true) {
649
780
  this._hasRunNotificationError = hasNotification;
650
781
  this._runNotificationErrorTitle = title;
651
782
  this._runNotificationErrorMessage = message;
783
+ return this;
652
784
  }
653
785
  }
654
786
  (function (ActionDescriptor) {
@@ -837,7 +969,7 @@ class ActionEditorAddDescriptor extends ActionEditorDescriptor {
837
969
  super(editorDescriptor, ActionEditorAddDescriptor.ACTION_NAME);
838
970
  this.withPosition(ActionPositionEnum.ToolbarLeft);
839
971
  this.withRouteTrigger('add');
840
- this.withSubmitFunction(ctx => { var _a, _b; return ((_a = ctx.dataProvider) === null || _a === void 0 ? void 0 : _a.create) ? ctx.dataProvider.create((_b = ctx.data) === null || _b === void 0 ? void 0 : _b.item, ctx.serviceInstance) : throwError(new Error(`Data provider create function is missing.`)); });
972
+ this.withSubmitFunction(ActionDataProviderUtil.runCreateOrFail);
841
973
  this.withLevel(ActionLevelEnum.Success);
842
974
  this.withIcon('pi pi-plus');
843
975
  }
@@ -863,18 +995,8 @@ class ActionEditorEditDescriptor extends ActionEditorDescriptor {
863
995
  this.withPosition(ActionPositionEnum.RowInline);
864
996
  this.withTitle(null);
865
997
  this.withRouteTrigger(':itemId/edit');
866
- this.withFetchFunction(ctx => {
867
- var _a, _b, _c;
868
- return ((_a = ctx.dataProvider) === null || _a === void 0 ? void 0 : _a.fetch) && ((_b = ctx.data) === null || _b === void 0 ? void 0 : _b.itemId)
869
- ? ctx.dataProvider.fetch(ctx.data.itemId, ctx.serviceInstance)
870
- : throwError(new Error(`Data provider fetch function or item id ${(_c = ctx.data) === null || _c === void 0 ? void 0 : _c.itemId} is missing.`));
871
- });
872
- this.withSubmitFunction(ctx => {
873
- var _a, _b, _c, _d;
874
- return ((_a = ctx.dataProvider) === null || _a === void 0 ? void 0 : _a.update) && ((_b = ctx.data) === null || _b === void 0 ? void 0 : _b.itemId)
875
- ? ctx.dataProvider.update(ctx.data.itemId, (_c = ctx.data) === null || _c === void 0 ? void 0 : _c.item, ctx.serviceInstance)
876
- : throwError(new Error(`Data provider update function or item id ${(_d = ctx.data) === null || _d === void 0 ? void 0 : _d.itemId} is missing.`));
877
- });
998
+ this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);
999
+ this.withSubmitFunction(ActionDataProviderUtil.runUpdateOrFail);
878
1000
  this.withIcon('pi pi-pencil');
879
1001
  }
880
1002
  withServiceType(serviceType) {
@@ -898,13 +1020,7 @@ class ActionDeleteDescriptor extends ActionDescriptor {
898
1020
  super(model, ActionDeleteDescriptor.ACTION_NAME);
899
1021
  this.withPosition(ActionPositionEnum.RowInline);
900
1022
  this.withTitle(null);
901
- this.withRunFunction(ctx => {
902
- var _a, _b;
903
- const editorDataProvider = ctx.dataProvider;
904
- return (editorDataProvider === null || editorDataProvider === void 0 ? void 0 : editorDataProvider.delete) && ((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.itemId)
905
- ? editorDataProvider.delete(ctx.data.itemId, ctx.data.item, ctx.serviceInstance)
906
- : throwError(new Error(`Data provider delete function or item id ${(_b = ctx.data) === null || _b === void 0 ? void 0 : _b.itemId} is missing.`));
907
- });
1023
+ this.withRunFunction(ActionDataProviderUtil.runDeleteOrFail);
908
1024
  this.withLevel(ActionLevelEnum.Danger);
909
1025
  this.withIcon('pi pi-trash');
910
1026
  this.withRunConfirmation(undefined);
@@ -1015,7 +1131,12 @@ class FilterDescriptor {
1015
1131
  constructor(property) {
1016
1132
  this._filterType = FilterDescriptor.TypeEnum.String;
1017
1133
  this._matchModes = null;
1134
+ this._numberUseGrouping = true;
1135
+ this._datePickerShowTime = false;
1018
1136
  this._className = '';
1137
+ this._columnClassName = '';
1138
+ this._columnWidth = null;
1139
+ this._columnMinWidth = null;
1019
1140
  this._property = property;
1020
1141
  }
1021
1142
  get filterType() {
@@ -1027,12 +1148,36 @@ class FilterDescriptor {
1027
1148
  get matchModes() {
1028
1149
  return this._matchModes;
1029
1150
  }
1151
+ get numberMinFractionDigits() {
1152
+ return this._numberMinFractionDigits;
1153
+ }
1154
+ get numberMaxFractionDigits() {
1155
+ return this._numberMaxFractionDigits;
1156
+ }
1157
+ get numberUseGrouping() {
1158
+ return this._numberUseGrouping;
1159
+ }
1160
+ get datePickerFormat() {
1161
+ return this._datePickerFormat;
1162
+ }
1163
+ get datePickerShowTime() {
1164
+ return this._datePickerShowTime;
1165
+ }
1030
1166
  get placeholder() {
1031
1167
  return this._placeholder;
1032
1168
  }
1033
1169
  get className() {
1034
1170
  return this._className;
1035
1171
  }
1172
+ get columnClassName() {
1173
+ return this._columnClassName;
1174
+ }
1175
+ get columnWidth() {
1176
+ return this._columnWidth;
1177
+ }
1178
+ get columnMinWidth() {
1179
+ return this._columnMinWidth;
1180
+ }
1036
1181
  get property() {
1037
1182
  return this._property;
1038
1183
  }
@@ -1048,6 +1193,20 @@ class FilterDescriptor {
1048
1193
  this._filterProperty = filterProperty;
1049
1194
  return this;
1050
1195
  }
1196
+ withNumberFractions(min, max) {
1197
+ this._numberMinFractionDigits = min;
1198
+ this._numberMaxFractionDigits = max;
1199
+ return this;
1200
+ }
1201
+ withNumberGrouping(useGrouping = true) {
1202
+ this._numberUseGrouping = useGrouping;
1203
+ return this;
1204
+ }
1205
+ withDateFormat(format, showTime = false) {
1206
+ this._datePickerFormat = format;
1207
+ this._datePickerShowTime = showTime;
1208
+ return this;
1209
+ }
1051
1210
  withPlaceholder(placeholder) {
1052
1211
  this._placeholder = placeholder;
1053
1212
  return this;
@@ -1056,6 +1215,15 @@ class FilterDescriptor {
1056
1215
  this._className = className;
1057
1216
  return this;
1058
1217
  }
1218
+ withColumnClassName(className) {
1219
+ this._columnClassName = className;
1220
+ return this;
1221
+ }
1222
+ withColumnWidth(width, minWidth) {
1223
+ this._columnWidth = width !== null && width !== void 0 ? width : null;
1224
+ this._columnMinWidth = minWidth !== null && minWidth !== void 0 ? minWidth : null;
1225
+ return this;
1226
+ }
1059
1227
  withMatchModes(matchModes) {
1060
1228
  this._matchModes = matchModes;
1061
1229
  return this;
@@ -1068,8 +1236,16 @@ class FilterDescriptor {
1068
1236
  copyFieldsTo(descriptor) {
1069
1237
  descriptor._filterType = this._filterType;
1070
1238
  descriptor._filterProperty = this._filterProperty;
1239
+ descriptor._numberMinFractionDigits = this._numberMinFractionDigits;
1240
+ descriptor._numberMaxFractionDigits = this._numberMaxFractionDigits;
1241
+ descriptor._numberUseGrouping = this._numberUseGrouping;
1242
+ descriptor._datePickerFormat = this._datePickerFormat;
1243
+ descriptor._datePickerShowTime = this._datePickerShowTime;
1071
1244
  descriptor._placeholder = this._placeholder;
1072
1245
  descriptor._className = this._className;
1246
+ descriptor._columnWidth = this._columnWidth;
1247
+ descriptor._columnMinWidth = this._columnMinWidth;
1248
+ descriptor._columnClassName = this._columnClassName;
1073
1249
  }
1074
1250
  }
1075
1251
  (function (FilterDescriptor) {
@@ -1091,9 +1267,7 @@ class FilterDescriptor {
1091
1267
  MatchModeEnum["NotEquals"] = "notEquals";
1092
1268
  MatchModeEnum["In"] = "in";
1093
1269
  MatchModeEnum["LessThan"] = "lt";
1094
- MatchModeEnum["LessThanOrEqualTo"] = "lte";
1095
1270
  MatchModeEnum["GreaterThan"] = "gt";
1096
- MatchModeEnum["GreaterThanOrEqualTo"] = "gte";
1097
1271
  MatchModeEnum["Between"] = "between";
1098
1272
  MatchModeEnum["DateIs"] = "dateIs";
1099
1273
  MatchModeEnum["DateIsNot"] = "dateIsNot";
@@ -1249,6 +1423,11 @@ class ColumnDescriptor {
1249
1423
  constructor(table, property) {
1250
1424
  this._columnType = ColumnDescriptor.TypeEnum.String;
1251
1425
  this._isSortEnabled = false;
1426
+ // styling
1427
+ this._headerClassName = '';
1428
+ this._className = '';
1429
+ this._width = null;
1430
+ this._minWidth = null;
1252
1431
  this._enumNameAsValue = false;
1253
1432
  // boolean specifics
1254
1433
  this._booleanAsIcon = false;
@@ -1279,6 +1458,18 @@ class ColumnDescriptor {
1279
1458
  get property() {
1280
1459
  return this._property;
1281
1460
  }
1461
+ get headerClassName() {
1462
+ return this._headerClassName;
1463
+ }
1464
+ get className() {
1465
+ return this._className;
1466
+ }
1467
+ get width() {
1468
+ return this._width;
1469
+ }
1470
+ get minWidth() {
1471
+ return this._minWidth;
1472
+ }
1282
1473
  get enumType() {
1283
1474
  return this._enumType;
1284
1475
  }
@@ -1342,6 +1533,16 @@ class ColumnDescriptor {
1342
1533
  this._customComponentType = customComponentType;
1343
1534
  return this;
1344
1535
  }
1536
+ withClassName(className, headerClassName) {
1537
+ this._className = className !== null && className !== void 0 ? className : '';
1538
+ this._headerClassName = headerClassName !== null && headerClassName !== void 0 ? headerClassName : '';
1539
+ return this;
1540
+ }
1541
+ withWidth(width, minWidth) {
1542
+ this._width = width !== null && width !== void 0 ? width : null;
1543
+ this._minWidth = minWidth !== null && minWidth !== void 0 ? minWidth : null;
1544
+ return this;
1545
+ }
1345
1546
  withObjectProperty(modelType, titleProperty) {
1346
1547
  var _a;
1347
1548
  this._objectModelType = modelType;
@@ -1428,6 +1629,10 @@ class ColumnDescriptor {
1428
1629
  descriptor._booleanNo = this._booleanNo;
1429
1630
  descriptor._objectModelType = this._objectModelType;
1430
1631
  descriptor._objectTitleProperty = this._objectTitleProperty;
1632
+ descriptor._headerClassName = this._headerClassName;
1633
+ descriptor._className = this._className;
1634
+ descriptor._width = this._width;
1635
+ descriptor._minWidth = this._minWidth;
1431
1636
  return descriptor;
1432
1637
  }
1433
1638
  }
@@ -1939,7 +2144,7 @@ class FieldInputDescriptor extends AFieldDescriptor {
1939
2144
  }
1940
2145
  asDatePicker(format, min, max, showTime) {
1941
2146
  this._fieldType = FieldInputDescriptor.TypeEnum.Datepicker;
1942
- this._datePickerFormat = format ? format : 'dd.mm.yy';
2147
+ this._datePickerFormat = format;
1943
2148
  this._datePickerMin = min;
1944
2149
  this._datePickerMax = max;
1945
2150
  this._datePickerShowTime = showTime !== null && showTime !== void 0 ? showTime : false;
@@ -2488,8 +2693,11 @@ class TableDescriptor {
2488
2693
  this._hasDefaultSort = false;
2489
2694
  this._defaultSortProperty = [];
2490
2695
  this._defaultSortAsc = [];
2491
- this._rowHeight = 45;
2492
- this._tableFullHeightOffset = 315;
2696
+ // visual
2697
+ this._className = '';
2698
+ this._size = TableDescriptor.SizeEnum.Large;
2699
+ this._hasHover = true;
2700
+ this._hasGridlines = false;
2493
2701
  this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
2494
2702
  this._dataKeyProperty = (_a = idProperty !== null && idProperty !== void 0 ? idProperty : ModelUtil.findIdAttribute(modelType)) !== null && _a !== void 0 ? _a : undefined;
2495
2703
  }
@@ -2526,14 +2734,26 @@ class TableDescriptor {
2526
2734
  get defaultSortAsc() {
2527
2735
  return this._defaultSortAsc;
2528
2736
  }
2529
- get rowHeight() {
2530
- return this._rowHeight;
2737
+ get model() {
2738
+ return this._model;
2739
+ }
2740
+ get className() {
2741
+ return this._className;
2742
+ }
2743
+ get size() {
2744
+ return this._size;
2531
2745
  }
2532
2746
  get tableFullHeightOffset() {
2533
2747
  return this._tableFullHeightOffset;
2534
2748
  }
2535
- get model() {
2536
- return this._model;
2749
+ get rowHeight() {
2750
+ return this._rowHeight;
2751
+ }
2752
+ get hasHover() {
2753
+ return this._hasHover;
2754
+ }
2755
+ get hasGridlines() {
2756
+ return this._hasGridlines;
2537
2757
  }
2538
2758
  addColumnDescriptor(column) {
2539
2759
  this._columns.push(column);
@@ -2612,14 +2832,30 @@ class TableDescriptor {
2612
2832
  this._defaultSortAsc.push(asc);
2613
2833
  return this;
2614
2834
  }
2615
- withRowHeight(rowHeight) {
2616
- this._rowHeight = rowHeight;
2835
+ withClassName(className) {
2836
+ this._className = className;
2837
+ return this;
2838
+ }
2839
+ withSize(size = TableDescriptor.SizeEnum.Normal) {
2840
+ this._size = size;
2617
2841
  return this;
2618
2842
  }
2619
2843
  withTableFullHeightOffset(tableFullHeightOffset) {
2620
2844
  this._tableFullHeightOffset = tableFullHeightOffset;
2621
2845
  return this;
2622
2846
  }
2847
+ withRowHeight(rowHeight) {
2848
+ this._rowHeight = rowHeight;
2849
+ return this;
2850
+ }
2851
+ withHover(hover) {
2852
+ this._hasHover = hover;
2853
+ return this;
2854
+ }
2855
+ withGridlines(gridlines) {
2856
+ this._hasGridlines = gridlines;
2857
+ return this;
2858
+ }
2623
2859
  copy() {
2624
2860
  const descriptor = new TableDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
2625
2861
  descriptor._columns = this.columns.map(c => c.copy());
@@ -2629,6 +2865,12 @@ class TableDescriptor {
2629
2865
  descriptor._defaultSortProperty = this._defaultSortProperty.map(p => p);
2630
2866
  descriptor._defaultSortAsc = this._defaultSortAsc.map(p => p);
2631
2867
  descriptor._filterDisplay = this._filterDisplay;
2868
+ descriptor._className = this._className;
2869
+ descriptor._size = this._size;
2870
+ descriptor._tableFullHeightOffset = this._tableFullHeightOffset;
2871
+ descriptor._rowHeight = this._rowHeight;
2872
+ descriptor._hasHover = this._hasHover;
2873
+ descriptor._hasGridlines = this._hasGridlines;
2632
2874
  return descriptor;
2633
2875
  }
2634
2876
  }
@@ -2643,6 +2885,12 @@ class TableDescriptor {
2643
2885
  FilterDisplayEnum[FilterDisplayEnum["Row"] = 0] = "Row";
2644
2886
  FilterDisplayEnum[FilterDisplayEnum["Menu"] = 1] = "Menu";
2645
2887
  })(FilterDisplayEnum = TableDescriptor.FilterDisplayEnum || (TableDescriptor.FilterDisplayEnum = {}));
2888
+ let SizeEnum;
2889
+ (function (SizeEnum) {
2890
+ SizeEnum[SizeEnum["Small"] = 0] = "Small";
2891
+ SizeEnum[SizeEnum["Normal"] = 1] = "Normal";
2892
+ SizeEnum[SizeEnum["Large"] = 2] = "Large";
2893
+ })(SizeEnum = TableDescriptor.SizeEnum || (TableDescriptor.SizeEnum = {}));
2646
2894
  })(TableDescriptor || (TableDescriptor = {}));
2647
2895
 
2648
2896
  var TableviewEditorTypeEnum = EditorDescriptor.TableviewEditorTypeEnum;
@@ -2963,49 +3211,12 @@ class EditorFormlyUtil {
2963
3211
  const validatorRes = validation.validator(control, field, options);
2964
3212
  // formly validator only excepts true/false for validation
2965
3213
  // map possible angular validator result to true/false
2966
- const res = typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;
2967
- console.log('mapper', config.key, validatorRes, res);
2968
- return res;
3214
+ return typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;
2969
3215
  }
2970
3216
  };
2971
3217
  if (typeof validation.message === 'function') {
2972
3218
  config.validators[validation.name].message = validation.message;
2973
3219
  }
2974
- // if (typeof validation.validator === 'function' && typeof validation.message === 'function') {
2975
- // config.validators[validation.name] = {
2976
- // expression: (
2977
- // control: AbstractControl,
2978
- // field: FormlyFieldConfig,
2979
- // options?: {
2980
- // [id: string]: any;
2981
- // }
2982
- // ) => {
2983
- // const validatorRes = validation.validator!(control, field, options);
2984
- // // formly validator only excepts true/false for validation
2985
- // // map possible angular validator result to true/false
2986
- // const res = typeof validatorRes === 'boolean' ? validatorRes : validatorRes === null;
2987
- // console.log('mapper', config.key, validatorRes, res);
2988
- // return res;
2989
- // },
2990
- // message: validation.message
2991
- // };
2992
- // } else if (typeof validation.validator === 'function') {
2993
- // config.validators[validation.name] = {
2994
- // expression: (
2995
- // control: AbstractControl,
2996
- // field: FormlyFieldConfig,
2997
- // options?: {
2998
- // [id: string]: any;
2999
- // }
3000
- // ) => {
3001
- // const validatorRes = validation.validator!(control, field, options);
3002
- // // formly validator only excepts true/false for validation
3003
- // // map possible angular validator result to true/false
3004
- // const res = typeof validatorRes === 'boolean' ? (validatorRes === false ? {[validation.name]: true} : null) : validatorRes;
3005
- // console.log('mapper', config.key, validatorRes, res);
3006
- // return res;
3007
- // }
3008
- // };
3009
3220
  }
3010
3221
  else {
3011
3222
  if (!Array.isArray(config.validators.validation)) {
@@ -3014,9 +3225,6 @@ class EditorFormlyUtil {
3014
3225
  config.validators.validation.push(validation.name);
3015
3226
  }
3016
3227
  }
3017
- if (validations.length > 0) {
3018
- console.log(config.validators);
3019
- }
3020
3228
  }
3021
3229
  }
3022
3230
 
@@ -3081,7 +3289,7 @@ class EnumUtil {
3081
3289
  static getConstantName(enumType, value) {
3082
3290
  var _a;
3083
3291
  if (typeof value === 'string') {
3084
- return (_a = this.getConstantNames(enumType).find(c => enumType[c] === value)) !== null && _a !== void 0 ? _a : null;
3292
+ return (_a = EnumUtil.getConstantNames(enumType).find(c => enumType[c] === value)) !== null && _a !== void 0 ? _a : null;
3085
3293
  }
3086
3294
  else {
3087
3295
  return typeof enumType[value] !== 'undefined' ? enumType[value] : null;
@@ -3096,7 +3304,7 @@ class EnumUtil {
3096
3304
  var _a;
3097
3305
  const enumObjAny = enumObj;
3098
3306
  if (typeof value === 'string') {
3099
- return (_a = this.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value)) !== null && _a !== void 0 ? _a : null;
3307
+ return (_a = EnumUtil.getConstantNamesFromEnumObject(enumObj).find(c => enumObjAny[c] === value)) !== null && _a !== void 0 ? _a : null;
3100
3308
  }
3101
3309
  else {
3102
3310
  return typeof enumObjAny[value] !== 'undefined' ? enumObjAny[value] : null;
@@ -3794,7 +4002,7 @@ class MediusRestUtil {
3794
4002
  const field = filterFieldSplit[0];
3795
4003
  const operator = filterFieldSplit.length > 1 ? filterFieldSplit[1] : 'eq';
3796
4004
  // prepare value
3797
- let value = filterFieldSplit.length > 2 ? filterFieldSplit[2] : '';
4005
+ let value = filterFieldSplit.length > 2 ? filterFieldSplit.slice(2).join(':') : '';
3798
4006
  const valueTo = undefined;
3799
4007
  if (value.startsWith("'")) {
3800
4008
  value = value.substring(1, value.length - 1);
@@ -3805,11 +4013,11 @@ class MediusRestUtil {
3805
4013
  .split(',')
3806
4014
  .map((v) => (v.startsWith("'") ? v.substring(1, v.length - 1) : v));
3807
4015
  }
3808
- const operatorMapping = MediusRestUtil.matchModeMapping.find(mapping => mapping[1] === operator);
3809
4016
  const filterDescriptor = filterDescriptors.find(f => f.property === field);
3810
- if (operatorMapping && filterDescriptor) {
4017
+ const matchMode = MediusRestUtil.getMapping(operator, filterDescriptor === null || filterDescriptor === void 0 ? void 0 : filterDescriptor.filterType, 1);
4018
+ if (matchMode && filterDescriptor) {
3811
4019
  const fieldFilterProperty = (_a = filterDescriptor.filterProperty) !== null && _a !== void 0 ? _a : filterDescriptor.property;
3812
- mediusParamsBuilder.withFilter(fieldFilterProperty, value, valueTo, MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(operatorMapping[0]));
4020
+ mediusParamsBuilder.withFilter(fieldFilterProperty, value, valueTo, MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode(matchMode[0]));
3813
4021
  }
3814
4022
  }
3815
4023
  }
@@ -3837,18 +4045,27 @@ class MediusRestUtil {
3837
4045
  for (const field in event.filters) {
3838
4046
  const primeOperator = event.filters[field].matchMode;
3839
4047
  let value = event.filters[field].value;
3840
- const operatorMapping = MediusRestUtil.matchModeMapping.find(mapping => mapping[0] === primeOperator);
3841
- if (operatorMapping &&
3842
- typeof value !== 'undefined' &&
3843
- value !== null &&
3844
- ((typeof value === 'string' && value.length > 0) || (Array.isArray(value) && value.length > 0))) {
3845
- if (Array.isArray(value)) {
4048
+ const operatorMapping = primeOperator ? MediusRestUtil.getMapping(primeOperator, undefined, 0) : undefined;
4049
+ if (operatorMapping && typeof value !== 'undefined' && value !== null) {
4050
+ let doAddFilter = false;
4051
+ if (typeof value === 'string' && value.length > 0) {
4052
+ value = `'${value}'`;
4053
+ doAddFilter = true;
4054
+ }
4055
+ else if (typeof value === 'number') {
4056
+ doAddFilter = true;
4057
+ }
4058
+ else if (Array.isArray(value)) {
3846
4059
  value = `[${value.map(v => `'${v}'`).join(',')}]`;
4060
+ doAddFilter = true;
3847
4061
  }
3848
- else {
3849
- value = `'${value}'`;
4062
+ else if (value instanceof Date) {
4063
+ value = `${value.toISOString()}`;
4064
+ doAddFilter = true;
4065
+ }
4066
+ if (doAddFilter) {
4067
+ filters.push(`${field}:${operatorMapping[1]}:${value}`);
3850
4068
  }
3851
- filters.push(`${field}:${operatorMapping[1]}:${value}`);
3852
4069
  }
3853
4070
  }
3854
4071
  if (filters.length > 0) {
@@ -3881,29 +4098,45 @@ class MediusRestUtil {
3881
4098
  }
3882
4099
  static addMediusFilterFromPrimeFilterMetadata(queryParamBuilder, property, filterMetadata) {
3883
4100
  var _a;
3884
- const matchType = MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode((_a = filterMetadata.matchMode) !== null && _a !== void 0 ? _a : 'contains');
4101
+ const matchType = MediusRestUtil.getMediusFilterMatchTypeFromPrimeMatchMode((_a = filterMetadata.matchMode) !== null && _a !== void 0 ? _a : 'equals');
3885
4102
  queryParamBuilder.withFilter(property, filterMetadata.value, undefined, matchType);
3886
4103
  }
3887
- static getMediusFilterMatchTypeFromPrimeMatchMode(matchMode) {
3888
- var _a;
3889
- const mapping = MediusRestUtil.matchModeMapping.find(m => m[0] === matchMode);
3890
- return (_a = mapping === null || mapping === void 0 ? void 0 : mapping[2]) !== null && _a !== void 0 ? _a : MediusFilterMatchType.Contains;
4104
+ static getMediusFilterMatchTypeFromPrimeMatchMode(matchMode, dataType) {
4105
+ var _a, _b;
4106
+ return (_b = (_a = MediusRestUtil.getMapping(matchMode, dataType)) === null || _a === void 0 ? void 0 : _a[2]) !== null && _b !== void 0 ? _b : MediusFilterMatchType.Equals;
4107
+ }
4108
+ static getMapping(matchMode, dataType, idx = 0) {
4109
+ const mappings = MediusRestUtil.matchModeMapping.filter(m => m[idx] === matchMode && (!dataType || !m[3] || dataType === m[3]));
4110
+ if (mappings.length === 0) {
4111
+ return null;
4112
+ }
4113
+ else if (mappings.length === 1) {
4114
+ return mappings[0];
4115
+ }
4116
+ else {
4117
+ return mappings.sort((m1, m2) => { var _a, _b; return ((_a = m2[3]) !== null && _a !== void 0 ? _a : -1) - ((_b = m1[3]) !== null && _b !== void 0 ? _b : -1); })[0];
4118
+ }
3891
4119
  }
3892
4120
  }
3893
4121
  // first value is from primeNG, second is for use in query params
3894
4122
  MediusRestUtil.matchModeMapping = [
3895
- ['contains', 'c', MediusFilterMatchType.Contains],
3896
- ['endsWith', 'ew', MediusFilterMatchType.EndsWith],
3897
- ['equals', 'eq', MediusFilterMatchType.Equals],
3898
- ['gte', 'gte', MediusFilterMatchType.GreaterThan],
3899
- ['leq', 'leq', MediusFilterMatchType.SmallerThan],
3900
- ['startsWith', 'sw', MediusFilterMatchType.StartsWith],
3901
- ['in', 'in', MediusFilterMatchType.In],
3902
- ['notEquals', 'neq', MediusFilterMatchType.NotEquals]
4123
+ [FilterMatchMode.CONTAINS, 'c', MediusFilterMatchType.Contains, null],
4124
+ [FilterMatchMode.ENDS_WITH, 'ew', MediusFilterMatchType.EndsWith, null],
4125
+ [FilterMatchMode.EQUALS, 'eq', MediusFilterMatchType.Equals, null],
4126
+ [FilterMatchMode.GREATER_THAN, 'gt', MediusFilterMatchType.GreaterThan, null],
4127
+ [FilterMatchMode.LESS_THAN, 'lt', MediusFilterMatchType.SmallerThan, null],
4128
+ [FilterMatchMode.STARTS_WITH, 'sw', MediusFilterMatchType.StartsWith, null],
4129
+ [FilterMatchMode.IN, 'in', MediusFilterMatchType.In, null],
4130
+ [FilterMatchMode.NOT_EQUALS, 'neq', MediusFilterMatchType.NotEquals, null],
4131
+ [FilterMatchMode.DATE_IS, 'eq', MediusFilterMatchType.Equals, FilterDescriptor.TypeEnum.Date],
4132
+ [FilterMatchMode.DATE_BEFORE, 'lt', MediusFilterMatchType.SmallerThan, FilterDescriptor.TypeEnum.Date],
4133
+ [FilterMatchMode.DATE_AFTER, 'gt', MediusFilterMatchType.GreaterThan, FilterDescriptor.TypeEnum.Date],
4134
+ [FilterMatchMode.DATE_IS_NOT, 'neq', MediusFilterMatchType.NotEquals, FilterDescriptor.TypeEnum.Date]
3903
4135
  ];
3904
4136
 
3905
4137
  class ActionExecContext {
3906
- constructor(dataProvider, serviceInstance, data, sourceComponent = null, viewContainer = null) {
4138
+ constructor(action, dataProvider, serviceInstance, data, sourceComponent = null, viewContainer = null) {
4139
+ this.action = action;
3907
4140
  this.dataProvider = dataProvider;
3908
4141
  this.serviceInstance = serviceInstance;
3909
4142
  this.data = data;
@@ -4222,7 +4455,7 @@ class MngActionExecutorService {
4222
4455
  prepareActionExecContext(action, itemId, item, dataProvider, viewContainer, sourceComponent, actionData) {
4223
4456
  var _a, _b;
4224
4457
  const ctxDataProvider = (_a = dataProvider !== null && dataProvider !== void 0 ? dataProvider : action.dataProvider) !== null && _a !== void 0 ? _a : viewContainer === null || viewContainer === void 0 ? void 0 : viewContainer.getDataProvider();
4225
- return new ActionExecContext(ctxDataProvider, (_b = this.getDataProviderService(ctxDataProvider)) !== null && _b !== void 0 ? _b : undefined, {
4458
+ return new ActionExecContext(action, ctxDataProvider, (_b = this.getDataProviderService(ctxDataProvider)) !== null && _b !== void 0 ? _b : undefined, {
4226
4459
  item,
4227
4460
  itemId,
4228
4461
  actionData
@@ -4371,7 +4604,7 @@ class MngActionExecutorService {
4371
4604
  ctxDataProvider = viewContainerDataProvider;
4372
4605
  }
4373
4606
  }
4374
- const context = new ActionExecContext(ctxDataProvider, (_a = this.getDataProviderService(ctxDataProvider)) !== null && _a !== void 0 ? _a : undefined, {
4607
+ const context = new ActionExecContext(action, ctxDataProvider, (_a = this.getDataProviderService(ctxDataProvider)) !== null && _a !== void 0 ? _a : undefined, {
4375
4608
  item,
4376
4609
  itemId,
4377
4610
  actionData
@@ -4836,8 +5069,8 @@ class MngCommonsService {
4836
5069
  numeric: [
4837
5070
  FilterDescriptor.MatchModeEnum.Equals,
4838
5071
  FilterDescriptor.MatchModeEnum.NotEquals,
4839
- FilterDescriptor.MatchModeEnum.LessThanOrEqualTo,
4840
- FilterDescriptor.MatchModeEnum.GreaterThanOrEqualTo
5072
+ FilterDescriptor.MatchModeEnum.LessThan,
5073
+ FilterDescriptor.MatchModeEnum.GreaterThan
4841
5074
  ],
4842
5075
  date: [
4843
5076
  FilterDescriptor.MatchModeEnum.DateIs,
@@ -6138,7 +6371,8 @@ class MngActionEditorComponent {
6138
6371
  return throwError(() => actionError);
6139
6372
  }), finalize(() => this.loadingSubject.next(false)))
6140
6373
  .subscribe(res => {
6141
- this.item = res.result;
6374
+ var _a;
6375
+ this.item = (_a = res === null || res === void 0 ? void 0 : res.result) !== null && _a !== void 0 ? _a : undefined;
6142
6376
  if (this.action.hasFetchNotificationSuccess) {
6143
6377
  NotificationUtil.actionNotificationSuccess(this.translate, this.action, 'fetch', this.action.fetchNotificationSuccessTitle, this.action.fetchNotificationSuccessMessage, this.viewContainer, this.item);
6144
6378
  }
@@ -6254,10 +6488,10 @@ class MngFormlyFieldInputComponent extends FieldType {
6254
6488
  }
6255
6489
  }
6256
6490
  MngFormlyFieldInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6257
- MngFormlyFieldInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldInputComponent, selector: "mng-formly-field-input", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"$any(descriptor.numberUseGrouping)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"$any(descriptor.datePickerFormat)\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n", components: [{ type: i1$2.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }, { type: i2$3.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabelledBy"], outputs: ["onChange"] }, { type: i3$1.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { type: i4$4.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5$1.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { type: i6$1.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3$1.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$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]" }, { type: i9$1.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.InputText, selector: "[pInputText]" }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6491
+ MngFormlyFieldInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldInputComponent, selector: "mng-formly-field-input", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"$any(descriptor.numberUseGrouping)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n", components: [{ type: i1$2.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown"] }, { type: i2$3.InputSwitch, selector: "p-inputSwitch", inputs: ["style", "styleClass", "tabindex", "inputId", "name", "disabled", "readonly", "trueValue", "falseValue", "ariaLabelledBy"], outputs: ["onChange"] }, { type: i3$1.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { type: i4$4.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i5$1.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { type: i6$1.InputMask, selector: "p-inputMask", inputs: ["type", "slotChar", "autoClear", "style", "inputId", "styleClass", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabel", "ariaRequired", "disabled", "readonly", "unmask", "name", "required", "characterPattern", "autoFocus", "autocomplete", "mask"], outputs: ["onComplete", "onFocus", "onBlur", "onInput", "onKeydown"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3$1.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$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]" }, { type: i9$1.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i10.InputText, selector: "[pInputText]" }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6258
6492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldInputComponent, decorators: [{
6259
6493
  type: Component,
6260
- args: [{ selector: 'mng-formly-field-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"$any(descriptor.numberUseGrouping)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"$any(descriptor.datePickerFormat)\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n" }]
6494
+ args: [{ selector: 'mng-formly-field-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"to.type\">\n <p-inputNumber\n *ngSwitchCase=\"'number'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [min]=\"$any(descriptor.numberMin)\"\n [max]=\"$any(descriptor.numberMax)\"\n [step]=\"$any(descriptor.numberStep)\"\n [useGrouping]=\"$any(descriptor.numberUseGrouping)\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits || 0\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits || 0\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-inputNumber>\n\n <div *ngSwitchCase=\"'switch'\" class=\"flex flex-column\">\n <label [for]=\"key\" [class]=\"descriptor.labelClassName\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <p-inputSwitch [id]=\"$any(key)\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" [styleClass]=\"descriptor.inputClassName\"></p-inputSwitch>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n </div>\n\n <ng-container *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of descriptor.radioOptions\" [id]=\"$any(key)\" class=\"field-radiobutton\">\n <p-radioButton\n [name]=\"$any(key)\"\n [value]=\"option.value\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [styleClass]=\"descriptor.inputClassName\"></p-radioButton>\n <label [for]=\"option.value\" [class]=\"'mng-radio-button-label ' + descriptor.labelClassName\">{{ option.title | translate }}</label>\n </div>\n </ng-container>\n\n <textarea\n *ngSwitchCase=\"'textarea'\"\n [id]=\"$any(key)\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [rows]=\"descriptor.rows ?? 3\"\n pInputTextarea\n [class]=\"descriptor.inputClassName\">\n </textarea>\n\n <p-calendar\n *ngSwitchCase=\"'datepicker'\"\n appendTo=\"body\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [minDate]=\"$any(descriptor.datePickerMin)\"\n [maxDate]=\"$any(descriptor.datePickerMax)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [showIcon]=\"true\"\n [inputStyleClass]=\"descriptor.inputClassName\">\n </p-calendar>\n\n <p-inputMask\n *ngSwitchCase=\"'mask'\"\n [formControl]=\"iFormControl\"\n [formlyAttributes]=\"field\"\n [mask]=\"$any(descriptor.mask)\"\n [placeholder]=\"$any(descriptor.placeholder)\"\n [slotChar]=\"$any(descriptor.slotChar)\"\n [styleClass]=\"descriptor.inputClassName\">\n </p-inputMask>\n\n <input *ngSwitchDefault pInputText [id]=\"$any(key)\" [type]=\"to.type || 'text'\" [formControl]=\"iFormControl\" [formlyAttributes]=\"field\" />\n</ng-container>\n" }]
6261
6495
  }] });
6262
6496
 
6263
6497
  class MngFormlyFieldLabelComponent {
@@ -6310,6 +6544,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
6310
6544
  args: [{ selector: 'mng-formly-field-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-dropdown\n [id]=\"$any(key)\"\n [formControl]=\"dFormControl\"\n [formlyAttributes]=\"field\"\n [placeholder]=\"descriptor.placeholder\"\n [dataProvider]=\"descriptor.dataProvider\"\n [itemsLabelProperty]=\"descriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"descriptor.itemsLabelTranslate\"\n [itemsValueProperty]=\"descriptor.itemsValueProperty\"\n [itemsDisabledProperty]=\"descriptor.itemsDisabledProperty\"\n [dataKeyProperty]=\"descriptor.dataKeyProperty\"\n [showClear]=\"!to.required\"\n [className]=\"descriptor.inputClassName\">\n</mng-dropdown>\n" }]
6311
6545
  }] });
6312
6546
 
6547
+ class StylesUtil {
6548
+ static calculateTableColumnActionWidth(table, actions) {
6549
+ const buttonsWidth = actions.reduce((acc, action) => acc + StylesUtil.getActionButtonRoundedWidth(action) + 2 * StylesUtil.ACTION_BUTTON_MARGIN_X, 0);
6550
+ const tablePadding = StylesUtil.getTableCellPaddingX(table);
6551
+ return buttonsWidth + 2 * tablePadding;
6552
+ }
6553
+ static getTableCellPaddingX(table) {
6554
+ switch (table.size) {
6555
+ case TableDescriptor.SizeEnum.Small:
6556
+ return StylesUtil.TABLE_CELL_PADDING_X_SM;
6557
+ case TableDescriptor.SizeEnum.Large:
6558
+ return StylesUtil.TABLE_CELL_PADDING_X_LG;
6559
+ default:
6560
+ return StylesUtil.TABLE_CELL_PADDING_X;
6561
+ }
6562
+ }
6563
+ static getActionButtonRoundedWidth(action) {
6564
+ switch (action.size) {
6565
+ case ActionDescriptor.SizeEnum.ExtraSmall:
6566
+ return StylesUtil.BUTTON_ROUNDED_WIDTH_XS;
6567
+ case ActionDescriptor.SizeEnum.Small:
6568
+ return StylesUtil.BUTTON_ROUNDED_WIDTH_SM;
6569
+ case ActionDescriptor.SizeEnum.Large:
6570
+ case ActionDescriptor.SizeEnum.ExtraLarge:
6571
+ return StylesUtil.BUTTON_ROUNDED_WIDTH_LG;
6572
+ case ActionDescriptor.SizeEnum.Normal:
6573
+ default:
6574
+ return StylesUtil.BUTTON_ROUNDED_WIDTH;
6575
+ }
6576
+ }
6577
+ }
6578
+ StylesUtil.BUTTON_ROUNDED_WIDTH_XS = 26;
6579
+ StylesUtil.BUTTON_ROUNDED_WIDTH_SM = 28;
6580
+ StylesUtil.BUTTON_ROUNDED_WIDTH = 32;
6581
+ StylesUtil.BUTTON_ROUNDED_WIDTH_LG = 45;
6582
+ StylesUtil.ACTION_BUTTON_MARGIN_X = 2;
6583
+ StylesUtil.TABLE_CELL_PADDING_X = 8; // left and right paddings are same
6584
+ StylesUtil.TABLE_CELL_PADDING_X_SM = 4;
6585
+ StylesUtil.TABLE_CELL_PADDING_X_LG = 12;
6586
+
6313
6587
  class MngTableLoadEvent {
6314
6588
  }
6315
6589
  class MngTableCellClickEvent {
@@ -6353,6 +6627,7 @@ class MngTableColumnFilterComponent {
6353
6627
  break;
6354
6628
  case FilterDescriptor.TypeEnum.Date:
6355
6629
  this.primeType = 'date';
6630
+ this.primeDefaultMatchMode = FilterMatchMode.DATE_AFTER;
6356
6631
  break;
6357
6632
  case FilterDescriptor.TypeEnum.Lookup:
6358
6633
  this.primeType = 'lookup';
@@ -6377,6 +6652,22 @@ class MngTableColumnFilterComponent {
6377
6652
  break;
6378
6653
  }
6379
6654
  }
6655
+ valueToDate(value) {
6656
+ console.log('call', this.descriptor.property);
6657
+ if (typeof value === 'string' || typeof value === 'number') {
6658
+ return new Date(value);
6659
+ }
6660
+ else if (value instanceof Date) {
6661
+ return value;
6662
+ }
6663
+ else {
6664
+ return null;
6665
+ }
6666
+ }
6667
+ // eslint-disable-next-line @typescript-eslint/ban-types
6668
+ dateFilter(value, filterCallback) {
6669
+ filterCallback(value);
6670
+ }
6380
6671
  // eslint-disable-next-line @typescript-eslint/ban-types
6381
6672
  autocompleteFilter(value, filterCallback) {
6382
6673
  filterCallback(value);
@@ -6386,15 +6677,14 @@ class MngTableColumnFilterComponent {
6386
6677
  filterCallback(value);
6387
6678
  }
6388
6679
  toLookupFilterValue(value) {
6389
- console.log(this.descriptor.property, value);
6390
6680
  return this.lookupDescriptor.dataKeyProperty && value ? { [this.lookupDescriptor.dataKeyProperty]: value } : value;
6391
6681
  }
6392
6682
  }
6393
6683
  MngTableColumnFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngTableColumnFilterComponent, deps: [{ token: i2.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
6394
- MngTableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngTableColumnFilterComponent, selector: "mng-table-column-filter", inputs: { descriptor: "descriptor", display: "display" }, ngImport: i0, template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n matchMode=\"equals\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\">\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"true\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n", components: [{ type: i4$5.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName"], outputs: ["valueChange"] }, { type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName"], outputs: ["valueChange"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i1$1.TranslatePipe } });
6684
+ MngTableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngTableColumnFilterComponent, selector: "mng-table-column-filter", inputs: { descriptor: "descriptor", display: "display" }, ngImport: i0, template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n matchMode=\"equals\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\">\n </p-calendar>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n", components: [{ type: i4$5.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { type: i5$1.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName"], outputs: ["valueChange"] }, { type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName"], outputs: ["valueChange"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "translate": i1$1.TranslatePipe } });
6395
6685
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngTableColumnFilterComponent, decorators: [{
6396
6686
  type: Component,
6397
- args: [{ selector: 'mng-table-column-filter', template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n matchMode=\"equals\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\">\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"true\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n" }]
6687
+ args: [{ selector: 'mng-table-column-filter', template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n matchMode=\"equals\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\">\n </p-calendar>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n" }]
6398
6688
  }], ctorParameters: function () { return [{ type: i2.PrimeNGConfig }]; }, propDecorators: { descriptor: [{
6399
6689
  type: Input
6400
6690
  }], display: [{
@@ -6434,14 +6724,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
6434
6724
  type: Input
6435
6725
  }] } });
6436
6726
 
6437
- var TypeEnum = FilterDescriptor.TypeEnum;
6438
6727
  var PaginationModeEnum = TableDescriptor.PaginationModeEnum;
6728
+ var TypeEnum = FilterDescriptor.TypeEnum;
6439
6729
  class MngTableComponent {
6440
- constructor(injector, router, activatedRoute, translate, viewContainerService) {
6730
+ constructor(injector, router, route, translate, actionExecutor, viewContainerService) {
6441
6731
  this.injector = injector;
6442
6732
  this.router = router;
6443
- this.activatedRoute = activatedRoute;
6733
+ this.route = route;
6444
6734
  this.translate = translate;
6735
+ this.actionExecutor = actionExecutor;
6445
6736
  this.viewContainerService = viewContainerService;
6446
6737
  this.filterDisplayRow = TableDescriptor.FilterDisplayEnum.Row;
6447
6738
  this.filterDisplayMenu = TableDescriptor.FilterDisplayEnum.Menu;
@@ -6449,8 +6740,9 @@ class MngTableComponent {
6449
6740
  // extra features input
6450
6741
  this.selectionMode = 'multiple';
6451
6742
  this.selectionEnabled = false;
6452
- // visual
6453
- this.isColumnClickable = true;
6743
+ // actions
6744
+ this.actions = [];
6745
+ this.columnActionMinWidth = null;
6454
6746
  // event outputs
6455
6747
  this.loadEventEmitter = new EventEmitter();
6456
6748
  this.cellClickEventEmitter = new EventEmitter();
@@ -6461,12 +6753,14 @@ class MngTableComponent {
6461
6753
  this.useDataProvider = false;
6462
6754
  this.useQueryParamsInitialized = false;
6463
6755
  this.dataProviderInfiniteScrollItems = [];
6756
+ this.itemsSubject = new ReplaySubject(1);
6464
6757
  this.offset = 0;
6465
6758
  this.multiSortMeta = null;
6466
6759
  this.filterMetadata = {};
6467
6760
  // infinite scroll
6468
6761
  this.infiniteScroll = false;
6469
6762
  this.scrollHeight = null;
6763
+ this.tableFullHeightOffset = null;
6470
6764
  this.rowHeight = null;
6471
6765
  // selection
6472
6766
  this.selection = [];
@@ -6480,18 +6774,59 @@ class MngTableComponent {
6480
6774
  this.isFilterChanged = false;
6481
6775
  this.isSortChanged = false;
6482
6776
  this.filterDescriptors = [];
6777
+ // actions
6778
+ this.showInlineActionsColumn = false;
6779
+ this.rowClickActions = [];
6780
+ this.rowInlineActions = [];
6483
6781
  this.subscriptions = [];
6484
6782
  }
6485
6783
  ngOnInit() {
6486
- var _a, _b;
6784
+ var _a, _b, _c, _d, _e, _f, _g;
6487
6785
  this.viewContainer = (_b = (_a = this.viewContainerInit) !== null && _a !== void 0 ? _a : this.viewContainerService) !== null && _b !== void 0 ? _b : undefined;
6488
6786
  this.filterDescriptors = this.descriptor.columns.filter(c => typeof c.filterDescriptor !== 'undefined').map(c => c.filterDescriptor);
6787
+ // map row settings
6489
6788
  this.rows = this.descriptor.defaultNumRows;
6490
6789
  this.rowsPerPageOptions = this.descriptor.rowsPerPageOptions;
6790
+ // process actions
6791
+ for (const action of this.actions) {
6792
+ switch (action.position) {
6793
+ case ActionPositionEnum.RowClick:
6794
+ this.rowClickActions.push(action);
6795
+ break;
6796
+ case ActionPositionEnum.RowInline:
6797
+ this.rowInlineActions.push(action);
6798
+ break;
6799
+ }
6800
+ }
6801
+ this.showInlineActionsColumn = typeof this.columnActionComponent !== 'undefined' || this.rowInlineActions.length > 0;
6802
+ // define all styles
6803
+ this.className = this.descriptor.className;
6804
+ this.tableFullHeightOffset = (_c = this.descriptor.tableFullHeightOffset) !== null && _c !== void 0 ? _c : null;
6805
+ this.rowHeight = (_d = this.descriptor.rowHeight) !== null && _d !== void 0 ? _d : null;
6806
+ if (typeof this.isColumnClickable === 'undefined') {
6807
+ // define if cell click is being observed via output
6808
+ this.isColumnClickable = this.rowClickActions.length > 0 || this.cellClickEventEmitter.observed;
6809
+ }
6810
+ switch (this.descriptor.size) {
6811
+ case TableDescriptor.SizeEnum.Small:
6812
+ this.className += ' p-datatable-sm';
6813
+ break;
6814
+ case TableDescriptor.SizeEnum.Large:
6815
+ this.className += ' p-datatable-lg';
6816
+ break;
6817
+ }
6818
+ if (this.descriptor.hasGridlines) {
6819
+ this.className += ' p-datatable-gridlines';
6820
+ }
6821
+ if (!this.columnActionMinWidth) {
6822
+ this.columnActionMinWidth = StylesUtil.calculateTableColumnActionWidth(this.descriptor, this.rowInlineActions);
6823
+ }
6824
+ // check if infinite scroll
6491
6825
  if (this.descriptor.paginationMode === PaginationModeEnum.InfiniteScroll) {
6492
6826
  this.infiniteScroll = true;
6493
6827
  this.scrollHeight = 'flex';
6494
- this.rowHeight = this.descriptor.rowHeight;
6828
+ this.tableFullHeightOffset = (_e = this.descriptor.tableFullHeightOffset) !== null && _e !== void 0 ? _e : 315;
6829
+ this.rowHeight = (_f = this.descriptor.rowHeight) !== null && _f !== void 0 ? _f : 45;
6495
6830
  this.useQueryParams = false;
6496
6831
  }
6497
6832
  // check if data provider is supplied, if is, use it primarily
@@ -6515,8 +6850,8 @@ class MngTableComponent {
6515
6850
  if (this.queryResult) {
6516
6851
  this.queryResult$ = this.queryResult instanceof Observable ? this.queryResult : of(this.queryResult);
6517
6852
  }
6518
- else if (!this.queryResult && this.items) {
6519
- this.queryResult$ = (this.items instanceof Observable ? this.items : of(this.items)).pipe(
6853
+ else {
6854
+ this.queryResult$ = (isObservable(this.items) ? this.items : this.itemsSubject.asObservable()).pipe(
6520
6855
  // distinctUntilChanged((v1, v2) => v1.length === v2.length &&
6521
6856
  // v1.every((v1i, idx) => v1i[this.descriptor.dataKeyProperty] === v2[idx][this.descriptor.dataKeyProperty])),
6522
6857
  map(items => {
@@ -6525,13 +6860,16 @@ class MngTableComponent {
6525
6860
  queryResult.allDataCount = items.length;
6526
6861
  return queryResult;
6527
6862
  }));
6863
+ if (!isObservable(this.items)) {
6864
+ this.itemsSubject.next((_g = this.items) !== null && _g !== void 0 ? _g : []);
6865
+ }
6528
6866
  }
6529
6867
  if (typeof this.loading !== 'undefined') {
6530
6868
  this.loading$ = this.loading instanceof Observable ? this.loading : of(this.loading);
6531
6869
  }
6532
6870
  }
6533
6871
  if (this.useQueryParams) {
6534
- const subscription = this.activatedRoute.queryParams.subscribe(qp => {
6872
+ const subscription = this.route.queryParams.subscribe(qp => {
6535
6873
  this.loadTableFromRouteUpdate(qp);
6536
6874
  });
6537
6875
  this.subscriptions.push(subscription);
@@ -6552,10 +6890,18 @@ class MngTableComponent {
6552
6890
  break;
6553
6891
  case 'columnAction':
6554
6892
  this.columnActionTemplate = template.template;
6893
+ if (!this.showInlineActionsColumn) {
6894
+ this.showInlineActionsColumn = true;
6895
+ }
6555
6896
  break;
6556
6897
  }
6557
6898
  });
6558
6899
  }
6900
+ ngOnChanges(changes) {
6901
+ if (changes['items'] && !changes['items'].firstChange && Array.isArray(changes['items'].currentValue)) {
6902
+ this.itemsSubject.next(changes['items'].currentValue);
6903
+ }
6904
+ }
6559
6905
  ngOnDestroy() {
6560
6906
  var _a;
6561
6907
  (_a = this.dataProviderSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
@@ -6574,7 +6920,7 @@ class MngTableComponent {
6574
6920
  event.multiSortMeta = this.getDefaultSortMeta();
6575
6921
  }
6576
6922
  this.router.navigate([], {
6577
- relativeTo: this.activatedRoute,
6923
+ relativeTo: this.route,
6578
6924
  replaceUrl: true,
6579
6925
  queryParams: MediusRestUtil.fromPrimeLazyLoadEventToAngularQueryParams(event, this.rowsPerPageOptions[0])
6580
6926
  });
@@ -6592,9 +6938,14 @@ class MngTableComponent {
6592
6938
  onTableFilter(event) {
6593
6939
  this.isFilterChanged = true;
6594
6940
  }
6595
- onCellClick(col, item, idx) {
6941
+ onCellClick(event, col, item, idx) {
6596
6942
  const mngEvent = new MngTableCellClickEvent(col, item, idx);
6597
6943
  this.cellClickEventEmitter.next(mngEvent);
6944
+ if (this.rowClickActions.length) {
6945
+ for (const action of this.rowClickActions) {
6946
+ this.actionExecutor.triggerRowClickAction(action, mngEvent, this.route, this.descriptor);
6947
+ }
6948
+ }
6598
6949
  }
6599
6950
  onSelectionChange(event) {
6600
6951
  this.selectionChangeEventEmitter.emit(event);
@@ -6661,9 +7012,21 @@ class MngTableComponent {
6661
7012
  const primeSortMeta = [];
6662
7013
  const primeFilterMeta = {};
6663
7014
  this.filterDescriptors.forEach(f => {
7015
+ let matchMode;
7016
+ switch (f.filterType) {
7017
+ case TypeEnum.String:
7018
+ matchMode = FilterMatchMode.CONTAINS;
7019
+ break;
7020
+ case TypeEnum.Date:
7021
+ matchMode = FilterMatchMode.DATE_AFTER;
7022
+ break;
7023
+ default:
7024
+ matchMode = FilterMatchMode.EQUALS;
7025
+ break;
7026
+ }
6664
7027
  primeFilterMeta[f.property] = {
6665
7028
  value: null,
6666
- matchMode: f.filterType === TypeEnum.String ? 'contains' : 'equals'
7029
+ matchMode: matchMode
6667
7030
  };
6668
7031
  });
6669
7032
  (_a = mediusQueryParam === null || mediusQueryParam === void 0 ? void 0 : mediusQueryParam.sortProperty) === null || _a === void 0 ? void 0 : _a.forEach((s, idx) => {
@@ -6674,12 +7037,19 @@ class MngTableComponent {
6674
7037
  });
6675
7038
  });
6676
7039
  (_b = mediusQueryParam === null || mediusQueryParam === void 0 ? void 0 : mediusQueryParam.filterParams) === null || _b === void 0 ? void 0 : _b.forEach(f => {
7040
+ var _a;
6677
7041
  const descriptor = this.filterDescriptors.find(fd => fd.filterProperty === f.property || fd.property === f.property);
6678
- const operator = MediusRestUtil.matchModeMapping.find(mapping => mapping[2] === f.filterMatchType);
6679
- if (descriptor && operator) {
7042
+ const matchMode = f.filterMatchType && descriptor ? (_a = MediusRestUtil.getMapping(f.filterMatchType, descriptor.filterType, 2)) === null || _a === void 0 ? void 0 : _a[0] : MediusFilterMatchType.Equals;
7043
+ if (descriptor && matchMode) {
7044
+ let filterValue = f.filterValue;
7045
+ if (descriptor.filterType === TypeEnum.Date && typeof filterValue !== 'undefined') {
7046
+ if (typeof filterValue === 'string' || typeof filterValue === 'number') {
7047
+ filterValue = new Date(filterValue);
7048
+ }
7049
+ }
6680
7050
  primeFilterMeta[descriptor.property] = {
6681
- value: f.filterValue,
6682
- matchMode: operator[0]
7051
+ value: filterValue,
7052
+ matchMode: matchMode
6683
7053
  };
6684
7054
  }
6685
7055
  });
@@ -6700,13 +7070,13 @@ class MngTableComponent {
6700
7070
  }
6701
7071
  }
6702
7072
  }
6703
- MngTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngTableComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i1$1.TranslateService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
6704
- MngTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngTableComponent, selector: "mng-table", inputs: { descriptor: "descriptor", items: "items", queryResult: "queryResult", loading: "loading", dataProvider: "dataProvider", useQueryParams: "useQueryParams", selectionMode: "selectionMode", selectionEnabled: "selectionEnabled", isColumnClickable: "isColumnClickable", viewContainerInit: ["viewContainer", "viewContainerInit"], captionComponent: "captionComponent", columnActionComponent: "columnActionComponent" }, outputs: { loadEventEmitter: "tableLoad", cellClickEventEmitter: "cellClick", selectionChangeEventEmitter: "selectionChange", captionCmpInstEventEmitter: "captionComponentInstance", columnActionCmpInstEventEmitter: "columnActionComponentInstance" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "primeTable", first: true, predicate: Table, descendants: true }, { propertyName: "components", predicate: MngComponentDirective, descendants: true }], ngImport: i0, template: "<div [style.height]=\"scrollHeight === 'flex' ? 'calc(100vh - ' + descriptor.tableFullHeightOffset + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n <p-table\n *ngIf=\"!useQueryParams || useQueryParamsInitialized\"\n [value]=\"infiniteScroll ? dataProviderInfiniteScrollItems : (queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\"\n [lazy]=\"useDataProvider\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"useDataProvider && !infiniteScroll\"\n [rows]=\"$any(infiniteScroll ? 20 : rows)\"\n [first]=\"$any(infiniteScroll ? 0 : offset)\"\n [totalRecords]=\"$any(infiniteScroll ? null : (queryResult$ | async)?.allDataCount ?? 0)\"\n [rowsPerPageOptions]=\"$any(infiniteScroll ? null : rowsPerPageOptions)\"\n [showCurrentPageReport]=\"!infiniteScroll\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n [filters]=\"filterMetadata\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [scrollable]=\"infiniteScroll\"\n [virtualScroll]=\"infiniteScroll\"\n [virtualRowHeight]=\"$any(rowHeight)\"\n [scrollHeight]=\"$any(scrollHeight)\"\n [rowHover]=\"true\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\"\n [selectionMode]=\"selectionMode\"\n sortMode=\"multiple\"\n responsiveLayout=\"scroll\">\n <ng-template *ngIf=\"captionTemplate || captionComponent || descriptor.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else componentOrDefaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #componentOrDefaultCaption>\n <div *ngIf=\"captionComponent; else defaultCaption\" [mngComponent]=\"captionComponent\" (instanceCreated)=\"onCaptionCmpInst($event)\"></div>\n <ng-template #defaultCaption>\n <h5 class=\"p-0 m-0\">{{ descriptor.title }}</h5>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr *ngIf=\"!descriptor.hideHeader\">\n <th *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"width: 2.25em\"></th>\n <ng-container *ngFor=\"let col of descriptor.columns\">\n <th *ngIf=\"col.isSortEnabled\" [pSortableColumn]=\"col.property\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <p-sortIcon [field]=\"col.property\"></p-sortIcon>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"!col.isSortEnabled\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <ng-container>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"columnActionTemplate || columnActionComponent\"></th>\n </tr>\n <tr *ngIf=\"descriptor.filterDisplay === filterDisplayRow\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"width: 2.25em\"></th>\n <th *ngFor=\"let col of descriptor.columns\">\n <div class=\"flex\" *ngIf=\"col.filterDescriptor\">\n <mng-table-column-filter [display]=\"descriptor.filterDisplay\" [descriptor]=\"col.filterDescriptor\"></mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"columnActionTemplate || columnActionComponent\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr [style.height.px]=\"descriptor.rowHeight\">\n <td *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"selectionEnabled && selectionMode === 'single'\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n <td *ngFor=\"let col of descriptor.columns\" (click)=\"onCellClick(col, item, idx)\" [class.clickable]=\"isColumnClickable\">\n <mng-table-column-value [descriptor]=\"col\" [item]=\"item\"></mng-table-column-value>\n </td>\n <td *ngIf=\"columnActionTemplate || columnActionComponent\" class=\"text-right\">\n <ng-container *ngIf=\"columnActionTemplate; else showColumnActionComponent\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n </ng-container>\n <ng-template #showColumnActionComponent>\n <span [mngComponent]=\"columnActionComponent!\" (instanceCreated)=\"onColumnActionCmpInst($event)\"></span>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"descriptor.rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (columnActionTemplate || columnActionComponent ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (columnActionTemplate || columnActionComponent ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n", components: [{ type: i4$5.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollDelay", "virtualRowHeight", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "minBufferPx", "maxBufferPx", "responsiveLayout", "breakpoint", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { type: i4$5.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { type: i4$5.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { type: MngTableColumnFilterComponent, selector: "mng-table-column-filter", inputs: ["descriptor", "display"] }, { type: i4$5.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { type: i4$5.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: ["descriptor", "item"] }, { type: i7$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$5.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i4.AsyncPipe, "translate": i1$1.TranslatePipe, "i18nProperty": MngI18nPropertyPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7073
+ MngTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngTableComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i1$1.TranslateService }, { token: MngActionExecutorService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
7074
+ MngTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngTableComponent, selector: "mng-table", inputs: { descriptor: "descriptor", items: "items", queryResult: "queryResult", loading: "loading", dataProvider: "dataProvider", useQueryParams: "useQueryParams", selectionMode: "selectionMode", selectionEnabled: "selectionEnabled", actions: "actions", isColumnClickable: "isColumnClickable", viewContainerInit: ["viewContainer", "viewContainerInit"], captionComponent: "captionComponent", columnActionComponent: "columnActionComponent", columnActionMinWidth: "columnActionMinWidth" }, outputs: { loadEventEmitter: "tableLoad", cellClickEventEmitter: "cellClick", selectionChangeEventEmitter: "selectionChange", captionCmpInstEventEmitter: "captionComponentInstance", columnActionCmpInstEventEmitter: "columnActionComponentInstance" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "primeTable", first: true, predicate: Table, descendants: true }, { propertyName: "components", predicate: MngComponentDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [style.height]=\"scrollHeight === 'flex' ? 'calc(100vh - ' + tableFullHeightOffset + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n <p-table\n *ngIf=\"!useQueryParams || useQueryParamsInitialized\"\n [value]=\"infiniteScroll ? dataProviderInfiniteScrollItems : (queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\"\n [lazy]=\"useDataProvider\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"useDataProvider && !infiniteScroll\"\n [rows]=\"$any(infiniteScroll ? 20 : rows)\"\n [first]=\"$any(infiniteScroll ? 0 : offset)\"\n [totalRecords]=\"$any(infiniteScroll ? null : (queryResult$ | async)?.allDataCount ?? 0)\"\n [rowsPerPageOptions]=\"$any(infiniteScroll ? null : rowsPerPageOptions)\"\n [showCurrentPageReport]=\"!infiniteScroll\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n [filters]=\"filterMetadata\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [scrollable]=\"infiniteScroll\"\n [virtualScroll]=\"infiniteScroll\"\n [virtualRowHeight]=\"$any(rowHeight)\"\n [scrollHeight]=\"$any(scrollHeight)\"\n [selectionMode]=\"$any(selectionEnabled ? selectionMode : null)\"\n [rowHover]=\"descriptor.hasHover\"\n [styleClass]=\"className\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\"\n sortMode=\"multiple\"\n responsiveLayout=\"scroll\">\n <ng-template *ngIf=\"captionTemplate || captionComponent || descriptor.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else componentOrDefaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #componentOrDefaultCaption>\n <div *ngIf=\"captionComponent; else defaultCaption\" [mngComponent]=\"captionComponent\" (instanceCreated)=\"onCaptionCmpInst($event)\"></div>\n <ng-template #defaultCaption>\n <h5 class=\"p-0 m-0\">{{ descriptor.title }}</h5>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr *ngIf=\"!descriptor.hideHeader\">\n <th *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <ng-container *ngFor=\"let col of descriptor.columns\">\n <th *ngIf=\"col.isSortEnabled\" [pSortableColumn]=\"col.property\" [class]=\"col.headerClassName\" [style.width.%]=\"col.width\" [style.min-width.px]=\"col.minWidth\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <p-sortIcon [field]=\"col.property\"></p-sortIcon>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"!col.isSortEnabled\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <ng-container>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n <tr *ngIf=\"descriptor.filterDisplay === filterDisplayRow\" class=\"mng-column-filter-row\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <th\n *ngFor=\"let col of descriptor.columns\"\n [class]=\"(col.filterDescriptor ? 'mng-column-filter-' + col.filterDescriptor.filterType + ' ' : ' ') + col.filterDescriptor?.columnClassName\"\n [style.width.%]=\"col.filterDescriptor?.columnWidth ?? col.width\"\n [style.min-width.px]=\"col.filterDescriptor?.columnMinWidth ?? col.minWidth\">\n <div class=\"flex\" *ngIf=\"col.filterDescriptor\">\n <mng-table-column-filter [display]=\"descriptor.filterDisplay\" [descriptor]=\"col.filterDescriptor\"></mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr [style.height.px]=\"rowHeight\">\n <td *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"selectionEnabled && selectionMode === 'single'\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n <td\n *ngFor=\"let col of descriptor.columns\"\n (click)=\"onCellClick($event, col, item, idx)\"\n [class]=\"col.className\"\n [class.clickable]=\"isColumnClickable\"\n [style.width.%]=\"col.width\"\n [style.min-width.px]=\"col.minWidth\">\n <mng-table-column-value [descriptor]=\"col\" [item]=\"item\"></mng-table-column-value>\n </td>\n <td *ngIf=\"showInlineActionsColumn\" class=\"column-action text-right\" [style.min-width.px]=\"columnActionMinWidth\">\n <ng-container *ngIf=\"columnActionTemplate; else showColumnActionComponentOrDefault\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n </ng-container>\n <ng-template #showColumnActionComponentOrDefault>\n <span\n *ngIf=\"columnActionComponent; else defaultColumnActions\"\n [mngComponent]=\"columnActionComponent!\"\n (instanceCreated)=\"onColumnActionCmpInst($event)\"></span>\n </ng-template>\n <ng-template #defaultColumnActions>\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\"\n [actionData]=\"{itemIndex: idx}\">\n </mng-action>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n", components: [{ type: i4$5.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollDelay", "virtualRowHeight", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "minBufferPx", "maxBufferPx", "responsiveLayout", "breakpoint", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { type: i4$5.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { type: i4$5.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { type: MngTableColumnFilterComponent, selector: "mng-table-column-filter", inputs: ["descriptor", "display"] }, { type: i4$5.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { type: i4$5.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: ["descriptor", "item"] }, { type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["trigger"] }, { type: i8$1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$5.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i4.AsyncPipe, "translate": i1$1.TranslatePipe, "i18nProperty": MngI18nPropertyPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6705
7075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngTableComponent, decorators: [{
6706
7076
  type: Component,
6707
- args: [{ selector: 'mng-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [style.height]=\"scrollHeight === 'flex' ? 'calc(100vh - ' + descriptor.tableFullHeightOffset + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n <p-table\n *ngIf=\"!useQueryParams || useQueryParamsInitialized\"\n [value]=\"infiniteScroll ? dataProviderInfiniteScrollItems : (queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\"\n [lazy]=\"useDataProvider\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"useDataProvider && !infiniteScroll\"\n [rows]=\"$any(infiniteScroll ? 20 : rows)\"\n [first]=\"$any(infiniteScroll ? 0 : offset)\"\n [totalRecords]=\"$any(infiniteScroll ? null : (queryResult$ | async)?.allDataCount ?? 0)\"\n [rowsPerPageOptions]=\"$any(infiniteScroll ? null : rowsPerPageOptions)\"\n [showCurrentPageReport]=\"!infiniteScroll\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n [filters]=\"filterMetadata\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [scrollable]=\"infiniteScroll\"\n [virtualScroll]=\"infiniteScroll\"\n [virtualRowHeight]=\"$any(rowHeight)\"\n [scrollHeight]=\"$any(scrollHeight)\"\n [rowHover]=\"true\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\"\n [selectionMode]=\"selectionMode\"\n sortMode=\"multiple\"\n responsiveLayout=\"scroll\">\n <ng-template *ngIf=\"captionTemplate || captionComponent || descriptor.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else componentOrDefaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #componentOrDefaultCaption>\n <div *ngIf=\"captionComponent; else defaultCaption\" [mngComponent]=\"captionComponent\" (instanceCreated)=\"onCaptionCmpInst($event)\"></div>\n <ng-template #defaultCaption>\n <h5 class=\"p-0 m-0\">{{ descriptor.title }}</h5>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr *ngIf=\"!descriptor.hideHeader\">\n <th *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"width: 2.25em\"></th>\n <ng-container *ngFor=\"let col of descriptor.columns\">\n <th *ngIf=\"col.isSortEnabled\" [pSortableColumn]=\"col.property\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <p-sortIcon [field]=\"col.property\"></p-sortIcon>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"!col.isSortEnabled\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <ng-container>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"columnActionTemplate || columnActionComponent\"></th>\n </tr>\n <tr *ngIf=\"descriptor.filterDisplay === filterDisplayRow\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"width: 2.25em\"></th>\n <th *ngFor=\"let col of descriptor.columns\">\n <div class=\"flex\" *ngIf=\"col.filterDescriptor\">\n <mng-table-column-filter [display]=\"descriptor.filterDisplay\" [descriptor]=\"col.filterDescriptor\"></mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"columnActionTemplate || columnActionComponent\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr [style.height.px]=\"descriptor.rowHeight\">\n <td *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"selectionEnabled && selectionMode === 'single'\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n <td *ngFor=\"let col of descriptor.columns\" (click)=\"onCellClick(col, item, idx)\" [class.clickable]=\"isColumnClickable\">\n <mng-table-column-value [descriptor]=\"col\" [item]=\"item\"></mng-table-column-value>\n </td>\n <td *ngIf=\"columnActionTemplate || columnActionComponent\" class=\"text-right\">\n <ng-container *ngIf=\"columnActionTemplate; else showColumnActionComponent\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n </ng-container>\n <ng-template #showColumnActionComponent>\n <span [mngComponent]=\"columnActionComponent!\" (instanceCreated)=\"onColumnActionCmpInst($event)\"></span>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"descriptor.rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (columnActionTemplate || columnActionComponent ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (columnActionTemplate || columnActionComponent ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n" }]
7077
+ args: [{ selector: 'mng-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [style.height]=\"scrollHeight === 'flex' ? 'calc(100vh - ' + tableFullHeightOffset + 'px)' : null\">\n <!-- MUST NOT use observable for value when using virtual scroll - does not work for some reason -->\n <p-table\n *ngIf=\"!useQueryParams || useQueryParamsInitialized\"\n [value]=\"infiniteScroll ? dataProviderInfiniteScrollItems : (queryResult$ | async)?.pageData ?? []\"\n [dataKey]=\"$any(descriptor.dataKeyProperty)\"\n [lazy]=\"useDataProvider\"\n [loading]=\"(loading$ | async) ?? false\"\n [paginator]=\"useDataProvider && !infiniteScroll\"\n [rows]=\"$any(infiniteScroll ? 20 : rows)\"\n [first]=\"$any(infiniteScroll ? 0 : offset)\"\n [totalRecords]=\"$any(infiniteScroll ? null : (queryResult$ | async)?.allDataCount ?? 0)\"\n [rowsPerPageOptions]=\"$any(infiniteScroll ? null : rowsPerPageOptions)\"\n [showCurrentPageReport]=\"!infiniteScroll\"\n [currentPageReportTemplate]=\"'mngTable.paginationMsg' | translate\"\n [multiSortMeta]=\"$any(multiSortMeta)\"\n [filters]=\"filterMetadata\"\n [(selection)]=\"selection\"\n (selectionChange)=\"onSelectionChange($event)\"\n [scrollable]=\"infiniteScroll\"\n [virtualScroll]=\"infiniteScroll\"\n [virtualRowHeight]=\"$any(rowHeight)\"\n [scrollHeight]=\"$any(scrollHeight)\"\n [selectionMode]=\"$any(selectionEnabled ? selectionMode : null)\"\n [rowHover]=\"descriptor.hasHover\"\n [styleClass]=\"className\"\n (onLazyLoad)=\"onTableLazyLoad($event)\"\n (onSort)=\"onTableSort($event)\"\n (onFilter)=\"onTableFilter($event)\"\n sortMode=\"multiple\"\n responsiveLayout=\"scroll\">\n <ng-template *ngIf=\"captionTemplate || captionComponent || descriptor.title\" pTemplate=\"caption\">\n <ng-container *ngIf=\"captionTemplate; else componentOrDefaultCaption\">\n <ng-container *ngTemplateOutlet=\"captionTemplate\"></ng-container>\n </ng-container>\n <ng-template #componentOrDefaultCaption>\n <div *ngIf=\"captionComponent; else defaultCaption\" [mngComponent]=\"captionComponent\" (instanceCreated)=\"onCaptionCmpInst($event)\"></div>\n <ng-template #defaultCaption>\n <h5 class=\"p-0 m-0\">{{ descriptor.title }}</h5>\n </ng-template>\n </ng-template>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr *ngIf=\"!descriptor.hideHeader\">\n <th *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableHeaderCheckbox></p-tableHeaderCheckbox>\n </th>\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <ng-container *ngFor=\"let col of descriptor.columns\">\n <th *ngIf=\"col.isSortEnabled\" [pSortableColumn]=\"col.property\" [class]=\"col.headerClassName\" [style.width.%]=\"col.width\" [style.min-width.px]=\"col.minWidth\">\n <div class=\"flex justify-content-between align-items-center\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <p-sortIcon [field]=\"col.property\"></p-sortIcon>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"!col.isSortEnabled\">\n {{ col.title ?? (col.property | i18nProperty: descriptor.model) | translate }}\n <ng-container>\n <mng-table-column-filter\n *ngIf=\"col.filterDescriptor && descriptor.filterDisplay === filterDisplayMenu\"\n class=\"ml-auto\"\n [display]=\"descriptor.filterDisplay\"\n [descriptor]=\"col.filterDescriptor\">\n </mng-table-column-filter>\n </ng-container>\n </th>\n </ng-container>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n <tr *ngIf=\"descriptor.filterDisplay === filterDisplayRow\" class=\"mng-column-filter-row\">\n <!-- We need the line below, because otherwise p-tableRadioButton shifts the rest of the columns in table -->\n <th *ngIf=\"selectionEnabled && selectionMode === 'single'\" style=\"min-width: 36px\"></th>\n <th\n *ngFor=\"let col of descriptor.columns\"\n [class]=\"(col.filterDescriptor ? 'mng-column-filter-' + col.filterDescriptor.filterType + ' ' : ' ') + col.filterDescriptor?.columnClassName\"\n [style.width.%]=\"col.filterDescriptor?.columnWidth ?? col.width\"\n [style.min-width.px]=\"col.filterDescriptor?.columnMinWidth ?? col.minWidth\">\n <div class=\"flex\" *ngIf=\"col.filterDescriptor\">\n <mng-table-column-filter [display]=\"descriptor.filterDisplay\" [descriptor]=\"col.filterDescriptor\"></mng-table-column-filter>\n </div>\n </th>\n <th *ngIf=\"showInlineActionsColumn\"></th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-item let-idx=\"rowIndex\">\n <tr [style.height.px]=\"rowHeight\">\n <td *ngIf=\"selectionEnabled && selectionMode === 'multiple'\">\n <p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\n </td>\n <td *ngIf=\"selectionEnabled && selectionMode === 'single'\">\n <p-tableRadioButton [value]=\"item\"></p-tableRadioButton>\n </td>\n <td\n *ngFor=\"let col of descriptor.columns\"\n (click)=\"onCellClick($event, col, item, idx)\"\n [class]=\"col.className\"\n [class.clickable]=\"isColumnClickable\"\n [style.width.%]=\"col.width\"\n [style.min-width.px]=\"col.minWidth\">\n <mng-table-column-value [descriptor]=\"col\" [item]=\"item\"></mng-table-column-value>\n </td>\n <td *ngIf=\"showInlineActionsColumn\" class=\"column-action text-right\" [style.min-width.px]=\"columnActionMinWidth\">\n <ng-container *ngIf=\"columnActionTemplate; else showColumnActionComponentOrDefault\">\n <ng-container *ngTemplateOutlet=\"columnActionTemplate; context: {rowItem: item, rowIndex: idx}\"></ng-container>\n </ng-container>\n <ng-template #showColumnActionComponentOrDefault>\n <span\n *ngIf=\"columnActionComponent; else defaultColumnActions\"\n [mngComponent]=\"columnActionComponent!\"\n (instanceCreated)=\"onColumnActionCmpInst($event)\"></span>\n </ng-template>\n <ng-template #defaultColumnActions>\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\"\n [actionData]=\"{itemIndex: idx}\">\n </mng-action>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"loadingbody\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n <div class=\"loading-text\"></div>\n <p-skeleton [ngStyle]=\"{width: '100%'}\"></p-skeleton>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"emptymessage\">\n <tr [style.height.px]=\"rowHeight\">\n <td [attr.colspan]=\"descriptor.columns.length + (showInlineActionsColumn ? 1 : 0) + (selectionEnabled ? 1 : 0)\">\n {{ 'mngTable.noItems' | translate }}\n </td>\n </tr>\n </ng-template>\n </p-table>\n</div>\n" }]
6708
7078
  }], ctorParameters: function () {
6709
- return [{ type: i0.Injector }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1$1.TranslateService }, { type: MngViewContainerComponentService, decorators: [{
7079
+ return [{ type: i0.Injector }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1$1.TranslateService }, { type: MngActionExecutorService }, { type: MngViewContainerComponentService, decorators: [{
6710
7080
  type: Optional
6711
7081
  }] }];
6712
7082
  }, propDecorators: { descriptor: [{
@@ -6725,6 +7095,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
6725
7095
  type: Input
6726
7096
  }], selectionEnabled: [{
6727
7097
  type: Input
7098
+ }], actions: [{
7099
+ type: Input
6728
7100
  }], isColumnClickable: [{
6729
7101
  type: Input
6730
7102
  }], viewContainerInit: [{
@@ -6734,6 +7106,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
6734
7106
  type: Input
6735
7107
  }], columnActionComponent: [{
6736
7108
  type: Input
7109
+ }], columnActionMinWidth: [{
7110
+ type: Input
6737
7111
  }], loadEventEmitter: [{
6738
7112
  type: Output,
6739
7113
  args: ['tableLoad']
@@ -6770,7 +7144,6 @@ class MngTableviewComponent {
6770
7144
  this.actionExecutor = actionExecutor;
6771
7145
  this.viewContainerService = viewContainerService;
6772
7146
  this.actions = [];
6773
- this.tableComponent = null;
6774
7147
  this.rowClickActions = [];
6775
7148
  this.rowInlineActions = [];
6776
7149
  this.toolbarLeftActions = [];
@@ -6817,19 +7190,12 @@ class MngTableviewComponent {
6817
7190
  var _a;
6818
7191
  (_a = this.tableComponent) === null || _a === void 0 ? void 0 : _a.reload();
6819
7192
  }
6820
- onTableCellClick(event) {
6821
- if (this.rowClickActions.length) {
6822
- for (const action of this.rowClickActions) {
6823
- this.actionExecutor.triggerRowClickAction(action, event, this.route, this.descriptor.table);
6824
- }
6825
- }
6826
- }
6827
7193
  }
6828
7194
  MngTableviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngTableviewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.MessageService }, { token: i1$1.TranslateService }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: MngActionExecutorService }, { token: MngViewContainerComponentService }], target: i0.ɵɵFactoryTarget.Component });
6829
- MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngTableviewComponent, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [MessageService, ConfirmationService, MngViewContainerComponentService], viewQueries: [{ propertyName: "tableComponent", first: true, predicate: MngTableComponent, descendants: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n (cellClick)=\"onTableCellClick($event)\"\n [isColumnClickable]=\"rowClickActions.length > 0\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\">\n </mng-action>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", components: [{ type: i6$2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { type: i4$3.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["trigger"] }, { type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i1$1.TranslatePipe } });
7195
+ MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngTableviewComponent, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [MessageService, ConfirmationService, MngViewContainerComponentService], viewQueries: [{ propertyName: "tableComponent", first: true, predicate: MngTableComponent, descendants: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table [descriptor]=\"descriptor.table\" [dataProvider]=\"dataProvider\" [useQueryParams]=\"true\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", components: [{ type: i6$2.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { type: i4$3.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["trigger"] }, { type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i1$1.TranslatePipe } });
6830
7196
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngTableviewComponent, decorators: [{
6831
7197
  type: Component,
6832
- args: [{ selector: 'mng-tableview', providers: [MessageService, ConfirmationService, MngViewContainerComponentService], template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n (cellClick)=\"onTableCellClick($event)\"\n [isColumnClickable]=\"rowClickActions.length > 0\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.model.idPropertyName ? item[descriptor.model.idPropertyName] : null\">\n </mng-action>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
7198
+ args: [{ selector: 'mng-tableview', providers: [MessageService, ConfirmationService, MngViewContainerComponentService], template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"> </mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table [descriptor]=\"descriptor.table\" [dataProvider]=\"dataProvider\" [useQueryParams]=\"true\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle | translate }}</h5>\n </div>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
6833
7199
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.MessageService }, { type: i1$1.TranslateService }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: MngActionExecutorService }, { type: MngViewContainerComponentService }]; }, propDecorators: { descriptor: [{
6834
7200
  type: Input
6835
7201
  }], dataProvider: [{
@@ -7081,7 +7447,7 @@ class MngFormlyFieldLookupDialogComponent extends FieldType {
7081
7447
  }
7082
7448
  }
7083
7449
  MngFormlyFieldLookupDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
7084
- MngFormlyFieldLookupDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldLookupDialogComponent, selector: "mng-formly-field-lookup-dialog", viewQueries: [{ propertyName: "mngTable", first: true, predicate: MngTableComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!to.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl?.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config?.table?.captionComponent\"\n [columnActionComponent]=\"config?.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", components: [{ type: i1$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { type: i3$2.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i4$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]" }, { type: i10.InputText, selector: "[pInputText]" }, { type: i3$1.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], pipes: { "translate": i1$1.TranslatePipe, "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7450
+ MngFormlyFieldLookupDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldLookupDialogComponent, selector: "mng-formly-field-lookup-dialog", viewQueries: [{ propertyName: "mngTable", first: true, predicate: MngTableComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!to.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl?.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config?.table?.captionComponent\"\n [columnActionComponent]=\"config?.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", components: [{ type: i1$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { type: i3$2.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i4$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]" }, { type: i10.InputText, selector: "[pInputText]" }, { type: i3$1.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], pipes: { "translate": i1$1.TranslatePipe, "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7085
7451
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, decorators: [{
7086
7452
  type: Component,
7087
7453
  args: [{ selector: 'mng-formly-field-lookup-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div [class]=\"'p-inputgroup mng-dropdown-dialog' + descriptor.inputClassName\" [class.p-inputtext-sm]=\"descriptor.isSizeSmall\" [class.p-inputtext-lg]=\"descriptor.isSizeLarge\">\n <input pInputText type=\"text\" [id]=\"$any(key)\" [readonly]=\"true\" [formlyAttributes]=\"field\" [formControl]=\"fieldLabelFormControl\" />\n <i class=\"mng-dropdown-clear-icon pi pi-times\" (click)=\"clear()\" *ngIf=\"!to.required && formControl?.value && !formControl?.disabled\"></i>\n <button\n pButton\n pRipple\n class=\"mng-dropdown-dialog-search-button\"\n type=\"button\"\n [label]=\"'general.search' | translate: {item: ''}\"\n [disabled]=\"formControl?.disabled\"\n (click)=\"openSelectDialog()\"></button>\n</div>\n\n<p-dialog\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.search' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-formly-field-lookup-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.dialogTableDescriptor!\"\n [dataProvider]=\"descriptor.dialogTableDataProvider\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [selectionMode]=\"'single'\"\n [loading]=\"dialogIsLoading$\"\n [captionComponent]=\"config?.table?.captionComponent\"\n [columnActionComponent]=\"config?.table?.columnActionComponent\"\n (selectionChange)=\"onSelectionChange($event)\"\n (captionComponentInstance)=\"onCaptionCmpInst($event)\"\n (columnActionComponentInstance)=\"onColumnActionCmpInst($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.select' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItem()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n" }]
@@ -7098,9 +7464,8 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
7098
7464
  this.actionExecutor = actionExecutor;
7099
7465
  this.itemsSubject = new ReplaySubject(1);
7100
7466
  this.items$ = this.itemsSubject.asObservable();
7467
+ this.actions = [];
7101
7468
  this.toolbarRightActions = [];
7102
- this.rowClickActions = [];
7103
- this.rowInlineActions = [];
7104
7469
  this.subscriptions = [];
7105
7470
  this.isDisabledSubject = new BehaviorSubject(false);
7106
7471
  this.isEnabled$ = this.isDisabledSubject.asObservable().pipe(distinctUntilChanged(), map(e => !e));
@@ -7118,7 +7483,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
7118
7483
  .withDialogClassName('mng-field-dialog mng-action-editor-dialog')
7119
7484
  .withDialogSize(DialogSizeEnum.Small);
7120
7485
  viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitDescriptor.TypeEnum.Cancel)]);
7121
- this.rowClickActions.push(viewAction);
7486
+ this.actions.push(viewAction);
7122
7487
  }
7123
7488
  if (hasAddAction) {
7124
7489
  const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)
@@ -7141,10 +7506,11 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
7141
7506
  })
7142
7507
  .withIsVisibleFunction(() => { var _a; return of(!((_a = this.options) === null || _a === void 0 ? void 0 : _a.formState.disabled)); })
7143
7508
  .withIsEnabledFunction(() => this.isEnabled$);
7144
- this.toolbarRightActions.push(addAction);
7509
+ this.actions.push(addAction);
7145
7510
  }
7146
7511
  if (hasEditAction) {
7147
7512
  const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)
7513
+ .withPosition(ActionPositionEnum.RowInline)
7148
7514
  .withTitle(null)
7149
7515
  .withIcon('pi pi-pencil')
7150
7516
  .withDialogClassName('mng-field-dialog mng-action-editor-dialog')
@@ -7163,49 +7529,48 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
7163
7529
  })
7164
7530
  .withIsVisibleFunction(() => { var _a; return of(!((_a = this.formControl) === null || _a === void 0 ? void 0 : _a.disabled)); })
7165
7531
  .withIsEnabledFunction(() => this.isEnabled$);
7166
- this.rowInlineActions.push(editAction);
7532
+ this.actions.push(editAction);
7167
7533
  }
7168
7534
  if (hasDeleteAction) {
7169
7535
  const deleteAction = new ActionDescriptor(this.descriptor.tableviewDescriptor.model, 'delete', this.descriptor.editor.model.type, this.descriptor.property)
7536
+ .withPosition(ActionPositionEnum.RowInline)
7170
7537
  .withLevel(ActionLevelEnum.Danger)
7171
7538
  .withTitle(null)
7172
7539
  .withIcon('pi pi-trash')
7173
7540
  .withSize(SizeEnum.ExtraSmall)
7174
7541
  .withRunFunction(ctx => {
7175
- var _a;
7542
+ var _a, _b;
7176
7543
  if (!((_a = ctx.data) === null || _a === void 0 ? void 0 : _a.item)) {
7177
- throw new Error(`No item was provided in context, delete cannot be done.`);
7544
+ return throwError(() => new Error(`No item was provided in context, delete cannot be done.`));
7178
7545
  }
7179
7546
  let formControlValue = this.formControl.value;
7180
7547
  const compareProperty = this.descriptor.tableDescriptor.dataKeyProperty
7181
7548
  ? this.descriptor.tableDescriptor.dataKeyProperty
7182
7549
  : this.descriptor.tableDescriptor.model.idPropertyName;
7183
- if (!compareProperty) {
7184
- throw new Error('Cannot compare items, please provide main table data key property or model id property.');
7185
- }
7186
7550
  const ctxItem = ctx.data.item;
7187
- if (!(ctxItem === null || ctxItem === void 0 ? void 0 : ctxItem[compareProperty])) {
7188
- return formControlValue;
7551
+ if (compareProperty && (ctxItem === null || ctxItem === void 0 ? void 0 : ctxItem[compareProperty])) {
7552
+ formControlValue = formControlValue.filter((i) => i[compareProperty] !== ctxItem[compareProperty]);
7553
+ this.formControl.patchValue(formControlValue);
7189
7554
  }
7190
- formControlValue = formControlValue.filter((i) => i[compareProperty] !== ctxItem[compareProperty]);
7191
- this.formControl.patchValue(formControlValue);
7192
- return of(ctx.data.item);
7555
+ else if (typeof ((_b = ctx.data.actionData) === null || _b === void 0 ? void 0 : _b['itemIndex']) === 'number') {
7556
+ formControlValue.splice(ctx.data.actionData['itemIndex'], 1);
7557
+ this.formControl.patchValue([...formControlValue]);
7558
+ }
7559
+ else {
7560
+ return throwError(() => new Error('Cannot compare items, please provide main table data key property or model id property.'));
7561
+ }
7562
+ return of(ctxItem);
7193
7563
  })
7194
7564
  .withIsVisibleFunction(() => { var _a; return of(!((_a = this.options) === null || _a === void 0 ? void 0 : _a.formState.disabled)); })
7195
7565
  .withIsEnabledFunction(() => this.isEnabled$);
7196
- this.rowInlineActions.push(deleteAction);
7566
+ this.actions.push(deleteAction);
7197
7567
  }
7198
- for (const action of this.descriptor.actions) {
7568
+ this.actions.push(...this.descriptor.actions);
7569
+ for (const action of this.actions) {
7199
7570
  switch (action.position) {
7200
7571
  case ActionPositionEnum.ToolbarRight:
7201
7572
  this.toolbarRightActions.push(action);
7202
7573
  break;
7203
- case ActionPositionEnum.RowInline:
7204
- this.rowInlineActions.push(action);
7205
- break;
7206
- case ActionPositionEnum.RowClick:
7207
- // this.footerRightActions.push(action);
7208
- break;
7209
7574
  }
7210
7575
  }
7211
7576
  // init values
@@ -7230,20 +7595,12 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
7230
7595
  ngOnDestroy() {
7231
7596
  this.subscriptions.forEach(s => s.unsubscribe());
7232
7597
  }
7233
- onTableCellClick(event) {
7234
- console.log(event);
7235
- if (this.rowClickActions.length) {
7236
- for (const action of this.rowClickActions) {
7237
- this.actionExecutor.triggerRowClickAction(action, event);
7238
- }
7239
- }
7240
- }
7241
7598
  }
7242
7599
  MngFormlyFieldTableDialogFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, deps: [{ token: MngActionExecutorService }], target: i0.ɵɵFactoryTarget.Component });
7243
- MngFormlyFieldTableDialogFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldTableDialogFormComponent, selector: "mng-formly-table-dialog-form-field", usesInheritance: true, ngImport: i0, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" (cellClick)=\"onTableCellClick($event)\" [isColumnClickable]=\"rowInlineActions.length > 0\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.tableviewDescriptor.model.idPropertyName ? item[descriptor.tableviewDescriptor.model.idPropertyName] : undefined\"\n [actionData]=\"{itemIndex: idx}\">\n </mng-action>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"], components: [{ type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["trigger"] }], directives: [{ type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7600
+ MngFormlyFieldTableDialogFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldTableDialogFormComponent, selector: "mng-formly-table-dialog-form-field", usesInheritance: true, ngImport: i0, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"], components: [{ type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["trigger"] }], directives: [{ type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7244
7601
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, decorators: [{
7245
7602
  type: Component,
7246
- args: [{ selector: 'mng-formly-table-dialog-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" (cellClick)=\"onTableCellClick($event)\" [isColumnClickable]=\"rowInlineActions.length > 0\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\" let-idx=\"rowIndex\">\n <mng-action\n *ngFor=\"let action of rowInlineActions\"\n [action]=\"action\"\n [item]=\"item\"\n [itemId]=\"descriptor.tableviewDescriptor.model.idPropertyName ? item[descriptor.tableviewDescriptor.model.idPropertyName] : undefined\"\n [actionData]=\"{itemIndex: idx}\">\n </mng-action>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"] }]
7603
+ args: [{ selector: 'mng-formly-table-dialog-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"] }]
7247
7604
  }], ctorParameters: function () { return [{ type: MngActionExecutorService }]; } });
7248
7605
 
7249
7606
  class MngFormlyFieldTableDialogMultiselectComponent extends FieldType {
@@ -7354,7 +7711,7 @@ class MngFormlyFieldTableDialogMultiselectComponent extends FieldType {
7354
7711
  }
7355
7712
  }
7356
7713
  MngFormlyFieldTableDialogMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldTableDialogMultiselectComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
7357
- MngFormlyFieldTableDialogMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldTableDialogMultiselectComponent, selector: "mng-formly-table-multiselect-add-field", usesInheritance: true, ngImport: i0, template: "<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"itemsAsync\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <button\n *ngIf=\"hasAddAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded p-button-success mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <button\n *ngIf=\"hasDeleteAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n </ng-template>\n</mng-table>\n\n<p-dialog\n *ngIf=\"hasAddAction\"\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-field-dialog mng-action-editor-dialog mng-action-editor-dialog-sm\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.mainTableDescriptor\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", components: [{ type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { type: i1$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: i3$2.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], pipes: { "translate": i1$1.TranslatePipe, "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7714
+ MngFormlyFieldTableDialogMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: MngFormlyFieldTableDialogMultiselectComponent, selector: "mng-formly-table-multiselect-add-field", usesInheritance: true, ngImport: i0, template: "<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"itemsAsync\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <button\n *ngIf=\"hasAddAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded p-button-success mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <button\n *ngIf=\"hasDeleteAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n </ng-template>\n</mng-table>\n\n<p-dialog\n *ngIf=\"hasAddAction\"\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-field-dialog mng-action-editor-dialog mng-action-editor-dialog-sm\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.mainTableDescriptor\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n", components: [{ type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { type: i1$3.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { type: i3$2.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], pipes: { "translate": i1$1.TranslatePipe, "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7358
7715
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngFormlyFieldTableDialogMultiselectComponent, decorators: [{
7359
7716
  type: Component,
7360
7717
  args: [{ selector: 'mng-formly-table-multiselect-add-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table [descriptor]=\"descriptor.mainTableDescriptor\" [items]=\"itemsAsync\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header pt-0\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <button\n *ngIf=\"hasAddAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-plus\"\n class=\"p-button-rounded p-button-success mng-button-xs\"\n (click)=\"openAddDialog()\"\n [disabled]=\"formControl!.disabled\"></button>\n </div>\n </ng-template>\n <ng-template mngTemplate=\"columnAction\" let-item=\"rowItem\">\n <button\n *ngIf=\"hasDeleteAction && !options?.formState?.disabled\"\n pButton\n pRipple\n type=\"button\"\n icon=\"pi pi-trash\"\n class=\"p-button-rounded p-button-danger mng-button-xs\"\n (click)=\"removeItem(item)\"\n [disabled]=\"formControl!.disabled\"></button>\n </ng-template>\n</mng-table>\n\n<p-dialog\n *ngIf=\"hasAddAction\"\n [(visible)]=\"isDialogVisible\"\n [draggable]=\"false\"\n [header]=\"'general.addItem' | translate: {item: to?.label!}\"\n [modal]=\"true\"\n appendTo=\"body\"\n styleClass=\"p-fluid mng-field-dialog mng-action-editor-dialog mng-action-editor-dialog-sm\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.mainTableDescriptor\"\n [queryResult]=\"addItemsAsync\"\n [selectionEnabled]=\"true\"\n [loading]=\"dialogIsLoading$\"\n (selectionChange)=\"onSelectionChange($event)\">\n </mng-table>\n <p-messages [value]=\"dialogMessages\"></p-messages>\n </ng-template>\n\n <ng-template pTemplate=\"footer\">\n <button pButton pRipple type=\"button\" [label]=\"'general.cancel' | translate\" icon=\"pi pi-times\" class=\"p-button-text\" (click)=\"hideDialog()\"></button>\n <button\n pButton\n pRipple\n type=\"button\"\n [label]=\"'general.add' | translate\"\n icon=\"pi pi-check\"\n class=\"p-button-text\"\n (click)=\"addItems()\"\n [loading]=\"(dialogIsLoading$ | async) ?? false\"\n [disabled]=\"form.disabled\"></button>\n </ng-template>\n</p-dialog>\n" }]
@@ -8153,8 +8510,8 @@ function getEmailValidationMessage(translate) {
8153
8510
  const getFormlyValidationMessages = (translate) => {
8154
8511
  return [
8155
8512
  { name: 'required', message: getRequiredValidationMessage(translate) },
8156
- { name: 'minlength', message: getMinLengthValidationMessage(translate) },
8157
- { name: 'maxlength', message: getMaxLengthValidationMessage(translate) },
8513
+ { name: 'minLength', message: getMinLengthValidationMessage(translate) },
8514
+ { name: 'maxLength', message: getMaxLengthValidationMessage(translate) },
8158
8515
  { name: 'pattern', message: getTextPatternValidationMessage(translate) },
8159
8516
  { name: 'email', message: getEmailValidationMessage(translate) }
8160
8517
  ];
@@ -8684,7 +9041,7 @@ class AMngCrudApiService extends AMngGetAllApiService {
8684
9041
  body: item ? this.serialize(item) : undefined,
8685
9042
  params: params
8686
9043
  })
8687
- .pipe(map(res => this.deserialize(res)));
9044
+ .pipe(map(res => (res ? this.deserialize(res) : null)));
8688
9045
  }
8689
9046
  getCreatePostPath(item) {
8690
9047
  return '';
@@ -9164,5 +9521,5 @@ class RouteDataBuilder {
9164
9521
  * Generated bundle index. Do not edit.
9165
9522
  */
9166
9523
 
9167
- export { ACTION_EDITOR_DIALOG_COMPONENT_SETTING, AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngBaseApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, ActionActivationResult, ActionActivationTriggerEnum, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionError, ActionExecContext, ActionLevelEnum, ActionLinkDescriptor, ActionPositionEnum, ActionRunResult, ActionSimpleDescriptor, ActionTriggerResult, ActionTypeEnum, ColumnDescriptor, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, FieldValidationDescriptor, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, I18nUtils, JsonPathPipe, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_BROWSER_STORAGE_IT, MNG_COMMONS_INITIALIZER_IT, MNG_DROPDOWN_VALUE_ACCESSOR, MNG_MODULE_CONFIG_IT, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLabelComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngI18nPropertyPipe, MngLinkFormatterPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngTableCellClickEvent, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableLoadEvent, MngTableReloadEvent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTopbarComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, NotificationUtil, ObjectSerializer, RouteBuilder, RouteDataBuilder, RoutesBuilder, TableDataProvider, TableDescriptor, TableviewDataProvider, TableviewDescriptor, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
9524
+ export { ACTION_EDITOR_DIALOG_COMPONENT_SETTING, AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngBaseApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, ActionActivationResult, ActionActivationTriggerEnum, ActionDataProviderUtil, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionError, ActionExecContext, ActionLevelEnum, ActionLinkDescriptor, ActionPositionEnum, ActionRunResult, ActionSimpleDescriptor, ActionTriggerResult, ActionTypeEnum, ColumnDescriptor, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, FieldValidationDescriptor, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, I18nUtils, JsonPathPipe, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_BROWSER_STORAGE_IT, MNG_COMMONS_INITIALIZER_IT, MNG_DROPDOWN_VALUE_ACCESSOR, MNG_MODULE_CONFIG_IT, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLabelComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngI18nPropertyPipe, MngLinkFormatterPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngTableCellClickEvent, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableLoadEvent, MngTableReloadEvent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTopbarComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, NotificationUtil, ObjectSerializer, RouteBuilder, RouteDataBuilder, RoutesBuilder, TableDataProvider, TableDescriptor, TableviewDataProvider, TableviewDescriptor, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
9168
9525
  //# sourceMappingURL=mediusinc-mng-commons.mjs.map