@mediusinc/mng-commons 0.3.2 → 0.4.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 (76) hide show
  1. package/assets/i18n/en.json +1 -1
  2. package/assets/i18n/sl.json +1 -1
  3. package/esm2020/lib/api/models/builders/query-param.builder.mjs +7 -2
  4. package/esm2020/lib/api/services/api.abstract.service.mjs +21 -10
  5. package/esm2020/lib/api/utils/object-serializer.util.mjs +7 -1
  6. package/esm2020/lib/components/action/action.component.mjs +3 -3
  7. package/esm2020/lib/components/action/editor/action-editor.component.mjs +3 -3
  8. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +186 -32
  9. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +1 -1
  10. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
  11. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +8 -8
  12. package/esm2020/lib/components/layout/main-layout.component.mjs +1 -1
  13. package/esm2020/lib/components/layout/topbar.component.mjs +1 -1
  14. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +17 -5
  15. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +9 -23
  16. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +21 -7
  17. package/esm2020/lib/components/tableview/table/table.component.mjs +3 -3
  18. package/esm2020/lib/components/tableview/tableview.component.mjs +3 -3
  19. package/esm2020/lib/descriptors/column.descriptor.mjs +197 -0
  20. package/esm2020/lib/descriptors/editor.descriptor.mjs +3 -734
  21. package/esm2020/lib/descriptors/field.descriptor.interface.mjs +2 -0
  22. package/esm2020/lib/descriptors/field.descriptor.mjs +755 -0
  23. package/esm2020/lib/descriptors/filter.descriptor.mjs +237 -0
  24. package/esm2020/lib/descriptors/index.mjs +5 -1
  25. package/esm2020/lib/descriptors/table.descriptor.mjs +4 -385
  26. package/esm2020/lib/descriptors/tableview.descriptor.mjs +3 -3
  27. package/esm2020/lib/directives/component.directive.mjs +18 -2
  28. package/esm2020/lib/mng-commons.module.mjs +5 -5
  29. package/esm2020/lib/models/column-value.model.mjs +2 -0
  30. package/esm2020/lib/models/index.mjs +2 -1
  31. package/esm2020/lib/pipes/index.mjs +2 -2
  32. package/esm2020/lib/pipes/json-path.pipe.mjs +80 -0
  33. package/esm2020/lib/pipes/link-formatter.pipe.mjs +1 -1
  34. package/esm2020/lib/services/action-executor.service.mjs +1 -1
  35. package/esm2020/lib/utils/model.util.mjs +16 -15
  36. package/esm2020/public-api.mjs +2 -1
  37. package/fesm2015/mediusinc-mng-commons.mjs +1671 -1348
  38. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  39. package/fesm2020/mediusinc-mng-commons.mjs +1648 -1329
  40. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  41. package/lib/api/models/builders/query-param.builder.d.ts +2 -1
  42. package/lib/api/services/api.abstract.service.d.ts +10 -5
  43. package/lib/api/utils/object-serializer.util.d.ts +4 -2
  44. package/lib/components/form/autocomplete/autocomplete.component.d.ts +20 -5
  45. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +1 -2
  46. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +5 -1
  47. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +1 -0
  48. package/lib/components/tableview/table/column-value/column-value.component.d.ts +5 -1
  49. package/lib/descriptors/column.descriptor.d.ts +66 -0
  50. package/lib/descriptors/editor.descriptor.d.ts +1 -292
  51. package/lib/descriptors/field.descriptor.d.ts +301 -0
  52. package/lib/descriptors/{editor.descriptor.interface.d.ts → field.descriptor.interface.d.ts} +0 -0
  53. package/lib/descriptors/filter.descriptor.d.ts +108 -0
  54. package/lib/descriptors/index.d.ts +4 -0
  55. package/lib/descriptors/table.descriptor.d.ts +5 -159
  56. package/lib/descriptors/tableview.descriptor.d.ts +4 -2
  57. package/lib/directives/component.directive.d.ts +5 -1
  58. package/lib/mng-commons.module.d.ts +2 -2
  59. package/lib/models/column-value.model.d.ts +4 -0
  60. package/lib/models/index.d.ts +1 -0
  61. package/lib/pipes/index.d.ts +1 -1
  62. package/lib/pipes/json-path.pipe.d.ts +13 -0
  63. package/lib/pipes/link-formatter.pipe.d.ts +1 -1
  64. package/lib/services/action-executor.service.d.ts +1 -1
  65. package/lib/utils/model.util.d.ts +1 -0
  66. package/package.json +1 -1
  67. package/public-api.d.ts +1 -0
  68. package/scss/mng-overrides/_layout_action.scss +7 -0
  69. package/scss/mng-overrides/_layout_dialog.scss +17 -6
  70. package/scss/mng-overrides/_mixins.scss +60 -0
  71. package/scss/theme/default/_mng-variables-theme-dark.scss +2 -3
  72. package/scss/theme/default/_mng-variables-theme-light.scss +2 -3
  73. package/scss/theme/default/_mng-variables.scss +12 -0
  74. package/esm2020/lib/descriptors/editor.descriptor.interface.mjs +0 -2
  75. package/esm2020/lib/pipes/property-path.pipe.mjs +0 -36
  76. package/lib/pipes/property-path.pipe.d.ts +0 -7
@@ -3,17 +3,17 @@ import { CommonModule } from '@angular/common';
3
3
  import { HttpErrorResponse, HttpClient, HttpClientModule } from '@angular/common/http';
4
4
  import * as i0 from '@angular/core';
5
5
  import { InjectionToken, Injectable, Pipe, Inject, EventEmitter, Component, ChangeDetectionStrategy, Optional, HostBinding, Input, Output, Directive, ContentChildren, ViewChild, forwardRef, ViewChildren, HostListener, APP_INITIALIZER, NgModule } from '@angular/core';
6
- import * as i2$1 from '@angular/forms';
6
+ import * as i4$2 from '@angular/forms';
7
7
  import { Validators, FormGroup, FormArray, NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule } from '@angular/forms';
8
8
  import * as i1 from '@angular/router';
9
9
  import { NavigationEnd, GuardsCheckEnd, RouterModule } from '@angular/router';
10
- import * as i3$2 from '@ngx-formly/core';
10
+ import * as i3$1 from '@ngx-formly/core';
11
11
  import { FieldType, FieldWrapper, FORMLY_CONFIG, FormlyModule } from '@ngx-formly/core';
12
- import * as i3$1 from '@ngx-translate/core';
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
15
  import { ConfirmationService, MessageService, FilterMatchMode } from 'primeng/api';
16
- import * as i1$1 from 'primeng/autocomplete';
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';
19
19
  import { BreadcrumbModule } from 'primeng/breadcrumb';
@@ -46,21 +46,21 @@ import * as i10 from 'primeng/inputtext';
46
46
  import { InputTextModule } from 'primeng/inputtext';
47
47
  import * as i9$1 from 'primeng/inputtextarea';
48
48
  import { InputTextareaModule } from 'primeng/inputtextarea';
49
- import * as i3$3 from 'primeng/messages';
49
+ import * as i3$2 from 'primeng/messages';
50
50
  import { MessagesModule } from 'primeng/messages';
51
- import * as i3$4 from 'primeng/multiselect';
51
+ import * as i3$3 from 'primeng/multiselect';
52
52
  import { MultiSelectModule } from 'primeng/multiselect';
53
53
  import { PaginatorModule } from 'primeng/paginator';
54
54
  import * as i6 from 'primeng/progressspinner';
55
55
  import { ProgressSpinnerModule } from 'primeng/progressspinner';
56
- import * as i4$3 from 'primeng/radiobutton';
56
+ import * as i4$4 from 'primeng/radiobutton';
57
57
  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
61
  import * as i7$1 from 'primeng/skeleton';
62
62
  import { SkeletonModule } from 'primeng/skeleton';
63
- import * as i4$4 from 'primeng/table';
63
+ import * as i4$5 from 'primeng/table';
64
64
  import { Table, TableModule } from 'primeng/table';
65
65
  import * as i1$4 from 'primeng/tabview';
66
66
  import { TabViewModule } from 'primeng/tabview';
@@ -68,7 +68,7 @@ import { TagModule } from 'primeng/tag';
68
68
  import * as i6$2 from 'primeng/toast';
69
69
  import { ToastModule } from 'primeng/toast';
70
70
  import { ToggleButtonModule } from 'primeng/togglebutton';
71
- import * as i4$2 from 'primeng/toolbar';
71
+ 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';
@@ -314,6 +314,7 @@ class MediusQueryParamBuilder {
314
314
  const queryParam = new MediusQueryParam();
315
315
  queryParam.itemsPerPage = itemsPerPage;
316
316
  queryParam.itemsOffset = itemsOffset;
317
+ queryParam.queryMode = MediusQueryMode.All;
317
318
  return new MediusQueryParamBuilder(queryParam);
318
319
  }
