@mediusinc/mng-commons 0.12.5 → 0.13.0

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 (43) hide show
  1. package/esm2020/lib/components/action/action.component.mjs +7 -7
  2. package/esm2020/lib/components/action/editor/action-editor.component.mjs +5 -5
  3. package/esm2020/lib/components/button/button.component.mjs +46 -0
  4. package/esm2020/lib/components/button/index.mjs +2 -0
  5. package/esm2020/lib/components/form/editor/form-editor.component.mjs +3 -2
  6. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +10 -13
  7. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +27 -11
  8. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +5 -3
  9. package/esm2020/lib/descriptors/action/action-confirmation.descriptor.mjs +106 -0
  10. package/esm2020/lib/descriptors/action.descriptor.mjs +53 -154
  11. package/esm2020/lib/descriptors/button.descriptor.mjs +111 -0
  12. package/esm2020/lib/descriptors/column.descriptor.mjs +17 -1
  13. package/esm2020/lib/descriptors/field.descriptor.mjs +1 -1
  14. package/esm2020/lib/descriptors/index.mjs +3 -1
  15. package/esm2020/lib/mng-commons.module.mjs +20 -5
  16. package/esm2020/lib/pipes/getter.pipe.mjs +20 -0
  17. package/esm2020/lib/pipes/index.mjs +3 -1
  18. package/esm2020/lib/pipes/template.pipe.mjs +24 -0
  19. package/esm2020/lib/services/action-executor.service.mjs +30 -19
  20. package/esm2020/lib/styles/button-style.builder.mjs +59 -8
  21. package/esm2020/lib/styles/styles.util.mjs +2 -2
  22. package/esm2020/public-api.mjs +2 -1
  23. package/fesm2015/mediusinc-mng-commons.mjs +515 -217
  24. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  25. package/fesm2020/mediusinc-mng-commons.mjs +509 -214
  26. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  27. package/lib/components/button/button.component.d.ts +16 -0
  28. package/lib/components/button/index.d.ts +1 -0
  29. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +1 -0
  30. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +48 -0
  31. package/lib/descriptors/action.descriptor.d.ts +26 -83
  32. package/lib/descriptors/button.descriptor.d.ts +40 -0
  33. package/lib/descriptors/column.descriptor.d.ts +6 -0
  34. package/lib/descriptors/field.descriptor.d.ts +9 -9
  35. package/lib/descriptors/index.d.ts +2 -0
  36. package/lib/mng-commons.module.d.ts +73 -70
  37. package/lib/pipes/getter.pipe.d.ts +7 -0
  38. package/lib/pipes/index.d.ts +2 -0
  39. package/lib/pipes/template.pipe.d.ts +10 -0
  40. package/lib/styles/button-style.builder.d.ts +43 -2
  41. package/package.json +2 -2
  42. package/public-api.d.ts +1 -0
  43. package/version-info.json +5 -5
@@ -871,7 +871,7 @@ class StylesUtil {
871
871
  }
872
872
  }