319
320
  withItemsPerPage(itemsPerPage) {
@@ -324,6 +325,10 @@ class MediusQueryParamBuilder {
324
325
  this.queryParam.itemsOffset = itemsOffset;
325
326
  return this;
326
327
  }
328
+ withQueryMode(queryMode) {
329
+ this.queryParam.queryMode = queryMode;
330
+ return this;
331
+ }
327
332
  withSort(property, asc = true) {
328
333
  if (!this.queryParam.sortProperty || !this.queryParam.sortAsc) {
329
334
  this.queryParam.sortProperty = [];
@@ -960,1517 +965,1591 @@ var ActionLevelEnum;
960
965
  ActionLevelEnum[ActionLevelEnum["Danger"] = 7] = "Danger";
961
966
  })(ActionLevelEnum || (ActionLevelEnum = {}));
962
967
 
963
- class MngFormEditorSubmitEvent {
964
- constructor(formItem) {
965
- this.formItem = formItem;
966
- this.success = true;
967
- }
968
- }
969
- var MngFormFieldEventTypeEnum;
970
- (function (MngFormFieldEventTypeEnum) {
971
- MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["Component"] = 0] = "Component";
972
- MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["ValueChange"] = 1] = "ValueChange";
973
- MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["DataProvider"] = 2] = "DataProvider";
974
- MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["Dialog"] = 3] = "Dialog";
975
- MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["Other"] = 4] = "Other";
976
- })(MngFormFieldEventTypeEnum || (MngFormFieldEventTypeEnum = {}));
977
- class MngFormFieldEventComponentSubtype {
978
- }
979
- MngFormFieldEventComponentSubtype.ON_INIT = 'Component.OnInit';
980
- MngFormFieldEventComponentSubtype.ON_VIEW_INIT = 'Component.OnViewInit';
981
- MngFormFieldEventComponentSubtype.ON_CONTENT_INIT = 'Component.OnContentInit';
982
- MngFormFieldEventComponentSubtype.ON_DESTROY = 'Component.OnDestroy';
983
- class MngFormFieldEventDialogSubtype {
984
- }
985
- MngFormFieldEventDialogSubtype.VISIBILITY = 'Dialog.Visibility';
986
- MngFormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';
987
- MngFormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';
988
- class MngFormFieldEvent {
989
- constructor(type, componentType, componentInstance, data = {}) {
990
- this.type = type;
991
- this.componentType = componentType;
992
- this.componentInstance = componentInstance;
993
- this.data = data;
968
+ class FilterDescriptor {
969
+ constructor(property) {
970
+ this._filterType = FilterDescriptor.TypeEnum.String;
971
+ this._matchModes = null;
972
+ this._className = '';
973
+ this._property = property;
994
974
  }
995
- }
996
-
997
- class EditorDescriptor {
998
- constructor(modelType, idProperty, titleProperty, tableviewEditorType = EditorDescriptor.TableviewEditorTypeEnum.None) {
999
- this._tabs = [];
1000
- this._groups = [];
1001
- this._fields = [];
1002
- this._disabled = false;
1003
- this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
1004
- this._tableviewEditorType = tableviewEditorType;
975
+ get filterType() {
976
+ return this._filterType;
1005
977
  }
1006
- get model() {
1007
- return this._model;
978
+ get filterProperty() {
979
+ return this._filterProperty;
1008
980
  }
1009
- get tabs() {
1010
- return this._tabs;
981
+ get matchModes() {
982
+ return this._matchModes;
1011
983
  }
1012
- get fields() {
1013
- return this._fields;
984
+ get placeholder() {
985
+ return this._placeholder;
1014
986
  }
1015
- get tableviewEditorType() {
1016
- return this._disabled;
987
+ get className() {
988
+ return this._className;
1017
989
  }
1018
- get disabled() {
1019
- return this._disabled;
990
+ get property() {
991
+ return this._property;
1020
992
  }
1021
- createTabGroup(name, title) {
1022
- const tabGroup = new FieldTabGroupDescriptor(this, name);
1023
- if (!title) {
1024
- title = I18nUtil.getModelTabKey(this.model, name);
1025
- }
1026
- tabGroup.withTitle(title);
1027
- this.createTabGroupDescriptor(tabGroup);
1028
- return tabGroup;
993
+ asFilterType(filterType) {
994
+ this._filterType = filterType;
995
+ return this;
1029
996
  }
1030
- createFieldGroup(name, title) {
1031
- const fieldGroup = new FieldGroupDescriptor(this, name);
1032
- if (title !== null) {
1033
- if (!title) {
1034
- title = I18nUtil.getModelGroupKey(this.model, name);
1035
- }
1036
- fieldGroup.withTitle(title);
1037
- }
1038
- this.createFieldGroupDescriptor(fieldGroup);
1039
- return fieldGroup;
997
+ /**
998
+ * Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.
999
+ * @param filterProperty
1000
+ */
1001
+ withFilterProperty(filterProperty) {
1002
+ this._filterProperty = filterProperty;
1003
+ return this;
1040
1004
  }
1041
- addFieldDescriptor(field) {
1042
- var _a;
1043
- this.createDefaultGroup();
1044
- this._fields.push(field);
1045
- (_a = this._currentGroup) === null || _a === void 0 ? void 0 : _a.addField(field);
1005
+ withPlaceholder(placeholder) {
1006
+ this._placeholder = placeholder;
1046
1007
  return this;
1047
1008
  }
1048
- addField(property) {
1049
- const field = new FieldInputDescriptor(this, property);
1050
- this.addFieldDescriptor(field);
1051
- return field;
1009
+ withClassName(className) {
1010
+ this._className = className;
1011
+ return this;
1052
1012
  }
1053
- removeField(property) {
1054
- const fieldIdx = this._fields.findIndex(f => f.property === property);
1055
- if (fieldIdx < 0) {
1056
- throw new Error(`Field ${property} does not exist.`);
1057
- }
1058
- const field = this._fields[fieldIdx];
1059
- if (field.group) {
1060
- const groupFieldIdx = field.group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);
1061
- if (groupFieldIdx >= 0) {
1062
- field.group.fields.splice(groupFieldIdx, 1);
1063
- }
1064
- }
1065
- this._fields.splice(fieldIdx, 1);
1013
+ withMatchModes(matchModes) {
1014
+ this._matchModes = matchModes;
1066
1015
  return this;
1067
1016
  }
1068
- getField(property) {
1069
- var _a;
1070
- return (_a = this._fields.find(f => f.property === property)) !== null && _a !== void 0 ? _a : null;
1017
+ copy() {
1018
+ const descriptor = new FilterDescriptor(this._property);
1019
+ this.copyFieldsTo(descriptor);
1020
+ return descriptor;
1071
1021
  }
1072
- addFieldLookup(property, modelType) {
1073
- const field = new FieldLookupDescriptor(this, property, modelType);
1074
- this.addFieldDescriptor(field);
1075
- return field;
1022
+ copyFieldsTo(descriptor) {
1023
+ descriptor._filterType = this._filterType;
1024
+ descriptor._filterProperty = this._filterProperty;
1025
+ descriptor._placeholder = this._placeholder;
1026
+ descriptor._className = this._className;
1076
1027
  }
1077
- addFieldLookupEnum(property, enumType, options, nameAsValue = false, optionsTitlePath) {
1078
- const field = new FieldLookupEnumDescriptor(this, property, enumType, options, nameAsValue, optionsTitlePath);
1079
- this.addFieldDescriptor(field);
1080
- return field;
1028
+ }
1029
+ (function (FilterDescriptor) {
1030
+ let TypeEnum;
1031
+ (function (TypeEnum) {
1032
+ TypeEnum[TypeEnum["String"] = 0] = "String";
1033
+ TypeEnum[TypeEnum["Number"] = 1] = "Number";
1034
+ TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
1035
+ TypeEnum[TypeEnum["Date"] = 3] = "Date";
1036
+ TypeEnum[TypeEnum["Lookup"] = 4] = "Lookup";
1037
+ TypeEnum[TypeEnum["LookupEnum"] = 5] = "LookupEnum";
1038
+ })(TypeEnum = FilterDescriptor.TypeEnum || (FilterDescriptor.TypeEnum = {}));
1039
+ let MatchModeEnum;
1040
+ (function (MatchModeEnum) {
1041
+ MatchModeEnum["StartsWith"] = "startsWith";
1042
+ MatchModeEnum["Contains"] = "contains";
1043
+ MatchModeEnum["EndsWith"] = "endsWith";
1044
+ MatchModeEnum["Equals"] = "equals";
1045
+ MatchModeEnum["NotEquals"] = "notEquals";
1046
+ MatchModeEnum["In"] = "in";
1047
+ MatchModeEnum["LessThan"] = "lt";
1048
+ MatchModeEnum["LessThanOrEqualTo"] = "lte";
1049
+ MatchModeEnum["GreaterThan"] = "gt";
1050
+ MatchModeEnum["GreaterThanOrEqualTo"] = "gte";
1051
+ MatchModeEnum["Between"] = "between";
1052
+ MatchModeEnum["DateIs"] = "dateIs";
1053
+ MatchModeEnum["DateIsNot"] = "dateIsNot";
1054
+ MatchModeEnum["DateBefore"] = "dateBefore";
1055
+ MatchModeEnum["DateAfter"] = "dateAfter";
1056
+ })(MatchModeEnum = FilterDescriptor.MatchModeEnum || (FilterDescriptor.MatchModeEnum = {}));
1057
+ })(FilterDescriptor || (FilterDescriptor = {}));
1058
+ class FilterLookupDescriptor extends FilterDescriptor {
1059
+ constructor(property, modelType) {
1060
+ super(property);
1061
+ this._modelType = null;
1062
+ this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Dropdown;
1063
+ this._itemsLabelTranslate = false;
1064
+ this._multiselect = false;
1065
+ this._dropdownClassName = 'mng-filter-lookup-dropdown';
1066
+ this._autocompleteOpenOnFocus = false;
1067
+ this._autocompleteInlineSearch = false;
1068
+ this._modelType = modelType;
1069
+ this._filterType = FilterDescriptor.TypeEnum.Lookup;
1070
+ ModelUtil.trySetLookupItemsProperties(this);
1081
1071
  }
1082
- addFieldManyEditor(property, tableviewDescriptor) {
1083
- const field = new FieldManyEditorDescriptor(this, property, tableviewDescriptor);
1084
- this.addFieldDescriptor(field);
1085
- return field;
1072
+ get lookupType() {
1073
+ return this._lookupType;
1086
1074
  }
1087
- addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor) {
1088
- const field = new FieldManyToManyEditorDescriptor(this, property, mainTableDescriptor, lookupTableDescriptor);
1089
- this.addFieldDescriptor(field);
1090
- return field;
1075
+ get dataProvider() {
1076
+ return this._dataProvider;
1091
1077
  }
1092
- withDisabled(disabled = true) {
1093
- this._disabled = disabled;
1094
- return this;
1078
+ get itemsLabelProperty() {
1079
+ return this._itemsLabelProperty;
1095
1080
  }
1096
- addValidator(name, expression) {
1097
- if (this._currentGroup) {
1098
- this._currentGroup.withValidator(name, expression);
1099
- }
1081
+ get itemsLabelTranslate() {
1082
+ return this._itemsLabelTranslate;
1100
1083
  }
1101
- copy() {
1102
- const editor = new EditorDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
1103
- for (const tabGroup of this._tabs) {
1104
- editor.createTabGroupDescriptor(tabGroup.copy());
1105
- }
1106
- for (const tabGroup of editor._tabs) {
1107
- for (const fieldGroup of tabGroup.fields) {
1108
- editor._fields.push(...fieldGroup.fields);
1109
- }
1110
- editor._groups.push(...tabGroup.fields);
1111
- }
1112
- editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];
1113
- editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];
1114
- editor._disabled = this._disabled;
1115
- return editor;
1084
+ get itemsValueProperty() {
1085
+ return this._itemsValueProperty;
1116
1086
  }
1117
- createFieldGroupDescriptor(fieldGroup) {
1118
- var _a;
1119
- this.createDefaultTabGroup();
1120
- this._currentGroup = fieldGroup;
1121
- this._groups.push(fieldGroup);
1122
- (_a = this._currentTabGroup) === null || _a === void 0 ? void 0 : _a.addField(fieldGroup);
1123
- return this;
1087
+ get dataKeyProperty() {
1088
+ return this._dataKeyProperty;
1124
1089
  }
1125
- createTabGroupDescriptor(tabGroup) {
1126
- this._currentTabGroup = tabGroup;
1127
- this._tabs.push(tabGroup);
1128
- return this;
1090
+ get multiselect() {
1091
+ return this._multiselect;
1129
1092
  }
1130
- createDefaultGroup() {
1131
- var _a;
1132
- this.createDefaultTabGroup();
1133
- if (((_a = this._currentTabGroup) === null || _a === void 0 ? void 0 : _a.fields.length) === 0) {
1134
- this.createFieldGroup(EditorDescriptor.defaultGroupName, null);
1135
- }
1093
+ get autocompleteOpenOnFocus() {
1094
+ return this._autocompleteOpenOnFocus;
1136
1095
  }
1137
- createDefaultTabGroup() {
1138
- if (this._tabs.length === 0) {
1139
- this.createTabGroup(EditorDescriptor.defaultGroupName, 'general.general');
1140
- }
1096
+ get autocompleteInlineSearch() {
1097
+ return this._autocompleteInlineSearch;
1141
1098
  }
1142
- }
1143
- EditorDescriptor.defaultGroupName = '_default';
1144
- (function (EditorDescriptor) {
1145
- let TableviewEditorTypeEnum;
1146
- (function (TableviewEditorTypeEnum) {
1147
- TableviewEditorTypeEnum[TableviewEditorTypeEnum["None"] = 0] = "None";
1148
- TableviewEditorTypeEnum[TableviewEditorTypeEnum["View"] = 1] = "View";
1149
- TableviewEditorTypeEnum[TableviewEditorTypeEnum["Edit"] = 2] = "Edit";
1150
- TableviewEditorTypeEnum[TableviewEditorTypeEnum["Add"] = 3] = "Add";
1151
- })(TableviewEditorTypeEnum = EditorDescriptor.TableviewEditorTypeEnum || (EditorDescriptor.TableviewEditorTypeEnum = {}));
1152
- })(EditorDescriptor || (EditorDescriptor = {}));
1153
- class AGenericFieldDescriptor {
1154
- constructor(editor) {
1155
- this._config = {};
1156
- this._editor = editor;
1099
+ get dropdownClassName() {
1100
+ return this._dropdownClassName;
1157
1101
  }
1158
- get editor() {
1159
- return this._editor;
1102
+ get modelType() {
1103
+ return this._modelType;
1160
1104
  }
1161
- get config() {
1162
- return this._config;
1105
+ withItemsLabelProperty(itemsLabelProperty, translate = false) {
1106
+ this._itemsLabelProperty = itemsLabelProperty;
1107
+ this._itemsLabelTranslate = translate;
1108
+ return this;
1163
1109
  }
1164
- withConfig(config) {
1165
- this._config = config;
1110
+ withItemsValueProperty(itemsValueProperty) {
1111
+ this._itemsValueProperty = itemsValueProperty;
1112
+ this._dataKeyProperty = itemsValueProperty;
1166
1113
  return this;
1167
1114
  }
1168
- }
1169
- class AFieldDescriptor extends AGenericFieldDescriptor {
1170
- constructor(editor, property) {
1171
- super(editor);
1172
- this._required = false;
1173
- this._disabled = false;
1174
- this._validators = [];
1175
- this._className = '';
1176
- this._labelClassName = '';
1177
- this._inputClassName = '';
1178
- this._size = FieldDescriptor.SizeEnum.Normal;
1179
- this._eventsSubject = new Subject();
1180
- this._property = property;
1181
- this._label = I18nUtil.getModelPropertyKey(this._editor.model, property);
1115
+ withDataKeyProperty(dataKeyProperty) {
1116
+ this._dataKeyProperty = dataKeyProperty;
1117
+ this._itemsValueProperty = dataKeyProperty;
1118
+ return this;
1182
1119
  }
1183
- get property() {
1184
- return this._property;
1120
+ withLookup(lookup, serviceType) {
1121
+ const dataProvider = new LookupDataProvider(this._modelType);
1122
+ if (serviceType) {
1123
+ dataProvider.withServiceType(serviceType);
1124
+ }
1125
+ dataProvider.withLookup(lookup);
1126
+ this._dataProvider = dataProvider;
1127
+ return this;
1185
1128
  }
1186
- get group() {
1187
- return this._group;
1129
+ withLookupDataProvider(dataProvider) {
1130
+ this._dataProvider = dataProvider;
1131
+ return this;
1188
1132
  }
1189
- get label() {
1190
- return this._label;
1133
+ withMultiselect(multiselect = true) {
1134
+ this._multiselect = multiselect;
1135
+ return this;
1191
1136
  }
1192
- get placeholder() {
1193
- return this._placeholder;
1137
+ withDropdownClassName(dropdownClassName) {
1138
+ this._dropdownClassName = dropdownClassName;
1139
+ return this;
1194
1140
  }
1195
- get helpText() {
1196
- return this._helpText;
1141
+ asAutocomplete(openOnFocus = false, inlineSearch = false) {
1142
+ this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Autocomplete;
1143
+ this._autocompleteOpenOnFocus = openOnFocus;
1144
+ this._autocompleteInlineSearch = inlineSearch;
1145
+ return this;
1197
1146
  }
1198
- get required() {
1199
- return this._required;
1147
+ copy() {
1148
+ const descriptor = new FilterLookupDescriptor(this._property, this._modelType);
1149
+ this.copyFieldsTo(descriptor);
1150
+ return descriptor;
1200
1151
  }
1201
- get disabled() {
1202
- return this._disabled;
1152
+ copyFieldsTo(filter) {
1153
+ super.copyFieldsTo(filter);
1154
+ filter._dataProvider = this._dataProvider;
1155
+ filter._lookupType = this._lookupType;
1156
+ filter._itemsLabelProperty = this._itemsLabelProperty;
1157
+ filter._itemsLabelTranslate = this._itemsLabelTranslate;
1158
+ filter._itemsValueProperty = this._itemsValueProperty;
1159
+ filter._dataKeyProperty = this._dataKeyProperty;
1160
+ filter._multiselect = this._multiselect;
1161
+ filter._dropdownClassName = this._dropdownClassName;
1162
+ filter._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;
1163
+ filter._autocompleteInlineSearch = this._autocompleteInlineSearch;
1203
1164
  }
1204
- get defaultValue() {
1205
- return this._defaultValue;
1165
+ }
1166
+ class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
1167
+ constructor(property, enumType, options, nameAsValue = false, optionsTitlePath) {
1168
+ super(property, null);
1169
+ this._enumType = enumType;
1170
+ if (typeof optionsTitlePath === 'undefined') {
1171
+ optionsTitlePath = TypeUtil.findEnumName(enumType);
1172
+ }
1173
+ const optionEnumValues = Array.isArray(options)
1174
+ ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined)
1175
+ : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined);
1176
+ const dataProvider = new LookupDataProvider(null).withLookup(() => of(optionEnumValues));
1177
+ this.withLookupDataProvider(dataProvider);
1178
+ this.withItemsLabelProperty('title', optionsTitlePath !== null);
1179
+ this.withItemsValueProperty('value');
1206
1180
  }
1207
- get getter() {
1208
- return this._getter;
1181
+ get enumType() {
1182
+ return this._enumType;
1209
1183
  }
1210
- get setter() {
1211
- return this._setter;
1184
+ asAutocomplete(openOnFocus = true) {
1185
+ super.asAutocomplete(openOnFocus, true);
1186
+ return this;
1212
1187
  }
1213
- get validators() {
1214
- return this._validators;
1188
+ copy() {
1189
+ const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);
1190
+ this.copyFieldsTo(field);
1191
+ return field;
1215
1192
  }
1216
- get requiredExpression() {
1217
- return this._requiredExpression;
1193
+ }
1194
+ (function (FilterLookupDescriptor) {
1195
+ let LookupTypeEnum;
1196
+ (function (LookupTypeEnum) {
1197
+ LookupTypeEnum[LookupTypeEnum["Dropdown"] = 0] = "Dropdown";
1198
+ LookupTypeEnum[LookupTypeEnum["Autocomplete"] = 1] = "Autocomplete";
1199
+ })(LookupTypeEnum = FilterLookupDescriptor.LookupTypeEnum || (FilterLookupDescriptor.LookupTypeEnum = {}));
1200
+ })(FilterLookupDescriptor || (FilterLookupDescriptor = {}));
1201
+
1202
+ class ColumnDescriptor {
1203
+ constructor(table, property) {
1204
+ this._columnType = ColumnDescriptor.TypeEnum.String;
1205
+ this._isSortEnabled = false;
1206
+ this._enumNameAsValue = false;
1207
+ // boolean specifics
1208
+ this._booleanAsIcon = false;
1209
+ this._table = table;
1210
+ this._property = property;
1218
1211
  }
1219
- get disabledExpression() {
1220
- return this._disabledExpression;
1212
+ get columnType() {
1213
+ return this._columnType;
1221
1214
  }
1222
- get hiddenExpression() {
1223
- return this._hiddenExpression;
1215
+ get title() {
1216
+ return this._title;
1224
1217
  }
1225
- get className() {
1226
- return this._className;
1218
+ get jsonPath() {
1219
+ return this._jsonPath;
1227
1220
  }
1228
- get labelClassName() {
1229
- return this._labelClassName;
1221
+ get isSortEnabled() {
1222
+ return this._isSortEnabled;
1230
1223
  }
1231
- get inputClassName() {
1232
- return this._inputClassName;
1224
+ get filterDescriptor() {
1225
+ return this._filterDescriptor;
1233
1226
  }
1234
- get size() {
1235
- return this._size;
1227
+ get displayFormat() {
1228
+ return this._displayFormat;
1236
1229
  }
1237
- get isSizeSmall() {
1238
- return this._size === FieldDescriptor.SizeEnum.Small;
1230
+ get table() {
1231
+ return this._table;
1239
1232
  }
1240
- get isSizeLarge() {
1241
- return this._size === FieldDescriptor.SizeEnum.Large;
1233
+ get property() {
1234
+ return this._property;
1242
1235
  }
1243
- withLabel(label) {
1244
- this._label = label;
1245
- return this;
1236
+ get enumType() {
1237
+ return this._enumType;
1246
1238
  }
1247
- withPlaceholder(placeholder) {
1248
- this._placeholder = placeholder;
1249
- return this;
1239
+ get enumTitlePath() {
1240
+ return this._enumTitlePath;
1250
1241
  }
1251
- withHelpText(helpText) {
1252
- this._helpText = helpText;
1253
- return this;
1242
+ get enumNameAsValue() {
1243
+ return this._enumNameAsValue;
1254
1244
  }
1255
- withRequired(required = true, requiredExpression) {
1256
- this._required = required;
1257
- if (requiredExpression) {
1258
- this._requiredExpression = requiredExpression;
1259
- }
1260
- return this;
1245
+ get booleanAsIcon() {
1246
+ return this._booleanAsIcon;
1261
1247
  }
1262
- withDisabled(disabled = true, disabledExpression) {
1263
- this._disabled = disabled;
1264
- if (disabledExpression) {
1265
- this._disabledExpression = disabledExpression;
1266
- }
1267
- return this;
1248
+ get booleanYes() {
1249
+ return this._booleanYes;
1268
1250
  }
1269
- withHidden(hiddenExpression) {
1270
- this._hiddenExpression = hiddenExpression;
1251
+ get booleanNo() {
1252
+ return this._booleanNo;
1253
+ }
1254
+ get objectModelType() {
1255
+ return this._objectModelType;
1256
+ }
1257
+ get objectTitleProperty() {
1258
+ return this._objectTitleProperty;
1259
+ }
1260
+ get customComponentType() {
1261
+ return this._customComponentType;
1262
+ }
1263
+ asType(type = ColumnDescriptor.TypeEnum.String) {
1264
+ this._columnType = type;
1271
1265
  return this;
1272
1266
  }
1273
- withDefaultValue(defaultValue) {
1274
- this._defaultValue = defaultValue;
1267
+ asNumber(displayFormat = '1.0-0') {
1268
+ this._columnType = ColumnDescriptor.TypeEnum.Number;
1269
+ this._displayFormat = displayFormat;
1275
1270
  return this;
1276
1271
  }
1277
- withGetter(getter) {
1278
- this._getter = getter;
1272
+ asDate(displayFormat = 'dd.MM.yyyy') {
1273
+ this._columnType = ColumnDescriptor.TypeEnum.Date;
1274
+ this._displayFormat = displayFormat;
1279
1275
  return this;
1280
1276
  }
1281
- withSetter(setter) {
1282
- this._setter = setter;
1277
+ asBoolean(yes, no, asIcon = false) {
1278
+ this._columnType = ColumnDescriptor.TypeEnum.Boolean;
1279
+ this._booleanAsIcon = asIcon;
1280
+ this._booleanYes = yes;
1281
+ this._booleanNo = no;
1283
1282
  return this;
1284
1283
  }
1285
- withValidator(name, expression, message) {
1286
- this._validators.push(new FieldValidator(name, expression, message));
1284
+ asEnum(enumType, nameAsValue = false, titlePath) {
1285
+ this._columnType = ColumnDescriptor.TypeEnum.Enum;
1286
+ this._enumType = enumType;
1287
+ this._enumNameAsValue = nameAsValue;
1288
+ if (typeof titlePath === 'undefined') {
1289
+ titlePath = TypeUtil.findEnumName(enumType);
1290
+ }
1291
+ this._enumTitlePath = titlePath;
1287
1292
  return this;
1288
1293
  }
1289
- withClassName(className, labelClassName = '', inputClassName = '') {
1290
- this._className = className;
1291
- this._labelClassName = labelClassName;
1292
- this._inputClassName = inputClassName;
1294
+ asCustomComponent(customComponentType) {
1295
+ this._columnType = ColumnDescriptor.TypeEnum.Custom;
1296
+ this._customComponentType = customComponentType;
1293
1297
  return this;
1294
1298
  }
1295
- withSize(size = FieldDescriptor.SizeEnum.Normal) {
1296
- this._size = size;
1299
+ withObjectProperty(modelType, titleProperty) {
1300
+ var _a;
1301
+ this._objectModelType = modelType;
1302
+ if (!titleProperty) {
1303
+ this._objectTitleProperty = (_a = ModelUtil.findTitleAttribute(modelType)) !== null && _a !== void 0 ? _a : undefined;
1304
+ }
1305
+ else {
1306
+ this._objectTitleProperty = titleProperty;
1307
+ }
1297
1308
  return this;
1298
1309
  }
1299
- nextEvent(type, cmpType, cmpInstance, data) {
1300
- this._eventsSubject.next(new MngFormFieldEvent(type, cmpType, cmpInstance, data));
1310
+ withTitle(title) {
1311
+ this._title = title;
1312
+ return this;
1301
1313
  }
1302
- get events$() {
1303
- return this._eventsSubject.asObservable();
1314
+ withJsonPath(path) {
1315
+ this._jsonPath = path;
1316
+ return this;
1304
1317
  }
1305
- copyFieldsTo(obj) {
1306
- obj._label = this._label;
1307
- obj._placeholder = this._placeholder;
1308
- obj._helpText = this._helpText;
1309
- obj._required = this._required;
1310
- obj._disabled = this._disabled;
1311
- obj._defaultValue = this._defaultValue;
1312
- obj._requiredExpression = this._requiredExpression;
1313
- obj._hiddenExpression = this._hiddenExpression;
1314
- obj._disabledExpression = this._disabledExpression;
1315
- obj._className = this._className;
1316
- obj._size = this.size;
1317
- obj._getter = this._getter;
1318
- obj._setter = this._setter;
1319
- obj._validators = this._validators;
1320
- }
1321
- }
1322
- var FieldDescriptor;
1323
- (function (FieldDescriptor) {
1324
- let SizeEnum;
1325
- (function (SizeEnum) {
1326
- SizeEnum[SizeEnum["Small"] = 0] = "Small";
1327
- SizeEnum[SizeEnum["Normal"] = 1] = "Normal";
1328
- SizeEnum[SizeEnum["Large"] = 2] = "Large";
1329
- })(SizeEnum = FieldDescriptor.SizeEnum || (FieldDescriptor.SizeEnum = {}));
1330
- })(FieldDescriptor || (FieldDescriptor = {}));
1331
- class FieldInputDescriptor extends AFieldDescriptor {
1332
- constructor(editor, property) {
1333
- super(editor, property);
1334
- this._fieldType = FieldInputDescriptor.TypeEnum.Text;
1335
- this._numberUseGrouping = true;
1336
- // radio specific properties
1337
- this._radioOptions = [];
1338
- this._datePickerShowTime = false;
1339
- }
1340
- get fieldType() {
1341
- return this._fieldType;
1342
- }
1343
- get rows() {
1344
- return this._rows;
1345
- }
1346
- get numberMin() {
1347
- return this._numberMin;
1348
- }
1349
- get numberMax() {
1350
- return this._numberMax;
1351
- }
1352
- get numberStep() {
1353
- return this._numberStep;
1354
- }
1355
- get numberMinFractionDigits() {
1356
- return this._numberMinFractionDigits;
1357
- }
1358
- get numberMaxFractionDigits() {
1359
- return this._numberMaxFractionDigits;
1360
- }
1361
- get numberUseGrouping() {
1362
- return this._numberUseGrouping;
1363
- }
1364
- get radioOptions() {
1365
- return this._radioOptions;
1366
- }
1367
- get datePickerFormat() {
1368
- return this._datePickerFormat;
1318
+ withFilter(forceSimple = false) {
1319
+ this._filterDescriptor = new FilterDescriptor(this._property);
1320
+ let filterType;
1321
+ if (!forceSimple && this._objectModelType) {
1322
+ return this.withFilterLookup();
1323
+ }
1324
+ switch (this._columnType) {
1325
+ case ColumnDescriptor.TypeEnum.Number:
1326
+ filterType = FilterDescriptor.TypeEnum.Number;
1327
+ break;
1328
+ case ColumnDescriptor.TypeEnum.Boolean:
1329
+ filterType = FilterDescriptor.TypeEnum.Boolean;
1330
+ break;
1331
+ case ColumnDescriptor.TypeEnum.Date:
1332
+ filterType = FilterDescriptor.TypeEnum.Date;
1333
+ break;
1334
+ case ColumnDescriptor.TypeEnum.Enum:
1335
+ if (!forceSimple) {
1336
+ return this.withFilterLookupEnum();
1337
+ }
1338
+ else {
1339
+ filterType = FilterDescriptor.TypeEnum.String;
1340
+ break;
1341
+ }
1342
+ case ColumnDescriptor.TypeEnum.String:
1343
+ case ColumnDescriptor.TypeEnum.Custom:
1344
+ default:
1345
+ filterType = FilterDescriptor.TypeEnum.String;
1346
+ break;
1347
+ }
1348
+ this._filterDescriptor.asFilterType(filterType);
1349
+ return this._filterDescriptor;
1369
1350
  }
1370
- get datePickerMin() {
1371
- return this._datePickerMin;
1351
+ withFilterLookup() {
1352
+ var _a;
1353
+ const filterDescriptor = new FilterLookupDescriptor(this._property, (_a = this._objectModelType) !== null && _a !== void 0 ? _a : null);
1354
+ this._filterDescriptor = filterDescriptor;
1355
+ return filterDescriptor;
1372
1356
  }
1373
- get datePickerMax() {
1374
- return this._datePickerMax;
1357
+ withFilterLookupEnum(options) {
1358
+ if (this._columnType !== ColumnDescriptor.TypeEnum.Enum || !this._enumType) {
1359
+ throw new Error(`Column ${this._property} is not of type enum or enum type is undefined.`);
1360
+ }
1361
+ const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);
1362
+ this._filterDescriptor = filterDescriptor;
1363
+ return filterDescriptor;
1375
1364
  }
1376
- get datePickerShowTime() {
1377
- return this._datePickerShowTime;
1365
+ withSort(isEnabled = true) {
1366
+ this._isSortEnabled = isEnabled;
1367
+ return this;
1378
1368
  }
1379
- get maxLength() {
1380
- return this._maxLength;
1369
+ copy() {
1370
+ var _a;
1371
+ const descriptor = new ColumnDescriptor(this._table, this._property);
1372
+ descriptor._jsonPath = this._jsonPath;
1373
+ descriptor._title = this._title;
1374
+ descriptor._isSortEnabled = this._isSortEnabled;
1375
+ descriptor._columnType = this._columnType;
1376
+ descriptor._filterDescriptor = (_a = this._filterDescriptor) === null || _a === void 0 ? void 0 : _a.copy();
1377
+ descriptor._enumType = this._enumType;
1378
+ descriptor._enumTitlePath = this._enumTitlePath;
1379
+ descriptor._enumNameAsValue = this._enumNameAsValue;
1380
+ descriptor._booleanAsIcon = this._booleanAsIcon;
1381
+ descriptor._booleanYes = this._booleanYes;
1382
+ descriptor._booleanNo = this._booleanNo;
1383
+ descriptor._objectModelType = this._objectModelType;
1384
+ descriptor._objectTitleProperty = this._objectTitleProperty;
1385
+ return descriptor;
1381
1386
  }
1382
- get minLength() {
1383
- return this._minLength;
1387
+ }
1388
+ (function (ColumnDescriptor) {
1389
+ let TypeEnum;
1390
+ (function (TypeEnum) {
1391
+ TypeEnum[TypeEnum["String"] = 0] = "String";
1392
+ TypeEnum[TypeEnum["Number"] = 1] = "Number";
1393
+ TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
1394
+ TypeEnum[TypeEnum["Date"] = 3] = "Date";
1395
+ TypeEnum[TypeEnum["Enum"] = 4] = "Enum";
1396
+ TypeEnum[TypeEnum["Custom"] = 5] = "Custom";
1397
+ })(TypeEnum = ColumnDescriptor.TypeEnum || (ColumnDescriptor.TypeEnum = {}));
1398
+ })(ColumnDescriptor || (ColumnDescriptor = {}));
1399
+
1400
+ class EditorDescriptor {
1401
+ constructor(modelType, idProperty, titleProperty, tableviewEditorType = EditorDescriptor.TableviewEditorTypeEnum.None) {
1402
+ this._tabs = [];
1403
+ this._groups = [];
1404
+ this._fields = [];
1405
+ this._disabled = false;
1406
+ this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
1407
+ this._tableviewEditorType = tableviewEditorType;
1384
1408
  }
1385
- get pattern() {
1386
- return this._pattern;
1409
+ get model() {
1410
+ return this._model;
1387
1411
  }
1388
- get mask() {
1389
- return this._mask;
1412
+ get tabs() {
1413
+ return this._tabs;
1390
1414
  }
1391
- get slotChar() {
1392
- return this._slotChar;
1415
+ get fields() {
1416
+ return this._fields;
1393
1417
  }
1394
- get customComponentName() {
1395
- return this._customComponentName;
1418
+ get tableviewEditorType() {
1419
+ return this._disabled;
1396
1420
  }
1397
- asHidden() {
1398
- this._fieldType = FieldInputDescriptor.TypeEnum.Hidden;
1399
- return this;
1421
+ get disabled() {
1422
+ return this._disabled;
1400
1423
  }
1401
- asText(minLength, maxLength, pattern, isEmail) {
1402
- this._fieldType = FieldInputDescriptor.TypeEnum.Text;
1403
- this._minLength = minLength;
1404
- this._maxLength = maxLength;
1405
- this._pattern = pattern;
1406
- if (isEmail) {
1407
- this.withValidator('email', control => !Validators.email(control));
1424
+ createTabGroup(name, title) {
1425
+ const tabGroup = new FieldTabGroupDescriptor(this, name);
1426
+ if (!title) {
1427
+ title = I18nUtil.getModelTabKey(this.model, name);
1408
1428
  }
1409
- return this;
1410
- }
1411
- asTextarea(rows = 3, minLength, maxLength, pattern) {
1412
- this._fieldType = FieldInputDescriptor.TypeEnum.Textarea;
1413
- this._rows = rows;
1414
- this._minLength = minLength;
1415
- this._maxLength = maxLength;
1416
- this._pattern = pattern;
1417
- return this;
1429
+ tabGroup.withTitle(title);
1430
+ this.createTabGroupDescriptor(tabGroup);
1431
+ return tabGroup;
1418
1432
  }
1419
- asNumber(step, min, max, minFractionDigits, maxFractionDigits, numberUseGrouping = true) {
1420
- this._fieldType = FieldInputDescriptor.TypeEnum.Number;
1421
- this._numberStep = step;
1422
- this._numberMinFractionDigits = minFractionDigits;
1423
- this._numberMaxFractionDigits = maxFractionDigits;
1424
- this._numberMin = min !== null && min !== void 0 ? min : Number.MIN_SAFE_INTEGER;
1425
- this._numberMax = max !== null && max !== void 0 ? max : Number.MAX_SAFE_INTEGER;
1426
- this._numberUseGrouping = numberUseGrouping;
1427
- return this;
1433
+ createFieldGroup(name, title) {
1434
+ const fieldGroup = new FieldGroupDescriptor(this, name);
1435
+ if (title !== null) {
1436
+ if (!title) {
1437
+ title = I18nUtil.getModelGroupKey(this.model, name);
1438
+ }
1439
+ fieldGroup.withTitle(title);
1440
+ }
1441
+ this.createFieldGroupDescriptor(fieldGroup);
1442
+ return fieldGroup;
1428
1443
  }
1429
- asSwitch() {
1430
- this._fieldType = FieldInputDescriptor.TypeEnum.Switch;
1444
+ addFieldDescriptor(field) {
1445
+ var _a;
1446
+ this.createDefaultGroup();
1447
+ this._fields.push(field);
1448
+ (_a = this._currentGroup) === null || _a === void 0 ? void 0 : _a.addField(field);
1431
1449
  return this;
1432
1450
  }
1433
- asRadio(options, optionsTitlePath) {
1434
- this._fieldType = FieldInputDescriptor.TypeEnum.Radio;
1435
- this._radioOptions = options.map(o => ({ value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}` }));
1436
- return this;
1451
+ addField(property) {
1452
+ const field = new FieldInputDescriptor(this, property);
1453
+ this.addFieldDescriptor(field);
1454
+ return field;
1437
1455
  }
1438
- asRadioFromEnum(enumType, optionsTitlePath, values, nameAsValue = false) {
1439
- this._fieldType = FieldInputDescriptor.TypeEnum.Radio;
1440
- if (typeof optionsTitlePath === 'undefined') {
1441
- optionsTitlePath = TypeUtil.findEnumName(enumType);
1456
+ removeField(property) {
1457
+ const fieldIdx = this._fields.findIndex(f => f.property === property);
1458
+ if (fieldIdx < 0) {
1459
+ throw new Error(`Field ${property} does not exist.`);
1442
1460
  }
1443
- this._radioOptions = Array.isArray(values)
1444
- ? EnumUtil.fromValuesAsEnumValueArray(enumType, values, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined)
1445
- : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined);
1446
- return this;
1447
- }
1448
- asDatePicker(format, min, max, showTime) {
1449
- this._fieldType = FieldInputDescriptor.TypeEnum.Datepicker;
1450
- this._datePickerFormat = format ? format : 'dd.mm.yy';
1451
- this._datePickerMin = min;
1452
- this._datePickerMax = max;
1453
- this._datePickerShowTime = showTime !== null && showTime !== void 0 ? showTime : false;
1454
- return this;
1455
- }
1456
- asMask(mask, slotChar) {
1457
- this._fieldType = FieldInputDescriptor.TypeEnum.Mask;
1458
- this._mask = mask;
1459
- this._slotChar = slotChar;
1461
+ const field = this._fields[fieldIdx];
1462
+ if (field.group) {
1463
+ const groupFieldIdx = field.group.fields.findIndex(f => f instanceof AFieldDescriptor && f.property === property);
1464
+ if (groupFieldIdx >= 0) {
1465
+ field.group.fields.splice(groupFieldIdx, 1);
1466
+ }
1467
+ }
1468
+ this._fields.splice(fieldIdx, 1);
1460
1469
  return this;
1461
1470
  }
1462
- asCustomComponent(customComponentName) {
1463
- this._fieldType = FieldInputDescriptor.TypeEnum.Custom;
1464
- this._customComponentName = customComponentName;
1465
- return this;
1471
+ getField(property) {
1472
+ var _a;
1473
+ return (_a = this._fields.find(f => f.property === property)) !== null && _a !== void 0 ? _a : null;
1466
1474
  }
1467
- copy() {
1468
- const field = new FieldInputDescriptor(this._editor, this._property);
1469
- this.copyFieldsTo(field);
1470
- field._fieldType = this._fieldType;
1471
- field._rows = this._rows;
1472
- field._numberMin = this._numberMin;
1473
- field._numberMax = this._numberMax;
1474
- field._numberStep = this._numberStep;
1475
- field._numberMinFractionDigits = this._numberMinFractionDigits;
1476
- field._numberMaxFractionDigits = this._numberMaxFractionDigits;
1477
- field._numberUseGrouping = this._numberUseGrouping;
1478
- field._radioOptions = [...this._radioOptions];
1479
- field._datePickerFormat = this._datePickerFormat;
1480
- field._datePickerMin = this._datePickerMin;
1481
- field._datePickerMax = this._datePickerMax;
1482
- field._datePickerShowTime = this._datePickerShowTime;
1483
- field._maxLength = this._maxLength;
1484
- field._minLength = this._minLength;
1485
- field._pattern = this._pattern;
1486
- field._mask = this._mask;
1487
- field._slotChar = this._slotChar;
1488
- field._customComponentName = this._customComponentName;
1475
+ addFieldLookup(property, modelType) {
1476
+ const field = new FieldLookupDescriptor(this, property, modelType);
1477
+ this.addFieldDescriptor(field);
1489
1478
  return field;
1490
1479
  }
1491
- }
1492
- (function (FieldInputDescriptor) {
1493
- let TypeEnum;
1494
- (function (TypeEnum) {
1495
- TypeEnum[TypeEnum["Hidden"] = 0] = "Hidden";
1496
- TypeEnum[TypeEnum["Text"] = 1] = "Text";
1497
- TypeEnum[TypeEnum["Textarea"] = 2] = "Textarea";
1498
- TypeEnum[TypeEnum["Number"] = 3] = "Number";
1499
- TypeEnum[TypeEnum["Switch"] = 4] = "Switch";
1500
- TypeEnum[TypeEnum["Radio"] = 5] = "Radio";
1501
- TypeEnum[TypeEnum["Datepicker"] = 6] = "Datepicker";
1502
- TypeEnum[TypeEnum["Mask"] = 7] = "Mask";
1503
- TypeEnum[TypeEnum["Custom"] = 8] = "Custom";
1504
- })(TypeEnum = FieldInputDescriptor.TypeEnum || (FieldInputDescriptor.TypeEnum = {}));
1505
- })(FieldInputDescriptor || (FieldInputDescriptor = {}));
1506
- class FieldLookupDescriptor extends AFieldDescriptor {
1507
- constructor(editor, property, modelType) {
1508
- super(editor, property);
1509
- this._lookupType = FieldLookupDescriptor.LookupTypeEnum.Dropdown;
1510
- this._itemsLabelTranslate = false;
1511
- this._modelType = modelType;
1512
- ModelUtil.trySetLookupItemsProperties(this);
1513
- }
1514
- get lookupType() {
1515
- return this._lookupType;
1516
- }
1517
- get itemsLabelProperty() {
1518
- return this._itemsLabelProperty;
1519
- }
1520
- get itemsLabelTranslate() {
1521
- return this._itemsLabelTranslate;
1522
- }
1523
- get itemsValueProperty() {
1524
- return this._itemsValueProperty;
1525
- }
1526
- get itemsDisabledProperty() {
1527
- return this._itemsDisabledProperty;
1528
- }
1529
- get dataKeyProperty() {
1530
- return this._dataKeyProperty;
1531
- }
1532
- get dataProvider() {
1533
- return this._dataProvider;
1534
- }
1535
- get lookupTableDataProvider() {
1536
- return this._lookupTableDataProvider;
1537
- }
1538
- get modelType() {
1539
- return this._modelType;
1540
- }
1541
- get lookupTableDescriptor() {
1542
- return this._lookupTableDescriptor;
1480
+ addFieldLookupEnum(property, enumType, options, nameAsValue = false, optionsTitlePath) {
1481
+ const field = new FieldLookupEnumDescriptor(this, property, enumType, options, nameAsValue, optionsTitlePath);
1482
+ this.addFieldDescriptor(field);
1483
+ return field;
1543
1484
  }
1544
- withItemsLabelProperty(itemsLabelProperty, translate = false) {
1545
- this._itemsLabelProperty = itemsLabelProperty;
1546
- this._itemsLabelTranslate = translate;
1547
- return this;
1485
+ addFieldManyEditor(property, tableviewDescriptor) {
1486
+ const field = new FieldManyEditorDescriptor(this, property, tableviewDescriptor);
1487
+ this.addFieldDescriptor(field);
1488
+ return field;
1548
1489
  }
1549
- withItemsValueProperty(itemsValueProperty) {
1550
- this._itemsValueProperty = itemsValueProperty;
1551
- this._dataKeyProperty = undefined;
1552
- return this;
1490
+ addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor) {
1491
+ const field = new FieldManyToManyEditorDescriptor(this, property, mainTableDescriptor, lookupTableDescriptor);
1492
+ this.addFieldDescriptor(field);
1493
+ return field;
1553
1494
  }
1554
- withItemsDisabledProperty(itemsDisabledProperty) {
1555
- this._itemsDisabledProperty = itemsDisabledProperty;
1495
+ withDisabled(disabled = true) {
1496
+ this._disabled = disabled;
1556
1497
  return this;
1557
1498
  }
1558
- withDataKeyProperty(property) {
1559
- this._dataKeyProperty = property;
1560
- this._itemsValueProperty = undefined;
1561
- return this;
1499
+ addValidator(name, expression) {
1500
+ if (this._currentGroup) {
1501
+ this._currentGroup.withValidator(name, expression);
1502
+ }
1562
1503
  }
1563
- withLookup(lookup, serviceType) {
1564
- const dataProvider = new LookupDataProvider(this._modelType);
1565
- if (serviceType) {
1566
- dataProvider.withServiceType(serviceType);
1504
+ copy() {
1505
+ const editor = new EditorDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
1506
+ for (const tabGroup of this._tabs) {
1507
+ editor.createTabGroupDescriptor(tabGroup.copy());
1567
1508
  }
1568
- dataProvider.withLookup(lookup);
1569
- this._dataProvider = dataProvider;
1509
+ for (const tabGroup of editor._tabs) {
1510
+ for (const fieldGroup of tabGroup.fields) {
1511
+ editor._fields.push(...fieldGroup.fields);
1512
+ }
1513
+ editor._groups.push(...tabGroup.fields);
1514
+ }
1515
+ editor._currentTabGroup = editor._tabs[editor._tabs.length - 1];
1516
+ editor._currentGroup = editor._currentTabGroup.fields[editor._currentTabGroup.fields.length - 1];
1517
+ editor._disabled = this._disabled;
1518
+ return editor;
1519
+ }
1520
+ createFieldGroupDescriptor(fieldGroup) {
1521
+ var _a;
1522
+ this.createDefaultTabGroup();
1523
+ this._currentGroup = fieldGroup;
1524
+ this._groups.push(fieldGroup);
1525
+ (_a = this._currentTabGroup) === null || _a === void 0 ? void 0 : _a.addField(fieldGroup);
1570
1526
  return this;
1571
1527
  }
1572
- withLookupDataProvider(dataProvider) {
1573
- this._dataProvider = dataProvider;
1528
+ createTabGroupDescriptor(tabGroup) {
1529
+ this._currentTabGroup = tabGroup;
1530
+ this._tabs.push(tabGroup);
1574
1531
  return this;
1575
1532
  }
1576
- withConfig(config) {
1577
- return super.withConfig(config);
1533
+ createDefaultGroup() {
1534
+ var _a;
1535
+ this.createDefaultTabGroup();
1536
+ if (((_a = this._currentTabGroup) === null || _a === void 0 ? void 0 : _a.fields.length) === 0) {
1537
+ this.createFieldGroup(EditorDescriptor.defaultGroupName, null);
1538
+ }
1578
1539
  }
1579
- asAutocomplete() {
1580
- this._lookupType = FieldLookupDescriptor.LookupTypeEnum.Autocomplete;
1581
- return this;
1540
+ createDefaultTabGroup() {
1541
+ if (this._tabs.length === 0) {
1542
+ this.createTabGroup(EditorDescriptor.defaultGroupName, 'general.general');
1543
+ }
1582
1544
  }
1583
- asDialog(lookupTableDescriptor, tableDataProvider) {
1584
- this._lookupType = FieldLookupDescriptor.LookupTypeEnum.Dialog;
1585
- this._lookupTableDescriptor = lookupTableDescriptor;
1586
- this._lookupTableDataProvider = tableDataProvider;
1587
- return this;
1545
+ }
1546
+ EditorDescriptor.defaultGroupName = '_default';
1547
+ (function (EditorDescriptor) {
1548
+ let TableviewEditorTypeEnum;
1549
+ (function (TableviewEditorTypeEnum) {
1550
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["None"] = 0] = "None";
1551
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["View"] = 1] = "View";
1552
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["Edit"] = 2] = "Edit";
1553
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["Add"] = 3] = "Add";
1554
+ })(TableviewEditorTypeEnum = EditorDescriptor.TableviewEditorTypeEnum || (EditorDescriptor.TableviewEditorTypeEnum = {}));
1555
+ })(EditorDescriptor || (EditorDescriptor = {}));
1556
+
1557
+ class MngFormEditorSubmitEvent {
1558
+ constructor(formItem) {
1559
+ this.formItem = formItem;
1560
+ this.success = true;
1588
1561
  }
1589
- copy() {
1590
- const field = new FieldLookupDescriptor(this._editor, this._property, this._modelType);
1591
- this.copyFieldsTo(field);
1592
- field._lookupType = this._lookupType;
1593
- field._itemsLabelProperty = this._itemsLabelProperty;
1594
- field._itemsLabelTranslate = this._itemsLabelTranslate;
1595
- field._itemsValueProperty = this._itemsValueProperty;
1596
- field._itemsDisabledProperty = this._itemsDisabledProperty;
1597
- field._dataKeyProperty = this._dataKeyProperty;
1598
- field._dataProvider = this._dataProvider;
1599
- field._lookupTableDescriptor = this._lookupTableDescriptor;
1600
- return field;
1562
+ }
1563
+ var MngFormFieldEventTypeEnum;
1564
+ (function (MngFormFieldEventTypeEnum) {
1565
+ MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["Component"] = 0] = "Component";
1566
+ MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["ValueChange"] = 1] = "ValueChange";
1567
+ MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["DataProvider"] = 2] = "DataProvider";
1568
+ MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["Dialog"] = 3] = "Dialog";
1569
+ MngFormFieldEventTypeEnum[MngFormFieldEventTypeEnum["Other"] = 4] = "Other";
1570
+ })(MngFormFieldEventTypeEnum || (MngFormFieldEventTypeEnum = {}));
1571
+ class MngFormFieldEventComponentSubtype {
1572
+ }
1573
+ MngFormFieldEventComponentSubtype.ON_INIT = 'Component.OnInit';
1574
+ MngFormFieldEventComponentSubtype.ON_VIEW_INIT = 'Component.OnViewInit';
1575
+ MngFormFieldEventComponentSubtype.ON_CONTENT_INIT = 'Component.OnContentInit';
1576
+ MngFormFieldEventComponentSubtype.ON_DESTROY = 'Component.OnDestroy';
1577
+ class MngFormFieldEventDialogSubtype {
1578
+ }
1579
+ MngFormFieldEventDialogSubtype.VISIBILITY = 'Dialog.Visibility';
1580
+ MngFormFieldEventDialogSubtype.TABLE_CAPTION_COMPONENT_INSTANCE = 'Dialog.MngTable.CaptionComponentInstance';
1581
+ MngFormFieldEventDialogSubtype.TABLE_COLUMN_ACTIONS_COMPONENT_INSTANCE = 'Dialog.MngTable.ColumnActionsComponentInstance';
1582
+ class MngFormFieldEvent {
1583
+ constructor(type, componentType, componentInstance, data = {}) {
1584
+ this.type = type;
1585
+ this.componentType = componentType;
1586
+ this.componentInstance = componentInstance;
1587
+ this.data = data;
1601
1588
  }
1602
1589
  }
1603
- (function (FieldLookupDescriptor) {
1604
- let LookupTypeEnum;
1605
- (function (LookupTypeEnum) {
1606
- LookupTypeEnum[LookupTypeEnum["Dropdown"] = 0] = "Dropdown";
1607
- LookupTypeEnum[LookupTypeEnum["Autocomplete"] = 1] = "Autocomplete";
1608
- LookupTypeEnum[LookupTypeEnum["Dialog"] = 2] = "Dialog";
1609
- })(LookupTypeEnum = FieldLookupDescriptor.LookupTypeEnum || (FieldLookupDescriptor.LookupTypeEnum = {}));
1610
- })(FieldLookupDescriptor || (FieldLookupDescriptor = {}));
1611
- class FieldLookupEnumDescriptor extends FieldLookupDescriptor {
1612
- constructor(editor, property, enumType, options, nameAsValue = false, optionsTitlePath) {
1613
- super(editor, property, null);
1614
- this._nameAsValue = false;
1615
- this._enumType = enumType;
1616
- this._nameAsValue = nameAsValue;
1617
- if (typeof optionsTitlePath === 'undefined') {
1618
- optionsTitlePath = TypeUtil.findEnumName(enumType);
1619
- }
1620
- this._optionEnumValues = Array.isArray(options)
1621
- ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined)
1622
- : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined);
1623
- const dataProvider = new LookupDataProvider(null).withLookup(() => of(this._optionEnumValues));
1624
- this.withLookupDataProvider(dataProvider);
1625
- this.withItemsLabelProperty('title', optionsTitlePath !== null);
1626
- this.withItemsValueProperty('value');
1627
- this.withItemsDisabledProperty('disabled');
1590
+
1591
+ class AGenericFieldDescriptor {
1592
+ constructor(editor) {
1593
+ this._config = {};
1594
+ this._editor = editor;
1595
+ }
1596
+ get editor() {
1597
+ return this._editor;
1628
1598
  }
1629
- get enumType() {
1630
- return this._enumType;
1599
+ get config() {
1600
+ return this._config;
1631
1601
  }
1632
- withDisabledOptions(...disabledOptions) {
1633
- for (const disabledOption of disabledOptions) {
1634
- const disabledOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, disabledOption) : disabledOption;
1635
- if (disabledOptionValue) {
1636
- const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);
1637
- if (option) {
1638
- option.disabled = true;
1639
- }
1640
- }
1641
- }
1602
+ withConfig(config) {
1603
+ this._config = config;
1642
1604
  return this;
1643
1605
  }
1644
- copy() {
1645
- const field = new FieldLookupEnumDescriptor(this._editor, this._property, this._enumType, []);
1646
- this.copyFieldsTo(field);
1647
- field._lookupType = this._lookupType;
1648
- field._itemsLabelProperty = this._itemsLabelProperty;
1649
- field._itemsValueProperty = this._itemsValueProperty;
1650
- field._itemsDisabledProperty = this._itemsDisabledProperty;
1651
- field._dataKeyProperty = this._dataKeyProperty;
1652
- field._dataProvider = this._dataProvider;
1653
- return field;
1654
- }
1655
1606
  }
1656
- class FieldManyToManyEditorDescriptor extends AFieldDescriptor {
1657
- constructor(editor, property, mainTableDescriptor, lookupTableDescriptor) {
1658
- super(editor, property);
1659
- this._fieldType = FieldManyToManyEditorDescriptor.TypeEnum.DialogTableMultiselect;
1660
- this._lookupTableDataProvider = null;
1661
- this._actions = [];
1662
- this._hasLookupExcludeValues = false;
1663
- this._excludeFilterProperty = '';
1664
- this._excludeValueProperty = '';
1665
- this._mainTableDescriptor = mainTableDescriptor;
1666
- this._lookupTableDescriptor = lookupTableDescriptor;
1667
- this._actions.push(FieldManyToManyEditorDescriptor.ActionEnum.Add, FieldManyToManyEditorDescriptor.ActionEnum.Delete);
1607
+ class AFieldDescriptor extends AGenericFieldDescriptor {
1608
+ constructor(editor, property) {
1609
+ super(editor);
1610
+ this._required = false;
1611
+ this._disabled = false;
1612
+ this._validators = [];
1613
+ this._className = '';
1614
+ this._labelClassName = '';
1615
+ this._inputClassName = '';
1616
+ this._size = FieldDescriptor.SizeEnum.Normal;
1617
+ this._eventsSubject = new Subject();
1618
+ this._property = property;
1619
+ this._label = I18nUtil.getModelPropertyKey(this._editor.model, property);
1668
1620
  }
1669
- get fieldType() {
1670
- return this._fieldType;
1621
+ get property() {
1622
+ return this._property;
1671
1623
  }
1672
- get lookupTableDataProvider() {
1673
- return this._lookupTableDataProvider;
1624
+ get group() {
1625
+ return this._group;
1674
1626
  }
1675
- get actions() {
1676
- return this._actions;
1627
+ get label() {
1628
+ return this._label;
1677
1629
  }
1678
- get hasLookupExcludeValues() {
1679
- return this._hasLookupExcludeValues;
1630
+ get placeholder() {
1631
+ return this._placeholder;
1680
1632
  }
1681
- get excludeFilterProperty() {
1682
- return this._excludeFilterProperty;
1633
+ get helpText() {
1634
+ return this._helpText;
1683
1635
  }
1684
- get excludeValueProperty() {
1685
- return this._excludeValueProperty;
1636
+ get required() {
1637
+ return this._required;
1686
1638
  }
1687
- get mainTableDescriptor() {
1688
- return this._mainTableDescriptor;
1639
+ get disabled() {
1640
+ return this._disabled;
1689
1641
  }
1690
- get lookupTableDescriptor() {
1691
- return this._lookupTableDescriptor;
1642
+ get defaultValue() {
1643
+ return this._defaultValue;
1692
1644
  }
1693
- withLookup(getAll, serviceType) {
1694
- const dataProvider = new TableviewDataProvider(this._mainTableDescriptor.model.type);
1695
- if (serviceType) {
1696
- dataProvider.withServiceType(serviceType);
1697
- }
1698
- dataProvider.withGetAll(getAll);
1699
- this._lookupTableDataProvider = dataProvider;
1700
- return this;
1645
+ get getter() {
1646
+ return this._getter;
1701
1647
  }
1702
- withLookupDataProvider(dataProvider) {
1703
- this._lookupTableDataProvider = dataProvider;
1704
- return this;
1648
+ get setter() {
1649
+ return this._setter;
1705
1650
  }
1706
- withActions(actions = []) {
1707
- this.actions.push(...actions);
1708
- return this;
1651
+ get validators() {
1652
+ return this._validators;
1709
1653
  }
1710
- withLookupExclude(filterProperty, valueProperty, hasLookupExclude = true) {
1711
- this._hasLookupExcludeValues = hasLookupExclude;
1712
- this._excludeFilterProperty = filterProperty;
1713
- this._excludeValueProperty = valueProperty;
1714
- return this;
1654
+ get requiredExpression() {
1655
+ return this._requiredExpression;
1715
1656
  }
1716
- copy() {
1717
- const field = new FieldManyToManyEditorDescriptor(this._editor, this._property, this._mainTableDescriptor.copy(), this._lookupTableDescriptor.copy());
1718
- this.copyFieldsTo(field);
1719
- field._fieldType = this._fieldType;
1720
- field._actions = this._actions.map(a => a);
1721
- field._lookupTableDataProvider = this._lookupTableDataProvider;
1722
- field._hasLookupExcludeValues = this._hasLookupExcludeValues;
1723
- field._excludeFilterProperty = this._excludeFilterProperty;
1724
- field._excludeValueProperty = this._excludeValueProperty;
1725
- return field;
1657
+ get disabledExpression() {
1658
+ return this._disabledExpression;
1726
1659
  }
1727
- }
1728
- (function (FieldManyToManyEditorDescriptor) {
1729
- let TypeEnum;
1730
- (function (TypeEnum) {
1731
- TypeEnum[TypeEnum["DialogTableMultiselect"] = 0] = "DialogTableMultiselect";
1732
- })(TypeEnum = FieldManyToManyEditorDescriptor.TypeEnum || (FieldManyToManyEditorDescriptor.TypeEnum = {}));
1733
- let ActionEnum;
1734
- (function (ActionEnum) {
1735
- ActionEnum[ActionEnum["Add"] = 0] = "Add";
1736
- ActionEnum[ActionEnum["Delete"] = 1] = "Delete";
1737
- })(ActionEnum = FieldManyToManyEditorDescriptor.ActionEnum || (FieldManyToManyEditorDescriptor.ActionEnum = {}));
1738
- })(FieldManyToManyEditorDescriptor || (FieldManyToManyEditorDescriptor = {}));
1739
- class FieldManyEditorDescriptor extends AFieldDescriptor {
1740
- constructor(editor, property, tableviewDescriptor) {
1741
- super(editor, property);
1742
- this._fieldType = FieldManyEditorDescriptor.TypeEnum.DialogEditor;
1743
- this._fieldActions = [];
1744
- this._actions = [];
1745
- // this._modelType = modelType;
1746
- this._tableviewDescriptor = tableviewDescriptor;
1747
- this._fieldActions.push(FieldManyEditorDescriptor.ActionEnum.View, FieldManyEditorDescriptor.ActionEnum.Add, FieldManyEditorDescriptor.ActionEnum.Edit, FieldManyEditorDescriptor.ActionEnum.Delete);
1660
+ get hiddenExpression() {
1661
+ return this._hiddenExpression;
1748
1662
  }
1749
- get fieldType() {
1750
- return this._fieldType;
1663
+ get className() {
1664
+ return this._className;
1751
1665
  }
1752
- get fieldActions() {
1753
- return this._fieldActions;
1666
+ get labelClassName() {
1667
+ return this._labelClassName;
1754
1668
  }
1755
- get actions() {
1756
- return this._actions;
1669
+ get inputClassName() {
1670
+ return this._inputClassName;
1757
1671
  }
1758
- get tableviewDescriptor() {
1759
- return this._tableviewDescriptor;
1672
+ get size() {
1673
+ return this._size;
1760
1674
  }
1761
- get tableDescriptor() {
1762
- return this._tableviewDescriptor.table;
1675
+ get isSizeSmall() {
1676
+ return this._size === FieldDescriptor.SizeEnum.Small;
1763
1677
  }
1764
- get editorForCreate() {
1765
- return this._tableviewDescriptor.addEditor;
1678
+ get isSizeLarge() {
1679
+ return this._size === FieldDescriptor.SizeEnum.Large;
1766
1680
  }
1767
- get editorForRead() {
1768
- return this._tableviewDescriptor.viewEditor;
1681
+ withLabel(label) {
1682
+ this._label = label;
1683
+ return this;
1769
1684
  }
1770
- get editorForUpdate() {
1771
- return this._tableviewDescriptor.editEditor;
1685
+ withPlaceholder(placeholder) {
1686
+ this._placeholder = placeholder;
1687
+ return this;
1772
1688
  }
1773
- withFieldAction(action) {
1774
- this._fieldActions.push(action);
1689
+ withHelpText(helpText) {
1690
+ this._helpText = helpText;
1775
1691
  return this;
1776
1692
  }
1777
- withFieldActions(actions) {
1778
- this._fieldActions = actions;
1693
+ withRequired(required = true, requiredExpression) {
1694
+ this._required = required;
1695
+ if (requiredExpression) {
1696
+ this._requiredExpression = requiredExpression;
1697
+ }
1779
1698
  return this;
1780
1699
  }
1781
- withAction(action) {
1782
- this._actions.push(action);
1700
+ withDisabled(disabled = true, disabledExpression) {
1701
+ this._disabled = disabled;
1702
+ if (disabledExpression) {
1703
+ this._disabledExpression = disabledExpression;
1704
+ }
1783
1705
  return this;
1784
1706
  }
1785
- copy() {
1786
- const field = new FieldManyEditorDescriptor(this._editor, this._property, this._tableviewDescriptor.copy());
1787
- this.copyFieldsTo(field);
1788
- field._fieldType = this._fieldType;
1789
- field._fieldActions = this._fieldActions.map(a => a);
1790
- return field;
1707
+ withHidden(hiddenExpression) {
1708
+ this._hiddenExpression = hiddenExpression;
1709
+ return this;
1710
+ }
1711
+ withDefaultValue(defaultValue) {
1712
+ this._defaultValue = defaultValue;
1713
+ return this;
1714
+ }
1715
+ withGetter(getter) {
1716
+ this._getter = getter;
1717
+ return this;
1718
+ }
1719
+ withSetter(setter) {
1720
+ this._setter = setter;
1721
+ return this;
1722
+ }
1723
+ withValidator(name, expression, message) {
1724
+ this._validators.push(new FieldValidator(name, expression, message));
1725
+ return this;
1726
+ }
1727
+ withClassName(className, labelClassName = '', inputClassName = '') {
1728
+ this._className = className;
1729
+ this._labelClassName = labelClassName;
1730
+ this._inputClassName = inputClassName;
1731
+ return this;
1732
+ }
1733
+ withSize(size = FieldDescriptor.SizeEnum.Normal) {
1734
+ this._size = size;
1735
+ return this;
1736
+ }
1737
+ nextEvent(type, cmpType, cmpInstance, data) {
1738
+ this._eventsSubject.next(new MngFormFieldEvent(type, cmpType, cmpInstance, data));
1739
+ }
1740
+ get events$() {
1741
+ return this._eventsSubject.asObservable();
1742
+ }
1743
+ copyFieldsTo(obj) {
1744
+ obj._label = this._label;
1745
+ obj._placeholder = this._placeholder;
1746
+ obj._helpText = this._helpText;
1747
+ obj._required = this._required;
1748
+ obj._disabled = this._disabled;
1749
+ obj._defaultValue = this._defaultValue;
1750
+ obj._requiredExpression = this._requiredExpression;
1751
+ obj._hiddenExpression = this._hiddenExpression;
1752
+ obj._disabledExpression = this._disabledExpression;
1753
+ obj._className = this._className;
1754
+ obj._size = this.size;
1755
+ obj._getter = this._getter;
1756
+ obj._setter = this._setter;
1757
+ obj._validators = this._validators;
1791
1758
  }
1792
1759
  }
1793
- (function (FieldManyEditorDescriptor) {
1794
- let TypeEnum;
1795
- (function (TypeEnum) {
1796
- TypeEnum[TypeEnum["DialogEditor"] = 0] = "DialogEditor";
1797
- })(TypeEnum = FieldManyEditorDescriptor.TypeEnum || (FieldManyEditorDescriptor.TypeEnum = {}));
1798
- let ActionEnum;
1799
- (function (ActionEnum) {
1800
- ActionEnum[ActionEnum["View"] = 0] = "View";
1801
- ActionEnum[ActionEnum["Add"] = 1] = "Add";
1802
- ActionEnum[ActionEnum["Edit"] = 2] = "Edit";
1803
- ActionEnum[ActionEnum["Delete"] = 3] = "Delete";
1804
- })(ActionEnum = FieldManyEditorDescriptor.ActionEnum || (FieldManyEditorDescriptor.ActionEnum = {}));
1805
- })(FieldManyEditorDescriptor || (FieldManyEditorDescriptor = {}));
1806
- class AFieldGroupDescriptor extends AGenericFieldDescriptor {
1807
- constructor(editor, name) {
1808
- super(editor);
1809
- this._fields = [];
1810
- this._validators = [];
1811
- this._name = `${this.baseName}${name}`;
1812
- this._default = name === EditorDescriptor.defaultGroupName;
1760
+ var FieldDescriptor;
1761
+ (function (FieldDescriptor) {
1762
+ let SizeEnum;
1763
+ (function (SizeEnum) {
1764
+ SizeEnum[SizeEnum["Small"] = 0] = "Small";
1765
+ SizeEnum[SizeEnum["Normal"] = 1] = "Normal";
1766
+ SizeEnum[SizeEnum["Large"] = 2] = "Large";
1767
+ })(SizeEnum = FieldDescriptor.SizeEnum || (FieldDescriptor.SizeEnum = {}));
1768
+ })(FieldDescriptor || (FieldDescriptor = {}));
1769
+ class FieldInputDescriptor extends AFieldDescriptor {
1770
+ constructor(editor, property) {
1771
+ super(editor, property);
1772
+ this._fieldType = FieldInputDescriptor.TypeEnum.Text;
1773
+ this._numberUseGrouping = true;
1774
+ // radio specific properties
1775
+ this._radioOptions = [];
1776
+ this._datePickerShowTime = false;
1813
1777
  }
1814
- get title() {
1815
- return this._title;
1778
+ get fieldType() {
1779
+ return this._fieldType;
1816
1780
  }
1817
- get validators() {
1818
- return this._validators;
1781
+ get rows() {
1782
+ return this._rows;
1819
1783
  }
1820
- get baseName() {
1821
- return `${this.groupName()}_`;
1784
+ get numberMin() {
1785
+ return this._numberMin;
1822
1786
  }
1823
- get name() {
1824
- return this._name;
1787
+ get numberMax() {
1788
+ return this._numberMax;
1825
1789
  }
1826
- get default() {
1827
- return this._default;
1790
+ get numberStep() {
1791
+ return this._numberStep;
1828
1792
  }
1829
- withTitle(title) {
1830
- this._title = title;
1831
- return this;
1793
+ get numberMinFractionDigits() {
1794
+ return this._numberMinFractionDigits;
1832
1795
  }
1833
- withValidator(name, expression) {
1834
- this._validators.push(new FieldValidator(name, expression, undefined));
1835
- return this;
1796
+ get numberMaxFractionDigits() {
1797
+ return this._numberMaxFractionDigits;
1836
1798
  }
1837
- }
1838
- class FieldTabGroupDescriptor extends AFieldGroupDescriptor {
1839
- constructor(editor, name) {
1840
- super(editor, name);
1799
+ get numberUseGrouping() {
1800
+ return this._numberUseGrouping;
1841
1801
  }
1842
- get fields() {
1843
- return this._fields;
1802
+ get radioOptions() {
1803
+ return this._radioOptions;
1844
1804
  }
1845
- groupName() {
1846
- return 'tab';
1805
+ get datePickerFormat() {
1806
+ return this._datePickerFormat;
1847
1807
  }
1848
- addField(field) {
1849
- this._fields.push(field);
1850
- return this;
1808
+ get datePickerMin() {
1809
+ return this._datePickerMin;
1851
1810
  }
1852
- copy() {
1853
- const tab = new FieldTabGroupDescriptor(this._editor, this.name.substring(this.baseName.length));
1854
- tab._title = this._title;
1855
- tab._fields = this.fields.map(f => f.copy());
1856
- return tab;
1811
+ get datePickerMax() {
1812
+ return this._datePickerMax;
1857
1813
  }
1858
- }
1859
- class FieldGroupDescriptor extends AFieldGroupDescriptor {
1860
- constructor(editor, name) {
1861
- super(editor, name);
1814
+ get datePickerShowTime() {
1815
+ return this._datePickerShowTime;
1862
1816
  }
1863
- get fields() {
1864
- return this._fields;
1817
+ get maxLength() {
1818
+ return this._maxLength;
1865
1819
  }
1866
- groupName() {
1867
- return 'group';
1820
+ get minLength() {
1821
+ return this._minLength;
1868
1822
  }
1869
- addField(field) {
1870
- this._fields.push(field);
1871
- return this;
1823
+ get pattern() {
1824
+ return this._pattern;
1872
1825
  }
1873
- copy() {
1874
- const group = new FieldGroupDescriptor(this._editor, this.name.substring(this.baseName.length));
1875
- group._title = this._title;
1876
- group._fields = this.fields.map(f => f.copy());
1877
- return group;
1826
+ get mask() {
1827
+ return this._mask;
1878
1828
  }
1879
- }
1880
-
1881
- class FieldValidator {
1882
- constructor(name, expression, message, options) {
1883
- this._name = name;
1884
- this._expression = expression;
1885
- this._message = message;
1886
- this._options = options;
1829
+ get slotChar() {
1830
+ return this._slotChar;
1887
1831
  }
1888
- get name() {
1889
- return this._name;
1832
+ get customComponentName() {
1833
+ return this._customComponentName;
1890
1834
  }
1891
- get expression() {
1892
- return this._expression;
1835
+ asHidden() {
1836
+ this._fieldType = FieldInputDescriptor.TypeEnum.Hidden;
1837
+ return this;
1893
1838
  }
1894
- get message() {
1895
- return this._message;
1839
+ asText(minLength, maxLength, pattern, isEmail) {
1840
+ this._fieldType = FieldInputDescriptor.TypeEnum.Text;
1841
+ this._minLength = minLength;
1842
+ this._maxLength = maxLength;
1843
+ this._pattern = pattern;
1844
+ if (isEmail) {
1845
+ this.withValidator('email', control => !Validators.email(control));
1846
+ }
1847
+ return this;
1896
1848
  }
1897
- get options() {
1898
- return this._options;
1849
+ asTextarea(rows = 3, minLength, maxLength, pattern) {
1850
+ this._fieldType = FieldInputDescriptor.TypeEnum.Textarea;
1851
+ this._rows = rows;
1852
+ this._minLength = minLength;
1853
+ this._maxLength = maxLength;
1854
+ this._pattern = pattern;
1855
+ return this;
1899
1856
  }
1900
- }
1901
-
1902
- class ModelDescriptor {
1903
- constructor(modelType, idProperty, titleProperty) {
1904
- var _a, _b;
1905
- this._type = modelType;
1906
- this._idPropertyName = (_a = idProperty !== null && idProperty !== void 0 ? idProperty : ModelUtil.findIdAttribute(modelType)) !== null && _a !== void 0 ? _a : undefined;
1907
- this._titlePropertyName = (_b = titleProperty !== null && titleProperty !== void 0 ? titleProperty : ModelUtil.findTitleAttribute(modelType)) !== null && _b !== void 0 ? _b : undefined;
1908
- this._typeName = TypeUtil.findTypeName(this._type);
1857
+ asNumber(step, min, max, minFractionDigits, maxFractionDigits, numberUseGrouping = true) {
1858
+ this._fieldType = FieldInputDescriptor.TypeEnum.Number;
1859
+ this._numberStep = step;
1860
+ this._numberMinFractionDigits = minFractionDigits;
1861
+ this._numberMaxFractionDigits = maxFractionDigits;
1862
+ this._numberMin = min !== null && min !== void 0 ? min : Number.MIN_SAFE_INTEGER;
1863
+ this._numberMax = max !== null && max !== void 0 ? max : Number.MAX_SAFE_INTEGER;
1864
+ this._numberUseGrouping = numberUseGrouping;
1865
+ return this;
1909
1866
  }
1910
- get type() {
1911
- return this._type;
1867
+ asSwitch() {
1868
+ this._fieldType = FieldInputDescriptor.TypeEnum.Switch;
1869
+ return this;
1912
1870
  }
1913
- get typeName() {
1914
- return this._typeName;
1871
+ asRadio(options, optionsTitlePath) {
1872
+ this._fieldType = FieldInputDescriptor.TypeEnum.Radio;
1873
+ this._radioOptions = options.map(o => ({ value: o, title: `${optionsTitlePath ? `${optionsTitlePath}.` : ''}${o}` }));
1874
+ return this;
1915
1875
  }
1916
- get idPropertyName() {
1917
- return this._idPropertyName;
1876
+ asRadioFromEnum(enumType, optionsTitlePath, values, nameAsValue = false) {
1877
+ this._fieldType = FieldInputDescriptor.TypeEnum.Radio;
1878
+ if (typeof optionsTitlePath === 'undefined') {
1879
+ optionsTitlePath = TypeUtil.findEnumName(enumType);
1880
+ }
1881
+ this._radioOptions = Array.isArray(values)
1882
+ ? EnumUtil.fromValuesAsEnumValueArray(enumType, values, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined)
1883
+ : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined);
1884
+ return this;
1918
1885
  }
1919
- get titlePropertyName() {
1920
- return this._titlePropertyName;
1886
+ asDatePicker(format, min, max, showTime) {
1887
+ this._fieldType = FieldInputDescriptor.TypeEnum.Datepicker;
1888
+ this._datePickerFormat = format ? format : 'dd.mm.yy';
1889
+ this._datePickerMin = min;
1890
+ this._datePickerMax = max;
1891
+ this._datePickerShowTime = showTime !== null && showTime !== void 0 ? showTime : false;
1892
+ return this;
1921
1893
  }
1922
- withIdPropertyName(idProperty) {
1923
- this._idPropertyName = idProperty;
1894
+ asMask(mask, slotChar) {
1895
+ this._fieldType = FieldInputDescriptor.TypeEnum.Mask;
1896
+ this._mask = mask;
1897
+ this._slotChar = slotChar;
1924
1898
  return this;
1925
1899
  }
1926
- withTitlePropertyName(titleProperty) {
1927
- this._titlePropertyName = titleProperty;
1900
+ asCustomComponent(customComponentName) {
1901
+ this._fieldType = FieldInputDescriptor.TypeEnum.Custom;
1902
+ this._customComponentName = customComponentName;
1928
1903
  return this;
1929
1904
  }
1930
1905
  copy() {
1931
- const model = new ModelDescriptor(this._type, this._idPropertyName, this._titlePropertyName);
1932
- return model;
1906
+ const field = new FieldInputDescriptor(this._editor, this._property);
1907
+ this.copyFieldsTo(field);
1908
+ field._fieldType = this._fieldType;
1909
+ field._rows = this._rows;
1910
+ field._numberMin = this._numberMin;
1911
+ field._numberMax = this._numberMax;
1912
+ field._numberStep = this._numberStep;
1913
+ field._numberMinFractionDigits = this._numberMinFractionDigits;
1914
+ field._numberMaxFractionDigits = this._numberMaxFractionDigits;
1915
+ field._numberUseGrouping = this._numberUseGrouping;
1916
+ field._radioOptions = [...this._radioOptions];
1917
+ field._datePickerFormat = this._datePickerFormat;
1918
+ field._datePickerMin = this._datePickerMin;
1919
+ field._datePickerMax = this._datePickerMax;
1920
+ field._datePickerShowTime = this._datePickerShowTime;
1921
+ field._maxLength = this._maxLength;
1922
+ field._minLength = this._minLength;
1923
+ field._pattern = this._pattern;
1924
+ field._mask = this._mask;
1925
+ field._slotChar = this._slotChar;
1926
+ field._customComponentName = this._customComponentName;
1927
+ return field;
1933
1928
  }
1934
1929
  }
1935
-
1936
- class TableDescriptor {
1937
- constructor(modelType, idProperty, titleProperty) {
1938
- this._filterDisplay = TableDescriptor.FilterDisplayEnum.Menu;
1939
- this._paginationMode = TableDescriptor.PaginationModeEnum.Pagination;
1940
- this._columns = [];
1941
- this._hideHeader = false;
1942
- this._hasDefaultSort = false;
1943
- this._defaultSortProperty = [];
1944
- this._defaultSortAsc = [];
1945
- this._rowHeight = 45;
1946
- this._tableFullHeightOffset = 315;
1947
- this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
1930
+ (function (FieldInputDescriptor) {
1931
+ let TypeEnum;
1932
+ (function (TypeEnum) {
1933
+ TypeEnum[TypeEnum["Hidden"] = 0] = "Hidden";
1934
+ TypeEnum[TypeEnum["Text"] = 1] = "Text";
1935
+ TypeEnum[TypeEnum["Textarea"] = 2] = "Textarea";
1936
+ TypeEnum[TypeEnum["Number"] = 3] = "Number";
1937
+ TypeEnum[TypeEnum["Switch"] = 4] = "Switch";
1938
+ TypeEnum[TypeEnum["Radio"] = 5] = "Radio";
1939
+ TypeEnum[TypeEnum["Datepicker"] = 6] = "Datepicker";
1940
+ TypeEnum[TypeEnum["Mask"] = 7] = "Mask";
1941
+ TypeEnum[TypeEnum["Custom"] = 8] = "Custom";
1942
+ })(TypeEnum = FieldInputDescriptor.TypeEnum || (FieldInputDescriptor.TypeEnum = {}));
1943
+ })(FieldInputDescriptor || (FieldInputDescriptor = {}));
1944
+ class FieldLookupDescriptor extends AFieldDescriptor {
1945
+ constructor(editor, property, modelType) {
1946
+ super(editor, property);
1947
+ this._lookupType = FieldLookupDescriptor.LookupTypeEnum.Dropdown;
1948
+ this._itemsLabelTranslate = false;
1949
+ this._dropdownClassName = 'mng-filter-lookup-dropdown';
1950
+ this._autocompleteOpenOnFocus = false;
1951
+ this._autocompleteInlineSearch = false;
1952
+ this._modelType = modelType;
1953
+ ModelUtil.trySetLookupItemsProperties(this);
1948
1954
  }
1949
- get filterDisplay() {
1950
- return this._filterDisplay;
1955
+ get lookupType() {
1956
+ return this._lookupType;
1951
1957
  }
1952
- get paginationMode() {
1953
- return this._paginationMode;
1958
+ get itemsLabelProperty() {
1959
+ return this._itemsLabelProperty;
1954
1960
  }
1955
- get columns() {
1956
- return this._columns;
1961
+ get itemsLabelTranslate() {
1962
+ return this._itemsLabelTranslate;
1957
1963
  }
1958
- get title() {
1959
- return this._title;
1964
+ get itemsValueProperty() {
1965
+ return this._itemsValueProperty;
1960
1966
  }
1961
- get hideHeader() {
1962
- return this._hideHeader;
1967
+ get itemsDisabledProperty() {
1968
+ return this._itemsDisabledProperty;
1963
1969
  }
1964
1970
  get dataKeyProperty() {
1965
1971
  return this._dataKeyProperty;
1966
1972
  }
1967
- get hasDefaultSort() {
1968
- return this._hasDefaultSort;
1969
- }
1970
- get defaultSortProperty() {
1971
- return this._defaultSortProperty;
1972
- }
1973
- get defaultSortAsc() {
1974
- return this._defaultSortAsc;
1975
- }
1976
- get rowHeight() {
1977
- return this._rowHeight;
1978
- }
1979
- get tableFullHeightOffset() {
1980
- return this._tableFullHeightOffset;
1981
- }
1982
- get model() {
1983
- return this._model;
1984
- }
1985
- addColumnDescriptor(column) {
1986
- this._columns.push(column);
1987
- this.setDataKeyFromColumn();
1988
- return this;
1989
- }
1990
- addColumn(property) {
1991
- const column = new ColumnDescriptor(this, property);
1992
- this._columns.push(column);
1993
- this.setDataKeyFromColumn();
1994
- return column;
1973
+ get dataProvider() {
1974
+ return this._dataProvider;
1995
1975
  }
1996
- addColumnNumber(property, displayFormat) {
1997
- const column = new ColumnDescriptor(this, property);
1998
- column.asNumber(displayFormat);
1999
- this._columns.push(column);
2000
- this.setDataKeyFromColumn();
2001
- return column;
1976
+ get autocompleteOpenOnFocus() {
1977
+ return this._autocompleteOpenOnFocus;
2002
1978
  }
2003
- addColumnDate(property, displayFormat) {
2004
- const column = new ColumnDescriptor(this, property);
2005
- column.asDate(displayFormat);
2006
- this._columns.push(column);
2007
- this.setDataKeyFromColumn();
2008
- return column;
1979
+ get autocompleteInlineSearch() {
1980
+ return this._autocompleteInlineSearch;
2009
1981
  }
2010
- addColumnBoolean(property, yes, no, asIcon = false) {
2011
- const column = new ColumnDescriptor(this, property);
2012
- column.asBoolean(yes, no, asIcon);
2013
- this._columns.push(column);
2014
- this.setDataKeyFromColumn();
2015
- return column;
1982
+ get dropdownClassName() {
1983
+ return this._dropdownClassName;
2016
1984
  }
2017
- addColumnEnum(property, enumType, nameAsValue = false, titlePath) {
2018
- const column = new ColumnDescriptor(this, property);
2019
- column.asEnum(enumType, nameAsValue, titlePath);
2020
- this._columns.push(column);
2021
- this.setDataKeyFromColumn();
2022
- return column;
1985
+ get modelType() {
1986
+ return this._modelType;
2023
1987
  }
2024
- addColumnObject(property, modelType, displayProperty) {
2025
- const column = new ColumnDescriptor(this, property);
2026
- column.withModelType(modelType);
2027
- column.withDisplayPropertyPath(displayProperty);
2028
- this._columns.push(column);
2029
- this.setDataKeyFromColumn();
2030
- return column;
1988
+ get dialogTableDescriptor() {
1989
+ return this._dialogTableDescriptor;
2031
1990
  }
2032
- withFilterDisplay(filterDisplayType) {
2033
- this._filterDisplay = filterDisplayType;
2034
- return this;
1991
+ get dialogTableDataProvider() {
1992
+ return this._dialogTableDataProvider;
2035
1993
  }
2036
- withPaginationMode(paginationMode) {
2037
- this._paginationMode = paginationMode;
1994
+ withItemsLabelProperty(itemsLabelProperty, translate = false) {
1995
+ this._itemsLabelProperty = itemsLabelProperty;
1996
+ this._itemsLabelTranslate = translate;
2038
1997
  return this;
2039
1998
  }
2040
- withTitle(title) {
2041
- this._title = title;
1999
+ withItemsValueProperty(itemsValueProperty) {
2000
+ this._itemsValueProperty = itemsValueProperty;
2001
+ this._dataKeyProperty = undefined;
2042
2002
  return this;
2043
2003
  }
2044
- withHideHeader(hideHeader = true) {
2045
- this._hideHeader = hideHeader;
2004
+ withItemsDisabledProperty(itemsDisabledProperty) {
2005
+ this._itemsDisabledProperty = itemsDisabledProperty;
2046
2006
  return this;
2047
2007
  }
2048
2008
  withDataKeyProperty(property) {
2049
2009
  this._dataKeyProperty = property;
2010
+ this._itemsValueProperty = undefined;
2050
2011
  return this;
2051
2012
  }
2052
- withDefaultSort(property, asc = true) {
2053
- this._hasDefaultSort = true;
2054
- this._defaultSortProperty.push(property);
2055
- this._defaultSortAsc.push(asc);
2013
+ withLookup(lookup, serviceType) {
2014
+ const dataProvider = new LookupDataProvider(this._modelType);
2015
+ if (serviceType) {
2016
+ dataProvider.withServiceType(serviceType);
2017
+ }
2018
+ dataProvider.withLookup(lookup);
2019
+ this._dataProvider = dataProvider;
2056
2020
  return this;
2057
2021
  }
2058
- withRowHeight(rowHeight) {
2059
- this._rowHeight = rowHeight;
2022
+ withLookupDataProvider(dataProvider) {
2023
+ this._dataProvider = dataProvider;
2060
2024
  return this;
2061
2025
  }
2062
- withTableFullHeightOffset(tableFullHeightOffset) {
2063
- this._tableFullHeightOffset = tableFullHeightOffset;
2026
+ withConfig(config) {
2027
+ return super.withConfig(config);
2028
+ }
2029
+ asAutocomplete(openOnFocus = false, inlineSearch = false) {
2030
+ this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Autocomplete;
2031
+ this._autocompleteOpenOnFocus = openOnFocus;
2032
+ this._autocompleteInlineSearch = inlineSearch;
2033
+ return this;
2034
+ }
2035
+ asDialog(lookupTableDescriptor, tableDataProvider) {
2036
+ this._lookupType = FieldLookupDescriptor.LookupTypeEnum.Dialog;
2037
+ this._dialogTableDescriptor = lookupTableDescriptor;
2038
+ this._dialogTableDataProvider = tableDataProvider;
2064
2039
  return this;
2065
2040
  }
2066
2041
  copy() {
2067
- const descriptor = new TableDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
2068
- descriptor._columns = this.columns.map(c => c.copy());
2069
- descriptor._title = this._title;
2070
- descriptor._hideHeader = this._hideHeader;
2071
- descriptor._dataKeyProperty = this._dataKeyProperty;
2072
- descriptor._defaultSortProperty = this._defaultSortProperty.map(p => p);
2073
- descriptor._defaultSortAsc = this._defaultSortAsc.map(p => p);
2074
- descriptor._filterDisplay = this._filterDisplay;
2075
- return descriptor;
2042
+ const field = new FieldLookupDescriptor(this._editor, this._property, this._modelType);
2043
+ this.copyFieldsTo(field);
2044
+ field._lookupType = this._lookupType;
2045
+ field._itemsLabelProperty = this._itemsLabelProperty;
2046
+ field._itemsLabelTranslate = this._itemsLabelTranslate;
2047
+ field._itemsValueProperty = this._itemsValueProperty;
2048
+ field._itemsDisabledProperty = this._itemsDisabledProperty;
2049
+ field._dataKeyProperty = this._dataKeyProperty;
2050
+ field._dataProvider = this._dataProvider;
2051
+ field._dropdownClassName = this._dropdownClassName;
2052
+ field._autocompleteOpenOnFocus = this._autocompleteOpenOnFocus;
2053
+ field._autocompleteInlineSearch = this._autocompleteInlineSearch;
2054
+ field._dialogTableDescriptor = this._dialogTableDescriptor;
2055
+ return field;
2076
2056
  }
2077
- setDataKeyFromColumn() {
2078
- if (!this._dataKeyProperty && this._columns.length === 1) {
2079
- this._dataKeyProperty = this._columns[0].property;
2057
+ }
2058
+ (function (FieldLookupDescriptor) {
2059
+ let LookupTypeEnum;
2060
+ (function (LookupTypeEnum) {
2061
+ LookupTypeEnum[LookupTypeEnum["Dropdown"] = 0] = "Dropdown";
2062
+ LookupTypeEnum[LookupTypeEnum["Autocomplete"] = 1] = "Autocomplete";
2063
+ LookupTypeEnum[LookupTypeEnum["Dialog"] = 2] = "Dialog";
2064
+ })(LookupTypeEnum = FieldLookupDescriptor.LookupTypeEnum || (FieldLookupDescriptor.LookupTypeEnum = {}));
2065
+ })(FieldLookupDescriptor || (FieldLookupDescriptor = {}));
2066
+ class FieldLookupEnumDescriptor extends FieldLookupDescriptor {
2067
+ constructor(editor, property, enumType, options, nameAsValue = false, optionsTitlePath) {
2068
+ super(editor, property, null);
2069
+ this._nameAsValue = false;
2070
+ this._enumType = enumType;
2071
+ this._nameAsValue = nameAsValue;
2072
+ if (typeof optionsTitlePath === 'undefined') {
2073
+ optionsTitlePath = TypeUtil.findEnumName(enumType);
2074
+ }
2075
+ this._optionEnumValues = Array.isArray(options)
2076
+ ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined)
2077
+ : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined);
2078
+ const dataProvider = new LookupDataProvider(null).withLookup(() => of(this._optionEnumValues));
2079
+ this.withLookupDataProvider(dataProvider);
2080
+ this.withItemsLabelProperty('title', optionsTitlePath !== null);
2081
+ this.withItemsValueProperty('value');
2082
+ this.withItemsDisabledProperty('disabled');
2083
+ }
2084
+ get enumType() {
2085
+ return this._enumType;
2086
+ }
2087
+ withDisabledOptions(...disabledOptions) {
2088
+ for (const disabledOption of disabledOptions) {
2089
+ const disabledOptionValue = this._nameAsValue ? EnumUtil.getConstantName(this._enumType, disabledOption) : disabledOption;
2090
+ if (disabledOptionValue) {
2091
+ const option = this._optionEnumValues.find(o => o.value === disabledOptionValue);
2092
+ if (option) {
2093
+ option.disabled = true;
2094
+ }
2095
+ }
2080
2096
  }
2097
+ return this;
2098
+ }
2099
+ asAutocomplete(openOnFocus = true) {
2100
+ super.asAutocomplete(openOnFocus, true);
2101
+ return this;
2102
+ }
2103
+ copy() {
2104
+ const field = new FieldLookupEnumDescriptor(this._editor, this._property, this._enumType, []);
2105
+ this.copyFieldsTo(field);
2106
+ field._lookupType = this._lookupType;
2107
+ field._itemsLabelProperty = this._itemsLabelProperty;
2108
+ field._itemsValueProperty = this._itemsValueProperty;
2109
+ field._itemsDisabledProperty = this._itemsDisabledProperty;
2110
+ field._dataKeyProperty = this._dataKeyProperty;
2111
+ field._dataProvider = this._dataProvider;
2112
+ return field;
2081
2113
  }
2082
2114
  }
2083
- (function (TableDescriptor) {
2084
- let PaginationModeEnum;
2085
- (function (PaginationModeEnum) {
2086
- PaginationModeEnum[PaginationModeEnum["Pagination"] = 0] = "Pagination";
2087
- PaginationModeEnum[PaginationModeEnum["InfiniteScroll"] = 1] = "InfiniteScroll";
2088
- })(PaginationModeEnum = TableDescriptor.PaginationModeEnum || (TableDescriptor.PaginationModeEnum = {}));
2089
- let FilterDisplayEnum;
2090
- (function (FilterDisplayEnum) {
2091
- FilterDisplayEnum[FilterDisplayEnum["Row"] = 0] = "Row";
2092
- FilterDisplayEnum[FilterDisplayEnum["Menu"] = 1] = "Menu";
2093
- })(FilterDisplayEnum = TableDescriptor.FilterDisplayEnum || (TableDescriptor.FilterDisplayEnum = {}));
2094
- })(TableDescriptor || (TableDescriptor = {}));
2095
- class ColumnDescriptor {
2096
- constructor(table, property) {
2097
- this._modelType = null;
2098
- this._columnType = ColumnDescriptor.TypeEnum.String;
2099
- this._isSortEnabled = false;
2100
- this._enumNameAsValue = false;
2101
- // boolean specifics
2102
- this._booleanAsIcon = false;
2103
- this._table = table;
2104
- this._property = property;
2115
+ class FieldManyToManyEditorDescriptor extends AFieldDescriptor {
2116
+ constructor(editor, property, mainTableDescriptor, lookupTableDescriptor) {
2117
+ super(editor, property);
2118
+ this._fieldType = FieldManyToManyEditorDescriptor.TypeEnum.DialogTableMultiselect;
2119
+ this._lookupTableDataProvider = null;
2120
+ this._actions = [];
2121
+ this._hasLookupExcludeValues = false;
2122
+ this._excludeFilterProperty = '';
2123
+ this._excludeValueProperty = '';
2124
+ this._mainTableDescriptor = mainTableDescriptor;
2125
+ this._lookupTableDescriptor = lookupTableDescriptor;
2126
+ this._actions.push(FieldManyToManyEditorDescriptor.ActionEnum.Add, FieldManyToManyEditorDescriptor.ActionEnum.Delete);
2105
2127
  }
2106
- get modelType() {
2107
- return this._modelType;
2128
+ get fieldType() {
2129
+ return this._fieldType;
2108
2130
  }
2109
- get columnType() {
2110
- return this._columnType;
2131
+ get lookupTableDataProvider() {
2132
+ return this._lookupTableDataProvider;
2111
2133
  }
2112
- get title() {
2113
- return this._title;
2134
+ get actions() {
2135
+ return this._actions;
2114
2136
  }
2115
- get displayPropertyPath() {
2116
- return this._displayPropertyPath;
2137
+ get hasLookupExcludeValues() {
2138
+ return this._hasLookupExcludeValues;
2117
2139
  }
2118
- get isSortEnabled() {
2119
- return this._isSortEnabled;
2140
+ get excludeFilterProperty() {
2141
+ return this._excludeFilterProperty;
2120
2142
  }
2121
- get filterDescriptor() {
2122
- return this._filterDescriptor;
2143
+ get excludeValueProperty() {
2144
+ return this._excludeValueProperty;
2123
2145
  }
2124
- get displayFormat() {
2125
- return this._displayFormat;
2146
+ get mainTableDescriptor() {
2147
+ return this._mainTableDescriptor;
2126
2148
  }
2127
- get table() {
2128
- return this._table;
2149
+ get lookupTableDescriptor() {
2150
+ return this._lookupTableDescriptor;
2129
2151
  }
2130
- get property() {
2131
- return this._property;
2152
+ withLookup(getAll, serviceType) {
2153
+ const dataProvider = new TableviewDataProvider(this._mainTableDescriptor.model.type);
2154
+ if (serviceType) {
2155
+ dataProvider.withServiceType(serviceType);
2156
+ }
2157
+ dataProvider.withGetAll(getAll);
2158
+ this._lookupTableDataProvider = dataProvider;
2159
+ return this;
2132
2160
  }
2133
- get enumType() {
2134
- return this._enumType;
2161
+ withLookupDataProvider(dataProvider) {
2162
+ this._lookupTableDataProvider = dataProvider;
2163
+ return this;
2135
2164
  }
2136
- get enumTitlePath() {
2137
- return this._enumTitlePath;
2165
+ withActions(actions = []) {
2166
+ this.actions.push(...actions);
2167
+ return this;
2138
2168
  }
2139
- get enumNameAsValue() {
2140
- return this._enumNameAsValue;
2169
+ withLookupExclude(filterProperty, valueProperty, hasLookupExclude = true) {
2170
+ this._hasLookupExcludeValues = hasLookupExclude;
2171
+ this._excludeFilterProperty = filterProperty;
2172
+ this._excludeValueProperty = valueProperty;
2173
+ return this;
2141
2174
  }
2142
- get booleanAsIcon() {
2143
- return this._booleanAsIcon;
2175
+ copy() {
2176
+ const field = new FieldManyToManyEditorDescriptor(this._editor, this._property, this._mainTableDescriptor.copy(), this._lookupTableDescriptor.copy());
2177
+ this.copyFieldsTo(field);
2178
+ field._fieldType = this._fieldType;
2179
+ field._actions = this._actions.map(a => a);
2180
+ field._lookupTableDataProvider = this._lookupTableDataProvider;
2181
+ field._hasLookupExcludeValues = this._hasLookupExcludeValues;
2182
+ field._excludeFilterProperty = this._excludeFilterProperty;
2183
+ field._excludeValueProperty = this._excludeValueProperty;
2184
+ return field;
2144
2185
  }
2145
- get booleanYes() {
2146
- return this._booleanYes;
2186
+ }
2187
+ (function (FieldManyToManyEditorDescriptor) {
2188
+ let TypeEnum;
2189
+ (function (TypeEnum) {
2190
+ TypeEnum[TypeEnum["DialogTableMultiselect"] = 0] = "DialogTableMultiselect";
2191
+ })(TypeEnum = FieldManyToManyEditorDescriptor.TypeEnum || (FieldManyToManyEditorDescriptor.TypeEnum = {}));
2192
+ let ActionEnum;
2193
+ (function (ActionEnum) {
2194
+ ActionEnum[ActionEnum["Add"] = 0] = "Add";
2195
+ ActionEnum[ActionEnum["Delete"] = 1] = "Delete";
2196
+ })(ActionEnum = FieldManyToManyEditorDescriptor.ActionEnum || (FieldManyToManyEditorDescriptor.ActionEnum = {}));
2197
+ })(FieldManyToManyEditorDescriptor || (FieldManyToManyEditorDescriptor = {}));
2198
+ class FieldManyEditorDescriptor extends AFieldDescriptor {
2199
+ constructor(editor, property, tableviewDescriptor) {
2200
+ super(editor, property);
2201
+ this._fieldType = FieldManyEditorDescriptor.TypeEnum.DialogEditor;
2202
+ this._fieldActions = [];
2203
+ this._actions = [];
2204
+ // this._modelType = modelType;
2205
+ this._tableviewDescriptor = tableviewDescriptor;
2206
+ this._fieldActions.push(FieldManyEditorDescriptor.ActionEnum.View, FieldManyEditorDescriptor.ActionEnum.Add, FieldManyEditorDescriptor.ActionEnum.Edit, FieldManyEditorDescriptor.ActionEnum.Delete);
2147
2207
  }
2148
- get booleanNo() {
2149
- return this._booleanNo;
2208
+ get fieldType() {
2209
+ return this._fieldType;
2150
2210
  }
2151
- asType(type = ColumnDescriptor.TypeEnum.String) {
2152
- this._columnType = type;
2153
- return this;
2211
+ get fieldActions() {
2212
+ return this._fieldActions;
2154
2213
  }
2155
- asNumber(displayFormat = '1.0-0') {
2156
- this._columnType = ColumnDescriptor.TypeEnum.Number;
2157
- this._displayFormat = displayFormat;
2158
- return this;
2214
+ get actions() {
2215
+ return this._actions;
2159
2216
  }
2160
- asDate(displayFormat = 'dd.MM.yyyy') {
2161
- this._columnType = ColumnDescriptor.TypeEnum.Date;
2162
- this._displayFormat = displayFormat;
2163
- return this;
2217
+ get tableviewDescriptor() {
2218
+ return this._tableviewDescriptor;
2164
2219
  }
2165
- asBoolean(yes, no, asIcon = false) {
2166
- this._columnType = ColumnDescriptor.TypeEnum.Boolean;
2167
- this._booleanAsIcon = asIcon;
2168
- this._booleanYes = yes;
2169
- this._booleanNo = no;
2220
+ get tableDescriptor() {
2221
+ return this._tableviewDescriptor.table;
2222
+ }
2223
+ get editorForCreate() {
2224
+ return this._tableviewDescriptor.addEditor;
2225
+ }
2226
+ get editorForRead() {
2227
+ return this._tableviewDescriptor.viewEditor;
2228
+ }
2229
+ get editorForUpdate() {
2230
+ return this._tableviewDescriptor.editEditor;
2231
+ }
2232
+ withFieldAction(action) {
2233
+ this._fieldActions.push(action);
2170
2234
  return this;
2171
2235
  }
2172
- asEnum(enumType, nameAsValue = false, titlePath) {
2173
- this._columnType = ColumnDescriptor.TypeEnum.Enum;
2174
- this._enumType = enumType;
2175
- this._enumNameAsValue = nameAsValue;
2176
- if (typeof titlePath === 'undefined') {
2177
- titlePath = TypeUtil.findEnumName(enumType);
2178
- }
2179
- this._enumTitlePath = titlePath;
2236
+ withFieldActions(actions) {
2237
+ this._fieldActions = actions;
2180
2238
  return this;
2181
2239
  }
2182
- withModelType(modelType) {
2183
- this._modelType = modelType;
2240
+ withAction(action) {
2241
+ this._actions.push(action);
2184
2242
  return this;
2185
2243
  }
2244
+ copy() {
2245
+ const field = new FieldManyEditorDescriptor(this._editor, this._property, this._tableviewDescriptor.copy());
2246
+ this.copyFieldsTo(field);
2247
+ field._fieldType = this._fieldType;
2248
+ field._fieldActions = this._fieldActions.map(a => a);
2249
+ return field;
2250
+ }
2251
+ }
2252
+ (function (FieldManyEditorDescriptor) {
2253
+ let TypeEnum;
2254
+ (function (TypeEnum) {
2255
+ TypeEnum[TypeEnum["DialogEditor"] = 0] = "DialogEditor";
2256
+ })(TypeEnum = FieldManyEditorDescriptor.TypeEnum || (FieldManyEditorDescriptor.TypeEnum = {}));
2257
+ let ActionEnum;
2258
+ (function (ActionEnum) {
2259
+ ActionEnum[ActionEnum["View"] = 0] = "View";
2260
+ ActionEnum[ActionEnum["Add"] = 1] = "Add";
2261
+ ActionEnum[ActionEnum["Edit"] = 2] = "Edit";
2262
+ ActionEnum[ActionEnum["Delete"] = 3] = "Delete";
2263
+ })(ActionEnum = FieldManyEditorDescriptor.ActionEnum || (FieldManyEditorDescriptor.ActionEnum = {}));
2264
+ })(FieldManyEditorDescriptor || (FieldManyEditorDescriptor = {}));
2265
+ class AFieldGroupDescriptor extends AGenericFieldDescriptor {
2266
+ constructor(editor, name) {
2267
+ super(editor);
2268
+ this._fields = [];
2269
+ this._validators = [];
2270
+ this._name = `${this.baseName}${name}`;
2271
+ this._default = name === EditorDescriptor.defaultGroupName;
2272
+ }
2273
+ get title() {
2274
+ return this._title;
2275
+ }
2276
+ get validators() {
2277
+ return this._validators;
2278
+ }
2279
+ get baseName() {
2280
+ return `${this.groupName()}_`;
2281
+ }
2282
+ get name() {
2283
+ return this._name;
2284
+ }
2285
+ get default() {
2286
+ return this._default;
2287
+ }
2186
2288
  withTitle(title) {
2187
2289
  this._title = title;
2188
2290
  return this;
2189
2291
  }
2190
- withDisplayPropertyPath(displayPropertyPath) {
2191
- this._displayPropertyPath = displayPropertyPath;
2292
+ withValidator(name, expression) {
2293
+ this._validators.push(new FieldValidator(name, expression, undefined));
2192
2294
  return this;
2193
2295
  }
2194
- withFilter() {
2195
- this._filterDescriptor = new FilterDescriptor(this._property);
2196
- let filterType;
2197
- switch (this._columnType) {
2198
- case ColumnDescriptor.TypeEnum.Number:
2199
- filterType = FilterDescriptor.TypeEnum.Number;
2200
- break;
2201
- case ColumnDescriptor.TypeEnum.Boolean:
2202
- filterType = FilterDescriptor.TypeEnum.Boolean;
2203
- break;
2204
- case ColumnDescriptor.TypeEnum.Date:
2205
- filterType = FilterDescriptor.TypeEnum.Date;
2206
- break;
2207
- case ColumnDescriptor.TypeEnum.String:
2208
- default:
2209
- filterType = FilterDescriptor.TypeEnum.String;
2210
- break;
2211
- }
2212
- this._filterDescriptor.asFilterType(filterType);
2213
- return this._filterDescriptor;
2296
+ }
2297
+ class FieldTabGroupDescriptor extends AFieldGroupDescriptor {
2298
+ constructor(editor, name) {
2299
+ super(editor, name);
2214
2300
  }
2215
- withFilterLookup() {
2216
- const filterDescriptor = new FilterLookupDescriptor(this._property, this._modelType);
2217
- this._filterDescriptor = filterDescriptor;
2218
- return filterDescriptor;
2301
+ get fields() {
2302
+ return this._fields;
2219
2303
  }
2220
- withFilterLookupEnum(options) {
2221
- if (this._columnType !== ColumnDescriptor.TypeEnum.Enum || !this._enumType) {
2222
- throw new Error(`Column ${this._property} is not of type enum or enum type is undefined.`);
2223
- }
2224
- const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);
2225
- this._filterDescriptor = filterDescriptor;
2226
- return filterDescriptor;
2304
+ groupName() {
2305
+ return 'tab';
2227
2306
  }
2228
- withSort(isEnabled = true) {
2229
- this._isSortEnabled = isEnabled;
2307
+ addField(field) {
2308
+ this._fields.push(field);
2230
2309
  return this;
2231
2310
  }
2232
2311
  copy() {
2233
- var _a;
2234
- const descriptor = new ColumnDescriptor(this._table, this._property);
2235
- descriptor._displayPropertyPath = this._displayPropertyPath;
2236
- descriptor._title = this._title;
2237
- descriptor._isSortEnabled = this._isSortEnabled;
2238
- descriptor._columnType = this._columnType;
2239
- descriptor._filterDescriptor = (_a = this._filterDescriptor) === null || _a === void 0 ? void 0 : _a.copy();
2240
- descriptor._enumType = this._enumType;
2241
- descriptor._enumTitlePath = this._enumTitlePath;
2242
- descriptor._enumNameAsValue = this._enumNameAsValue;
2243
- descriptor._booleanAsIcon = this._booleanAsIcon;
2244
- descriptor._booleanYes = this._booleanYes;
2245
- descriptor._booleanNo = this._booleanNo;
2246
- return descriptor;
2312
+ const tab = new FieldTabGroupDescriptor(this._editor, this.name.substring(this.baseName.length));
2313
+ tab._title = this._title;
2314
+ tab._fields = this.fields.map(f => f.copy());
2315
+ return tab;
2316
+ }
2317
+ }
2318
+ class FieldGroupDescriptor extends AFieldGroupDescriptor {
2319
+ constructor(editor, name) {
2320
+ super(editor, name);
2321
+ }
2322
+ get fields() {
2323
+ return this._fields;
2324
+ }
2325
+ groupName() {
2326
+ return 'group';
2327
+ }
2328
+ addField(field) {
2329
+ this._fields.push(field);
2330
+ return this;
2331
+ }
2332
+ copy() {
2333
+ const group = new FieldGroupDescriptor(this._editor, this.name.substring(this.baseName.length));
2334
+ group._title = this._title;
2335
+ group._fields = this.fields.map(f => f.copy());
2336
+ return group;
2247
2337
  }
2248
2338
  }
2249
- (function (ColumnDescriptor) {
2250
- let TypeEnum;
2251
- (function (TypeEnum) {
2252
- TypeEnum[TypeEnum["String"] = 0] = "String";
2253
- TypeEnum[TypeEnum["Number"] = 1] = "Number";
2254
- TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
2255
- TypeEnum[TypeEnum["Date"] = 3] = "Date";
2256
- TypeEnum[TypeEnum["Enum"] = 4] = "Enum";
2257
- })(TypeEnum = ColumnDescriptor.TypeEnum || (ColumnDescriptor.TypeEnum = {}));
2258
- })(ColumnDescriptor || (ColumnDescriptor = {}));
2259
- class FilterDescriptor {
2260
- constructor(property) {
2261
- this._filterType = FilterDescriptor.TypeEnum.String;
2262
- this._matchModes = null;
2263
- this._className = '';
2264
- this._property = property;
2339
+
2340
+ class FieldValidator {
2341
+ constructor(name, expression, message, options) {
2342
+ this._name = name;
2343
+ this._expression = expression;
2344
+ this._message = message;
2345
+ this._options = options;
2265
2346
  }
2266
- get filterType() {
2267
- return this._filterType;
2347
+ get name() {
2348
+ return this._name;
2268
2349
  }
2269
- get filterProperty() {
2270
- return this._filterProperty;
2350
+ get expression() {
2351
+ return this._expression;
2271
2352
  }
2272
- get matchModes() {
2273
- return this._matchModes;
2353
+ get message() {
2354
+ return this._message;
2274
2355
  }
2275
- get placeholder() {
2276
- return this._placeholder;
2356
+ get options() {
2357
+ return this._options;
2277
2358
  }
2278
- get className() {
2279
- return this._className;
2359
+ }
2360
+
2361
+ class ModelDescriptor {
2362
+ constructor(modelType, idProperty, titleProperty) {
2363
+ var _a, _b;
2364
+ this._type = modelType;
2365
+ this._idPropertyName = (_a = idProperty !== null && idProperty !== void 0 ? idProperty : ModelUtil.findIdAttribute(modelType)) !== null && _a !== void 0 ? _a : undefined;
2366
+ this._titlePropertyName = (_b = titleProperty !== null && titleProperty !== void 0 ? titleProperty : ModelUtil.findTitleAttribute(modelType)) !== null && _b !== void 0 ? _b : undefined;
2367
+ this._typeName = TypeUtil.findTypeName(this._type);
2280
2368
  }
2281
- get property() {
2282
- return this._property;
2369
+ get type() {
2370
+ return this._type;
2283
2371
  }
2284
- asFilterType(filterType) {
2285
- this._filterType = filterType;
2286
- return this;
2372
+ get typeName() {
2373
+ return this._typeName;
2287
2374
  }
2288
- /**
2289
- * Sets different filter property name instead of default property. Use this if API requires different property provided to perform correct filter.
2290
- * @param filterProperty
2291
- */
2292
- withFilterProperty(filterProperty) {
2293
- this._filterProperty = filterProperty;
2294
- return this;
2375
+ get idPropertyName() {
2376
+ return this._idPropertyName;
2295
2377
  }
2296
- withPlaceholder(placeholder) {
2297
- this._placeholder = placeholder;
2298
- return this;
2378
+ get titlePropertyName() {
2379
+ return this._titlePropertyName;
2299
2380
  }
2300
- withClassName(className) {
2301
- this._className = className;
2381
+ withIdPropertyName(idProperty) {
2382
+ this._idPropertyName = idProperty;
2302
2383
  return this;
2303
2384
  }
2304
- withMatchModes(matchModes) {
2305
- this._matchModes = matchModes;
2385
+ withTitlePropertyName(titleProperty) {
2386
+ this._titlePropertyName = titleProperty;
2306
2387
  return this;
2307
2388
  }
2308
2389
  copy() {
2309
- const descriptor = new FilterDescriptor(this._property);
2310
- this.copyFieldsTo(descriptor);
2311
- return descriptor;
2312
- }
2313
- copyFieldsTo(descriptor) {
2314
- descriptor._filterType = this._filterType;
2315
- descriptor._filterProperty = this._filterProperty;
2316
- descriptor._placeholder = this._placeholder;
2317
- descriptor._className = this._className;
2390
+ const model = new ModelDescriptor(this._type, this._idPropertyName, this._titlePropertyName);
2391
+ return model;
2318
2392
  }
2319
2393
  }
2320
- (function (FilterDescriptor) {
2321
- let TypeEnum;
2322
- (function (TypeEnum) {
2323
- TypeEnum[TypeEnum["String"] = 0] = "String";
2324
- TypeEnum[TypeEnum["Number"] = 1] = "Number";
2325
- TypeEnum[TypeEnum["Boolean"] = 2] = "Boolean";
2326
- TypeEnum[TypeEnum["Date"] = 3] = "Date";
2327
- TypeEnum[TypeEnum["Lookup"] = 4] = "Lookup";
2328
- TypeEnum[TypeEnum["LookupEnum"] = 5] = "LookupEnum";
2329
- })(TypeEnum = FilterDescriptor.TypeEnum || (FilterDescriptor.TypeEnum = {}));
2330
- let MatchModeEnum;
2331
- (function (MatchModeEnum) {
2332
- MatchModeEnum["StartsWith"] = "startsWith";
2333
- MatchModeEnum["Contains"] = "contains";
2334
- MatchModeEnum["EndsWith"] = "endsWith";
2335
- MatchModeEnum["Equals"] = "equals";
2336
- MatchModeEnum["NotEquals"] = "notEquals";
2337
- MatchModeEnum["In"] = "in";
2338
- MatchModeEnum["LessThan"] = "lt";
2339
- MatchModeEnum["LessThanOrEqualTo"] = "lte";
2340
- MatchModeEnum["GreaterThan"] = "gt";
2341
- MatchModeEnum["GreaterThanOrEqualTo"] = "gte";
2342
- MatchModeEnum["Between"] = "between";
2343
- MatchModeEnum["DateIs"] = "dateIs";
2344
- MatchModeEnum["DateIsNot"] = "dateIsNot";
2345
- MatchModeEnum["DateBefore"] = "dateBefore";
2346
- MatchModeEnum["DateAfter"] = "dateAfter";
2347
- })(MatchModeEnum = FilterDescriptor.MatchModeEnum || (FilterDescriptor.MatchModeEnum = {}));
2348
- })(FilterDescriptor || (FilterDescriptor = {}));
2349
- class FilterLookupDescriptor extends FilterDescriptor {
2350
- constructor(property, modelType) {
2351
- super(property);
2352
- this._modelType = null;
2353
- this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Dropdown;
2354
- this._itemsLabelTranslate = false;
2355
- this._multiselect = false;
2356
- this._dropdownClassName = 'mng-filter-lookup-dropdown';
2357
- this._modelType = modelType;
2358
- this._filterType = FilterDescriptor.TypeEnum.Lookup;
2359
- ModelUtil.trySetLookupItemsProperties(this);
2394
+
2395
+ class TableDescriptor {
2396
+ constructor(modelType, idProperty, titleProperty) {
2397
+ this._filterDisplay = TableDescriptor.FilterDisplayEnum.Menu;
2398
+ this._paginationMode = TableDescriptor.PaginationModeEnum.Pagination;
2399
+ this._columns = [];
2400
+ this._hideHeader = false;
2401
+ this._hasDefaultSort = false;
2402
+ this._defaultSortProperty = [];
2403
+ this._defaultSortAsc = [];
2404
+ this._rowHeight = 45;
2405
+ this._tableFullHeightOffset = 315;
2406
+ this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
2360
2407
  }
2361
- get lookupType() {
2362
- return this._lookupType;
2408
+ get filterDisplay() {
2409
+ return this._filterDisplay;
2363
2410
  }
2364
- get dataProvider() {
2365
- return this._dataProvider;
2411
+ get paginationMode() {
2412
+ return this._paginationMode;
2366
2413
  }
2367
- get itemsLabelProperty() {
2368
- return this._itemsLabelProperty;
2414
+ get columns() {
2415
+ return this._columns;
2369
2416
  }
2370
- get itemsLabelTranslate() {
2371
- return this._itemsLabelTranslate;
2417
+ get title() {
2418
+ return this._title;
2372
2419
  }
2373
- get itemsValueProperty() {
2374
- return this._itemsValueProperty;
2420
+ get hideHeader() {
2421
+ return this._hideHeader;
2375
2422
  }
2376
2423
  get dataKeyProperty() {
2377
2424
  return this._dataKeyProperty;
2378
2425
  }
2379
- get multiselect() {
2380
- return this._multiselect;
2426
+ get hasDefaultSort() {
2427
+ return this._hasDefaultSort;
2381
2428
  }
2382
- get dropdownClassName() {
2383
- return this._dropdownClassName;
2429
+ get defaultSortProperty() {
2430
+ return this._defaultSortProperty;
2384
2431
  }
2385
- get modelType() {
2386
- return this._modelType;
2432
+ get defaultSortAsc() {
2433
+ return this._defaultSortAsc;
2387
2434
  }
2388
- withItemsLabelProperty(itemsLabelProperty, translate = false) {
2389
- this._itemsLabelProperty = itemsLabelProperty;
2390
- this._itemsLabelTranslate = translate;
2435
+ get rowHeight() {
2436
+ return this._rowHeight;
2437
+ }
2438
+ get tableFullHeightOffset() {
2439
+ return this._tableFullHeightOffset;
2440
+ }
2441
+ get model() {
2442
+ return this._model;
2443
+ }
2444
+ addColumnDescriptor(column) {
2445
+ this._columns.push(column);
2446
+ this.setDataKeyFromColumn();
2391
2447
  return this;
2392
2448
  }
2393
- withItemsValueProperty(itemsValueProperty) {
2394
- this._itemsValueProperty = itemsValueProperty;
2395
- this._dataKeyProperty = itemsValueProperty;
2449
+ addColumn(property) {
2450
+ const column = new ColumnDescriptor(this, property);
2451
+ this._columns.push(column);
2452
+ this.setDataKeyFromColumn();
2453
+ return column;
2454
+ }
2455
+ addColumnNumber(property, displayFormat) {
2456
+ const column = new ColumnDescriptor(this, property);
2457
+ column.asNumber(displayFormat);
2458
+ this._columns.push(column);
2459
+ this.setDataKeyFromColumn();
2460
+ return column;
2461
+ }
2462
+ addColumnDate(property, displayFormat) {
2463
+ const column = new ColumnDescriptor(this, property);
2464
+ column.asDate(displayFormat);
2465
+ this._columns.push(column);
2466
+ this.setDataKeyFromColumn();
2467
+ return column;
2468
+ }
2469
+ addColumnBoolean(property, yes, no, asIcon = false) {
2470
+ const column = new ColumnDescriptor(this, property);
2471
+ column.asBoolean(yes, no, asIcon);
2472
+ this._columns.push(column);
2473
+ this.setDataKeyFromColumn();
2474
+ return column;
2475
+ }
2476
+ addColumnEnum(property, enumType, nameAsValue = false, titlePath) {
2477
+ const column = new ColumnDescriptor(this, property);
2478
+ column.asEnum(enumType, nameAsValue, titlePath);
2479
+ this._columns.push(column);
2480
+ this.setDataKeyFromColumn();
2481
+ return column;
2482
+ }
2483
+ addColumnCustomComponent(property, customComponentType) {
2484
+ const column = new ColumnDescriptor(this, property);
2485
+ column.asCustomComponent(customComponentType);
2486
+ this._columns.push(column);
2487
+ this.setDataKeyFromColumn();
2488
+ return column;
2489
+ }
2490
+ withFilterDisplay(filterDisplayType) {
2491
+ this._filterDisplay = filterDisplayType;
2396
2492
  return this;
2397
2493
  }
2398
- withDataKeyProperty(dataKeyProperty) {
2399
- this._dataKeyProperty = dataKeyProperty;
2400
- this._itemsValueProperty = dataKeyProperty;
2494
+ withPaginationMode(paginationMode) {
2495
+ this._paginationMode = paginationMode;
2496
+ return this;
2497
+ }
2498
+ withTitle(title) {
2499
+ this._title = title;
2401
2500
  return this;
2402
2501
  }
2403
- withLookup(lookup, serviceType) {
2404
- const dataProvider = new LookupDataProvider(this._modelType);
2405
- if (serviceType) {
2406
- dataProvider.withServiceType(serviceType);
2407
- }
2408
- dataProvider.withLookup(lookup);
2409
- this._dataProvider = dataProvider;
2502
+ withHideHeader(hideHeader = true) {
2503
+ this._hideHeader = hideHeader;
2410
2504
  return this;
2411
2505
  }
2412
- withLookupDataProvider(dataProvider) {
2413
- this._dataProvider = dataProvider;
2506
+ withDataKeyProperty(property) {
2507
+ this._dataKeyProperty = property;
2414
2508
  return this;
2415
2509
  }
2416
- withMultiselect(multiselect = true) {
2417
- this._multiselect = multiselect;
2510
+ withDefaultSort(property, asc = true) {
2511
+ this._hasDefaultSort = true;
2512
+ this._defaultSortProperty.push(property);
2513
+ this._defaultSortAsc.push(asc);
2418
2514
  return this;
2419
2515
  }
2420
- withDropdownClassName(dropdownClassName) {
2421
- this._dropdownClassName = dropdownClassName;
2516
+ withRowHeight(rowHeight) {
2517
+ this._rowHeight = rowHeight;
2422
2518
  return this;
2423
2519
  }
2424
- asAutocomplete() {
2425
- this._lookupType = FilterLookupDescriptor.LookupTypeEnum.Autocomplete;
2520
+ withTableFullHeightOffset(tableFullHeightOffset) {
2521
+ this._tableFullHeightOffset = tableFullHeightOffset;
2426
2522
  return this;
2427
2523
  }
2428
2524
  copy() {
2429
- const descriptor = new FilterLookupDescriptor(this._property, this._modelType);
2430
- this.copyFieldsTo(descriptor);
2431
- return descriptor;
2432
- }
2433
- copyFieldsTo(descriptor) {
2434
- super.copyFieldsTo(descriptor);
2435
- descriptor._dataProvider = this._dataProvider;
2436
- descriptor._lookupType = this._lookupType;
2437
- descriptor._itemsLabelProperty = this._itemsLabelProperty;
2438
- descriptor._itemsLabelTranslate = this._itemsLabelTranslate;
2439
- descriptor._itemsValueProperty = this._itemsValueProperty;
2525
+ const descriptor = new TableDescriptor(this.model.type, this.model.idPropertyName, this.model.titlePropertyName);
2526
+ descriptor._columns = this.columns.map(c => c.copy());
2527
+ descriptor._title = this._title;
2528
+ descriptor._hideHeader = this._hideHeader;
2440
2529
  descriptor._dataKeyProperty = this._dataKeyProperty;
2530
+ descriptor._defaultSortProperty = this._defaultSortProperty.map(p => p);
2531
+ descriptor._defaultSortAsc = this._defaultSortAsc.map(p => p);
2532
+ descriptor._filterDisplay = this._filterDisplay;
2533
+ return descriptor;
2441
2534
  }
2442
- }
2443
- class FilterLookupEnumDescriptor extends FilterLookupDescriptor {
2444
- constructor(property, enumType, options, nameAsValue = false, optionsTitlePath) {
2445
- super(property, null);
2446
- this._enumType = enumType;
2447
- if (typeof optionsTitlePath === 'undefined') {
2448
- optionsTitlePath = TypeUtil.findEnumName(enumType);
2535
+ setDataKeyFromColumn() {
2536
+ if (!this._dataKeyProperty && this._columns.length === 1) {
2537
+ this._dataKeyProperty = this._columns[0].property;
2449
2538
  }
2450
- const optionEnumValues = Array.isArray(options)
2451
- ? EnumUtil.fromValuesAsEnumValueArray(enumType, options, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined)
2452
- : EnumUtil.fromConstantsAsEnumValueArray(enumType, nameAsValue, optionsTitlePath !== null && optionsTitlePath !== void 0 ? optionsTitlePath : undefined);
2453
- const dataProvider = new LookupDataProvider(null).withLookup(() => of(optionEnumValues));
2454
- this.withLookupDataProvider(dataProvider);
2455
- this.withItemsLabelProperty('title', optionsTitlePath !== null);
2456
- this.withItemsValueProperty('value');
2457
- }
2458
- get enumType() {
2459
- return this._enumType;
2460
- }
2461
- copy() {
2462
- const field = new FilterLookupEnumDescriptor(this._property, this._enumType, []);
2463
- this.copyFieldsTo(field);
2464
- return field;
2465
2539
  }
2466
2540
  }
2467
- (function (FilterLookupDescriptor) {
2468
- let LookupTypeEnum;
2469
- (function (LookupTypeEnum) {
2470
- LookupTypeEnum[LookupTypeEnum["Dropdown"] = 0] = "Dropdown";
2471
- LookupTypeEnum[LookupTypeEnum["Autocomplete"] = 1] = "Autocomplete";
2472
- })(LookupTypeEnum = FilterLookupDescriptor.LookupTypeEnum || (FilterLookupDescriptor.LookupTypeEnum = {}));
2473
- })(FilterLookupDescriptor || (FilterLookupDescriptor = {}));
2541
+ (function (TableDescriptor) {
2542
+ let PaginationModeEnum;
2543
+ (function (PaginationModeEnum) {
2544
+ PaginationModeEnum[PaginationModeEnum["Pagination"] = 0] = "Pagination";
2545
+ PaginationModeEnum[PaginationModeEnum["InfiniteScroll"] = 1] = "InfiniteScroll";
2546
+ })(PaginationModeEnum = TableDescriptor.PaginationModeEnum || (TableDescriptor.PaginationModeEnum = {}));
2547
+ let FilterDisplayEnum;
2548
+ (function (FilterDisplayEnum) {
2549
+ FilterDisplayEnum[FilterDisplayEnum["Row"] = 0] = "Row";
2550
+ FilterDisplayEnum[FilterDisplayEnum["Menu"] = 1] = "Menu";
2551
+ })(FilterDisplayEnum = TableDescriptor.FilterDisplayEnum || (TableDescriptor.FilterDisplayEnum = {}));
2552
+ })(TableDescriptor || (TableDescriptor = {}));
2474
2553
 
2475
2554
  var TableviewEditorTypeEnum = EditorDescriptor.TableviewEditorTypeEnum;
2476
2555
  class TableviewDescriptor {
@@ -2545,8 +2624,8 @@ class TableviewDescriptor {
2545
2624
  addColumnEnum(property, enumType, nameAsValue = false, titlePath) {
2546
2625
  return this._table.addColumnEnum(property, enumType, nameAsValue, titlePath);
2547
2626
  }
2548
- addColumnObject(property, modelType, displayProperty) {
2549
- return this._table.addColumnObject(property, modelType, displayProperty);
2627
+ addColumnCustomComponent(property, customComponentType) {
2628
+ return this._table.addColumnCustomComponent(property, customComponentType);
2550
2629
  }
2551
2630
  createTabGroup(name, title) {
2552
2631
  this._viewEditor.createTabGroup(name, title);
@@ -3043,14 +3122,10 @@ class ModelUtil {
3043
3122
  if (!attributes) {
3044
3123
  return null;
3045
3124
  }
3046
- let idAttribute = attributes.find(a => a.name === 'id');
3125
+ let idAttribute = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'id', 'uuid', 'code', 'sifra');
3047
3126
  if (!idAttribute) {
3048
- // if no id, try with code
3049
- idAttribute = attributes.find(a => a.name === 'code');
3050
- if (!idAttribute) {
3051
- // if no id or code, take the first attribute
3052
- idAttribute = attributes[0];
3053
- }
3127
+ // if no id or code, take the first attribute
3128
+ idAttribute = attributes[0];
3054
3129
  }
3055
3130
  return (_a = idAttribute === null || idAttribute === void 0 ? void 0 : idAttribute.name) !== null && _a !== void 0 ? _a : null;
3056
3131
  }
@@ -3061,17 +3136,22 @@ class ModelUtil {
3061
3136
  if (!attributes) {
3062
3137
  return null;
3063
3138
  }
3064
- let titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'name');
3139
+ let titleAttribute = ModelUtil.findAttributeByTypeAndName(attributes, 'string', 'name', 'ime', 'title', 'naziv');
3065
3140
  if (!titleAttribute) {
3066
- // if no name, try with title
3067
- titleAttribute = attributes.find(a => a.type === 'string' && a.name === 'title');
3068
- if (!titleAttribute) {
3069
- // if no name or title, take the first attribute
3070
- titleAttribute = attributes[0];
3071
- }
3141
+ // if no name or title, take the first attribute
3142
+ titleAttribute = attributes[0];
3072
3143
  }
3073
3144
  return (_a = titleAttribute === null || titleAttribute === void 0 ? void 0 : titleAttribute.name) !== null && _a !== void 0 ? _a : null;
3074
3145
  }
3146
+ static findAttributeByTypeAndName(attributes, type, ...names) {
3147
+ for (const name of names) {
3148
+ const attribute = attributes.find(a => a.type === type && a.name === name);
3149
+ if (attribute) {
3150
+ return attribute;
3151
+ }
3152
+ }
3153
+ return null;
3154
+ }
3075
3155
  static trySetLookupItemsProperties(lookup, idAsDataKey = true) {
3076
3156
  var _a;
3077
3157
  if (lookup.modelType) {
@@ -3368,6 +3448,9 @@ class ObjectSerializer {
3368
3448
  serializeClass(data, type) {
3369
3449
  return this.serialize(data, TypeUtil.findTypeName(type));
3370
3450
  }
3451
+ serializeClassArray(data, type) {
3452
+ return this.serialize(data, `Array<${TypeUtil.findTypeName(type)}>`);
3453
+ }
3371
3454
  serialize(data, type) {
3372
3455
  if (data == undefined) {
3373
3456
  return data;
@@ -3419,6 +3502,9 @@ class ObjectSerializer {
3419
3502
  deserializeClass(data, type) {
3420
3503
  return this.deserialize(data, TypeUtil.findTypeName(type));
3421
3504
  }
3505
+ deserializeClassArray(data, type) {
3506
+ return this.deserialize(data, `Array<${TypeUtil.findTypeName(type)}>`);
3507
+ }
3422
3508
  deserialize(data, type) {
3423
3509
  // polymorphism may change the actual type.
3424
3510
  type = this.findCorrectType(data, type);
@@ -3819,8 +3905,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
3819
3905
  }]
3820
3906
  }] });
3821
3907
 
3822
- class MngPropertyPathPipe {
3908
+ /**
3909
+ * Imitation of JSONPath Syntax. Supports:
3910
+ * - Root object notation with '$'
3911
+ * - Dot notation (e.g.: $.foo.bar), no bracket notation for properties
3912
+ * - Array notation (e.g.: [0])
3913
+ */
3914
+ class JsonPathPipe {
3823
3915
  transform(value, path = '') {
3916
+ if (path === '$') {
3917
+ // only return the root
3918
+ return value;
3919
+ }
3920
+ // Check for leading root object notation
3921
+ if (path.startsWith('$')) {
3922
+ path = path.substring(1);
3923
+ }
3924
+ // Check for leading .
3925
+ if (path.startsWith('.')) {
3926
+ path = path.substring(1);
3927
+ }
3824
3928
  if (path.indexOf('.') >= 0) {
3825
3929
  const pathSplit = path.split('.');
3826
3930
  let currValue = value;
@@ -3828,6 +3932,32 @@ class MngPropertyPathPipe {
3828
3932
  if (typeof currValue === 'undefined' || currValue === null) {
3829
3933
  return currValue;
3830
3934
  }
3935
+ if (!p.length) {
3936
+ // empty path, return current value
3937
+ return currValue;
3938
+ }
3939
+ const leftBracketIdx = p.indexOf('[');
3940
+ if (leftBracketIdx >= 0 && p.endsWith(']')) {
3941
+ // should be reference to array
3942
+ const arrayPath = p.substring(0, leftBracketIdx);
3943
+ const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);
3944
+ const array = currValue[arrayPath];
3945
+ console.log(arrayPath, arrayIdx, array);
3946
+ if (Array.isArray(array)) {
3947
+ if (arrayIdx >= 0 && arrayIdx < array.length) {
3948
+ // valid index, continue on the path
3949
+ currValue = array[arrayIdx];
3950
+ continue;
3951
+ }
3952
+ else {
3953
+ console.warn(`Path ${path} array index at ${p} is not within valid array range`, value);
3954
+ }
3955
+ }
3956
+ else {
3957
+ console.warn(`Path ${path} array at ${p} is not a valid array`, value);
3958
+ }
3959
+ return undefined;
3960
+ }
3831
3961
  else if (typeof currValue === 'object') {
3832
3962
  currValue = currValue[p];
3833
3963
  }
@@ -3839,16 +3969,16 @@ class MngPropertyPathPipe {
3839
3969
  return currValue;
3840
3970
  }
3841
3971
  else {
3842
- return typeof value === 'object' ? value[path] : value;
3972
+ return value[path];
3843
3973
  }
3844
3974
  }
3845
3975
  }
3846
- MngPropertyPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3847
- MngPropertyPathPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, name: "propertyPath" });
3848
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, decorators: [{
3976
+ JsonPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: JsonPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3977
+ JsonPathPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: JsonPathPipe, name: "jsonPath" });
3978
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: JsonPathPipe, decorators: [{
3849
3979
  type: Pipe,
3850
3980
  args: [{
3851
- name: 'propertyPath',
3981
+ name: 'jsonPath',
3852
3982
  pure: true
3853
3983
  }]
3854
3984
  }] });
@@ -4173,12 +4303,12 @@ class MngActionExecutorService {
4173
4303
  return this.errorMapper.toMngError(error, actionError);
4174
4304
  }
4175
4305
  }
4176
- MngActionExecutorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: i3$1.TranslateService }, { token: MngNavigationService }, { token: MngErrorMapperService }, { token: MngLinkFormatterPipe }, { token: ACTION_EDITOR_DIALOG_COMPONENT_SETTING }], target: i0.ɵɵFactoryTarget.Injectable });
4306
+ MngActionExecutorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: i1$1.TranslateService }, { token: MngNavigationService }, { token: MngErrorMapperService }, { token: MngLinkFormatterPipe }, { token: ACTION_EDITOR_DIALOG_COMPONENT_SETTING }], target: i0.ɵɵFactoryTarget.Injectable });
4177
4307
  MngActionExecutorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService });
4178
4308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService, decorators: [{
4179
4309
  type: Injectable
4180
4310
  }], ctorParameters: function () {
4181
- return [{ type: i0.Injector }, { type: i1.Router }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: i3$1.TranslateService }, { type: MngNavigationService }, { type: MngErrorMapperService }, { type: MngLinkFormatterPipe }, { type: i0.Type, decorators: [{
4311
+ return [{ type: i0.Injector }, { type: i1.Router }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: i1$1.TranslateService }, { type: MngNavigationService }, { type: MngErrorMapperService }, { type: MngLinkFormatterPipe }, { type: i0.Type, decorators: [{
4182
4312
  type: Inject,
4183
4313
  args: [ACTION_EDITOR_DIALOG_COMPONENT_SETTING]
4184
4314
  }] }];
@@ -4590,12 +4720,12 @@ class MngCommonsService {
4590
4720
  return titlePieces.join(' - ');
4591
4721
  }
4592
4722
  }
4593
- MngCommonsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngCommonsService, deps: [{ token: i1.Router }, { token: i2.PrimeNGConfig }, { token: i3$1.TranslateService }, { token: i4$1.Title }, { token: MngConfigurationService }, { token: MNG_MODULE_CONFIG_IT }, { token: MNG_BROWSER_STORAGE_IT }], target: i0.ɵɵFactoryTarget.Injectable });
4723
+ MngCommonsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngCommonsService, deps: [{ token: i1.Router }, { token: i2.PrimeNGConfig }, { token: i1$1.TranslateService }, { token: i4$1.Title }, { token: MngConfigurationService }, { token: MNG_MODULE_CONFIG_IT }, { token: MNG_BROWSER_STORAGE_IT }], target: i0.ɵɵFactoryTarget.Injectable });
4594
4724
  MngCommonsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngCommonsService });
4595
4725
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngCommonsService, decorators: [{
4596
4726
  type: Injectable
4597
4727
  }], ctorParameters: function () {
4598
- return [{ type: i1.Router }, { type: i2.PrimeNGConfig }, { type: i3$1.TranslateService }, { type: i4$1.Title }, { type: MngConfigurationService }, { type: undefined, decorators: [{
4728
+ return [{ type: i1.Router }, { type: i2.PrimeNGConfig }, { type: i1$1.TranslateService }, { type: i4$1.Title }, { type: MngConfigurationService }, { type: undefined, decorators: [{
4599
4729
  type: Inject,
4600
4730
  args: [MNG_MODULE_CONFIG_IT]
4601
4731
  }] }, { type: Storage, decorators: [{
@@ -4702,13 +4832,13 @@ class MngActionComponent {
4702
4832
  return `${action.actionName}_${this.cmpId}`;
4703
4833
  }
4704
4834
  }
4705
- MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i3$1.TranslateService }, { token: MngActionExecutorService }, { token: i2.ConfirmationService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4706
- MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { triggerEventEmitter: "trigger" }, host: { properties: { "class": "this.hostClass" } }, providers: [ConfirmationService], ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <a *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [href]=\"actionLink.url\"\n [target]=\"actionLink.target\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n <ng-template #routerLink>\n <a *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"actionLink.pathSegments | linkFormatter:itemId:item:action.model:actionData\"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ 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: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i4.AsyncPipe, "linkFormatter": MngLinkFormatterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4835
+ MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1$1.TranslateService }, { token: MngActionExecutorService }, { token: i2.ConfirmationService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4836
+ MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { triggerEventEmitter: "trigger" }, host: { properties: { "class": "this.hostClass" } }, providers: [ConfirmationService], ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ 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: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i4.AsyncPipe, "linkFormatter": MngLinkFormatterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4707
4837
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, decorators: [{
4708
4838
  type: Component,
4709
- args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <a *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [href]=\"actionLink.url\"\n [target]=\"actionLink.target\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n <ng-template #routerLink>\n <a *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"actionLink.pathSegments | linkFormatter:itemId:item:action.model:actionData\"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
4839
+ args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : actionLink.url\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"\n ($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | linkFormatter: itemId:item:action.model:actionData)\n \"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
4710
4840
  }], ctorParameters: function () {
4711
- return [{ type: i1.ActivatedRoute }, { type: i3$1.TranslateService }, { type: MngActionExecutorService }, { type: i2.ConfirmationService }, { type: MngViewContainerComponentService, decorators: [{
4841
+ return [{ type: i1.ActivatedRoute }, { type: i1$1.TranslateService }, { type: MngActionExecutorService }, { type: i2.ConfirmationService }, { type: MngViewContainerComponentService, decorators: [{
4712
4842
  type: Optional
4713
4843
  }] }];
4714
4844
  }, propDecorators: { hostClass: [{
@@ -4871,11 +5001,25 @@ class MngComponentDirective {
4871
5001
  ngOnInit() {
4872
5002
  this.viewContainerRef.clear();
4873
5003
  this.componentRef = this.viewContainerRef.createComponent(this.component);
5004
+ if (this.inputs) {
5005
+ if (this.isCmpInstanceOfColumnValue(this.componentRef.instance)) {
5006
+ this.componentRef.instance.setColumnValue(this.inputs['value'], this.inputs['item'], this.inputs['descriptor']);
5007
+ }
5008
+ else {
5009
+ const instanceAny = this.componentRef;
5010
+ for (const input in this.inputs) {
5011
+ instanceAny[input] = this.inputs[input];
5012
+ }
5013
+ }
5014
+ }
4874
5015
  this.componentInstanceEventEmitter.next(this.componentRef.instance);
4875
5016
  }
5017
+ isCmpInstanceOfColumnValue(cmp) {
5018
+ return typeof cmp.setColumnValue === 'function';
5019
+ }
4876
5020
  }
4877
5021
  MngComponentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngComponentDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
4878
- MngComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: MngComponentDirective, selector: "[mngComponent]", inputs: { component: ["mngComponent", "component"] }, outputs: { componentInstanceEventEmitter: "instanceCreated" }, ngImport: i0 });
5022
+ MngComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: MngComponentDirective, selector: "[mngComponent]", inputs: { component: ["mngComponent", "component"], inputs: "inputs" }, outputs: { componentInstanceEventEmitter: "instanceCreated" }, ngImport: i0 });
4879
5023
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngComponentDirective, decorators: [{
4880
5024
  type: Directive,
4881
5025
  args: [{
@@ -4884,6 +5028,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
4884
5028
  }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { component: [{
4885
5029
  type: Input,
4886
5030
  args: ['mngComponent']
5031
+ }], inputs: [{
5032
+ type: Input
4887
5033
  }], componentInstanceEventEmitter: [{
4888
5034
  type: Output,
4889
5035
  args: ['instanceCreated']
@@ -5069,12 +5215,12 @@ class MngFormEditorComponent {
5069
5215
  this.formOptions.formState.disabled = this.isFormDisabled !== null ? this.isFormDisabled === true : this.descriptor.disabled;
5070
5216
  }
5071
5217
  }
5072
- MngFormEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormEditorComponent, deps: [{ token: i3$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
5073
- MngFormEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormEditorComponent, selector: "mng-form-editor", inputs: { descriptor: "descriptor", submitLoading: "submitLoading", item: "item", isSubmitButtonVisible: "isSubmitButtonVisible", isFormDisabled: "isFormDisabled" }, outputs: { formSubmitEventEmitter: "formSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button #submitButton pButton type=\"submit\" [class.hidden]=\"!isSubmitButtonVisible\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n", components: [{ type: i3$2.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { type: i3$3.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5218
+ MngFormEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormEditorComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
5219
+ MngFormEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormEditorComponent, selector: "mng-form-editor", inputs: { descriptor: "descriptor", submitLoading: "submitLoading", item: "item", isSubmitButtonVisible: "isSubmitButtonVisible", isFormDisabled: "isFormDisabled" }, outputs: { formSubmitEventEmitter: "formSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button #submitButton pButton type=\"submit\" [class.hidden]=\"!isSubmitButtonVisible\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n", components: [{ type: i3$1.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { type: i3$2.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i4$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5074
5220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormEditorComponent, decorators: [{
5075
5221
  type: Component,
5076
5222
  args: [{ selector: 'mng-form-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit($event)\">\n <formly-form [form]=\"form\" [fields]=\"formFields\" [options]=\"formOptions\" [model]=\"formModel\"></formly-form>\n <button #submitButton pButton type=\"submit\" [class.hidden]=\"!isSubmitButtonVisible\" [disabled]=\"form.disabled\" [loading]=\"(submitLoading$ | async) ?? false\"></button>\n</form>\n<p-messages [value]=\"formMessages\" [enableService]=\"false\"></p-messages>\n" }]
5077
- }], ctorParameters: function () { return [{ type: i3$1.TranslateService }]; }, propDecorators: { descriptor: [{
5223
+ }], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { descriptor: [{
5078
5224
  type: Input
5079
5225
  }], submitLoading: [{
5080
5226
  type: Input
@@ -5101,13 +5247,18 @@ const MNG_AUTOCOMPLETE_VALUE_ACCESSOR = {
5101
5247
  multi: true
5102
5248
  };
5103
5249
  class MngAutocompleteComponent {
5104
- constructor(injector) {
5250
+ constructor(injector, translate) {
5105
5251
  this.injector = injector;
5252
+ this.translate = translate;
5253
+ this.itemsLabelTranslate = false;
5254
+ this.inlineSearch = false;
5255
+ this.openOnFocus = false;
5106
5256
  this.multiselect = false;
5107
5257
  this.className = null;
5108
5258
  this.dropdownClassName = null;
5109
5259
  this.valueChangeEventEmitter = new EventEmitter();
5110
- this.suggestionsSubject = new Subject();
5260
+ this.isInited = false;
5261
+ this.suggestionsSubject = new BehaviorSubject([]);
5111
5262
  this.searchSubscription = null;
5112
5263
  this.dataProviderService = null;
5113
5264
  // eslint-disable-next-line @typescript-eslint/no-empty-function
@@ -5116,15 +5267,9 @@ class MngAutocompleteComponent {
5116
5267
  this.onTouchedFn = () => { };
5117
5268
  this.autocompleteFormControl = new FormControl();
5118
5269
  this.suggestions$ = this.suggestionsSubject.asObservable();
5119
- this.isLoading = false;
5120
5270
  }
5121
5271
  ngOnInit() {
5122
- if (this.dataProvider) {
5123
- this.dataProviderService = this.dataProvider.serviceType ? this.injector.get(this.dataProvider.serviceType) : null;
5124
- }
5125
- else {
5126
- console.warn(`Data provider should be provided for MngAutocompleteComponent.`);
5127
- }
5272
+ this.setItemsAndDataProvider();
5128
5273
  }
5129
5274
  ngOnDestroy() {
5130
5275
  var _a;
@@ -5134,7 +5279,6 @@ class MngAutocompleteComponent {
5134
5279
  var _a;
5135
5280
  (_a = this.searchSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
5136
5281
  if (this.dataProvider) {
5137
- this.isLoading = true;
5138
5282
  const queryParamBuilder = MediusQueryParamBuilder.create();
5139
5283
  if (this.itemsLabelProperty) {
5140
5284
  queryParamBuilder.withSort(this.itemsLabelProperty);
@@ -5142,20 +5286,26 @@ class MngAutocompleteComponent {
5142
5286
  if (event.query && event.query.length > 0 && this.itemsLabelProperty) {
5143
5287
  queryParamBuilder.withFilter(this.itemsLabelProperty, event.query, undefined, MediusFilterMatchType.StartsWith);
5144
5288
  }
5145
- this.searchSubscription = this.dataProvider.lookup(queryParamBuilder.build(), this.dataProviderService, event.query).subscribe({
5146
- next: (res) => {
5147
- this.suggestionsSubject.next(res);
5148
- this.isLoading = false;
5149
- },
5150
- error: () => {
5151
- this.isLoading = false;
5289
+ this.searchSubscription = this.getLookup(queryParamBuilder.build(), event.query).subscribe({
5290
+ next: items => {
5291
+ this.setSuggestionsFromItems(items, event.query);
5152
5292
  }
5153
5293
  });
5154
5294
  }
5155
5295
  }
5156
5296
  onSelect(value) {
5157
- this.onChangeFn(value);
5158
- this.valueChangeEventEmitter.next(value);
5297
+ let outputValue = value;
5298
+ if (this.itemsValueProperty && typeof value === 'object') {
5299
+ outputValue = value[this.itemsValueProperty];
5300
+ }
5301
+ this.onChangeFn(outputValue);
5302
+ this.valueChangeEventEmitter.next(outputValue);
5303
+ }
5304
+ onFocus(event) {
5305
+ var _a;
5306
+ if (this.openOnFocus) {
5307
+ (_a = this.primeAutocomplete) === null || _a === void 0 ? void 0 : _a.show();
5308
+ }
5159
5309
  }
5160
5310
  registerOnChange(fn) {
5161
5311
  this.onChangeFn = fn;
@@ -5171,20 +5321,171 @@ class MngAutocompleteComponent {
5171
5321
  this.autocompleteFormControl.enable();
5172
5322
  }
5173
5323
  }
5174
- writeValue(obj) {
5175
- this.autocompleteFormControl.setValue(obj, { emitEvent: false });
5324
+ writeValue(value) {
5325
+ this.setItemsAndDataProvider();
5326
+ if (this.itemsValuePropertyInit && value != null && typeof value !== 'object') {
5327
+ const defaultItem = { [this.itemsValuePropertyInit]: value };
5328
+ if (this.itemsLabelProperty) {
5329
+ defaultItem[this.itemsLabelProperty] = value;
5330
+ }
5331
+ const matchedItem = this.suggestionsSubject.value.find(i => i[this.itemsValuePropertyInit] === value);
5332
+ if (matchedItem) {
5333
+ this.autocompleteFormControl.setValue(matchedItem, { emitEvent: false });
5334
+ }
5335
+ else if (this.dataProvider) {
5336
+ const queryParamBuilder = MediusQueryParamBuilder.create();
5337
+ queryParamBuilder.withFilter(this.itemsValuePropertyInit, value, undefined, MediusFilterMatchType.Equals);
5338
+ this.getLookup(queryParamBuilder.build())
5339
+ .pipe(first())
5340
+ .subscribe({
5341
+ next: items => {
5342
+ let isMatch = false;
5343
+ if (items.length === 1) {
5344
+ this.autocompleteFormControl.setValue(items[0]);
5345
+ isMatch = true;
5346
+ }
5347
+ else if (items.length > 1) {
5348
+ // for lookup data providers not using query params
5349
+ const matchedItem = items.find(i => i[this.itemsValuePropertyInit] === value);
5350
+ if (matchedItem) {
5351
+ this.setAutocompleteValueFromWrite(matchedItem);
5352
+ isMatch = true;
5353
+ }
5354
+ }
5355
+ if (!isMatch) {
5356
+ this.setAutocompleteValueFromWrite(defaultItem);
5357
+ }
5358
+ },
5359
+ error: () => {
5360
+ this.setAutocompleteValueFromWrite(defaultItem);
5361
+ }
5362
+ });
5363
+ }
5364
+ else {
5365
+ this.setAutocompleteValueFromWrite(defaultItem);
5366
+ }
5367
+ }
5368
+ else {
5369
+ this.setAutocompleteValueFromWrite(value);
5370
+ }
5371
+ }
5372
+ setItemsAndDataProvider() {
5373
+ if (this.isInited) {
5374
+ return;
5375
+ }
5376
+ this.itemsLabelProperty = this.itemsLabelPropertyInit;
5377
+ this.itemsValueProperty = this.itemsValuePropertyInit;
5378
+ if (this.dataProvider) {
5379
+ this.dataProviderService = this.dataProvider.serviceType ? this.injector.get(this.dataProvider.serviceType) : null;
5380
+ if (this.itemsLabelTranslate) {
5381
+ // setup translation properties
5382
+ if (this.itemsLabelPropertyInit) {
5383
+ this.itemsLabelProperty = `${this.itemsLabelPropertyInit}_i18n`;
5384
+ }
5385
+ else if (!this.itemsLabelProperty && !this.itemsValuePropertyInit) {
5386
+ this.itemsLabelProperty = 'title_i18n';
5387
+ this.itemsValueProperty = 'value';
5388
+ }
5389
+ else {
5390
+ throw new Error(`Invalid use with value (${this.itemsLabelPropertyInit}) and label (${this.itemsLabelPropertyInit}) property setup.`);
5391
+ }
5392
+ }
5393
+ }
5394
+ else {
5395
+ console.warn(`Data provider should be provided for MngAutocompleteComponent.`);
5396
+ }
5397
+ if (this.openOnFocus) {
5398
+ this.onSearch({ query: '' });
5399
+ }
5400
+ this.isInited = true;
5401
+ }
5402
+ setAutocompleteValueFromWrite(value) {
5403
+ if (value && this.itemsLabelTranslate) {
5404
+ value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];
5405
+ }
5406
+ this.autocompleteFormControl.setValue(value, { emitEvent: false });
5407
+ }
5408
+ getLookup(qp, query) {
5409
+ if (this.dataProvider) {
5410
+ return this.dataProvider.lookup(qp, this.dataProviderService, query).pipe(switchMap(items => {
5411
+ if (this.itemsLabelTranslate) {
5412
+ return this.translate.stream(this.i18nGetItemsKeys(items)).pipe(map(translations => this.i18nPopulateItems(items, translations)));
5413
+ }
5414
+ else {
5415
+ return of(items);
5416
+ }
5417
+ }));
5418
+ }
5419
+ else {
5420
+ return of([]);
5421
+ }
5422
+ }
5423
+ i18nGetItemsKeys(items) {
5424
+ return items.map(item => (typeof item === 'object' && this.itemsLabelPropertyInit ? item[this.itemsLabelPropertyInit] : item));
5425
+ }
5426
+ i18nPopulateItems(items, i18nMap) {
5427
+ return items.map(item => {
5428
+ if (typeof item === 'object' && this.itemsLabelPropertyInit) {
5429
+ const label = item[this.itemsLabelPropertyInit];
5430
+ const translation = i18nMap[label];
5431
+ if (translation) {
5432
+ return Object.assign(Object.assign({}, item), { [this.itemsLabelProperty]: translation });
5433
+ }
5434
+ return Object.assign({}, item);
5435
+ }
5436
+ else {
5437
+ const translation = i18nMap[item];
5438
+ return {
5439
+ [this.itemsLabelProperty]: translation !== null && translation !== void 0 ? translation : item,
5440
+ [this.itemsValueProperty]: item
5441
+ };
5442
+ }
5443
+ });
5444
+ }
5445
+ setSuggestionsFromItems(items, query) {
5446
+ var _a;
5447
+ if (this.inlineSearch) {
5448
+ const queryLowerCase = (_a = query === null || query === void 0 ? void 0 : query.toLowerCase()) !== null && _a !== void 0 ? _a : '';
5449
+ const filteredItems = items.filter(i => {
5450
+ let itemLabel = i;
5451
+ if (this.itemsLabelProperty && typeof i === 'object') {
5452
+ itemLabel = i[this.itemsLabelProperty];
5453
+ }
5454
+ if (itemLabel == null) {
5455
+ return queryLowerCase == null || !queryLowerCase.length;
5456
+ }
5457
+ if (typeof itemLabel !== 'string') {
5458
+ itemLabel = itemLabel.toString();
5459
+ }
5460
+ return itemLabel.toLowerCase().startsWith(queryLowerCase);
5461
+ });
5462
+ this.suggestionsSubject.next([...filteredItems]);
5463
+ }
5464
+ else {
5465
+ this.suggestionsSubject.next([...items]);
5466
+ }
5176
5467
  }
5177
5468
  }
5178
- MngAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngAutocompleteComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
5179
- MngAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsLabelProperty: "itemsLabelProperty", multiselect: "multiselect", placeholder: "placeholder", className: "className", dropdownClassName: "dropdownClassName" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeAutocomplete", first: true, predicate: AutoComplete, descendants: true }], ngImport: i0, template: "<p-autoComplete\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n", components: [{ type: i1$1.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "virtualScroll", "itemSize", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "field", "scrollHeight", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }], directives: [{ type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "async": i4.AsyncPipe, "translate": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5469
+ MngAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngAutocompleteComponent, deps: [{ token: i0.Injector }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
5470
+ MngAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsValuePropertyInit: ["itemsValueProperty", "itemsValuePropertyInit"], itemsLabelPropertyInit: ["itemsLabelProperty", "itemsLabelPropertyInit"], itemsLabelTranslate: "itemsLabelTranslate", inlineSearch: "inlineSearch", openOnFocus: "openOnFocus", multiselect: "multiselect", placeholder: "placeholder", className: "className", dropdownClassName: "dropdownClassName" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeAutocomplete", first: true, predicate: AutoComplete, descendants: true }], ngImport: i0, template: "<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n", components: [{ type: i2$1.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "virtualScroll", "itemSize", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "field", "scrollHeight", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide"] }], directives: [{ type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "async": i4.AsyncPipe, "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5180
5471
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngAutocompleteComponent, decorators: [{
5181
5472
  type: Component,
5182
- args: [{ selector: 'mng-autocomplete', providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-autoComplete\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n" }]
5183
- }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { dataProvider: [{
5473
+ args: [{ selector: 'mng-autocomplete', providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n" }]
5474
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$1.TranslateService }]; }, propDecorators: { dataProvider: [{
5184
5475
  type: Input
5185
5476
  }], dataKeyProperty: [{
5186
5477
  type: Input
5187
- }], itemsLabelProperty: [{
5478
+ }], itemsValuePropertyInit: [{
5479
+ type: Input,
5480
+ args: ['itemsValueProperty']
5481
+ }], itemsLabelPropertyInit: [{
5482
+ type: Input,
5483
+ args: ['itemsLabelProperty']
5484
+ }], itemsLabelTranslate: [{
5485
+ type: Input
5486
+ }], inlineSearch: [{
5487
+ type: Input
5488
+ }], openOnFocus: [{
5188
5489
  type: Input
5189
5490
  }], multiselect: [{
5190
5491
  type: Input
@@ -5315,12 +5616,12 @@ class MngDropdownComponent {
5315
5616
  this.dropdownFormControl.setValue(obj, { emitEvent: false });
5316
5617
  }
5317
5618
  }
5318
- MngDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngDropdownComponent, deps: [{ token: i0.Injector }, { token: i3$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
5319
- MngDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngDropdownComponent, selector: "mng-dropdown", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsLabelPropertyInit: ["itemsLabelProperty", "itemsLabelPropertyInit"], itemsLabelTranslate: "itemsLabelTranslate", itemsValuePropertyInit: ["itemsValueProperty", "itemsValuePropertyInit"], itemsDisabledProperty: "itemsDisabledProperty", multiselect: "multiselect", placeholder: "placeholder", showClear: "showClear", selectFirstItem: "selectFirstItem", className: "className", dropdownClassName: "dropdownClassName" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_DROPDOWN_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeDropdown", first: true, predicate: Dropdown, descendants: true }], ngImport: i0, template: "<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n display=\"chip\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"false\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n", components: [{ type: i2$2.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i3$4.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "virtualScroll", "itemSize", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "scrollHeight", "defaultLabel", "placeholder", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onPanelShow", "onPanelHide"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5619
+ MngDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngDropdownComponent, deps: [{ token: i0.Injector }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
5620
+ MngDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngDropdownComponent, selector: "mng-dropdown", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsLabelPropertyInit: ["itemsLabelProperty", "itemsLabelPropertyInit"], itemsLabelTranslate: "itemsLabelTranslate", itemsValuePropertyInit: ["itemsValueProperty", "itemsValuePropertyInit"], itemsDisabledProperty: "itemsDisabledProperty", multiselect: "multiselect", placeholder: "placeholder", showClear: "showClear", selectFirstItem: "selectFirstItem", className: "className", dropdownClassName: "dropdownClassName" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_DROPDOWN_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeDropdown", first: true, predicate: Dropdown, descendants: true }], ngImport: i0, template: "<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n display=\"chip\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"false\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n", components: [{ type: i2$2.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }, { type: i3$3.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "virtualScroll", "itemSize", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "scrollHeight", "defaultLabel", "placeholder", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onPanelShow", "onPanelHide"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5320
5621
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngDropdownComponent, decorators: [{
5321
5622
  type: Component,
5322
5623
  args: [{ selector: 'mng-dropdown', providers: [MNG_DROPDOWN_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-dropdown\n *ngIf=\"!multiselect; else pMultiselect\"\n [formControl]=\"dropdownFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"$any(items$ | async)\"\n [showClear]=\"showClear\"\n [autoDisplayFirst]=\"false\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n display=\"chip\"\n [formControl]=\"dropdownFormControl\"\n [defaultLabel]=\"$any(placeholder)\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [optionLabel]=\"$any(itemsLabelProperty)\"\n [optionValue]=\"$any(itemsValueProperty)\"\n [optionDisabled]=\"$any(itemsDisabledProperty)\"\n [options]=\"(items$ | async) ?? []\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [filter]=\"false\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n" }]
5323
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i3$1.TranslateService }]; }, propDecorators: { dataProvider: [{
5624
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$1.TranslateService }]; }, propDecorators: { dataProvider: [{
5324
5625
  type: Input
5325
5626
  }], dataKeyProperty: [{
5326
5627
  type: Input
@@ -5540,13 +5841,13 @@ class MngActionEditorComponent {
5540
5841
  this.subscriptions.push(subscription);
5541
5842
  }
5542
5843
  }
5543
- MngActionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionEditorComponent, deps: [{ token: i0.Injector }, { token: i3$1.TranslateService }, { token: MngActionExecutorService }, { token: MngCommonsService }, { token: MngNavigationService }, { token: i3.DynamicDialogRef, optional: true }, { token: i3.DynamicDialogConfig, optional: true }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
5544
- MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h2 *ngIf=\"!isDialog && title\">{{ title }}</h2>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n", components: [{ type: i4$2.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "dataProvider", "disabled", "loading", "viewContainer"], outputs: ["trigger"] }, { type: i6.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { type: MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }], 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"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5844
+ MngActionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionEditorComponent, deps: [{ token: i0.Injector }, { token: i1$1.TranslateService }, { token: MngActionExecutorService }, { token: MngCommonsService }, { token: MngNavigationService }, { token: i3.DynamicDialogRef, optional: true }, { token: i3.DynamicDialogConfig, optional: true }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
5845
+ MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n", components: [{ 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: i6.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { type: MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }], 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"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5545
5846
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionEditorComponent, decorators: [{
5546
5847
  type: Component,
5547
- args: [{ selector: 'mng-action-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h2 *ngIf=\"!isDialog && title\">{{ title }}</h2>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n" }]
5848
+ args: [{ selector: 'mng-action-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n" }]
5548
5849
  }], ctorParameters: function () {
5549
- return [{ type: i0.Injector }, { type: i3$1.TranslateService }, { type: MngActionExecutorService }, { type: MngCommonsService }, { type: MngNavigationService }, { type: i3.DynamicDialogRef, decorators: [{
5850
+ return [{ type: i0.Injector }, { type: i1$1.TranslateService }, { type: MngActionExecutorService }, { type: MngCommonsService }, { type: MngNavigationService }, { type: i3.DynamicDialogRef, decorators: [{
5550
5851
  type: Optional
5551
5852
  }] }, { type: i3.DynamicDialogConfig, decorators: [{
5552
5853
  type: Optional
@@ -5587,7 +5888,7 @@ class MngFormlyFieldAutocompleteComponent extends FieldType {
5587
5888
  }
5588
5889
  }
5589
5890
  MngFormlyFieldAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5590
- MngFormlyFieldAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldAutocompleteComponent, selector: "mng-formly-field-autocomplete", usesInheritance: true, ngImport: i0, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [className]=\"descriptor.inputClassName\">\n</mng-autocomplete>\n", components: [{ type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "multiselect", "placeholder", "className", "dropdownClassName"], outputs: ["valueChange"] }], directives: [{ type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3$2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5891
+ MngFormlyFieldAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldAutocompleteComponent, selector: "mng-formly-field-autocomplete", usesInheritance: true, ngImport: i0, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [className]=\"descriptor.inputClassName\">\n</mng-autocomplete>\n", components: [{ type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName"], outputs: ["valueChange"] }], directives: [{ 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5591
5892
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldAutocompleteComponent, decorators: [{
5592
5893
  type: Component,
5593
5894
  args: [{ selector: 'mng-formly-field-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [className]=\"descriptor.inputClassName\">\n</mng-autocomplete>\n" }]
@@ -5604,10 +5905,10 @@ class MngFormlyFieldInputComponent extends FieldType {
5604
5905
  }
5605
5906
  }
5606
5907
  MngFormlyFieldInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5607
- MngFormlyFieldInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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 [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$2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { type: i4$3.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3$2.ɵ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: i2$1.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": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5908
+ MngFormlyFieldInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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 });
5608
5909
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldInputComponent, decorators: [{
5609
5910
  type: Component,
5610
- 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 [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" }]
5911
+ 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" }]
5611
5912
  }] });
5612
5913
 
5613
5914
  class MngFormlyFieldDropdownComponent extends FieldType {
@@ -5617,7 +5918,7 @@ class MngFormlyFieldDropdownComponent extends FieldType {
5617
5918
  }
5618
5919
  }
5619
5920
  MngFormlyFieldDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5620
- MngFormlyFieldDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldDropdownComponent, selector: "mng-formly-field-dropdown", usesInheritance: true, ngImport: i0, 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", components: [{ type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName"], outputs: ["valueChange"] }], directives: [{ type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i3$2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5921
+ MngFormlyFieldDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldDropdownComponent, selector: "mng-formly-field-dropdown", usesInheritance: true, ngImport: i0, 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", components: [{ type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName"], outputs: ["valueChange"] }], directives: [{ 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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5621
5922
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldDropdownComponent, decorators: [{
5622
5923
  type: Component,
5623
5924
  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" }]
@@ -5692,36 +5993,22 @@ class MngTableColumnFilterComponent {
5692
5993
  }
5693
5994
  // eslint-disable-next-line @typescript-eslint/ban-types
5694
5995
  autocompleteFilter(value, filterCallback) {
5695
- if (value) {
5696
- let filterValue = value;
5697
- if (this.lookupDescriptor.itemsValueProperty) {
5698
- filterValue = filterValue[this.lookupDescriptor.itemsValueProperty];
5699
- }
5700
- filterCallback(filterValue);
5701
- }
5702
- else {
5703
- filterCallback(value);
5704
- }
5996
+ filterCallback(value);
5705
5997
  }
5706
5998
  // eslint-disable-next-line @typescript-eslint/ban-types
5707
5999
  dropdownFilter(value, filterCallback) {
5708
- if (value) {
5709
- let filterValue = value;
5710
- if (this.lookupDescriptor.itemsValueProperty) {
5711
- filterValue = filterValue[this.lookupDescriptor.itemsValueProperty];
5712
- }
5713
- filterCallback(filterValue);
5714
- }
5715
- else {
5716
- filterCallback(value);
5717
- }
6000
+ filterCallback(value);
6001
+ }
6002
+ toLookupFilterValue(value) {
6003
+ console.log(this.descriptor.property, value);
6004
+ return this.lookupDescriptor.dataKeyProperty && value ? { [this.lookupDescriptor.dataKeyProperty]: value } : value;
5718
6005
  }
5719
6006
  }
5720
6007
  MngTableColumnFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableColumnFilterComponent, deps: [{ token: i2.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
5721
- MngTableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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 [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [multiselect]=\"lookupDescriptor.multiselect\"\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 [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\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$4.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", "itemsLabelProperty", "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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3$1.TranslatePipe } });
6008
+ MngTableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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 } });
5722
6009
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableColumnFilterComponent, decorators: [{
5723
6010
  type: Component,
5724
- 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 [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [multiselect]=\"lookupDescriptor.multiselect\"\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 [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\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" }]
6011
+ 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" }]
5725
6012
  }], ctorParameters: function () { return [{ type: i2.PrimeNGConfig }]; }, propDecorators: { descriptor: [{
5726
6013
  type: Input
5727
6014
  }], display: [{
@@ -5735,13 +6022,26 @@ class MngTableColumnValueComponent {
5735
6022
  this.columnTypeBoolean = ColumnDescriptor.TypeEnum.Boolean;
5736
6023
  this.columnTypeDate = ColumnDescriptor.TypeEnum.Date;
5737
6024
  this.columnTypeEnum = ColumnDescriptor.TypeEnum.Enum;
6025
+ this.columnTypeCustom = ColumnDescriptor.TypeEnum.Custom;
6026
+ this.jsonPath = '$';
6027
+ }
6028
+ ngOnInit() {
6029
+ if (this.descriptor.jsonPath) {
6030
+ this.jsonPath = this.descriptor.jsonPath;
6031
+ }
6032
+ else {
6033
+ this.jsonPath = `$.${this.descriptor.property}`;
6034
+ if (this.descriptor.objectModelType) {
6035
+ this.jsonPath = `$.${this.descriptor.property}.${this.descriptor.objectTitleProperty}`;
6036
+ }
6037
+ }
5738
6038
  }
5739
6039
  }
5740
6040
  MngTableColumnValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableColumnValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5741
- MngTableColumnValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: { descriptor: "descriptor", item: "item" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property] }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property]) | number: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property]) | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item[descriptor.property] | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{\n (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property])\n | boolean: descriptor.booleanYes:descriptor.booleanNo\n | translate\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{\n (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property])\n | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue\n | translate\n }}\n </ng-container>\n</ng-container>\n", directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "propertyPath": MngPropertyPathPipe, "number": i4.DecimalPipe, "date": i4.DatePipe, "boolean": MngBooleanPipe, "translate": i3$1.TranslatePipe, "enum": MngEnumPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6041
+ MngTableColumnValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: { descriptor: "descriptor", item: "item" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n", directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }], pipes: { "jsonPath": JsonPathPipe, "number": i4.DecimalPipe, "date": i4.DatePipe, "boolean": MngBooleanPipe, "translate": i1$1.TranslatePipe, "enum": MngEnumPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
5742
6042
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableColumnValueComponent, decorators: [{
5743
6043
  type: Component,
5744
- args: [{ selector: 'mng-table-column-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property] }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property]) | number: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property]) | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item[descriptor.property] | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{\n (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property])\n | boolean: descriptor.booleanYes:descriptor.booleanNo\n | translate\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{\n (descriptor.displayPropertyPath ? (item | propertyPath: descriptor.displayPropertyPath) : item[descriptor.property])\n | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue\n | translate\n }}\n </ng-container>\n</ng-container>\n" }]
6044
+ args: [{ selector: 'mng-table-column-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n" }]
5745
6045
  }], propDecorators: { descriptor: [{
5746
6046
  type: Input
5747
6047
  }], item: [{
@@ -6014,13 +6314,13 @@ class MngTableComponent {
6014
6314
  }
6015
6315
  }
6016
6316
  }
6017
- MngTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: i3$1.TranslateService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
6018
- MngTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTableComponent, selector: "mng-table", inputs: { descriptor: "descriptor", items: "items", queryResult: "queryResult", loading: "loading", dataProvider: "dataProvider", useQueryParams: "useQueryParams", selectionMode: "selectionMode", selectionEnabled: "selectionEnabled", isColumnClickable: "isColumnClickable", 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.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.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$4.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$4.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { type: i4$4.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { type: MngTableColumnFilterComponent, selector: "mng-table-column-filter", inputs: ["descriptor", "display"] }, { type: i4$4.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { type: i4$4.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"], outputs: ["instanceCreated"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$4.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "async": i4.AsyncPipe, "translate": i3$1.TranslatePipe, "i18nProperty": MngI18nPropertyPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6317
+ MngTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", 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 });
6318
+ MngTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTableComponent, selector: "mng-table", inputs: { descriptor: "descriptor", items: "items", queryResult: "queryResult", loading: "loading", dataProvider: "dataProvider", useQueryParams: "useQueryParams", selectionMode: "selectionMode", selectionEnabled: "selectionEnabled", isColumnClickable: "isColumnClickable", 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 });
6019
6319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableComponent, decorators: [{
6020
6320
  type: Component,
6021
- 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.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.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" }]
6321
+ 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" }]
6022
6322
  }], ctorParameters: function () {
6023
- return [{ type: i0.Injector }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i3$1.TranslateService }, { type: MngViewContainerComponentService, decorators: [{
6323
+ return [{ type: i0.Injector }, { type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1$1.TranslateService }, { type: MngViewContainerComponentService, decorators: [{
6024
6324
  type: Optional
6025
6325
  }] }];
6026
6326
  }, propDecorators: { descriptor: [{
@@ -6136,12 +6436,12 @@ class MngTableviewComponent {
6136
6436
  }
6137
6437
  }
6138
6438
  }
6139
- MngTableviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableviewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.MessageService }, { token: i3$1.TranslateService }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: MngActionExecutorService }, { token: MngViewContainerComponentService }], target: i0.ɵɵFactoryTarget.Component });
6140
- MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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]=\"rowInlineActions.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$2.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", "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": i3$1.TranslatePipe } });
6439
+ MngTableviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", 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 });
6440
+ MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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", "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 } });
6141
6441
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTableviewComponent, decorators: [{
6142
6442
  type: Component,
6143
- 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]=\"rowInlineActions.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" }]
6144
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.MessageService }, { type: i3$1.TranslateService }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: MngActionExecutorService }, { type: MngViewContainerComponentService }]; }, propDecorators: { descriptor: [{
6443
+ 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" }]
6444
+ }], 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: [{
6145
6445
  type: Input
6146
6446
  }], dataProvider: [{
6147
6447
  type: Input
@@ -6160,12 +6460,24 @@ class AMngTableviewRouteComponent {
6160
6460
  }
6161
6461
  createActionDescriptors() {
6162
6462
  const actions = [];
6163
- actions.push(new ActionEditorDetailsDescriptor(this.descriptor.viewEditor));
6164
- actions.push(new ActionEditorAddDescriptor(this.descriptor.addEditor));
6165
- actions.push(new ActionEditorEditDescriptor(this.descriptor.editEditor));
6166
- actions.push(new ActionDeleteDescriptor(this.descriptor.model));
6463
+ actions.push(this.createActionDescriptorForDetails());
6464
+ actions.push(this.createActionDescriptorForAdd());
6465
+ actions.push(this.createActionDescriptorForEdit());
6466
+ actions.push(this.createActionDescriptorForDelete());
6167
6467
  return actions;
6168
6468
  }
6469
+ createActionDescriptorForDetails(descriptor = this.descriptor.viewEditor) {
6470
+ return new ActionEditorDetailsDescriptor(descriptor);
6471
+ }
6472
+ createActionDescriptorForAdd(descriptor = this.descriptor.addEditor) {
6473
+ return new ActionEditorAddDescriptor(descriptor);
6474
+ }
6475
+ createActionDescriptorForEdit(descriptor = this.descriptor.editEditor) {
6476
+ return new ActionEditorEditDescriptor(descriptor);
6477
+ }
6478
+ createActionDescriptorForDelete(descriptor = this.descriptor.model) {
6479
+ return new ActionDeleteDescriptor(descriptor);
6480
+ }
6169
6481
  }
6170
6482
  AMngTableviewRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: AMngTableviewRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6171
6483
  AMngTableviewRouteComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: AMngTableviewRouteComponent, ngImport: i0 });
@@ -6252,7 +6564,7 @@ class MngFormlyFieldLookupDialogComponent extends FieldType {
6252
6564
  eventSubtype: MngFormFieldEventComponentSubtype.ON_INIT
6253
6565
  });
6254
6566
  this.config = this.descriptor.config;
6255
- if (!this.descriptor.lookupTableDataProvider && ((_a = this.descriptor.dataProvider) === null || _a === void 0 ? void 0 : _a.serviceType)) {
6567
+ if (!this.descriptor.dialogTableDataProvider && ((_a = this.descriptor.dataProvider) === null || _a === void 0 ? void 0 : _a.serviceType)) {
6256
6568
  this.dialogUseDataProvider = true;
6257
6569
  this.dialogDataProviderService = this.injector.get(this.descriptor.dataProvider.serviceType);
6258
6570
  }
@@ -6260,7 +6572,7 @@ class MngFormlyFieldLookupDialogComponent extends FieldType {
6260
6572
  this.setFieldLabelValue(this.formControl.value);
6261
6573
  const subscription = this.formControl.valueChanges.pipe(startWith(this.formControl.value), distinctUntilChanged((prev, curr) => {
6262
6574
  var _a;
6263
- const compareProp = (_a = this.descriptor.lookupTableDescriptor.dataKeyProperty) !== null && _a !== void 0 ? _a : this.descriptor.lookupTableDescriptor.model.idPropertyName;
6575
+ const compareProp = (_a = this.descriptor.dialogTableDescriptor.dataKeyProperty) !== null && _a !== void 0 ? _a : this.descriptor.dialogTableDescriptor.model.idPropertyName;
6264
6576
  if (compareProp && typeof prev === 'object' && typeof curr === 'object') {
6265
6577
  return prev[compareProp] === curr[compareProp];
6266
6578
  }
@@ -6295,8 +6607,8 @@ class MngFormlyFieldLookupDialogComponent extends FieldType {
6295
6607
  if (!this.dialogAreItemsLoaded && this.dialogUseDataProvider) {
6296
6608
  this.dialogIsLoadingSubject.next(true);
6297
6609
  const queryParamBuilder = MediusQueryParamBuilder.create(50);
6298
- if (this.descriptor.lookupTableDescriptor.hasDefaultSort) {
6299
- this.descriptor.lookupTableDescriptor.defaultSortProperty.forEach((p, idx) => queryParamBuilder.withSort(p, this.descriptor.lookupTableDescriptor.defaultSortAsc[idx]));
6610
+ if (this.descriptor.dialogTableDescriptor.hasDefaultSort) {
6611
+ this.descriptor.dialogTableDescriptor.defaultSortProperty.forEach((p, idx) => queryParamBuilder.withSort(p, this.descriptor.dialogTableDescriptor.defaultSortAsc[idx]));
6300
6612
  }
6301
6613
  this.lookupDataProviderSubscription = (_a = this.descriptor.dataProvider) === null || _a === void 0 ? void 0 : _a.lookup(queryParamBuilder.build(), this.dialogDataProviderService).subscribe({
6302
6614
  next: res => {
@@ -6368,7 +6680,7 @@ class MngFormlyFieldLookupDialogComponent extends FieldType {
6368
6680
  return;
6369
6681
  }
6370
6682
  if (typeof value === 'object') {
6371
- const labelProperty = (_a = this.descriptor.itemsLabelProperty) !== null && _a !== void 0 ? _a : (_b = this.descriptor.lookupTableDescriptor) === null || _b === void 0 ? void 0 : _b.model.titlePropertyName;
6683
+ const labelProperty = (_a = this.descriptor.itemsLabelProperty) !== null && _a !== void 0 ? _a : (_b = this.descriptor.dialogTableDescriptor) === null || _b === void 0 ? void 0 : _b.model.titlePropertyName;
6372
6684
  if (!labelProperty) {
6373
6685
  throw new Error('Could not determine label property.');
6374
6686
  }
@@ -6380,10 +6692,10 @@ class MngFormlyFieldLookupDialogComponent extends FieldType {
6380
6692
  }
6381
6693
  }
6382
6694
  MngFormlyFieldLookupDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
6383
- MngFormlyFieldLookupDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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\"></i>\n <button pButton pRipple class=\"mng-dropdown-dialog-search-button\" type=\"button\" [label]=\"'general.search' | translate: {item: ''}\" (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-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.lookupTableDescriptor!\"\n [dataProvider]=\"descriptor.lookupTableDataProvider\"\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", "captionComponent", "columnActionComponent"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { type: i3$3.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange"] }], directives: [{ type: i2$1.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$2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.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": i3$1.TranslatePipe, "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6695
+ MngFormlyFieldLookupDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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", "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 });
6384
6696
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldLookupDialogComponent, decorators: [{
6385
6697
  type: Component,
6386
- 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\"></i>\n <button pButton pRipple class=\"mng-dropdown-dialog-search-button\" type=\"button\" [label]=\"'general.search' | translate: {item: ''}\" (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-table-multiselect-dialog\">\n <ng-template pTemplate=\"content\">\n <mng-table\n [descriptor]=\"descriptor.lookupTableDescriptor!\"\n [dataProvider]=\"descriptor.lookupTableDataProvider\"\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" }]
6698
+ 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" }]
6387
6699
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { mngTable: [{
6388
6700
  type: ViewChild,
6389
6701
  args: [MngTableComponent]
@@ -6535,7 +6847,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
6535
6847
  }
6536
6848
  }
6537
6849
  MngFormlyFieldTableDialogFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, deps: [{ token: MngActionExecutorService }], target: i0.ɵɵFactoryTarget.Component });
6538
- MngFormlyFieldTableDialogFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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", "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": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6850
+ MngFormlyFieldTableDialogFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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", "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 });
6539
6851
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, decorators: [{
6540
6852
  type: Component,
6541
6853
  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"] }]
@@ -6649,7 +6961,7 @@ class MngFormlyFieldTableDialogMultiselectComponent extends FieldType {
6649
6961
  }
6650
6962
  }
6651
6963
  MngFormlyFieldTableDialogMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldTableDialogMultiselectComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
6652
- MngFormlyFieldTableDialogMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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-formly-field-table-multiselect-dialog\">\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", "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$3.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": i3$1.TranslatePipe, "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6964
+ MngFormlyFieldTableDialogMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", 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-formly-field-table-multiselect-dialog\">\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", "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 });
6653
6965
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldTableDialogMultiselectComponent, decorators: [{
6654
6966
  type: Component,
6655
6967
  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-formly-field-table-multiselect-dialog\">\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" }]
@@ -6658,7 +6970,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
6658
6970
  class MngFormlyFieldTabsComponent extends FieldType {
6659
6971
  }
6660
6972
  MngFormlyFieldTabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldTabsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6661
- MngFormlyFieldTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldTabsComponent, selector: "mng-formly-field-tabs", usesInheritance: true, ngImport: i0, template: "<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.templateOptions?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\n <ng-template pTemplate=\"header\">\n <span\n class=\"p-tabview-title\"\n [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.templateOptions?.label!) + '_invalid']\"\n >{{ tab.templateOptions?.label! | translate }}</span\n >\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n", components: [{ type: i1$4.TabView, selector: "p-tabView", inputs: ["orientation", "style", "styleClass", "controlClose", "scrollable", "activeIndex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { type: i1$4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { type: i3$2.FormlyField, selector: "formly-field", inputs: ["field"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], pipes: { "translate": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6973
+ MngFormlyFieldTabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldTabsComponent, selector: "mng-formly-field-tabs", usesInheritance: true, ngImport: i0, template: "<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.templateOptions?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\n <ng-template pTemplate=\"header\">\n <span\n class=\"p-tabview-title\"\n [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.templateOptions?.label!) + '_invalid']\"\n >{{ tab.templateOptions?.label! | translate }}</span\n >\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n", components: [{ type: i1$4.TabView, selector: "p-tabView", inputs: ["orientation", "style", "styleClass", "controlClose", "scrollable", "activeIndex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { type: i1$4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { type: i3$1.FormlyField, selector: "formly-field", inputs: ["field"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6662
6974
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldTabsComponent, decorators: [{
6663
6975
  type: Component,
6664
6976
  args: [{ selector: 'mng-formly-field-tabs', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-tabView>\n <p-tabPanel\n *ngFor=\"let tab of field.fieldGroup; let i = index; let last = last\"\n [header]=\"tab.templateOptions?.label! | translate\"\n [headerStyleClass]=\"$any(formControl!.valid ? 'p-tabview-title' : null)\">\n <ng-template pTemplate=\"header\">\n <span\n class=\"p-tabview-title\"\n [class.p-tabview-title-error]=\"formState.submittedOn && formState['tab_' + (tab.id ? tab.id : tab.templateOptions?.label!) + '_invalid']\"\n >{{ tab.templateOptions?.label! | translate }}</span\n >\n </ng-template>\n <formly-field [field]=\"tab\"></formly-field>\n </p-tabPanel>\n</p-tabView>\n" }]
@@ -6667,7 +6979,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
6667
6979
  class MngFormlyFieldFieldsetComponent extends FieldType {
6668
6980
  }
6669
6981
  MngFormlyFieldFieldsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldFieldsetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6670
- MngFormlyFieldFieldsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldFieldsetComponent, selector: "mng-formly-field-fieldset", usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let group of field.fieldGroup; let i = index; let last = last\">\n <p-fieldset *ngIf=\"!group.templateOptions?.['descriptor']?.default; else defaultSet\" [legend]=\"group.templateOptions?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n <ng-template #defaultSet>\n <formly-field [field]=\"group\"></formly-field>\n </ng-template>\n</ng-container>\n", components: [{ type: i1$5.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { type: i3$2.FormlyField, selector: "formly-field", inputs: ["field"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6982
+ MngFormlyFieldFieldsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldFieldsetComponent, selector: "mng-formly-field-fieldset", usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let group of field.fieldGroup; let i = index; let last = last\">\n <p-fieldset *ngIf=\"!group.templateOptions?.['descriptor']?.default; else defaultSet\" [legend]=\"group.templateOptions?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n <ng-template #defaultSet>\n <formly-field [field]=\"group\"></formly-field>\n </ng-template>\n</ng-container>\n", components: [{ type: i1$5.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { type: i3$1.FormlyField, selector: "formly-field", inputs: ["field"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6671
6983
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldFieldsetComponent, decorators: [{
6672
6984
  type: Component,
6673
6985
  args: [{ selector: 'mng-formly-field-fieldset', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let group of field.fieldGroup; let i = index; let last = last\">\n <p-fieldset *ngIf=\"!group.templateOptions?.['descriptor']?.default; else defaultSet\" [legend]=\"group.templateOptions?.label! | translate\">\n <formly-field [field]=\"group\"></formly-field>\n </p-fieldset>\n <ng-template #defaultSet>\n <formly-field [field]=\"group\"></formly-field>\n </ng-template>\n</ng-container>\n" }]
@@ -6676,7 +6988,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
6676
6988
  class MngFormlyFieldWrapperComponent extends FieldWrapper {
6677
6989
  }
6678
6990
  MngFormlyFieldWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6679
- MngFormlyFieldWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldWrapperComponent, selector: "mng-formly-field-wrapper", usesInheritance: true, ngImport: i0, template: "<div class=\"field\">\n <label [for]=\"key\" [class]=\"to?.['descriptor']?.['labelClassName'] ?? ''\"\n >{{ $any(to?.label) | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label\n >\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n", components: [{ type: i3$2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6991
+ MngFormlyFieldWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyFieldWrapperComponent, selector: "mng-formly-field-wrapper", usesInheritance: true, ngImport: i0, template: "<div class=\"field\">\n <label [for]=\"key\" [class]=\"to?.['descriptor']?.['labelClassName'] ?? ''\"\n >{{ $any(to?.label) | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label\n >\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n", components: [{ type: i3$1.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6680
6992
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyFieldWrapperComponent, decorators: [{
6681
6993
  type: Component,
6682
6994
  args: [{ selector: 'mng-formly-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"field\">\n <label [for]=\"key\" [class]=\"to?.['descriptor']?.['labelClassName'] ?? ''\"\n >{{ $any(to?.label) | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label\n >\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n" }]
@@ -6685,7 +6997,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
6685
6997
  class MngFormlyTableWrapperComponent extends FieldWrapper {
6686
6998
  }
6687
6999
  MngFormlyTableWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyTableWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6688
- MngFormlyTableWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyTableWrapperComponent, selector: "mng-formly-table-wrapper", usesInheritance: true, ngImport: i0, template: "<div class=\"field table\">\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n", components: [{ type: i3$2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7000
+ MngFormlyTableWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFormlyTableWrapperComponent, selector: "mng-formly-table-wrapper", usesInheritance: true, ngImport: i0, template: "<div class=\"field table\">\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n", components: [{ type: i3$1.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6689
7001
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFormlyTableWrapperComponent, decorators: [{
6690
7002
  type: Component,
6691
7003
  args: [{ selector: 'mng-formly-table-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"field table\">\n <ng-container #fieldComponent></ng-container>\n <small *ngIf=\"to?.['descriptor']?.['helpText']\">{{ to?.['descriptor']?.['helpText'] | translate }}</small>\n <small *ngIf=\"showError\" class=\"p-error\">\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </small>\n</div>\n" }]
@@ -6710,7 +7022,7 @@ class MngFooterComponent {
6710
7022
  }
6711
7023
  }
6712
7024
  MngFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFooterComponent, deps: [{ token: MngCommonsService }], target: i0.ɵɵFactoryTarget.Component });
6713
- MngFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFooterComponent, selector: "mng-footer", ngImport: i0, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n", pipes: { "translate": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7025
+ MngFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngFooterComponent, selector: "mng-footer", ngImport: i0, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n", pipes: { "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
6714
7026
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngFooterComponent, decorators: [{
6715
7027
  type: Component,
6716
7028
  args: [{ selector: 'mng-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-footer\">\n <div class=\"footer-logo-container\">\n <img id=\"footer-logo\" [src]=\"mngCommons.colorSchemeIsLight ? mngCommons.appLogoDark : mngCommons.appLogoLight\" alt=\"atlantis-layout\" />\n <span class=\"app-name\">{{ mngCommons.appName | translate }}</span>\n </div>\n <span class=\"copyright\">&#169; {{ mngCommons.appOwner | translate }} - {{ currentYear }}</span>\n</div>\n" }]
@@ -7048,7 +7360,7 @@ class MngMenuItemComponent {
7048
7360
  }
7049
7361
  }
7050
7362
  MngMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngMenuItemComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i1.ActivatedRoute }, { token: MngCommonsService }, { token: MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component });
7051
- MngMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active" } }, ngImport: i0, template: "<ng-container>\n <div *ngIf=\"root && item.visible !== false && (isAllowed$ | async) === true\" class=\"layout-menuitem-root-text\">{{ item.label! | translate }}</div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false && (isAllowed$ | async) === true\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items && item.visible !== false && (isAllowed$ | async) === true\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"((item.items && active) || (item.items && (mngCommons.menuModeIsStatic$ | async) && (root || active))) && item.visible !== false && (isAllowed$ | async) === true\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\"></li>\n </ng-template>\n </ul>\n</ng-container>\n", components: [{ type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "index", "root", "parentKey"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe, "translate": i3$1.TranslatePipe }, animations: [
7363
+ MngMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active" } }, ngImport: i0, template: "<ng-container>\n <div *ngIf=\"root && item.visible !== false && (isAllowed$ | async) === true\" class=\"layout-menuitem-root-text\">{{ item.label! | translate }}</div>\n <a\n *ngIf=\"(!item.routerLink || item.items) && item.visible !== false && (isAllowed$ | async) === true\"\n [attr.href]=\"item.href\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"onMouseEnter()\"\n (keydown.enter)=\"itemClick($event)\"\n [routerLink]=\"item.routerLink\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <a\n *ngIf=\"item.routerLink && !item.items && item.visible !== false && (isAllowed$ | async) === true\"\n (click)=\"itemClick($event)\"\n (mouseenter)=\"hover = true\"\n (mouseleave)=\"hover = false\"\n [routerLink]=\"item.routerLink\"\n routerLinkActive=\"active-menuitem-routerlink\"\n [routerLinkActiveOptions]=\"{exact: true}\"\n [attr.target]=\"item.target\"\n [attr.tabindex]=\"0\"\n [ngClass]=\"item.className ?? ''\"\n pRipple>\n <i [ngClass]=\"item.icon ?? ''\" class=\"layout-menuitem-icon\"></i>\n <span class=\"layout-menuitem-text\">{{ item.label! | translate }}</span>\n <i class=\"pi pi-fw pi-angle-down layout-submenu-toggler\" *ngIf=\"item.items\"></i>\n <span class=\"menuitem-badge\" *ngIf=\"item.badge\">{{ item.badge }}</span>\n </a>\n <ul\n *ngIf=\"((item.items && active) || (item.items && (mngCommons.menuModeIsStatic$ | async) && (root || active))) && item.visible !== false && (isAllowed$ | async) === true\"\n [@children]=\"\n (mngCommons.menuModeIsSlim$ | async) && (mainLayoutService.isMobile$ | async) === false && root\n ? active\n ? 'visible'\n : 'hidden'\n : (mngCommons.menuModeIsStatic$ | async) && root && (mainLayoutService.isMobile$ | async) === false\n ? 'visible'\n : active\n ? 'visibleAnimated'\n : 'hiddenAnimated'\n \">\n <ng-template ngFor let-child let-i=\"index\" [ngForOf]=\"item.items\">\n <li mng-menuitem [item]=\"child\" [index]=\"i\" [parentKey]=\"key\" [class]=\"child.badgeClassName\"></li>\n </ng-template>\n </ul>\n</ng-container>\n", components: [{ type: MngMenuItemComponent, selector: "[mng-menuitem]", inputs: ["item", "index", "root", "parentKey"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe, "translate": i1$1.TranslatePipe }, animations: [
7052
7364
  trigger('children', [
7053
7365
  state('void', style({
7054
7366
  height: '0px'
@@ -7160,7 +7472,7 @@ class MngTopbarComponent {
7160
7472
  }
7161
7473
  }
7162
7474
  MngTopbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTopbarComponent, deps: [{ token: i1.ActivatedRoute }, { token: MngCommonsService }, { token: MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component });
7163
- MngTopbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTopbarComponent, selector: "mng-topbar", viewQueries: [{ propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li #profile class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <a href=\"#\" (click)=\"mainLayoutService.onTopbarItemClick($event, profile)\">\n <i class=\"pi pi-fw pi-user\"></i>\n </a>\n <ul class=\"fadeInDown\" *ngIf=\"user\">\n <li role=\"menuitem\">\n <a>\n {{ user?.displayName ?? user?.username }}\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n", components: [{ type: i2$2.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent"], outputs: ["instanceCreated"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "async": i4.AsyncPipe, "translate": i3$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7475
+ MngTopbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngTopbarComponent, selector: "mng-topbar", viewQueries: [{ propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li #profile class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <a href=\"#\" (click)=\"mainLayoutService.onTopbarItemClick($event, profile)\">\n <i class=\"pi pi-fw pi-user\"></i>\n </a>\n <ul class=\"fadeInDown\" *ngIf=\"user\">\n <li role=\"menuitem\">\n <a>\n {{ user?.displayName ?? user?.username }}\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n", components: [{ type: i2$2.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: { "async": i4.AsyncPipe, "translate": i1$1.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7164
7476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngTopbarComponent, decorators: [{
7165
7477
  type: Component,
7166
7478
  args: [{ selector: 'mng-topbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"layout-topbar\">\n <div class=\"layout-topbar-left\">\n <a\n href=\"#\"\n class=\"topbar-menu-button\"\n (click)=\"mainLayoutService.onMenuButtonClick($event)\"\n *ngIf=\"(mngCommons.menuModeIsOverlay$ | async) || (mainLayoutService.isMobile$ | async)\">\n <i class=\"pi pi-bars\"></i>\n </a>\n\n <ng-container [mngComponent]=\"breadcrumbComponent\"></ng-container>\n </div>\n\n <ng-container [mngComponent]=\"menuComponent\"></ng-container>\n\n <div class=\"layout-topbar-right\">\n <ul class=\"layout-topbar-right-items\">\n <li #profile class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <a href=\"#\" (click)=\"mainLayoutService.onTopbarItemClick($event, profile)\">\n <i class=\"pi pi-fw pi-user\"></i>\n </a>\n <ul class=\"fadeInDown\" *ngIf=\"user\">\n <li role=\"menuitem\">\n <a>\n {{ user?.displayName ?? user?.username }}\n </a>\n </li>\n <li role=\"menuitem\" *ngIf=\"user?.logout || user?.logoutUrl\">\n <a [href]=\"user?.logoutUrl\" (click)=\"logout(user, $event)\">\n <i class=\"pi pi-fw pi-sign-out\"></i>\n <span>{{ 'mngTopbar.logout' | translate }}</span>\n </a>\n </li>\n </ul>\n </li>\n <li *ngIf=\"languages.length > 1\" class=\"profile-item\" [ngClass]=\"{'active-topmenuitem': (mainLayoutService.activeTopbarItem$ | async) === profile}\">\n <i class=\"pi pi-fw pi-globe\"></i>\n <p-dropdown [ngModel]=\"selectedLanguage\" [options]=\"languages\" (onChange)=\"switchLanguage($event.value)\"></p-dropdown>\n </li>\n </ul>\n </div>\n</div>\n" }]
@@ -7198,7 +7510,7 @@ class MngMainLayoutComponent {
7198
7510
  }
7199
7511
  }
7200
7512
  MngMainLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngMainLayoutComponent, deps: [{ token: i1.ActivatedRoute }, { token: MngCommonsService }, { token: MngMainLayoutComponentService }], target: i0.ɵɵFactoryTarget.Component });
7201
- MngMainLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngMainLayoutComponent, selector: "mng-main-layout", host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: [MngMainLayoutComponentService], viewQueries: [{ propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n", directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent"], outputs: ["instanceCreated"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7513
+ MngMainLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngMainLayoutComponent, selector: "mng-main-layout", host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: [MngMainLayoutComponentService], viewQueries: [{ propertyName: "templates", predicate: MngTemplateDirective, descendants: true }], ngImport: i0, template: "<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n", directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
7202
7514
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngMainLayoutComponent, decorators: [{
7203
7515
  type: Component,
7204
7516
  args: [{ selector: 'mng-main-layout', providers: [MngMainLayoutComponentService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"layout-wrapper\"\n (click)=\"mainLayoutService.onLayoutClick()\"\n [ngClass]=\"{\n 'layout-static': mngCommons.menuModeIsStatic$ | async,\n 'layout-overlay': mngCommons.menuModeIsOverlay$ | async,\n 'layout-slim': mngCommons.menuModeIsSlim$ | async,\n 'layout-sidebar': mngCommons.menuModeIsSidebar$ | async,\n 'layout-sidebar-static': (mngCommons.menuModeIsSidebar$ | async) && (mainLayoutService.sidebarStatic$ | async),\n 'layout-overlay-active': mainLayoutService.overlayMenuActive$ | async,\n 'layout-mobile-active': mainLayoutService.staticMenuMobileActive$ | async,\n 'layout-static-inactive': (mainLayoutService.staticMenuDesktopInactive$ | async) && (mngCommons.menuModeIsStatic$ | async)\n }\">\n <div class=\"layout-main\">\n <ng-container [mngComponent]=\"topbarComponent\"></ng-container>\n\n <ng-container\n *ngIf=\"\n (mainLayoutService.isMobile$ | async) === false &&\n ((mngCommons.menuModeIsStatic$ | async) || (mngCommons.menuModeIsSlim$ | async) || (mngCommons.menuModeIsSidebar$ | async))\n \"\n [mngComponent]=\"menuComponent\">\n </ng-container>\n\n <div class=\"layout-main-content\">\n <router-outlet></router-outlet>\n </div>\n\n <ng-container [mngComponent]=\"footerComponent\"></ng-container>\n </div>\n</div>\n" }]
@@ -7468,7 +7780,7 @@ const declarations = [
7468
7780
  MngComponentDirective,
7469
7781
  MngTemplateDirective,
7470
7782
  // pipes
7471
- MngPropertyPathPipe,
7783
+ JsonPathPipe,
7472
7784
  MngEnumPipe,
7473
7785
  MngBooleanPipe,
7474
7786
  MngI18nPropertyPipe,
@@ -7572,7 +7884,7 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
7572
7884
  MngComponentDirective,
7573
7885
  MngTemplateDirective,
7574
7886
  // pipes
7575
- MngPropertyPathPipe,
7887
+ JsonPathPipe,
7576
7888
  MngEnumPipe,
7577
7889
  MngBooleanPipe,
7578
7890
  MngI18nPropertyPipe,
@@ -7615,7 +7927,7 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
7615
7927
  CommonModule,
7616
7928
  RouterModule,
7617
7929
  HttpClientModule,
7618
- ReactiveFormsModule, i3$1.TranslateModule, i3$2.FormlyModule, AutoCompleteModule,
7930
+ ReactiveFormsModule, i1$1.TranslateModule, i3$1.FormlyModule, AutoCompleteModule,
7619
7931
  BreadcrumbModule,
7620
7932
  ButtonModule,
7621
7933
  CalendarModule,
@@ -7687,7 +7999,7 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
7687
7999
  MngComponentDirective,
7688
8000
  MngTemplateDirective,
7689
8001
  // pipes
7690
- MngPropertyPathPipe,
8002
+ JsonPathPipe,
7691
8003
  MngEnumPipe,
7692
8004
  MngBooleanPipe,
7693
8005
  MngI18nPropertyPipe,
@@ -7792,9 +8104,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
7792
8104
  }]
7793
8105
  }] });
7794
8106
 
7795
- class AMngApiService {
7796
- constructor(type, http) {
7797
- this.type = type;
8107
+ class AMngBaseApiService {
8108
+ constructor(http) {
7798
8109
  this.http = http;
7799
8110
  this.objectSerializer = ObjectSerializer.get();
7800
8111
  }
@@ -7805,12 +8116,6 @@ class AMngApiService {
7805
8116
  }
7806
8117
  return `${this.getBasePath()}${this.getServiceBasePath()}${path}`;
7807
8118
  }
7808
- deserialize(item) {
7809
- return this.deserializeClass(item, this.type);
7810
- }
7811
- serialize(item) {
7812
- return this.serializeClass(item, this.type);
7813
- }
7814
8119
  serializeQueryParam(queryParam, type = 'QueryParam') {
7815
8120
  return this.objectSerializer.serialize(queryParam, type);
7816
8121
  }
@@ -7820,9 +8125,27 @@ class AMngApiService {
7820
8125
  deserializeClass(item, type) {
7821
8126
  return this.objectSerializer.deserializeClass(item, type);
7822
8127
  }
8128
+ deserializeClassArray(item, type) {
8129
+ return this.objectSerializer.deserializeClassArray(item, type);
8130
+ }
7823
8131
  serializeClass(item, type) {
7824
8132
  return this.objectSerializer.serializeClass(item, type);
7825
8133
  }
8134
+ serializeClassArray(item, type) {
8135
+ return this.objectSerializer.serializeClassArray(item, type);
8136
+ }
8137
+ }
8138
+ class AMngApiService extends AMngBaseApiService {
8139
+ constructor(type, http) {
8140
+ super(http);
8141
+ this.type = type;
8142
+ }
8143
+ deserialize(item) {
8144
+ return this.deserializeClass(item, this.type);
8145
+ }
8146
+ serialize(item) {
8147
+ return this.serializeClass(item, this.type);
8148
+ }
7826
8149
  }
7827
8150
 
7828
8151
  class AMngGetAllApiService extends AMngApiService {
@@ -8373,5 +8696,5 @@ class RouteDataBuilder {
8373
8696
  * Generated bundle index. Do not edit.
8374
8697
  */
8375
8698
 
8376
- export { AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, ActionActivationResult, ActionActivationTriggerEnum, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionError, ActionExecContext, ActionLevelEnum, ActionLinkDescriptor, ActionPositionEnum, ActionRunResult, ActionTriggerResult, ActionTypeEnum, ColumnDescriptor, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, FieldValidator, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, I18nUtil, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_DROPDOWN_VALUE_ACCESSOR, 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, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngI18nPropertyPipe, MngLinkFormatterPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngPropertyPathPipe, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, 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, mngCommonsInitializerProvider, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
8699
+ export { AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngBaseApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, ActionActivationResult, ActionActivationTriggerEnum, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionError, ActionExecContext, ActionLevelEnum, ActionLinkDescriptor, ActionPositionEnum, ActionRunResult, ActionTriggerResult, ActionTypeEnum, ColumnDescriptor, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, FieldValidator, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, I18nUtil, JsonPathPipe, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_DROPDOWN_VALUE_ACCESSOR, 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, 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, mngCommonsInitializerProvider, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
8377
8700
  //# sourceMappingURL=mediusinc-mng-commons.mjs.map