873
873
  static getActionButtonRoundedWidth(action) {
874
- switch (action.size) {
874
+ switch (action.buttonDescriptor.styleClass.size) {
875
875
  case ActionSizeEnum.ExtraSmall:
876
876
  return StylesUtil.BUTTON_ROUNDED_WIDTH_XS;
877
877
  case ActionSizeEnum.Small:
@@ -895,17 +895,18 @@ StylesUtil.TABLE_CELL_PADDING_X_SM = 4;
895
895
  StylesUtil.TABLE_CELL_PADDING_X_LG = 12;
896
896
 
897
897
  class ButtonStyleBuilder {
898
- constructor(level, customClass) {
898
+ constructor(level = ActionLevelEnum.Default, customClass) {
899
899
  this._size = ActionSizeEnum.Normal;
900
900
  this._textButton = false;
901
901
  this._outlineButton = false;
902
902
  this._raisedButton = false;
903
+ this._roundedStyle = ButtonStyleRoundedEnum.DEFAULT;
903
904
  this._actionLevel = level;
904
905
  this._customClass = customClass;
905
906
  }
906
907
  getButtonClass(hasNoTitle = false) {
907
908
  const styles = [this.convertActionLevelToStyleClass(), this.convertSizeToStyleClass(), this._customClass];
908
- if (hasNoTitle) {
909
+ if (hasNoTitle && this._roundedStyle === ButtonStyleRoundedEnum.DEFAULT) {
909
910
  styles.push(`p-button-rounded mng-action-button-icon`);
910
911
  }
911
912
  if (this._textButton) {
@@ -917,37 +918,78 @@ class ButtonStyleBuilder {
917
918
  if (this._raisedButton) {
918
919
  styles.push(`p-button-raised`);
919
920
  }
921
+ if (this._roundedStyle === ButtonStyleRoundedEnum.ROUNDED) {
922
+ styles.push('p-button-rounded');
923
+ }
920
924
  return styles.join(' ');
921
925
  }
922
- create(actionLevel, size, textButton, outlineButton, raisedButton, customClass) {
926
+ /**
927
+ * creates instance of style builder with custom properties
928
+ * @param actionLevel ActionLevelEnum
929
+ * @param size ActionSizeEnum
930
+ * @param textButton if true, text button will be applied
931
+ * @param outlineButton if true, outlined button will be applied
932
+ * @param raisedButton if true, raised button will be applied
933
+ * @param customClass additional custom classes (will be added at generating)
934
+ */
935
+ create(actionLevel, size, textButton, outlineButton, raisedButton, roundedButton, customClass) {
923
936
  this._actionLevel = actionLevel !== null && actionLevel !== void 0 ? actionLevel : this._actionLevel;
924
937
  this._size = size !== null && size !== void 0 ? size : this._size;
925
938
  this._textButton = textButton !== null && textButton !== void 0 ? textButton : this._textButton;
926
939
  this._outlineButton = outlineButton !== null && outlineButton !== void 0 ? outlineButton : this._outlineButton;
927
940
  this._raisedButton = raisedButton !== null && raisedButton !== void 0 ? raisedButton : this._raisedButton;
941
+ this._roundedStyle = roundedButton !== null && roundedButton !== void 0 ? roundedButton : this._roundedStyle;
928
942
  this._customClass = customClass;
929
943
  return this;
930
944
  }
945
+ /**
946
+ * sets custom action level and returns this object
947
+ * @param actionLevel
948
+ */
931
949
  withActionLevel(actionLevel) {
932
950
  this._actionLevel = actionLevel;
933
951
  return this;
934
952
  }
953
+ /**
954
+ * sets custom size and return this object
955
+ * @param size
956
+ */
935
957
  withSize(size) {
936
958
  this._size = size;
937
959
  return this;
938
960
  }
961
+ /**
962
+ * sets text button property
963
+ * @param withText default true
964
+ */
939
965
  withTextButton(withText = true) {
940
966
  this._textButton = withText;
941
967
  return this;
942
968
  }
969
+ /**
970
+ * sets outline button property
971
+ * @param withOutline default true
972
+ */
943
973
  withOutlineButton(withOutline = true) {
944
974
  this._outlineButton = withOutline;
945
975
  return this;
946
976
  }
977
+ /**
978
+ * sets raised button property
979
+ * @param withRaised default true
980
+ */
947
981
  withRaisedButton(withRaised = true) {
948
982
  this._raisedButton = withRaised;
949
983
  return this;
950
984
  }
985
+ withRoundedButton(roundedStyle = ButtonStyleRoundedEnum.ROUNDED) {
986
+ this._roundedStyle = roundedStyle;
987
+ return this;
988
+ }
989
+ /**
990
+ * sets custom style class
991
+ * @param customClass
992
+ */
951
993
  withCustomClass(customClass) {
952
994
  this._customClass = customClass;
953
995
  return this;
@@ -974,15 +1016,15 @@ class ButtonStyleBuilder {
974
1016
  convertSizeToStyleClass() {
975
1017
  switch (this._size) {
976
1018
  case ActionSizeEnum.ExtraSmall:
977
- return 'mng-button-xs';
1019
+ return 'p-button-sm mng-button-xs';
978
1020
  case ActionSizeEnum.Small:
979
- return 'mng-button-sm';
1021
+ return 'p-button-sm mng-button-sm';
980
1022
  case ActionSizeEnum.Normal:
981
1023
  return '';
982
1024
  case ActionSizeEnum.Large:
983
- return 'mng-button-lg';
1025
+ return 'p-button-lg mng-button-lg';
984
1026
  case ActionSizeEnum.ExtraLarge:
985
- return 'mng-button-xl';
1027
+ return 'p-button-lg mng-button-xl';
986
1028
  }
987
1029
  }
988
1030
  get actionLevel() {
@@ -1000,10 +1042,123 @@ class ButtonStyleBuilder {
1000
1042
  get raisedButton() {
1001
1043
  return this._raisedButton;
1002
1044
  }
1045
+ get roundedStyle() {
1046
+ return this._roundedStyle;
1047
+ }
1003
1048
  get customClass() {
1004
1049
  return this._customClass;
1005
1050
  }
1006
1051
  }
1052
+ var ButtonStyleRoundedEnum;
1053
+ (function (ButtonStyleRoundedEnum) {
1054
+ ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["DEFAULT"] = 0] = "DEFAULT";
1055
+ ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["ROUNDED"] = 1] = "ROUNDED";
1056
+ ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["SQUARE"] = 2] = "SQUARE";
1057
+ })(ButtonStyleRoundedEnum || (ButtonStyleRoundedEnum = {}));
1058
+
1059
+ class ActionConfirmationDialogDescriptor {
1060
+ constructor() {
1061
+ this._closeOnEscape = true; // Defines if dialog closes when esc key is pressed.
1062
+ this._closable = true; // Defines if dialog is closable.
1063
+ this._acceptButtonStyle = new ButtonStyleBuilder(ActionLevelEnum.Default);
1064
+ this._rejectButtonStyle = new ButtonStyleBuilder(ActionLevelEnum.Default).withTextButton();
1065
+ this._icon = 'pi pi-exclamation-triangle';
1066
+ this._acceptIcon = 'pi pi-check';
1067
+ this._rejectIcon = 'pi pi-times';
1068
+ }
1069
+ withIcon(icon) {
1070
+ this._icon = icon;
1071
+ return this;
1072
+ }
1073
+ withTitle(title) {
1074
+ this._title = title;
1075
+ return this;
1076
+ }
1077
+ withMessage(message) {
1078
+ this._message = message;
1079
+ return this;
1080
+ }
1081
+ withAcceptLabel(acceptLabel) {
1082
+ this._acceptLabel = acceptLabel;
1083
+ return this;
1084
+ }
1085
+ withAcceptIcon(acceptIcon) {
1086
+ this._acceptIcon = acceptIcon;
1087
+ return this;
1088
+ }
1089
+ withAcceptButtonStyle(buttonStyle) {
1090
+ this._acceptButtonStyle = buttonStyle;
1091
+ return this;
1092
+ }
1093
+ withRejectLabel(rejectLabel) {
1094
+ this._rejectLabel = rejectLabel;
1095
+ return this;
1096
+ }
1097
+ withRejectIcon(rejectIcon) {
1098
+ this._rejectIcon = rejectIcon;
1099
+ return this;
1100
+ }
1101
+ withRejectButtonStyle(buttonStyle) {
1102
+ this._rejectButtonStyle = buttonStyle;
1103
+ return this;
1104
+ }
1105
+ /**
1106
+ * set if dialog can be closed on escaped pressed
1107
+ * if true, then closable is also set to true
1108
+ * @param closeOnEscape
1109
+ */
1110
+ withCloseOnEscape(closeOnEscape) {
1111
+ if (closeOnEscape) {
1112
+ this._closable = true;
1113
+ }
1114
+ this._closeOnEscape = closeOnEscape;
1115
+ return this;
1116
+ }
1117
+ withClosable(closable) {
1118
+ this._closable = closable;
1119
+ return this;
1120
+ }
1121
+ withRunConfirmationConfigMapFn(runConfirmationConfigMapFn) {
1122
+ this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;
1123
+ return this;
1124
+ }
1125
+ get icon() {
1126
+ return this._icon;
1127
+ }
1128
+ get title() {
1129
+ return this._title;
1130
+ }
1131
+ get message() {
1132
+ return this._message;
1133
+ }
1134
+ get acceptLabel() {
1135
+ return this._acceptLabel;
1136
+ }
1137
+ get acceptIcon() {
1138
+ return this._acceptIcon;
1139
+ }
1140
+ get acceptButtonStyle() {
1141
+ return this._acceptButtonStyle;
1142
+ }
1143
+ get rejectLabel() {
1144
+ return this._rejectLabel;
1145
+ }
1146
+ get rejectIcon() {
1147
+ return this._rejectIcon;
1148
+ }
1149
+ get rejectButtonStyle() {
1150
+ return this._rejectButtonStyle;
1151
+ }
1152
+ get closeOnEscape() {
1153
+ return this._closeOnEscape;
1154
+ }
1155
+ get closable() {
1156
+ return this._closable;
1157
+ }
1158
+ get runConfirmationConfigMapFn() {
1159
+ return this._runConfirmationConfigMapFn;
1160
+ }
1161
+ }
1007
1162
 
1008
1163
  class ActionDescriptor {
1009
1164
  constructor(model, actionName, parentType, parentProperty) {
@@ -1012,10 +1167,10 @@ class ActionDescriptor {
1012
1167
  this._position = ActionPositionEnum.ToolbarRight;
1013
1168
  this._level = ActionLevelEnum.Default;
1014
1169
  this._routeUrl = null;
1015
- this._buttonStyle = new ButtonStyleBuilder(this._level);
1016
- this._hasRunConfirmation = false;
1017
1170
  this._hasRunNotificationSuccess = true;
1018
1171
  this._hasRunNotificationError = true;
1172
+ //button
1173
+ this._buttonDescriptor = new ButtonDescriptor();
1019
1174
  this._model = model;
1020
1175
  this._actionName = actionName;
1021
1176
  if ((parentType && !parentProperty) || (!parentProperty && parentProperty)) {
@@ -1064,15 +1219,6 @@ class ActionDescriptor {
1064
1219
  get routeUrl() {
1065
1220
  return this._routeUrl;
1066
1221
  }
1067
- get title() {
1068
- return this._title;
1069
- }
1070
- get icon() {
1071
- return this._icon;
1072
- }
1073
- get tooltip() {
1074
- return this._tooltip;
1075
- }
1076
1222
  get dataProvider() {
1077
1223
  return this._dataProvider;
1078
1224
  }
@@ -1097,83 +1243,14 @@ class ActionDescriptor {
1097
1243
  get actionNameLong() {
1098
1244
  return this._actionNameLong;
1099
1245
  }
1100
- get buttonStyle() {
1101
- return this._buttonStyle;
1102
- }
1103
- /**
1104
- * @deprecated use _buttonStyle instead
1105
- */
1106
1246
  get className() {
1107
- return this._buttonStyle.customClass;
1247
+ return this.buttonDescriptor.styleClass.customClass;
1108
1248
  }
1109
- /**
1110
- * @deprecated use _buttonStyle instead
1111
- */
1112
- get isStyleText() {
1113
- return this._buttonStyle.textButton;
1114
- }
1115
- /**
1116
- * @deprecated use _buttonStyle instead
1117
- */
1118
- get isStyleOutlined() {
1119
- return this._buttonStyle.outlineButton;
1120
- }
1121
- /**
1122
- * @deprecated use _buttonStyle instead
1123
- */
1124
- get isStyleRaised() {
1125
- return this._buttonStyle.raisedButton;
1126
- }
1127
- /**
1128
- * @deprecated use _buttonStyle instead
1129
- */
1130
- get size() {
1131
- return this._buttonStyle.size;
1132
- }
1133
- /**
1134
- * @deprecated use _buttonStyle instead
1135
- */
1136
- get isSizeExtraSmall() {
1137
- return this._buttonStyle.size === ActionSizeEnum.ExtraSmall;
1138
- }
1139
- /**
1140
- * @deprecated use _buttonStyle instead
1141
- */
1142
- get isSizeSmall() {
1143
- return this._buttonStyle.size === ActionSizeEnum.Small;
1144
- }
1145
- /**
1146
- * @deprecated use _buttonStyle instead
1147
- */
1148
- get isSizeLarge() {
1149
- return this._buttonStyle.size === ActionSizeEnum.Large;
1150
- }
1151
- /**
1152
- * @deprecated use _buttonStyle instead
1153
- */
1154
- get isSizeExtraLarge() {
1155
- return this._buttonStyle.size === ActionSizeEnum.ExtraLarge;
1249
+ get runConfirmationDialogDescriptor() {
1250
+ return this._runConfirmationDialogDescriptor;
1156
1251
  }
1157
1252
  get hasRunConfirmation() {
1158
- return this._hasRunConfirmation;
1159
- }
1160
- get runConfirmationIcon() {
1161
- return this._runConfirmationIcon;
1162
- }
1163
- get runConfirmationTitle() {
1164
- return this._runConfirmationTitle;
1165
- }
1166
- get runConfirmationMessage() {
1167
- return this._runConfirmationMessage;
1168
- }
1169
- get runConfirmationAcceptTitle() {
1170
- return this._runConfirmationAcceptTitle;
1171
- }
1172
- get runConfirmationRejectTitle() {
1173
- return this._runConfirmationRejectTitle;
1174
- }
1175
- get runConfirmationConfigMapFn() {
1176
- return this._runConfirmationConfigMapFn;
1253
+ return this._runConfirmationDialogDescriptor !== null && this._runConfirmationDialogDescriptor !== undefined;
1177
1254
  }
1178
1255
  get hasRunNotificationSuccess() {
1179
1256
  return this._hasRunNotificationSuccess;
@@ -1205,6 +1282,9 @@ class ActionDescriptor {
1205
1282
  get permissionsRouteType() {
1206
1283
  return this._permissionsRouteType;
1207
1284
  }
1285
+ get buttonDescriptor() {
1286
+ return this._buttonDescriptor;
1287
+ }
1208
1288
  withDataProvider(dataProvider) {
1209
1289
  this._dataProvider = dataProvider;
1210
1290
  return this;
@@ -1233,70 +1313,25 @@ class ActionDescriptor {
1233
1313
  this._routeUrl = routeUrl;
1234
1314
  return this;
1235
1315
  }
1236
- withLevel(level) {
1237
- this._level = level;
1238
- this._buttonStyle = this._buttonStyle.withActionLevel(level);
1239
- return this;
1240
- }
1241
- /**
1242
- * Overrides default title key with model action key (${model.typeName}.actions.${actionName}). Not relevant if parentType name is provided.
1243
- */
1244
- withModelTitle() {
1245
- this._title = `${this._i18nModelActionBaseKey}.title`;
1316
+ withPosition(position) {
1317
+ this._position = position;
1246
1318
  return this;
1247
1319
  }
1248
1320
  /**
1249
- * Overrides default title key (${actionName}.title). If null, no title will be shown.
1250
- * @param title Title i18n key or title.
1321
+ * creates confirmation action with default style based on action descriptor
1251
1322
  */
1252
- withTitle(title) {
1253
- this._title = title;
1254
- return this;
1255
- }
1256
- withIcon(icon) {
1257
- this._icon = icon;
1258
- return this;
1259
- }
1260
- withTooltip(tooltip) {
1261
- this._tooltip = tooltip;
1262
- return this;
1263
- }
1264
- withClassName(className) {
1265
- this._buttonStyle = this._buttonStyle.withCustomClass(className);
1266
- return this;
1267
- }
1268
- withSize(size = ActionSizeEnum.Normal) {
1269
- this._buttonStyle = this._buttonStyle.withSize(size);
1270
- return this;
1271
- }
1272
- withStyle(styleText = false, styleOutlined = false, styleRaised = false) {
1273
- this._buttonStyle = this._buttonStyle.withOutlineButton(styleOutlined);
1274
- this._buttonStyle = this._buttonStyle.withRaisedButton(styleRaised);
1275
- this._buttonStyle = this._buttonStyle.withTextButton(styleText);
1276
- return this;
1277
- }
1278
- withPosition(position) {
1279
- this._position = position;
1280
- return this;
1323
+ withRunConfirmation() {
1324
+ this._runConfirmationDialogDescriptor = new ActionConfirmationDialogDescriptor();
1325
+ this._runConfirmationDialogDescriptor.acceptButtonStyle.withActionLevel(this._level);
1326
+ this._runConfirmationDialogDescriptor.rejectButtonStyle.withActionLevel(this._level);
1327
+ return this._runConfirmationDialogDescriptor;
1281
1328
  }
1282
1329
  /**
1283
- * Add a confirmation dialogue to the action
1284
- * @param icon the icon to display on the confirmation dialogue
1285
- * @param title the title of the confirmation dialogue
1286
- * @param message the message on the confirmation dialogue
1287
- * @param acceptTitle the title of the accepting button
1288
- * @param rejectTitle the title of the rejecting button
1289
- * @param runConfirmationConfigMapFn function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter
1290
- * may lead to unexpected behaviour
1330
+ * Add a configuration dialogue to action using ActionConfigurationDescriptor
1331
+ * @param confirmationDescriptor descriptor with customizable information for dialog
1291
1332
  */
1292
- withRunConfirmation(icon = 'pi pi-exclamation-triangle', title, message, acceptTitle, rejectTitle, runConfirmationConfigMapFn) {
1293
- this._hasRunConfirmation = true;
1294
- this._runConfirmationIcon = icon;
1295
- this._runConfirmationTitle = title;
1296
- this._runConfirmationMessage = message;
1297
- this._runConfirmationAcceptTitle = acceptTitle;
1298
- this._runConfirmationRejectTitle = rejectTitle;
1299
- this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;
1333
+ withRunConfirmationDescriptor(runConfirmationDialogDescriptor) {
1334
+ this._runConfirmationDialogDescriptor = runConfirmationDialogDescriptor;
1300
1335
  return this;
1301
1336
  }
1302
1337
  withRunNotificationSuccess(title, message, hasNotification = true) {
@@ -1330,6 +1365,10 @@ class ActionDescriptor {
1330
1365
  this._permissionsRouteType = permissionsRouteType;
1331
1366
  return this;
1332
1367
  }
1368
+ withButtonDescriptor(buttonDescriptor) {
1369
+ this._buttonDescriptor = buttonDescriptor;
1370
+ return this;
1371
+ }
1333
1372
  }
1334
1373
  class ActionSimpleDescriptor extends ActionDescriptor {
1335
1374
  constructor(actionName, modelType, idProperty, titleProperty) {
@@ -1346,7 +1385,7 @@ class ActionEditorDescriptor extends ActionDescriptor {
1346
1385
  this._dialogSize = ActionEditorDialogSizeEnum.Normal;
1347
1386
  this._type = ActionTypeEnum.Editor;
1348
1387
  this._editorDescriptor = editorDescriptor;
1349
- this._editorActions.push(new ActionEditorSubmitDescriptor(this), new ActionEditorSubmitDescriptor(this, ActionEditorSubmitTypeEnum.Cancel));
1388
+ this._editorActions.push(ActionEditorSubmitDescriptor.forPrimary(this), ActionEditorSubmitDescriptor.forSecondary(this));
1350
1389
  }
1351
1390
  get editorTitle() {
1352
1391
  return this._editorTitle;
@@ -1453,7 +1492,23 @@ class ActionEditorSubmitDescriptor extends ActionDescriptor {
1453
1492
  this._editorAction = editorAction;
1454
1493
  this._submitType = submitType;
1455
1494
  this._position = ActionPositionEnum.FooterRight;
1456
- this._buttonStyle = this._buttonStyle.withActionLevel(editorAction.level).withTextButton();
1495
+ this.buttonDescriptor.styleClass.withActionLevel(editorAction.level).withTextButton();
1496
+ }
1497
+ /**
1498
+ * creates primary action with primary button style
1499
+ * @param editorAction
1500
+ * @param submitType
1501
+ */
1502
+ static forPrimary(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {
1503
+ return new ActionEditorSubmitDescriptor(editorAction, submitType).withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder()));
1504
+ }
1505
+ /**
1506
+ * creates secondary button with text button style
1507
+ * @param editorAction
1508
+ * @param submitType
1509
+ */
1510
+ static forSecondary(editorAction, submitType = ActionEditorSubmitTypeEnum.Cancel) {
1511
+ return new ActionEditorSubmitDescriptor(editorAction, submitType).withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withTextButton()));
1457
1512
  }
1458
1513
  get submitType() {
1459
1514
  return this._submitType;
@@ -1487,8 +1542,8 @@ class ActionEditorAddDescriptor extends ActionEditorDescriptor {
1487
1542
  this.withPosition(ActionPositionEnum.ToolbarLeft);
1488
1543
  this.withRouteTrigger('add');
1489
1544
  this.withSubmitFunction(ActionDataProviderUtil.runCreateOrFail);
1490
- this.withLevel(ActionLevelEnum.Success);
1491
- this.withIcon('pi pi-plus');
1545
+ this.buttonDescriptor.styleClass.withActionLevel(ActionLevelEnum.Success);
1546
+ this.buttonDescriptor.withIcon('pi pi-plus');
1492
1547
  this.withPermissionsRouteType(Permissions.ActionTypes.ADD);
1493
1548
  }
1494
1549
  withServiceType(serviceType) {
@@ -1511,12 +1566,11 @@ class ActionEditorEditDescriptor extends ActionEditorDescriptor {
1511
1566
  constructor(editorDescriptor) {
1512
1567
  super(editorDescriptor, ActionEditorEditDescriptor.ACTION_NAME);
1513
1568
  this.withPosition(ActionPositionEnum.RowInline);
1514
- this.withTitle(null);
1515
1569
  this.withRouteTrigger(':itemId/edit');
1516
1570
  this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);
1517
1571
  this.withSubmitFunction(ActionDataProviderUtil.runUpdateOrFail);
1518
- this.withIcon('pi pi-pencil');
1519
1572
  this.withPermissionsRouteType(Permissions.ActionTypes.EDIT);
1573
+ this.buttonDescriptor.withLabel(null).withIcon('pi pi-pencil');
1520
1574
  }
1521
1575
  withServiceType(serviceType) {
1522
1576
  return this.withServiceSubmitFunction(serviceType);
@@ -1538,12 +1592,11 @@ class ActionDeleteDescriptor extends ActionDescriptor {
1538
1592
  constructor(model) {
1539
1593
  super(model, ActionDeleteDescriptor.ACTION_NAME);
1540
1594
  this.withPosition(ActionPositionEnum.RowInline);
1541
- this.withTitle(null);
1542
1595
  this.withRunFunction(ActionDataProviderUtil.runDeleteOrFail);
1543
- this.withLevel(ActionLevelEnum.Danger);
1544
- this.withIcon('pi pi-trash');
1545
- this.withRunConfirmation(undefined);
1596
+ this.buttonDescriptor.styleClass.withActionLevel(ActionLevelEnum.Danger);
1597
+ this.withRunConfirmation();
1546
1598
  this.withPermissionsRouteType(Permissions.ActionTypes.DELETE);
1599
+ this.buttonDescriptor.withLabel(null).withIcon('pi pi-trash');
1547
1600
  }
1548
1601
  withServiceType(serviceType) {
1549
1602
  return this.withServiceDeleteFunction(serviceType);
@@ -2001,6 +2054,12 @@ class ColumnDescriptor {
2001
2054
  get hasCopyToClipboard() {
2002
2055
  return this._hasCopyToClipboard;
2003
2056
  }
2057
+ get template() {
2058
+ return this._template;
2059
+ }
2060
+ get getter() {
2061
+ return this._getter;
2062
+ }
2004
2063
  asType(type = ColumnTypeEnum.String) {
2005
2064
  this._columnType = type;
2006
2065
  return this;
@@ -2136,6 +2195,14 @@ class ColumnDescriptor {
2136
2195
  this._hasCopyToClipboard = hasCopyToCliboard;
2137
2196
  return this;
2138
2197
  }
2198
+ withTemplate(template) {
2199
+ this._template = template;
2200
+ return this;
2201
+ }
2202
+ withGetter(getter) {
2203
+ this._getter = getter;
2204
+ return this;
2205
+ }
2139
2206
  copy() {
2140
2207
  var _a;
2141
2208
  const descriptor = new ColumnDescriptor(this._table, this._property);
@@ -2163,6 +2230,8 @@ class ColumnDescriptor {
2163
2230
  descriptor._minWidth = this._minWidth;
2164
2231
  descriptor._maxWidth = this._maxWidth;
2165
2232
  descriptor._hasCopyToClipboard = this._hasCopyToClipboard;
2233
+ descriptor._template = this._template;
2234
+ descriptor._getter = this._getter;
2166
2235
  return descriptor;
2167
2236
  }
2168
2237
  }
@@ -3546,6 +3615,116 @@ class TableviewDescriptor {
3546
3615
  }
3547
3616
  }
3548
3617
 
3618
+ class ButtonDescriptor {
3619
+ constructor() {
3620
+ this._disabled = false;
3621
+ this._iconPosition = 'left';
3622
+ this._styleClass = new ButtonStyleBuilder();
3623
+ this._loading = false;
3624
+ this._loadingIcon = 'pi pi-spinner pi-spin';
3625
+ }
3626
+ withLabel(label) {
3627
+ this._label = label;
3628
+ return this;
3629
+ }
3630
+ withDisabled(disabled = true) {
3631
+ this._disabled = disabled;
3632
+ return this;
3633
+ }
3634
+ withIcon(icon) {
3635
+ this._icon = icon;
3636
+ return this;
3637
+ }
3638
+ withIconPosition(iconPosition) {
3639
+ this._iconPosition = iconPosition;
3640
+ return this;
3641
+ }
3642
+ withStyleClass(style) {
3643
+ this._styleClass = style;
3644
+ return this;
3645
+ }
3646
+ withOnClick(onClick) {
3647
+ this._onClick = onClick;
3648
+ return this;
3649
+ }
3650
+ withOnFocus(onFocus) {
3651
+ this._onFocus = onFocus;
3652
+ return this;
3653
+ }
3654
+ withOnBlur(onBlur) {
3655
+ this._onBlur = onBlur;
3656
+ return this;
3657
+ }
3658
+ withLoading(loading = true) {
3659
+ this._loading = loading;
3660
+ return this;
3661
+ }
3662
+ withLoadingIcon(loadingIcon) {
3663
+ this._loadingIcon = loadingIcon;
3664
+ return this;
3665
+ }
3666
+ withBadge(badge) {
3667
+ this._badge = badge;
3668
+ return this;
3669
+ }
3670
+ withTooltip(tooltip) {
3671
+ this._tooltip = tooltip;
3672
+ return this;
3673
+ }
3674
+ get label() {
3675
+ return this._label;
3676
+ }
3677
+ get disabled() {
3678
+ return this._disabled;
3679
+ }
3680
+ get icon() {
3681
+ return this._icon;
3682
+ }
3683
+ get iconPosition() {
3684
+ return this._iconPosition;
3685
+ }
3686
+ get styleClass() {
3687
+ return this._styleClass;
3688
+ }
3689
+ get onClick() {
3690
+ return this._onClick;
3691
+ }
3692
+ get onFocus() {
3693
+ return this._onFocus;
3694
+ }
3695
+ get onBlur() {
3696
+ return this._onBlur;
3697
+ }
3698
+ get loading() {
3699
+ return this._loading;
3700
+ }
3701
+ get loadingIcon() {
3702
+ return this._loadingIcon;
3703
+ }
3704
+ get badge() {
3705
+ return this._badge;
3706
+ }
3707
+ get tooltip() {
3708
+ return this._tooltip;
3709
+ }
3710
+ copy() {
3711
+ const descriptor = new ButtonDescriptor();
3712
+ descriptor._label = this._label;
3713
+ descriptor._disabled = this._disabled;
3714
+ descriptor._icon = this._icon;
3715
+ descriptor._iconPosition = this._iconPosition;
3716
+ descriptor._styleClass = this._styleClass;
3717
+ descriptor._onClick = this._onClick;
3718
+ descriptor._onFocus = this._onFocus;
3719
+ descriptor._onBlur = this._onBlur;
3720
+ descriptor._loading = this._loading;
3721
+ descriptor._loadingIcon = this._loadingIcon;
3722
+ descriptor._badge = this._badge;
3723
+ descriptor._tooltip = this._tooltip;
3724
+ return descriptor;
3725
+ }
3726
+ }
3727
+
3549
3728
  class EditorFormlyUtil {
3550
3729
  static createFormlyConfigFromDescriptor(descriptor) {
3551
3730
  const fields = [];
@@ -5379,6 +5558,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
5379
5558
  }]
5380
5559
  }] });
5381
5560
 
5561
+ class MngGetterPipe {
5562
+ transform(value, getterFunction) {
5563
+ if (typeof getterFunction === 'function') {
5564
+ return getterFunction(value);
5565
+ }
5566
+ return value;
5567
+ }
5568
+ }
5569
+ MngGetterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngGetterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5570
+ MngGetterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: MngGetterPipe, name: "getter" });
5571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngGetterPipe, decorators: [{
5572
+ type: Pipe,
5573
+ args: [{
5574
+ name: 'getter',
5575
+ pure: true
5576
+ }]
5577
+ }] });
5578
+
5579
+ class MngTemplatePipe {
5580
+ constructor(parametrizePipe) {
5581
+ this.parametrizePipe = parametrizePipe;
5582
+ }
5583
+ transform(value, template) {
5584
+ if (typeof template === 'string') {
5585
+ return this.parametrizePipe.transform(template, undefined, value);
5586
+ }
5587
+ return value;
5588
+ }
5589
+ }
5590
+ MngTemplatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTemplatePipe, deps: [{ token: MngParametrizePipe }], target: i0.ɵɵFactoryTarget.Pipe });
5591
+ MngTemplatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: MngTemplatePipe, name: "template" });
5592
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTemplatePipe, decorators: [{
5593
+ type: Pipe,
5594
+ args: [{
5595
+ name: 'template',
5596
+ pure: true
5597
+ }]
5598
+ }], ctorParameters: function () { return [{ type: MngParametrizePipe }]; } });
5599
+
5382
5600
  class MngActionExecutorService {
5383
5601
  constructor(injector, router, dialogService, confirmationService, translate, configurationService, navigationService, errorMapper, parametrize, defaultEditorDialogComponent) {
5384
5602
  this.injector = injector;
@@ -5634,7 +5852,7 @@ class MngActionExecutorService {
5634
5852
  * @return Action context for run function.
5635
5853
  */
5636
5854
  runAction(action, parameters, dataProvider, instance, previousActionInstance) {
5637
- var _a, _b, _c, _d;
5855
+ var _a, _b, _c, _d, _e, _f;
5638
5856
  if (!instance) {
5639
5857
  // create new instance if non provided
5640
5858
  instance = new ActionInstance(action, ActionInstanceStateEnum.ActivationEnd, this.debug);
@@ -5642,33 +5860,44 @@ class MngActionExecutorService {
5642
5860
  const context = this.prepareActionContext(instance, parameters, dataProvider, previousActionInstance);
5643
5861
  if (action.hasRunConfirmation) {
5644
5862
  const sourceComponent = parameters === null || parameters === void 0 ? void 0 : parameters.sourceComponent;
5863
+ const confirmationDescriptor = action.runConfirmationDialogDescriptor;
5645
5864
  if (typeof (sourceComponent === null || sourceComponent === void 0 ? void 0 : sourceComponent.getConfirmationService) !== 'function' || typeof (sourceComponent === null || sourceComponent === void 0 ? void 0 : sourceComponent.getConfirmationServiceInstanceKey) !== 'function') {
5646
5865
  throw new Error(`Source component ${sourceComponent} should be implementing IConfirmationService interface to be able to provide confirmation functionality.`);
5647
5866
  }
5867
+ const item = parameters.item;
5648
5868
  const srcConfirmComponent = sourceComponent;
5649
5869
  let confirmParams = {
5650
5870
  key: srcConfirmComponent.getConfirmationServiceInstanceKey(action),
5651
- acceptVisible: false,
5652
- rejectVisible: false
5871
+ icon: confirmationDescriptor.icon,
5872
+ acceptVisible: true,
5873
+ acceptIcon: (_a = confirmationDescriptor.acceptIcon) !== null && _a !== void 0 ? _a : undefined,
5874
+ acceptButtonStyleClass: confirmationDescriptor.acceptButtonStyle.getButtonClass(),
5875
+ rejectVisible: true,
5876
+ rejectIcon: (_b = confirmationDescriptor.rejectIcon) !== null && _b !== void 0 ? _b : undefined,
5877
+ rejectButtonStyleClass: confirmationDescriptor.rejectButtonStyle.getButtonClass(),
5878
+ closeOnEscape: confirmationDescriptor.closeOnEscape
5653
5879
  };
5654
- const item = parameters.item;
5655
- if (action.runConfirmationTitle !== null) {
5656
- confirmParams.header = (_a = I18nUtils.Action.get(this.translate, action, 'confirm.title', action.runConfirmationTitle, item, 'general.confirmation')) !== null && _a !== void 0 ? _a : undefined;
5880
+ if (confirmationDescriptor.title !== null) {
5881
+ confirmParams.header = (_c = I18nUtils.Action.get(this.translate, action, 'confirm.title', confirmationDescriptor.title, item, 'general.confirmation')) !== null && _c !== void 0 ? _c : undefined;
5657
5882
  }
5658
- if (action.runConfirmationMessage !== null) {
5883
+ if (confirmationDescriptor.message !== null) {
5659
5884
  confirmParams.message =
5660
- (_b = I18nUtils.Action.get(this.translate, action, 'confirm.message', action.runConfirmationMessage, StringUtil.escapeHtmlAny(item), 'general.confirmation')) !== null && _b !== void 0 ? _b : undefined;
5885
+ (_d = I18nUtils.Action.get(this.translate, action, 'confirm.message', confirmationDescriptor.message, StringUtil.escapeHtmlAny(item), 'general.confirmation')) !== null && _d !== void 0 ? _d : undefined;
5886
+ }
5887
+ if (confirmationDescriptor.acceptLabel !== null) {
5888
+ confirmParams.acceptLabel = (_e = I18nUtils.Action.get(this.translate, action, 'confirm.accept', confirmationDescriptor.acceptLabel, item, 'general.yes')) !== null && _e !== void 0 ? _e : undefined;
5661
5889
  }
5662
- if (action.runConfirmationIcon !== null) {
5663
- confirmParams.icon = action.runConfirmationIcon === undefined ? 'pi pi-exclamation-triangle' : action.runConfirmationIcon;
5890
+ if (confirmationDescriptor.acceptIcon !== null) {
5891
+ confirmParams.acceptIcon = confirmationDescriptor.acceptIcon;
5664
5892
  }
5665
- if (action.runConfirmationAcceptTitle !== null) {
5666
- confirmParams.acceptLabel = (_c = I18nUtils.Action.get(this.translate, action, 'confirm.accept', action.runConfirmationAcceptTitle, item, 'general.yes')) !== null && _c !== void 0 ? _c : undefined;
5667
- confirmParams.acceptVisible = true;
5893
+ if (confirmationDescriptor.rejectIcon !== null) {
5894
+ confirmParams.rejectIcon = confirmationDescriptor.rejectIcon;
5668
5895
  }
5669
- if (action.runConfirmationRejectTitle !== null) {
5670
- confirmParams.rejectLabel = (_d = I18nUtils.Action.get(this.translate, action, 'confirm.reject', action.runConfirmationRejectTitle, item, 'general.no')) !== null && _d !== void 0 ? _d : undefined;
5671
- confirmParams.rejectVisible = true;
5896
+ if (confirmationDescriptor.rejectLabel !== null) {
5897
+ confirmParams.rejectLabel = (_f = I18nUtils.Action.get(this.translate, action, 'confirm.reject', confirmationDescriptor.rejectLabel, item, 'general.no')) !== null && _f !== void 0 ? _f : undefined;
5898
+ }
5899
+ if (confirmationDescriptor.rejectLabel === null && confirmationDescriptor.rejectIcon === null) {
5900
+ confirmParams.rejectVisible = false;
5672
5901
  }
5673
5902
  confirmParams.accept = () => {
5674
5903
  instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;
@@ -5678,8 +5907,8 @@ class MngActionExecutorService {
5678
5907
  instance.state = ActionInstanceStateEnum.RunConfirmationEndReject;
5679
5908
  this.deactivateAction(instance);
5680
5909
  };
5681
- if (action.runConfirmationConfigMapFn) {
5682
- confirmParams = action.runConfirmationConfigMapFn(context, confirmParams);
5910
+ if (confirmationDescriptor.runConfirmationConfigMapFn) {
5911
+ confirmParams = confirmationDescriptor.runConfirmationConfigMapFn(context, confirmParams);
5683
5912
  }
5684
5913
  context.confirmation = confirmParams;
5685
5914
  instance.state = ActionInstanceStateEnum.RunConfirmationStart;
@@ -5836,7 +6065,7 @@ class MngActionExecutorService {
5836
6065
  if (actionUrl.startsWith('/')) {
5837
6066
  actionUrl = actionUrl.substring(1);
5838
6067
  }
5839
- const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData);
6068
+ const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData).split('/');
5840
6069
  instance.triggerRouteNavigation = from(this.router.navigate([baseUrl, ...actionUrlSegments], { relativeTo: parameters.route, queryParams: parsedUrl.queryParams }));
5841
6070
  return instance;
5842
6071
  }
@@ -6380,7 +6609,7 @@ class MngActionComponent {
6380
6609
  ngOnInit() {
6381
6610
  var _a, _b;
6382
6611
  this.viewContainer = (_b = (_a = this.viewContainerInit) !== null && _a !== void 0 ? _a : this.viewContainerService) !== null && _b !== void 0 ? _b : undefined;
6383
- this.hasNoTitle = this.action.title === null;
6612
+ this.hasNoTitle = this.action.buttonDescriptor.label === null;
6384
6613
  this.isEnabledSubject.next(true);
6385
6614
  this.isVisibleSubject.next(true);
6386
6615
  this.isPermittedSubject.next(true);
@@ -6403,7 +6632,7 @@ class MngActionComponent {
6403
6632
  this.isHostHidden = !isVisible || !isPermitted;
6404
6633
  });
6405
6634
  this.subscriptions.push(hostVisibilitySubscription);
6406
- this.buttonClass = this.action.buttonStyle.getButtonClass(this.hasNoTitle);
6635
+ this.buttonClass = this.action.buttonDescriptor.styleClass.getButtonClass(this.hasNoTitle);
6407
6636
  }
6408
6637
  ngOnChanges(changes) {
6409
6638
  var _a, _b, _c, _d, _e, _f;
@@ -6454,7 +6683,7 @@ class MngActionComponent {
6454
6683
  return `${action.actionName}_${this.cmpId}`;
6455
6684
  }
6456
6685
  processSubscriptions() {
6457
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
6686
+ var _a, _b, _c, _d, _e, _f, _g, _h;
6458
6687
  const parameters = new ActionParameters(this.itemId, this.item)
6459
6688
  .withActionData(this.actionData)
6460
6689
  .withViewContainer((_a = this.viewContainer) !== null && _a !== void 0 ? _a : undefined)
@@ -6483,21 +6712,21 @@ class MngActionComponent {
6483
6712
  }
6484
6713
  if (!this.hasNoTitle) {
6485
6714
  (_f = this.labelSubscription) === null || _f === void 0 ? void 0 : _f.unsubscribe();
6486
- this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', (_h = (_g = this.action) === null || _g === void 0 ? void 0 : _g.title) !== null && _h !== void 0 ? _h : undefined, this.item).subscribe({
6715
+ this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', (_g = this.action.buttonDescriptor.label) !== null && _g !== void 0 ? _g : undefined, this.item).subscribe({
6487
6716
  next: i18n => this.labelSubject.next(i18n)
6488
6717
  });
6489
6718
  }
6490
- (_j = this.tooltipSubscription) === null || _j === void 0 ? void 0 : _j.unsubscribe();
6491
- this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', (_l = (_k = this.action) === null || _k === void 0 ? void 0 : _k.tooltip) !== null && _l !== void 0 ? _l : undefined, this.item).subscribe({
6719
+ (_h = this.tooltipSubscription) === null || _h === void 0 ? void 0 : _h.unsubscribe();
6720
+ this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action.buttonDescriptor.tooltip, this.item).subscribe({
6492
6721
  next: i18n => this.tooltipSubject.next(i18n)
6493
6722
  });
6494
6723
  }
6495
6724
  }
6496
6725
  MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1$2.TranslateService }, { token: MngAuthorizationService }, { token: MngActionExecutorService }, { token: i2.ConfirmationService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
6497
- MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", queryParam: "queryParam", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass", "class.m-0": "this.isHostHidden" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | 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 | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\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]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\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]=\"buttonClass\"></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"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: MngParametrizePipe, name: "parametrize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6726
+ MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", queryParam: "queryParam", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass", "class.m-0": "this.isHostHidden" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.buttonDescriptor.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.buttonDescriptor.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\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.buttonDescriptor.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]=\"buttonClass\"></button>\n </ng-template>\n <p-confirmDialog\n *ngIf=\"action.runConfirmationDialogDescriptor\"\n [key]=\"action.actionName + '_' + cmpId\"\n [baseZIndex]=\"50\"\n appendTo=\"body\"\n [closable]=\"action.runConfirmationDialogDescriptor.closable\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.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"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: MngParametrizePipe, name: "parametrize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6498
6727
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionComponent, decorators: [{
6499
6728
  type: Component,
6500
- args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | 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 | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\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]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\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]=\"buttonClass\"></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"] }]
6729
+ args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.buttonDescriptor.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.buttonDescriptor.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\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.buttonDescriptor.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]=\"buttonClass\"></button>\n </ng-template>\n <p-confirmDialog\n *ngIf=\"action.runConfirmationDialogDescriptor\"\n [key]=\"action.actionName + '_' + cmpId\"\n [baseZIndex]=\"50\"\n appendTo=\"body\"\n [closable]=\"action.runConfirmationDialogDescriptor.closable\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
6501
6730
  }], ctorParameters: function () {
6502
6731
  return [{ type: i1.ActivatedRoute }, { type: i1$2.TranslateService }, { type: MngAuthorizationService }, { type: MngActionExecutorService }, { type: i2.ConfirmationService }, { type: MngViewContainerComponentService, decorators: [{
6503
6732
  type: Optional
@@ -6787,13 +7016,14 @@ class MngFormEditorComponent {
6787
7016
  if (field && field.setter) {
6788
7017
  const splitPath = field.property.split('.');
6789
7018
  let fieldValue = formValue;
6790
- for (let i = 0; i < splitPath.length; i++) {
7019
+ for (let i = 0; i < splitPath.length - 1; i++) {
6791
7020
  const currentSubPath = splitPath[i];
6792
7021
  if (typeof fieldValue[currentSubPath] !== 'object') {
6793
7022
  fieldValue[currentSubPath] = {};
6794
7023
  }
6795
7024
  fieldValue = fieldValue[currentSubPath];
6796
7025
  }
7026
+ fieldValue = fieldValue[splitPath[splitPath.length - 1]];
6797
7027
  field.setter(formValue, fieldValue);
6798
7028
  }
6799
7029
  });
@@ -7466,11 +7696,11 @@ class MngActionEditorComponent {
7466
7696
  this.setTitle();
7467
7697
  for (const action of this.action.editorActions) {
7468
7698
  if (action instanceof ActionEditorSubmitDescriptor) {
7469
- if (typeof action.icon === 'undefined') {
7470
- action.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');
7699
+ if (typeof action.buttonDescriptor.icon === 'undefined') {
7700
+ action.buttonDescriptor.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');
7471
7701
  }
7472
- if (typeof action.title === 'undefined') {
7473
- action.withTitle(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.isDialog ? 'general.close' : 'general.cancel');
7702
+ if (typeof action.buttonDescriptor.label === 'undefined') {
7703
+ action.buttonDescriptor.withLabel(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.isDialog ? 'general.close' : 'general.cancel');
7474
7704
  }
7475
7705
  // assign run operations
7476
7706
  action.withRunNotificationSuccess(undefined, undefined, false);
@@ -7640,6 +7870,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
7640
7870
  args: [MngFormEditorComponent]
7641
7871
  }] } });
7642
7872
 
7873
+ class MngButtonComponent {
7874
+ constructor() {
7875
+ this.clickEmitter = new EventEmitter();
7876
+ this.focusEmitter = new EventEmitter();
7877
+ this.blurEmitter = new EventEmitter();
7878
+ this.buttonClass = 'p-button';
7879
+ }
7880
+ ngOnInit() {
7881
+ this.buttonClass = `${this.descriptor.styleClass.getButtonClass(this.descriptor.label == null)}`;
7882
+ }
7883
+ onClick(event) {
7884
+ var _a, _b;
7885
+ this.clickEmitter.next(event);
7886
+ (_b = (_a = this.descriptor).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, event);
7887
+ }
7888
+ onFocus(event) {
7889
+ var _a, _b;
7890
+ this.focusEmitter.next(event);
7891
+ (_b = (_a = this.descriptor).onFocus) === null || _b === void 0 ? void 0 : _b.call(_a, event);
7892
+ }
7893
+ onBlur(event) {
7894
+ var _a, _b;
7895
+ this.blurEmitter.next(event);
7896
+ (_b = (_a = this.descriptor).onBlur) === null || _b === void 0 ? void 0 : _b.call(_a, event);
7897
+ }
7898
+ }
7899
+ MngButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7900
+ MngButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngButtonComponent, selector: "mng-button", inputs: { descriptor: "descriptor" }, outputs: { clickEmitter: "buttonClick", focusEmitter: "buttonFocus", blurEmitter: "buttonBlur" }, ngImport: i0, template: "<p-button\n #button\n type=\"button\"\n [label]=\"$any(descriptor.label) | translate\"\n [icon]=\"$any(descriptor.icon)\"\n [iconPos]=\"$any(descriptor.iconPosition)\"\n [loading]=\"$any(descriptor.loading)\"\n [loadingIcon]=\"$any(descriptor.loadingIcon)\"\n [disabled]=\"$any(descriptor.disabled)\"\n [styleClass]=\"buttonClass\"\n [pTooltip]=\"$any(descriptor.tooltip) | translate\"\n [badge]=\"$any(descriptor.badge)\"\n (onClick)=\"onClick($event)\"\n (onBlur)=\"onBlur($event)\"\n (onFocus)=\"onFocus($event)\"></p-button>\n", dependencies: [{ kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i4$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7901
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngButtonComponent, decorators: [{
7902
+ type: Component,
7903
+ args: [{ selector: 'mng-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-button\n #button\n type=\"button\"\n [label]=\"$any(descriptor.label) | translate\"\n [icon]=\"$any(descriptor.icon)\"\n [iconPos]=\"$any(descriptor.iconPosition)\"\n [loading]=\"$any(descriptor.loading)\"\n [loadingIcon]=\"$any(descriptor.loadingIcon)\"\n [disabled]=\"$any(descriptor.disabled)\"\n [styleClass]=\"buttonClass\"\n [pTooltip]=\"$any(descriptor.tooltip) | translate\"\n [badge]=\"$any(descriptor.badge)\"\n (onClick)=\"onClick($event)\"\n (onBlur)=\"onBlur($event)\"\n (onFocus)=\"onFocus($event)\"></p-button>\n" }]
7904
+ }], propDecorators: { descriptor: [{
7905
+ type: Input
7906
+ }], clickEmitter: [{
7907
+ type: Output,
7908
+ args: ['buttonClick']
7909
+ }], focusEmitter: [{
7910
+ type: Output,
7911
+ args: ['buttonFocus']
7912
+ }], blurEmitter: [{
7913
+ type: Output,
7914
+ args: ['buttonBlur']
7915
+ }] } });
7916
+
7643
7917
  class MngFormlyFieldAutocompleteComponent extends FieldType {
7644
7918
  constructor() {
7645
7919
  super(...arguments);
@@ -7885,10 +8159,10 @@ class MngTableColumnValueComponent {
7885
8159
  }
7886
8160
  }
7887
8161
  MngTableColumnValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableColumnValueComponent, deps: [{ token: i0.ElementRef }, { token: i2.MessageService }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
7888
- MngTableColumnValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: { descriptor: "descriptor", item: "item" }, host: { properties: { "style.max-width.px": "this.styleMaxWidth", "class": "this.className" } }, 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:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\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<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host:hover .help-buttons{display:block}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: JsonPathPipe, name: "jsonPath" }, { kind: "pipe", type: MngEnumPipe, name: "enum" }, { kind: "pipe", type: MngBooleanPipe, name: "boolean" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8162
+ MngTableColumnValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: { descriptor: "descriptor", item: "item" }, host: { properties: { "style.max-width.px": "this.styleMaxWidth", "class": "this.className" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath | getter: descriptor.getter | template: descriptor.template }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\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<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host:hover .help-buttons{display:block}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "directive", type: MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: JsonPathPipe, name: "jsonPath" }, { kind: "pipe", type: MngEnumPipe, name: "enum" }, { kind: "pipe", type: MngBooleanPipe, name: "boolean" }, { kind: "pipe", type: MngGetterPipe, name: "getter" }, { kind: "pipe", type: MngTemplatePipe, name: "template" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7889
8163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableColumnValueComponent, decorators: [{
7890
8164
  type: Component,
7891
- 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:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\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<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host:hover .help-buttons{display:block}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"] }]
8165
+ args: [{ selector: 'mng-table-column-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath | getter: descriptor.getter | template: descriptor.template }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\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<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host:hover .help-buttons{display:block}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"] }]
7892
8166
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.MessageService }, { type: i1$2.TranslateService }]; }, propDecorators: { descriptor: [{
7893
8167
  type: Input
7894
8168
  }], item: [{
@@ -8574,13 +8848,14 @@ class AMngTableviewRouteComponent {
8574
8848
  this.actions = this.createActionDescriptors();
8575
8849
  }
8576
8850
  createActionDescriptors() {
8577
- const actions = [];
8578
- actions.push(this.createActionDescriptorForDetails());
8579
- actions.push(this.createActionDescriptorForAdd());
8580
- actions.push(this.createActionDescriptorForEdit());
8581
- actions.push(this.createActionDescriptorForDelete());
8582
- actions.push(this.createActionDescriptorForExport());
8583
- return actions;
8851
+ return [
8852
+ this.createActionDescriptorForDetails(),
8853
+ this.createActionDescriptorForAdd(),
8854
+ this.createActionDescriptorForEdit(),
8855
+ this.createActionDescriptorForDelete(),
8856
+ this.createActionDescriptorForRefresh(),
8857
+ this.createActionDescriptorForExport()
8858
+ ];
8584
8859
  }
8585
8860
  createActionDescriptorForDetails(descriptor = this.descriptor.viewEditor) {
8586
8861
  return new ActionEditorDetailsDescriptor(descriptor);
@@ -8595,7 +8870,7 @@ class AMngTableviewRouteComponent {
8595
8870
  return new ActionDeleteDescriptor(descriptor);
8596
8871
  }
8597
8872
  createActionDescriptorForExport(descriptor = this.descriptor.model) {
8598
- return new ActionDescriptor(descriptor, 'export')
8873
+ const action = new ActionDescriptor(descriptor, 'export')
8599
8874
  .withRunFunction(ctx => {
8600
8875
  const queryParamBuilder = ctx.parameters.queryParam ? MediusQueryParamBuilder.createFromExisting(ctx.parameters.queryParam) : MediusQueryParamBuilder.create();
8601
8876
  queryParamBuilder.withItemsOffset(0).withItemsPerPage(1000);
@@ -8608,8 +8883,21 @@ class AMngTableviewRouteComponent {
8608
8883
  return undefined;
8609
8884
  }));
8610
8885
  })
8886
+ .withPosition(ActionPositionEnum.ToolbarRight);
8887
+ action.buttonDescriptor.withIcon('pi pi-upload');
8888
+ return action;
8889
+ }
8890
+ createActionDescriptorForRefresh(descriptor = this.descriptor.model) {
8891
+ const action = new ActionDescriptor(descriptor, 'refresh')
8611
8892
  .withPosition(ActionPositionEnum.ToolbarRight)
8612
- .withIcon('pi pi-upload');
8893
+ .withPermissionsRouteType(Permissions.ActionTypes.READ)
8894
+ .withRunNotificationSuccess(undefined, undefined, false)
8895
+ .withRunFunction(ctx => {
8896
+ ctx.parameters.viewContainer.triggerTableReload({});
8897
+ return of(null);
8898
+ });
8899
+ action.buttonDescriptor.withIcon('pi pi-refresh').styleClass.withActionLevel(ActionLevelEnum.Secondary);
8900
+ return action;
8613
8901
  }
8614
8902
  }
8615
8903
  AMngTableviewRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AMngTableviewRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -8863,20 +9151,18 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
8863
9151
  if (hasViewAction) {
8864
9152
  const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.viewEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)
8865
9153
  .withPosition(ActionPositionEnum.RowClick)
8866
- .withTitle(null)
8867
9154
  .withDialogClassName('mng-field-dialog mng-action-editor-dialog')
8868
9155
  .withDialogSize(ActionEditorDialogSizeEnum.Small);
8869
9156
  viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);
9157
+ viewAction.buttonDescriptor.withLabel(null);
8870
9158
  this.actions.push(viewAction);
8871
9159
  }
8872
9160
  if (hasAddAction) {
8873
9161
  const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)
8874
9162
  .withPosition(ActionPositionEnum.ToolbarRight)
8875
- .withTitle(null)
8876
- .withIcon('pi pi-plus')
8877
9163
  .withDialogClassName('mng-field-dialog mng-action-editor-dialog')
8878
9164
  .withDialogSize(ActionEditorDialogSizeEnum.Small)
8879
- .withSize(ActionSizeEnum.ExtraSmall)
9165
+ .withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(ActionSizeEnum.ExtraSmall)))
8880
9166
  .withSubmitFunction(ctx => {
8881
9167
  if (!ctx.parameters.item) {
8882
9168
  return throwError(() => new Error(`No item was provided in context, edit cannot be done.`));
@@ -8889,16 +9175,15 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
8889
9175
  })
8890
9176
  .withIsVisibleFunction(() => { var _a; return of(!((_a = this.options) === null || _a === void 0 ? void 0 : _a.formState.disabled)); })
8891
9177
  .withIsEnabledFunction(() => this.isEnabled$);
9178
+ addAction.buttonDescriptor.withLabel(null).withIcon('pi pi-plus');
8892
9179
  this.actions.push(addAction);
8893
9180
  }
8894
9181
  if (hasEditAction) {
8895
9182
  const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)
8896
9183
  .withPosition(ActionPositionEnum.RowInline)
8897
- .withTitle(null)
8898
- .withIcon('pi pi-pencil')
8899
9184
  .withDialogClassName('mng-field-dialog mng-action-editor-dialog')
8900
9185
  .withDialogSize(ActionEditorDialogSizeEnum.Small)
8901
- .withSize(ActionSizeEnum.ExtraSmall)
9186
+ .withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(ActionSizeEnum.ExtraSmall)))
8902
9187
  .withSubmitFunction(ctx => {
8903
9188
  var _a;
8904
9189
  if (!ctx.parameters.item) {
@@ -8912,15 +9197,13 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
8912
9197
  })
8913
9198
  .withIsVisibleFunction(() => { var _a; return of(!((_a = this.formControl) === null || _a === void 0 ? void 0 : _a.disabled)); })
8914
9199
  .withIsEnabledFunction(() => this.isEnabled$);
9200
+ editAction.buttonDescriptor.withLabel(null).withIcon('pi pi-pencil');
8915
9201
  this.actions.push(editAction);
8916
9202
  }
8917
9203
  if (hasDeleteAction) {
8918
9204
  const deleteAction = new ActionDescriptor(this.descriptor.tableviewDescriptor.model, 'delete', this.descriptor.editor.model.type, this.descriptor.property)
8919
9205
  .withPosition(ActionPositionEnum.RowInline)
8920
- .withLevel(ActionLevelEnum.Danger)
8921
- .withTitle(null)
8922
- .withIcon('pi pi-trash')
8923
- .withSize(ActionSizeEnum.ExtraSmall)
9206
+ .withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder(ActionLevelEnum.Danger).withSize(ActionSizeEnum.ExtraSmall)))
8924
9207
  .withRunFunction(ctx => {
8925
9208
  var _a;
8926
9209
  if (!ctx.parameters.item) {
@@ -8946,6 +9229,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
8946
9229
  })
8947
9230
  .withIsVisibleFunction(() => { var _a; return of(!((_a = this.options) === null || _a === void 0 ? void 0 : _a.formState.disabled)); })
8948
9231
  .withIsEnabledFunction(() => this.isEnabled$);
9232
+ deleteAction.buttonDescriptor.withLabel(null).withIcon('pi pi-trash');
8949
9233
  this.actions.push(deleteAction);
8950
9234
  }
8951
9235
  this.actions.push(...this.descriptor.actions);
@@ -10126,6 +10410,8 @@ const declarations = [
10126
10410
  MngBooleanPipe,
10127
10411
  MngI18nPropertyPipe,
10128
10412
  MngParametrizePipe,
10413
+ MngGetterPipe,
10414
+ MngTemplatePipe,
10129
10415
  // layout components
10130
10416
  MngBreadcrumbComponent,
10131
10417
  MngFooterComponent,
@@ -10160,7 +10446,9 @@ const declarations = [
10160
10446
  MngFormEditorComponent,
10161
10447
  MngActionComponent,
10162
10448
  MngActionEditorComponent,
10163
- MngActionRouteComponent
10449
+ MngActionRouteComponent,
10450
+ //button
10451
+ MngButtonComponent
10164
10452
  ];
10165
10453
  class MngCommonsModule {
10166
10454
  static forRoot(config) {
@@ -10186,6 +10474,8 @@ class MngCommonsModule {
10186
10474
  MngBooleanPipe,
10187
10475
  MngI18nPropertyPipe,
10188
10476
  MngParametrizePipe,
10477
+ MngGetterPipe,
10478
+ MngTemplatePipe,
10189
10479
  // component service
10190
10480
  MngMainLayoutComponentService,
10191
10481
  MngViewContainerComponentService,
@@ -10243,6 +10533,8 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
10243
10533
  MngBooleanPipe,
10244
10534
  MngI18nPropertyPipe,
10245
10535
  MngParametrizePipe,
10536
+ MngGetterPipe,
10537
+ MngTemplatePipe,
10246
10538
  // layout components
10247
10539
  MngBreadcrumbComponent,
10248
10540
  MngFooterComponent,
@@ -10277,7 +10569,9 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
10277
10569
  MngFormEditorComponent,
10278
10570
  MngActionComponent,
10279
10571
  MngActionEditorComponent,
10280
- MngActionRouteComponent
10572
+ MngActionRouteComponent,
10573
+ //button
10574
+ MngButtonComponent
10281
10575
  ], imports: [
10282
10576
  // angular modules
10283
10577
  CommonModule,
@@ -10360,6 +10654,8 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
10360
10654
  MngBooleanPipe,
10361
10655
  MngI18nPropertyPipe,
10362
10656
  MngParametrizePipe,
10657
+ MngGetterPipe,
10658
+ MngTemplatePipe,
10363
10659
  // layout components
10364
10660
  MngBreadcrumbComponent,
10365
10661
  MngFooterComponent,
@@ -10394,7 +10690,9 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
10394
10690
  MngFormEditorComponent,
10395
10691
  MngActionComponent,
10396
10692
  MngActionEditorComponent,
10397
- MngActionRouteComponent] });
10693
+ MngActionRouteComponent,
10694
+ //button
10695
+ MngButtonComponent] });
10398
10696
  MngCommonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsModule, imports: [
10399
10697
  // angular modules
10400
10698
  CommonModule,
@@ -11211,5 +11509,5 @@ class TableviewRouteBuilder {
11211
11509
  * Generated bundle index. Do not edit.
11212
11510
  */
11213
11511
 
11214
- export { ACTION_EDITOR_DIALOG_COMPONENT_SETTING, AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngBaseApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, APermissions, ActionActivationTriggerEnum, ActionContext, ActionContextValidation, ActionDataProviderUtil, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorDialogSizeEnum, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionEditorSubmitTypeEnum, ActionError, ActionInstance, ActionInstanceStateEnum, ActionLevelEnum, ActionLinkDescriptor, ActionParameters, ActionPositionEnum, ActionSimpleDescriptor, ActionSizeEnum, ActionTypeEnum, AuthorizationTypeEnum, AuthorizationUtil, ButtonStyleBuilder, ColumnDescriptor, ColumnTypeEnum, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldGroupDescriptor, FieldGroupTypeEnum, FieldInputDescriptor, FieldInputTypeEnum, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupTypeEnum, FieldManyEditorActionEnum, FieldManyEditorDescriptor, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorDescriptor, FieldManyToManyEditorTypeEnum, FieldSizeEnum, FieldTabGroupDescriptor, FieldValidationDescriptor, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, I18nUtils, JsonPathPipe, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_BROWSER_STORAGE_IT, MNG_COMMONS_INITIALIZER_IT, MNG_DROPDOWN_VALUE_ACCESSOR, MNG_MODULE_CONFIG_IT, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAuthorizationGuard, MngAuthorizationService, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLabelComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngI18nPropertyPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngParametrizePipe, MngTableCellClickEvent, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableLoadEvent, MngTableReloadEvent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTopbarComponent, MngVersionComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, NotificationUtil, ObjectSerializer, Permissions, RouteBuilder, RoutesBuilder, StringUtil, StylesUtil, TableDataProvider, TableDescriptor, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum, TableviewCrudDataProvider, TableviewDataProvider, TableviewDescriptor, TableviewRouteBuilder, TableviewTypeEnum, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
11512
+ export { ACTION_EDITOR_DIALOG_COMPONENT_SETTING, AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngBaseApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, APermissions, ActionActivationTriggerEnum, ActionConfirmationDialogDescriptor, ActionContext, ActionContextValidation, ActionDataProviderUtil, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorDialogSizeEnum, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionEditorSubmitTypeEnum, ActionError, ActionInstance, ActionInstanceStateEnum, ActionLevelEnum, ActionLinkDescriptor, ActionParameters, ActionPositionEnum, ActionSimpleDescriptor, ActionSizeEnum, ActionTypeEnum, AuthorizationTypeEnum, AuthorizationUtil, ButtonDescriptor, ButtonStyleBuilder, ButtonStyleRoundedEnum, ColumnDescriptor, ColumnTypeEnum, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldGroupDescriptor, FieldGroupTypeEnum, FieldInputDescriptor, FieldInputTypeEnum, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupTypeEnum, FieldManyEditorActionEnum, FieldManyEditorDescriptor, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorDescriptor, FieldManyToManyEditorTypeEnum, FieldSizeEnum, FieldTabGroupDescriptor, FieldValidationDescriptor, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, I18nUtils, JsonPathPipe, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_BROWSER_STORAGE_IT, MNG_COMMONS_INITIALIZER_IT, MNG_DROPDOWN_VALUE_ACCESSOR, MNG_MODULE_CONFIG_IT, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAuthorizationGuard, MngAuthorizationService, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngButtonComponent, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLabelComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngGetterPipe, MngI18nPropertyPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngParametrizePipe, MngTableCellClickEvent, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableLoadEvent, MngTableReloadEvent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTemplatePipe, MngTopbarComponent, MngVersionComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, NotificationUtil, ObjectSerializer, Permissions, RouteBuilder, RoutesBuilder, StringUtil, StylesUtil, TableDataProvider, TableDescriptor, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum, TableviewCrudDataProvider, TableviewDataProvider, TableviewDescriptor, TableviewRouteBuilder, TableviewTypeEnum, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
11215
11513
  //# sourceMappingURL=mediusinc-mng-commons.mjs.map