@mediusinc/mng-commons 0.12.2 → 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.
- package/esm2020/lib/components/action/action.component.mjs +8 -8
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +5 -5
- package/esm2020/lib/components/button/button.component.mjs +46 -0
- package/esm2020/lib/components/button/index.mjs +2 -0
- package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +8 -3
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +3 -2
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +10 -13
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +27 -11
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +5 -3
- package/esm2020/lib/data-providers/index.mjs +2 -1
- package/esm2020/lib/data-providers/tableview-crud.data-provider.mjs +24 -0
- package/esm2020/lib/descriptors/action/action-confirmation.descriptor.mjs +106 -0
- package/esm2020/lib/descriptors/action.descriptor.mjs +53 -154
- package/esm2020/lib/descriptors/button.descriptor.mjs +111 -0
- package/esm2020/lib/descriptors/column.descriptor.mjs +17 -1
- package/esm2020/lib/descriptors/field.descriptor.mjs +1 -1
- package/esm2020/lib/descriptors/index.mjs +3 -1
- package/esm2020/lib/mng-commons.module.mjs +24 -9
- package/esm2020/lib/pipes/getter.pipe.mjs +20 -0
- package/esm2020/lib/pipes/index.mjs +4 -2
- package/esm2020/lib/pipes/json-path.pipe.mjs +1 -2
- package/esm2020/lib/pipes/parametrize.pipe.mjs +85 -0
- package/esm2020/lib/pipes/template.pipe.mjs +24 -0
- package/esm2020/lib/services/action-executor.service.mjs +34 -23
- package/esm2020/lib/styles/button-style.builder.mjs +59 -8
- package/esm2020/lib/styles/styles.util.mjs +2 -2
- package/esm2020/lib/utils/string.util.mjs +4 -1
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/mediusinc-mng-commons.mjs +627 -266
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +628 -262
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/components/button/button.component.d.ts +16 -0
- package/lib/components/button/index.d.ts +1 -0
- package/lib/components/form/dropdown/dropdown.component.d.ts +2 -0
- package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +1 -0
- package/lib/data-providers/index.d.ts +1 -0
- package/lib/data-providers/tableview-crud.data-provider.d.ts +8 -0
- package/lib/descriptors/action/action-confirmation.descriptor.d.ts +48 -0
- package/lib/descriptors/action.descriptor.d.ts +26 -83
- package/lib/descriptors/button.descriptor.d.ts +40 -0
- package/lib/descriptors/column.descriptor.d.ts +6 -0
- package/lib/descriptors/field.descriptor.d.ts +9 -9
- package/lib/descriptors/index.d.ts +2 -0
- package/lib/mng-commons.module.d.ts +74 -71
- package/lib/pipes/getter.pipe.d.ts +7 -0
- package/lib/pipes/index.d.ts +3 -1
- package/lib/pipes/parametrize.pipe.d.ts +13 -0
- package/lib/pipes/template.pipe.d.ts +10 -0
- package/lib/services/action-executor.service.d.ts +3 -3
- package/lib/styles/button-style.builder.d.ts +43 -2
- package/package.json +3 -3
- package/public-api.d.ts +1 -0
- package/version-info.json +5 -5
- package/esm2020/lib/pipes/link-formatter.pipe.mjs +0 -39
- package/lib/pipes/link-formatter.pipe.d.ts +0 -11
|
@@ -547,6 +547,26 @@ class TableviewDataProvider extends EditorDataProvider {
|
|
|
547
547
|
}
|
|
548
548
|
}
|
|
549
549
|
|
|
550
|
+
class TableviewCrudDataProvider extends TableviewDataProvider {
|
|
551
|
+
constructor(modelType, serviceType, idPropertyName, useGetAllForFetch = false) {
|
|
552
|
+
super(modelType, serviceType);
|
|
553
|
+
this.withGetAll((queryParam, service) => service.getAllPost(queryParam));
|
|
554
|
+
if (useGetAllForFetch) {
|
|
555
|
+
const selectedIdPropertyName = idPropertyName ?? ModelUtil.findIdAttribute(modelType) ?? 'id';
|
|
556
|
+
this.withFetch((id, service) => {
|
|
557
|
+
const qp = MediusQueryParamBuilder.create(10, 0).withFilter(selectedIdPropertyName, id, id, MediusFilterMatchType.Equals, true).build();
|
|
558
|
+
return service.getAllPost(qp).pipe(map(res => res.pageData[0]));
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
else {
|
|
562
|
+
this.withFetch((id, service) => service.getByIdGet(id));
|
|
563
|
+
}
|
|
564
|
+
this.withCreate((item, service) => service.createPost(item));
|
|
565
|
+
this.withUpdate((id, item, service) => service.updatePut(id, item));
|
|
566
|
+
this.withDelete((id, item, service) => service.removeDelete(id, item));
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
550
570
|
var AuthorizationTypeEnum;
|
|
551
571
|
(function (AuthorizationTypeEnum) {
|
|
552
572
|
AuthorizationTypeEnum["All"] = "ALL";
|
|
@@ -839,7 +859,7 @@ class StylesUtil {
|
|
|
839
859
|
}
|
|
840
860
|
}
|
|
841
861
|
static getActionButtonRoundedWidth(action) {
|
|
842
|
-
switch (action.size) {
|
|
862
|
+
switch (action.buttonDescriptor.styleClass.size) {
|
|
843
863
|
case ActionSizeEnum.ExtraSmall:
|
|
844
864
|
return StylesUtil.BUTTON_ROUNDED_WIDTH_XS;
|
|
845
865
|
case ActionSizeEnum.Small:
|
|
@@ -863,17 +883,18 @@ StylesUtil.TABLE_CELL_PADDING_X_SM = 4;
|
|
|
863
883
|
StylesUtil.TABLE_CELL_PADDING_X_LG = 12;
|
|
864
884
|
|
|
865
885
|
class ButtonStyleBuilder {
|
|
866
|
-
constructor(level, customClass) {
|
|
886
|
+
constructor(level = ActionLevelEnum.Default, customClass) {
|
|
867
887
|
this._size = ActionSizeEnum.Normal;
|
|
868
888
|
this._textButton = false;
|
|
869
889
|
this._outlineButton = false;
|
|
870
890
|
this._raisedButton = false;
|
|
891
|
+
this._roundedStyle = ButtonStyleRoundedEnum.DEFAULT;
|
|
871
892
|
this._actionLevel = level;
|
|
872
893
|
this._customClass = customClass;
|
|
873
894
|
}
|
|
874
895
|
getButtonClass(hasNoTitle = false) {
|
|
875
896
|
const styles = [this.convertActionLevelToStyleClass(), this.convertSizeToStyleClass(), this._customClass];
|
|
876
|
-
if (hasNoTitle) {
|
|
897
|
+
if (hasNoTitle && this._roundedStyle === ButtonStyleRoundedEnum.DEFAULT) {
|
|
877
898
|
styles.push(`p-button-rounded mng-action-button-icon`);
|
|
878
899
|
}
|
|
879
900
|
if (this._textButton) {
|
|
@@ -885,37 +906,78 @@ class ButtonStyleBuilder {
|
|
|
885
906
|
if (this._raisedButton) {
|
|
886
907
|
styles.push(`p-button-raised`);
|
|
887
908
|
}
|
|
909
|
+
if (this._roundedStyle === ButtonStyleRoundedEnum.ROUNDED) {
|
|
910
|
+
styles.push('p-button-rounded');
|
|
911
|
+
}
|
|
888
912
|
return styles.join(' ');
|
|
889
913
|
}
|
|
890
|
-
|
|
914
|
+
/**
|
|
915
|
+
* creates instance of style builder with custom properties
|
|
916
|
+
* @param actionLevel ActionLevelEnum
|
|
917
|
+
* @param size ActionSizeEnum
|
|
918
|
+
* @param textButton if true, text button will be applied
|
|
919
|
+
* @param outlineButton if true, outlined button will be applied
|
|
920
|
+
* @param raisedButton if true, raised button will be applied
|
|
921
|
+
* @param customClass additional custom classes (will be added at generating)
|
|
922
|
+
*/
|
|
923
|
+
create(actionLevel, size, textButton, outlineButton, raisedButton, roundedButton, customClass) {
|
|
891
924
|
this._actionLevel = actionLevel ?? this._actionLevel;
|
|
892
925
|
this._size = size ?? this._size;
|
|
893
926
|
this._textButton = textButton ?? this._textButton;
|
|
894
927
|
this._outlineButton = outlineButton ?? this._outlineButton;
|
|
895
928
|
this._raisedButton = raisedButton ?? this._raisedButton;
|
|
929
|
+
this._roundedStyle = roundedButton ?? this._roundedStyle;
|
|
896
930
|
this._customClass = customClass;
|
|
897
931
|
return this;
|
|
898
932
|
}
|
|
933
|
+
/**
|
|
934
|
+
* sets custom action level and returns this object
|
|
935
|
+
* @param actionLevel
|
|
936
|
+
*/
|
|
899
937
|
withActionLevel(actionLevel) {
|
|
900
938
|
this._actionLevel = actionLevel;
|
|
901
939
|
return this;
|
|
902
940
|
}
|
|
941
|
+
/**
|
|
942
|
+
* sets custom size and return this object
|
|
943
|
+
* @param size
|
|
944
|
+
*/
|
|
903
945
|
withSize(size) {
|
|
904
946
|
this._size = size;
|
|
905
947
|
return this;
|
|
906
948
|
}
|
|
949
|
+
/**
|
|
950
|
+
* sets text button property
|
|
951
|
+
* @param withText default true
|
|
952
|
+
*/
|
|
907
953
|
withTextButton(withText = true) {
|
|
908
954
|
this._textButton = withText;
|
|
909
955
|
return this;
|
|
910
956
|
}
|
|
957
|
+
/**
|
|
958
|
+
* sets outline button property
|
|
959
|
+
* @param withOutline default true
|
|
960
|
+
*/
|
|
911
961
|
withOutlineButton(withOutline = true) {
|
|
912
962
|
this._outlineButton = withOutline;
|
|
913
963
|
return this;
|
|
914
964
|
}
|
|
965
|
+
/**
|
|
966
|
+
* sets raised button property
|
|
967
|
+
* @param withRaised default true
|
|
968
|
+
*/
|
|
915
969
|
withRaisedButton(withRaised = true) {
|
|
916
970
|
this._raisedButton = withRaised;
|
|
917
971
|
return this;
|
|
918
972
|
}
|
|
973
|
+
withRoundedButton(roundedStyle = ButtonStyleRoundedEnum.ROUNDED) {
|
|
974
|
+
this._roundedStyle = roundedStyle;
|
|
975
|
+
return this;
|
|
976
|
+
}
|
|
977
|
+
/**
|
|
978
|
+
* sets custom style class
|
|
979
|
+
* @param customClass
|
|
980
|
+
*/
|
|
919
981
|
withCustomClass(customClass) {
|
|
920
982
|
this._customClass = customClass;
|
|
921
983
|
return this;
|
|
@@ -942,15 +1004,15 @@ class ButtonStyleBuilder {
|
|
|
942
1004
|
convertSizeToStyleClass() {
|
|
943
1005
|
switch (this._size) {
|
|
944
1006
|
case ActionSizeEnum.ExtraSmall:
|
|
945
|
-
return 'mng-button-xs';
|
|
1007
|
+
return 'p-button-sm mng-button-xs';
|
|
946
1008
|
case ActionSizeEnum.Small:
|
|
947
|
-
return 'mng-button-sm';
|
|
1009
|
+
return 'p-button-sm mng-button-sm';
|
|
948
1010
|
case ActionSizeEnum.Normal:
|
|
949
1011
|
return '';
|
|
950
1012
|
case ActionSizeEnum.Large:
|
|
951
|
-
return 'mng-button-lg';
|
|
1013
|
+
return 'p-button-lg mng-button-lg';
|
|
952
1014
|
case ActionSizeEnum.ExtraLarge:
|
|
953
|
-
return 'mng-button-xl';
|
|
1015
|
+
return 'p-button-lg mng-button-xl';
|
|
954
1016
|
}
|
|
955
1017
|
}
|
|
956
1018
|
get actionLevel() {
|
|
@@ -968,10 +1030,123 @@ class ButtonStyleBuilder {
|
|
|
968
1030
|
get raisedButton() {
|
|
969
1031
|
return this._raisedButton;
|
|
970
1032
|
}
|
|
1033
|
+
get roundedStyle() {
|
|
1034
|
+
return this._roundedStyle;
|
|
1035
|
+
}
|
|
971
1036
|
get customClass() {
|
|
972
1037
|
return this._customClass;
|
|
973
1038
|
}
|
|
974
1039
|
}
|
|
1040
|
+
var ButtonStyleRoundedEnum;
|
|
1041
|
+
(function (ButtonStyleRoundedEnum) {
|
|
1042
|
+
ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["DEFAULT"] = 0] = "DEFAULT";
|
|
1043
|
+
ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["ROUNDED"] = 1] = "ROUNDED";
|
|
1044
|
+
ButtonStyleRoundedEnum[ButtonStyleRoundedEnum["SQUARE"] = 2] = "SQUARE";
|
|
1045
|
+
})(ButtonStyleRoundedEnum || (ButtonStyleRoundedEnum = {}));
|
|
1046
|
+
|
|
1047
|
+
class ActionConfirmationDialogDescriptor {
|
|
1048
|
+
constructor() {
|
|
1049
|
+
this._closeOnEscape = true; // Defines if dialog closes when esc key is pressed.
|
|
1050
|
+
this._closable = true; // Defines if dialog is closable.
|
|
1051
|
+
this._acceptButtonStyle = new ButtonStyleBuilder(ActionLevelEnum.Default);
|
|
1052
|
+
this._rejectButtonStyle = new ButtonStyleBuilder(ActionLevelEnum.Default).withTextButton();
|
|
1053
|
+
this._icon = 'pi pi-exclamation-triangle';
|
|
1054
|
+
this._acceptIcon = 'pi pi-check';
|
|
1055
|
+
this._rejectIcon = 'pi pi-times';
|
|
1056
|
+
}
|
|
1057
|
+
withIcon(icon) {
|
|
1058
|
+
this._icon = icon;
|
|
1059
|
+
return this;
|
|
1060
|
+
}
|
|
1061
|
+
withTitle(title) {
|
|
1062
|
+
this._title = title;
|
|
1063
|
+
return this;
|
|
1064
|
+
}
|
|
1065
|
+
withMessage(message) {
|
|
1066
|
+
this._message = message;
|
|
1067
|
+
return this;
|
|
1068
|
+
}
|
|
1069
|
+
withAcceptLabel(acceptLabel) {
|
|
1070
|
+
this._acceptLabel = acceptLabel;
|
|
1071
|
+
return this;
|
|
1072
|
+
}
|
|
1073
|
+
withAcceptIcon(acceptIcon) {
|
|
1074
|
+
this._acceptIcon = acceptIcon;
|
|
1075
|
+
return this;
|
|
1076
|
+
}
|
|
1077
|
+
withAcceptButtonStyle(buttonStyle) {
|
|
1078
|
+
this._acceptButtonStyle = buttonStyle;
|
|
1079
|
+
return this;
|
|
1080
|
+
}
|
|
1081
|
+
withRejectLabel(rejectLabel) {
|
|
1082
|
+
this._rejectLabel = rejectLabel;
|
|
1083
|
+
return this;
|
|
1084
|
+
}
|
|
1085
|
+
withRejectIcon(rejectIcon) {
|
|
1086
|
+
this._rejectIcon = rejectIcon;
|
|
1087
|
+
return this;
|
|
1088
|
+
}
|
|
1089
|
+
withRejectButtonStyle(buttonStyle) {
|
|
1090
|
+
this._rejectButtonStyle = buttonStyle;
|
|
1091
|
+
return this;
|
|
1092
|
+
}
|
|
1093
|
+
/**
|
|
1094
|
+
* set if dialog can be closed on escaped pressed
|
|
1095
|
+
* if true, then closable is also set to true
|
|
1096
|
+
* @param closeOnEscape
|
|
1097
|
+
*/
|
|
1098
|
+
withCloseOnEscape(closeOnEscape) {
|
|
1099
|
+
if (closeOnEscape) {
|
|
1100
|
+
this._closable = true;
|
|
1101
|
+
}
|
|
1102
|
+
this._closeOnEscape = closeOnEscape;
|
|
1103
|
+
return this;
|
|
1104
|
+
}
|
|
1105
|
+
withClosable(closable) {
|
|
1106
|
+
this._closable = closable;
|
|
1107
|
+
return this;
|
|
1108
|
+
}
|
|
1109
|
+
withRunConfirmationConfigMapFn(runConfirmationConfigMapFn) {
|
|
1110
|
+
this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;
|
|
1111
|
+
return this;
|
|
1112
|
+
}
|
|
1113
|
+
get icon() {
|
|
1114
|
+
return this._icon;
|
|
1115
|
+
}
|
|
1116
|
+
get title() {
|
|
1117
|
+
return this._title;
|
|
1118
|
+
}
|
|
1119
|
+
get message() {
|
|
1120
|
+
return this._message;
|
|
1121
|
+
}
|
|
1122
|
+
get acceptLabel() {
|
|
1123
|
+
return this._acceptLabel;
|
|
1124
|
+
}
|
|
1125
|
+
get acceptIcon() {
|
|
1126
|
+
return this._acceptIcon;
|
|
1127
|
+
}
|
|
1128
|
+
get acceptButtonStyle() {
|
|
1129
|
+
return this._acceptButtonStyle;
|
|
1130
|
+
}
|
|
1131
|
+
get rejectLabel() {
|
|
1132
|
+
return this._rejectLabel;
|
|
1133
|
+
}
|
|
1134
|
+
get rejectIcon() {
|
|
1135
|
+
return this._rejectIcon;
|
|
1136
|
+
}
|
|
1137
|
+
get rejectButtonStyle() {
|
|
1138
|
+
return this._rejectButtonStyle;
|
|
1139
|
+
}
|
|
1140
|
+
get closeOnEscape() {
|
|
1141
|
+
return this._closeOnEscape;
|
|
1142
|
+
}
|
|
1143
|
+
get closable() {
|
|
1144
|
+
return this._closable;
|
|
1145
|
+
}
|
|
1146
|
+
get runConfirmationConfigMapFn() {
|
|
1147
|
+
return this._runConfirmationConfigMapFn;
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
975
1150
|
|
|
976
1151
|
class ActionDescriptor {
|
|
977
1152
|
constructor(model, actionName, parentType, parentProperty) {
|
|
@@ -980,10 +1155,10 @@ class ActionDescriptor {
|
|
|
980
1155
|
this._position = ActionPositionEnum.ToolbarRight;
|
|
981
1156
|
this._level = ActionLevelEnum.Default;
|
|
982
1157
|
this._routeUrl = null;
|
|
983
|
-
this._buttonStyle = new ButtonStyleBuilder(this._level);
|
|
984
|
-
this._hasRunConfirmation = false;
|
|
985
1158
|
this._hasRunNotificationSuccess = true;
|
|
986
1159
|
this._hasRunNotificationError = true;
|
|
1160
|
+
//button
|
|
1161
|
+
this._buttonDescriptor = new ButtonDescriptor();
|
|
987
1162
|
this._model = model;
|
|
988
1163
|
this._actionName = actionName;
|
|
989
1164
|
if ((parentType && !parentProperty) || (!parentProperty && parentProperty)) {
|
|
@@ -1032,15 +1207,6 @@ class ActionDescriptor {
|
|
|
1032
1207
|
get routeUrl() {
|
|
1033
1208
|
return this._routeUrl;
|
|
1034
1209
|
}
|
|
1035
|
-
get title() {
|
|
1036
|
-
return this._title;
|
|
1037
|
-
}
|
|
1038
|
-
get icon() {
|
|
1039
|
-
return this._icon;
|
|
1040
|
-
}
|
|
1041
|
-
get tooltip() {
|
|
1042
|
-
return this._tooltip;
|
|
1043
|
-
}
|
|
1044
1210
|
get dataProvider() {
|
|
1045
1211
|
return this._dataProvider;
|
|
1046
1212
|
}
|
|
@@ -1065,83 +1231,14 @@ class ActionDescriptor {
|
|
|
1065
1231
|
get actionNameLong() {
|
|
1066
1232
|
return this._actionNameLong;
|
|
1067
1233
|
}
|
|
1068
|
-
get buttonStyle() {
|
|
1069
|
-
return this._buttonStyle;
|
|
1070
|
-
}
|
|
1071
|
-
/**
|
|
1072
|
-
* @deprecated use _buttonStyle instead
|
|
1073
|
-
*/
|
|
1074
1234
|
get className() {
|
|
1075
|
-
return this.
|
|
1076
|
-
}
|
|
1077
|
-
/**
|
|
1078
|
-
* @deprecated use _buttonStyle instead
|
|
1079
|
-
*/
|
|
1080
|
-
get isStyleText() {
|
|
1081
|
-
return this._buttonStyle.textButton;
|
|
1082
|
-
}
|
|
1083
|
-
/**
|
|
1084
|
-
* @deprecated use _buttonStyle instead
|
|
1085
|
-
*/
|
|
1086
|
-
get isStyleOutlined() {
|
|
1087
|
-
return this._buttonStyle.outlineButton;
|
|
1235
|
+
return this.buttonDescriptor.styleClass.customClass;
|
|
1088
1236
|
}
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
*/
|
|
1092
|
-
get isStyleRaised() {
|
|
1093
|
-
return this._buttonStyle.raisedButton;
|
|
1094
|
-
}
|
|
1095
|
-
/**
|
|
1096
|
-
* @deprecated use _buttonStyle instead
|
|
1097
|
-
*/
|
|
1098
|
-
get size() {
|
|
1099
|
-
return this._buttonStyle.size;
|
|
1100
|
-
}
|
|
1101
|
-
/**
|
|
1102
|
-
* @deprecated use _buttonStyle instead
|
|
1103
|
-
*/
|
|
1104
|
-
get isSizeExtraSmall() {
|
|
1105
|
-
return this._buttonStyle.size === ActionSizeEnum.ExtraSmall;
|
|
1106
|
-
}
|
|
1107
|
-
/**
|
|
1108
|
-
* @deprecated use _buttonStyle instead
|
|
1109
|
-
*/
|
|
1110
|
-
get isSizeSmall() {
|
|
1111
|
-
return this._buttonStyle.size === ActionSizeEnum.Small;
|
|
1112
|
-
}
|
|
1113
|
-
/**
|
|
1114
|
-
* @deprecated use _buttonStyle instead
|
|
1115
|
-
*/
|
|
1116
|
-
get isSizeLarge() {
|
|
1117
|
-
return this._buttonStyle.size === ActionSizeEnum.Large;
|
|
1118
|
-
}
|
|
1119
|
-
/**
|
|
1120
|
-
* @deprecated use _buttonStyle instead
|
|
1121
|
-
*/
|
|
1122
|
-
get isSizeExtraLarge() {
|
|
1123
|
-
return this._buttonStyle.size === ActionSizeEnum.ExtraLarge;
|
|
1237
|
+
get runConfirmationDialogDescriptor() {
|
|
1238
|
+
return this._runConfirmationDialogDescriptor;
|
|
1124
1239
|
}
|
|
1125
1240
|
get hasRunConfirmation() {
|
|
1126
|
-
return this.
|
|
1127
|
-
}
|
|
1128
|
-
get runConfirmationIcon() {
|
|
1129
|
-
return this._runConfirmationIcon;
|
|
1130
|
-
}
|
|
1131
|
-
get runConfirmationTitle() {
|
|
1132
|
-
return this._runConfirmationTitle;
|
|
1133
|
-
}
|
|
1134
|
-
get runConfirmationMessage() {
|
|
1135
|
-
return this._runConfirmationMessage;
|
|
1136
|
-
}
|
|
1137
|
-
get runConfirmationAcceptTitle() {
|
|
1138
|
-
return this._runConfirmationAcceptTitle;
|
|
1139
|
-
}
|
|
1140
|
-
get runConfirmationRejectTitle() {
|
|
1141
|
-
return this._runConfirmationRejectTitle;
|
|
1142
|
-
}
|
|
1143
|
-
get runConfirmationConfigMapFn() {
|
|
1144
|
-
return this._runConfirmationConfigMapFn;
|
|
1241
|
+
return this._runConfirmationDialogDescriptor !== null && this._runConfirmationDialogDescriptor !== undefined;
|
|
1145
1242
|
}
|
|
1146
1243
|
get hasRunNotificationSuccess() {
|
|
1147
1244
|
return this._hasRunNotificationSuccess;
|
|
@@ -1173,6 +1270,9 @@ class ActionDescriptor {
|
|
|
1173
1270
|
get permissionsRouteType() {
|
|
1174
1271
|
return this._permissionsRouteType;
|
|
1175
1272
|
}
|
|
1273
|
+
get buttonDescriptor() {
|
|
1274
|
+
return this._buttonDescriptor;
|
|
1275
|
+
}
|
|
1176
1276
|
withDataProvider(dataProvider) {
|
|
1177
1277
|
this._dataProvider = dataProvider;
|
|
1178
1278
|
return this;
|
|
@@ -1201,70 +1301,25 @@ class ActionDescriptor {
|
|
|
1201
1301
|
this._routeUrl = routeUrl;
|
|
1202
1302
|
return this;
|
|
1203
1303
|
}
|
|
1204
|
-
|
|
1205
|
-
this.
|
|
1206
|
-
this._buttonStyle = this._buttonStyle.withActionLevel(level);
|
|
1207
|
-
return this;
|
|
1208
|
-
}
|
|
1209
|
-
/**
|
|
1210
|
-
* Overrides default title key with model action key (${model.typeName}.actions.${actionName}). Not relevant if parentType name is provided.
|
|
1211
|
-
*/
|
|
1212
|
-
withModelTitle() {
|
|
1213
|
-
this._title = `${this._i18nModelActionBaseKey}.title`;
|
|
1304
|
+
withPosition(position) {
|
|
1305
|
+
this._position = position;
|
|
1214
1306
|
return this;
|
|
1215
1307
|
}
|
|
1216
1308
|
/**
|
|
1217
|
-
*
|
|
1218
|
-
* @param title Title i18n key or title.
|
|
1309
|
+
* creates confirmation action with default style based on action descriptor
|
|
1219
1310
|
*/
|
|
1220
|
-
|
|
1221
|
-
this.
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
this._icon = icon;
|
|
1226
|
-
return this;
|
|
1227
|
-
}
|
|
1228
|
-
withTooltip(tooltip) {
|
|
1229
|
-
this._tooltip = tooltip;
|
|
1230
|
-
return this;
|
|
1231
|
-
}
|
|
1232
|
-
withClassName(className) {
|
|
1233
|
-
this._buttonStyle = this._buttonStyle.withCustomClass(className);
|
|
1234
|
-
return this;
|
|
1235
|
-
}
|
|
1236
|
-
withSize(size = ActionSizeEnum.Normal) {
|
|
1237
|
-
this._buttonStyle = this._buttonStyle.withSize(size);
|
|
1238
|
-
return this;
|
|
1239
|
-
}
|
|
1240
|
-
withStyle(styleText = false, styleOutlined = false, styleRaised = false) {
|
|
1241
|
-
this._buttonStyle = this._buttonStyle.withOutlineButton(styleOutlined);
|
|
1242
|
-
this._buttonStyle = this._buttonStyle.withRaisedButton(styleRaised);
|
|
1243
|
-
this._buttonStyle = this._buttonStyle.withTextButton(styleText);
|
|
1244
|
-
return this;
|
|
1245
|
-
}
|
|
1246
|
-
withPosition(position) {
|
|
1247
|
-
this._position = position;
|
|
1248
|
-
return this;
|
|
1311
|
+
withRunConfirmation() {
|
|
1312
|
+
this._runConfirmationDialogDescriptor = new ActionConfirmationDialogDescriptor();
|
|
1313
|
+
this._runConfirmationDialogDescriptor.acceptButtonStyle.withActionLevel(this._level);
|
|
1314
|
+
this._runConfirmationDialogDescriptor.rejectButtonStyle.withActionLevel(this._level);
|
|
1315
|
+
return this._runConfirmationDialogDescriptor;
|
|
1249
1316
|
}
|
|
1250
1317
|
/**
|
|
1251
|
-
* Add a
|
|
1252
|
-
* @param
|
|
1253
|
-
* @param title the title of the confirmation dialogue
|
|
1254
|
-
* @param message the message on the confirmation dialogue
|
|
1255
|
-
* @param acceptTitle the title of the accepting button
|
|
1256
|
-
* @param rejectTitle the title of the rejecting button
|
|
1257
|
-
* @param runConfirmationConfigMapFn function used to generate the confirmation dialogue. **WARNING** changing the *accept* and *reject* methods of the *confirmConfig* parameter
|
|
1258
|
-
* may lead to unexpected behaviour
|
|
1318
|
+
* Add a configuration dialogue to action using ActionConfigurationDescriptor
|
|
1319
|
+
* @param confirmationDescriptor descriptor with customizable information for dialog
|
|
1259
1320
|
*/
|
|
1260
|
-
|
|
1261
|
-
this.
|
|
1262
|
-
this._runConfirmationIcon = icon;
|
|
1263
|
-
this._runConfirmationTitle = title;
|
|
1264
|
-
this._runConfirmationMessage = message;
|
|
1265
|
-
this._runConfirmationAcceptTitle = acceptTitle;
|
|
1266
|
-
this._runConfirmationRejectTitle = rejectTitle;
|
|
1267
|
-
this._runConfirmationConfigMapFn = runConfirmationConfigMapFn;
|
|
1321
|
+
withRunConfirmationDescriptor(runConfirmationDialogDescriptor) {
|
|
1322
|
+
this._runConfirmationDialogDescriptor = runConfirmationDialogDescriptor;
|
|
1268
1323
|
return this;
|
|
1269
1324
|
}
|
|
1270
1325
|
withRunNotificationSuccess(title, message, hasNotification = true) {
|
|
@@ -1298,6 +1353,10 @@ class ActionDescriptor {
|
|
|
1298
1353
|
this._permissionsRouteType = permissionsRouteType;
|
|
1299
1354
|
return this;
|
|
1300
1355
|
}
|
|
1356
|
+
withButtonDescriptor(buttonDescriptor) {
|
|
1357
|
+
this._buttonDescriptor = buttonDescriptor;
|
|
1358
|
+
return this;
|
|
1359
|
+
}
|
|
1301
1360
|
}
|
|
1302
1361
|
class ActionSimpleDescriptor extends ActionDescriptor {
|
|
1303
1362
|
constructor(actionName, modelType, idProperty, titleProperty) {
|
|
@@ -1314,7 +1373,7 @@ class ActionEditorDescriptor extends ActionDescriptor {
|
|
|
1314
1373
|
this._dialogSize = ActionEditorDialogSizeEnum.Normal;
|
|
1315
1374
|
this._type = ActionTypeEnum.Editor;
|
|
1316
1375
|
this._editorDescriptor = editorDescriptor;
|
|
1317
|
-
this._editorActions.push(
|
|
1376
|
+
this._editorActions.push(ActionEditorSubmitDescriptor.forPrimary(this), ActionEditorSubmitDescriptor.forSecondary(this));
|
|
1318
1377
|
}
|
|
1319
1378
|
get editorTitle() {
|
|
1320
1379
|
return this._editorTitle;
|
|
@@ -1420,7 +1479,23 @@ class ActionEditorSubmitDescriptor extends ActionDescriptor {
|
|
|
1420
1479
|
this._editorAction = editorAction;
|
|
1421
1480
|
this._submitType = submitType;
|
|
1422
1481
|
this._position = ActionPositionEnum.FooterRight;
|
|
1423
|
-
this.
|
|
1482
|
+
this.buttonDescriptor.styleClass.withActionLevel(editorAction.level).withTextButton();
|
|
1483
|
+
}
|
|
1484
|
+
/**
|
|
1485
|
+
* creates primary action with primary button style
|
|
1486
|
+
* @param editorAction
|
|
1487
|
+
* @param submitType
|
|
1488
|
+
*/
|
|
1489
|
+
static forPrimary(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {
|
|
1490
|
+
return new ActionEditorSubmitDescriptor(editorAction, submitType).withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder()));
|
|
1491
|
+
}
|
|
1492
|
+
/**
|
|
1493
|
+
* creates secondary button with text button style
|
|
1494
|
+
* @param editorAction
|
|
1495
|
+
* @param submitType
|
|
1496
|
+
*/
|
|
1497
|
+
static forSecondary(editorAction, submitType = ActionEditorSubmitTypeEnum.Cancel) {
|
|
1498
|
+
return new ActionEditorSubmitDescriptor(editorAction, submitType).withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withTextButton()));
|
|
1424
1499
|
}
|
|
1425
1500
|
get submitType() {
|
|
1426
1501
|
return this._submitType;
|
|
@@ -1454,8 +1529,8 @@ class ActionEditorAddDescriptor extends ActionEditorDescriptor {
|
|
|
1454
1529
|
this.withPosition(ActionPositionEnum.ToolbarLeft);
|
|
1455
1530
|
this.withRouteTrigger('add');
|
|
1456
1531
|
this.withSubmitFunction(ActionDataProviderUtil.runCreateOrFail);
|
|
1457
|
-
this.
|
|
1458
|
-
this.withIcon('pi pi-plus');
|
|
1532
|
+
this.buttonDescriptor.styleClass.withActionLevel(ActionLevelEnum.Success);
|
|
1533
|
+
this.buttonDescriptor.withIcon('pi pi-plus');
|
|
1459
1534
|
this.withPermissionsRouteType(Permissions.ActionTypes.ADD);
|
|
1460
1535
|
}
|
|
1461
1536
|
withServiceType(serviceType) {
|
|
@@ -1478,12 +1553,11 @@ class ActionEditorEditDescriptor extends ActionEditorDescriptor {
|
|
|
1478
1553
|
constructor(editorDescriptor) {
|
|
1479
1554
|
super(editorDescriptor, ActionEditorEditDescriptor.ACTION_NAME);
|
|
1480
1555
|
this.withPosition(ActionPositionEnum.RowInline);
|
|
1481
|
-
this.withTitle(null);
|
|
1482
1556
|
this.withRouteTrigger(':itemId/edit');
|
|
1483
1557
|
this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);
|
|
1484
1558
|
this.withSubmitFunction(ActionDataProviderUtil.runUpdateOrFail);
|
|
1485
|
-
this.withIcon('pi pi-pencil');
|
|
1486
1559
|
this.withPermissionsRouteType(Permissions.ActionTypes.EDIT);
|
|
1560
|
+
this.buttonDescriptor.withLabel(null).withIcon('pi pi-pencil');
|
|
1487
1561
|
}
|
|
1488
1562
|
withServiceType(serviceType) {
|
|
1489
1563
|
return this.withServiceSubmitFunction(serviceType);
|
|
@@ -1505,12 +1579,11 @@ class ActionDeleteDescriptor extends ActionDescriptor {
|
|
|
1505
1579
|
constructor(model) {
|
|
1506
1580
|
super(model, ActionDeleteDescriptor.ACTION_NAME);
|
|
1507
1581
|
this.withPosition(ActionPositionEnum.RowInline);
|
|
1508
|
-
this.withTitle(null);
|
|
1509
1582
|
this.withRunFunction(ActionDataProviderUtil.runDeleteOrFail);
|
|
1510
|
-
this.
|
|
1511
|
-
this.
|
|
1512
|
-
this.withRunConfirmation(undefined);
|
|
1583
|
+
this.buttonDescriptor.styleClass.withActionLevel(ActionLevelEnum.Danger);
|
|
1584
|
+
this.withRunConfirmation();
|
|
1513
1585
|
this.withPermissionsRouteType(Permissions.ActionTypes.DELETE);
|
|
1586
|
+
this.buttonDescriptor.withLabel(null).withIcon('pi pi-trash');
|
|
1514
1587
|
}
|
|
1515
1588
|
withServiceType(serviceType) {
|
|
1516
1589
|
return this.withServiceDeleteFunction(serviceType);
|
|
@@ -1968,6 +2041,12 @@ class ColumnDescriptor {
|
|
|
1968
2041
|
get hasCopyToClipboard() {
|
|
1969
2042
|
return this._hasCopyToClipboard;
|
|
1970
2043
|
}
|
|
2044
|
+
get template() {
|
|
2045
|
+
return this._template;
|
|
2046
|
+
}
|
|
2047
|
+
get getter() {
|
|
2048
|
+
return this._getter;
|
|
2049
|
+
}
|
|
1971
2050
|
asType(type = ColumnTypeEnum.String) {
|
|
1972
2051
|
this._columnType = type;
|
|
1973
2052
|
return this;
|
|
@@ -2101,6 +2180,14 @@ class ColumnDescriptor {
|
|
|
2101
2180
|
this._hasCopyToClipboard = hasCopyToCliboard;
|
|
2102
2181
|
return this;
|
|
2103
2182
|
}
|
|
2183
|
+
withTemplate(template) {
|
|
2184
|
+
this._template = template;
|
|
2185
|
+
return this;
|
|
2186
|
+
}
|
|
2187
|
+
withGetter(getter) {
|
|
2188
|
+
this._getter = getter;
|
|
2189
|
+
return this;
|
|
2190
|
+
}
|
|
2104
2191
|
copy() {
|
|
2105
2192
|
const descriptor = new ColumnDescriptor(this._table, this._property);
|
|
2106
2193
|
descriptor._jsonPath = this._jsonPath;
|
|
@@ -2127,6 +2214,8 @@ class ColumnDescriptor {
|
|
|
2127
2214
|
descriptor._minWidth = this._minWidth;
|
|
2128
2215
|
descriptor._maxWidth = this._maxWidth;
|
|
2129
2216
|
descriptor._hasCopyToClipboard = this._hasCopyToClipboard;
|
|
2217
|
+
descriptor._template = this._template;
|
|
2218
|
+
descriptor._getter = this._getter;
|
|
2130
2219
|
return descriptor;
|
|
2131
2220
|
}
|
|
2132
2221
|
}
|
|
@@ -3503,6 +3592,116 @@ class TableviewDescriptor {
|
|
|
3503
3592
|
}
|
|
3504
3593
|
}
|
|
3505
3594
|
|
|
3595
|
+
class ButtonDescriptor {
|
|
3596
|
+
constructor() {
|
|
3597
|
+
this._disabled = false;
|
|
3598
|
+
this._iconPosition = 'left';
|
|
3599
|
+
this._styleClass = new ButtonStyleBuilder();
|
|
3600
|
+
this._loading = false;
|
|
3601
|
+
this._loadingIcon = 'pi pi-spinner pi-spin';
|
|
3602
|
+
}
|
|
3603
|
+
withLabel(label) {
|
|
3604
|
+
this._label = label;
|
|
3605
|
+
return this;
|
|
3606
|
+
}
|
|
3607
|
+
withDisabled(disabled = true) {
|
|
3608
|
+
this._disabled = disabled;
|
|
3609
|
+
return this;
|
|
3610
|
+
}
|
|
3611
|
+
withIcon(icon) {
|
|
3612
|
+
this._icon = icon;
|
|
3613
|
+
return this;
|
|
3614
|
+
}
|
|
3615
|
+
withIconPosition(iconPosition) {
|
|
3616
|
+
this._iconPosition = iconPosition;
|
|
3617
|
+
return this;
|
|
3618
|
+
}
|
|
3619
|
+
withStyleClass(style) {
|
|
3620
|
+
this._styleClass = style;
|
|
3621
|
+
return this;
|
|
3622
|
+
}
|
|
3623
|
+
withOnClick(onClick) {
|
|
3624
|
+
this._onClick = onClick;
|
|
3625
|
+
return this;
|
|
3626
|
+
}
|
|
3627
|
+
withOnFocus(onFocus) {
|
|
3628
|
+
this._onFocus = onFocus;
|
|
3629
|
+
return this;
|
|
3630
|
+
}
|
|
3631
|
+
withOnBlur(onBlur) {
|
|
3632
|
+
this._onBlur = onBlur;
|
|
3633
|
+
return this;
|
|
3634
|
+
}
|
|
3635
|
+
withLoading(loading = true) {
|
|
3636
|
+
this._loading = loading;
|
|
3637
|
+
return this;
|
|
3638
|
+
}
|
|
3639
|
+
withLoadingIcon(loadingIcon) {
|
|
3640
|
+
this._loadingIcon = loadingIcon;
|
|
3641
|
+
return this;
|
|
3642
|
+
}
|
|
3643
|
+
withBadge(badge) {
|
|
3644
|
+
this._badge = badge;
|
|
3645
|
+
return this;
|
|
3646
|
+
}
|
|
3647
|
+
withTooltip(tooltip) {
|
|
3648
|
+
this._tooltip = tooltip;
|
|
3649
|
+
return this;
|
|
3650
|
+
}
|
|
3651
|
+
get label() {
|
|
3652
|
+
return this._label;
|
|
3653
|
+
}
|
|
3654
|
+
get disabled() {
|
|
3655
|
+
return this._disabled;
|
|
3656
|
+
}
|
|
3657
|
+
get icon() {
|
|
3658
|
+
return this._icon;
|
|
3659
|
+
}
|
|
3660
|
+
get iconPosition() {
|
|
3661
|
+
return this._iconPosition;
|
|
3662
|
+
}
|
|
3663
|
+
get styleClass() {
|
|
3664
|
+
return this._styleClass;
|
|
3665
|
+
}
|
|
3666
|
+
get onClick() {
|
|
3667
|
+
return this._onClick;
|
|
3668
|
+
}
|
|
3669
|
+
get onFocus() {
|
|
3670
|
+
return this._onFocus;
|
|
3671
|
+
}
|
|
3672
|
+
get onBlur() {
|
|
3673
|
+
return this._onBlur;
|
|
3674
|
+
}
|
|
3675
|
+
get loading() {
|
|
3676
|
+
return this._loading;
|
|
3677
|
+
}
|
|
3678
|
+
get loadingIcon() {
|
|
3679
|
+
return this._loadingIcon;
|
|
3680
|
+
}
|
|
3681
|
+
get badge() {
|
|
3682
|
+
return this._badge;
|
|
3683
|
+
}
|
|
3684
|
+
get tooltip() {
|
|
3685
|
+
return this._tooltip;
|
|
3686
|
+
}
|
|
3687
|
+
copy() {
|
|
3688
|
+
const descriptor = new ButtonDescriptor();
|
|
3689
|
+
descriptor._label = this._label;
|
|
3690
|
+
descriptor._disabled = this._disabled;
|
|
3691
|
+
descriptor._icon = this._icon;
|
|
3692
|
+
descriptor._iconPosition = this._iconPosition;
|
|
3693
|
+
descriptor._styleClass = this._styleClass;
|
|
3694
|
+
descriptor._onClick = this._onClick;
|
|
3695
|
+
descriptor._onFocus = this._onFocus;
|
|
3696
|
+
descriptor._onBlur = this._onBlur;
|
|
3697
|
+
descriptor._loading = this._loading;
|
|
3698
|
+
descriptor._loadingIcon = this._loadingIcon;
|
|
3699
|
+
descriptor._badge = this._badge;
|
|
3700
|
+
descriptor._tooltip = this._tooltip;
|
|
3701
|
+
return descriptor;
|
|
3702
|
+
}
|
|
3703
|
+
}
|
|
3704
|
+
|
|
3506
3705
|
class EditorFormlyUtil {
|
|
3507
3706
|
static createFormlyConfigFromDescriptor(descriptor) {
|
|
3508
3707
|
const fields = [];
|
|
@@ -4272,6 +4471,9 @@ class StringUtil {
|
|
|
4272
4471
|
else if (typeof value[key] === 'object') {
|
|
4273
4472
|
escapedValue[key] = StringUtil.escapeHtmlAny(value[key]);
|
|
4274
4473
|
}
|
|
4474
|
+
else {
|
|
4475
|
+
escapedValue[key] = value[key];
|
|
4476
|
+
}
|
|
4275
4477
|
}
|
|
4276
4478
|
return escapedValue;
|
|
4277
4479
|
}
|
|
@@ -5168,43 +5370,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
5168
5370
|
}]
|
|
5169
5371
|
}] });
|
|
5170
5372
|
|
|
5171
|
-
class MngLinkFormatterPipe {
|
|
5172
|
-
parseUrl(s, itemId, itemAny, model, actionData) {
|
|
5173
|
-
if (s === ':itemId') {
|
|
5174
|
-
return itemId;
|
|
5175
|
-
}
|
|
5176
|
-
else if (model && s.startsWith(`:${model.typeName}.`)) {
|
|
5177
|
-
return itemAny[s.substring(model.typeName.length + 2)] ?? '';
|
|
5178
|
-
}
|
|
5179
|
-
else if (s.startsWith(':')) {
|
|
5180
|
-
return actionData?.[s.substring(1)] ?? '';
|
|
5181
|
-
}
|
|
5182
|
-
else {
|
|
5183
|
-
return s;
|
|
5184
|
-
}
|
|
5185
|
-
}
|
|
5186
|
-
transform(value, itemId, item, model, actionData) {
|
|
5187
|
-
const itemAny = (item ?? {});
|
|
5188
|
-
if (typeof value === 'string') {
|
|
5189
|
-
return value.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData));
|
|
5190
|
-
}
|
|
5191
|
-
else {
|
|
5192
|
-
const transformedItems = [];
|
|
5193
|
-
value.forEach(val => transformedItems.push(...val.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData))));
|
|
5194
|
-
return transformedItems;
|
|
5195
|
-
}
|
|
5196
|
-
}
|
|
5197
|
-
}
|
|
5198
|
-
MngLinkFormatterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngLinkFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5199
|
-
MngLinkFormatterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: MngLinkFormatterPipe, name: "linkFormatter" });
|
|
5200
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngLinkFormatterPipe, decorators: [{
|
|
5201
|
-
type: Pipe,
|
|
5202
|
-
args: [{
|
|
5203
|
-
name: 'linkFormatter',
|
|
5204
|
-
pure: true
|
|
5205
|
-
}]
|
|
5206
|
-
}] });
|
|
5207
|
-
|
|
5208
5373
|
/**
|
|
5209
5374
|
* Imitation of JSONPath Syntax. Supports:
|
|
5210
5375
|
* - Root object notation with '$'
|
|
@@ -5242,7 +5407,6 @@ class JsonPathPipe {
|
|
|
5242
5407
|
const arrayPath = p.substring(0, leftBracketIdx);
|
|
5243
5408
|
const arrayIdx = +p.substring(leftBracketIdx + 1, p.length - 1);
|
|
5244
5409
|
const array = currValue[arrayPath];
|
|
5245
|
-
console.log(arrayPath, arrayIdx, array);
|
|
5246
5410
|
if (Array.isArray(array)) {
|
|
5247
5411
|
if (arrayIdx >= 0 && arrayIdx < array.length) {
|
|
5248
5412
|
// valid index, continue on the path
|
|
@@ -5283,8 +5447,128 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
5283
5447
|
}]
|
|
5284
5448
|
}] });
|
|
5285
5449
|
|
|
5450
|
+
class MngParametrizePipe {
|
|
5451
|
+
constructor() {
|
|
5452
|
+
this.jsonPath = new JsonPathPipe();
|
|
5453
|
+
}
|
|
5454
|
+
transform(value, itemId, item, actionData) {
|
|
5455
|
+
let params = {};
|
|
5456
|
+
if (actionData) {
|
|
5457
|
+
params = {
|
|
5458
|
+
...params,
|
|
5459
|
+
...actionData
|
|
5460
|
+
};
|
|
5461
|
+
}
|
|
5462
|
+
if (item) {
|
|
5463
|
+
params = {
|
|
5464
|
+
...params,
|
|
5465
|
+
item: StringUtil.escapeHtmlAny(item)
|
|
5466
|
+
};
|
|
5467
|
+
}
|
|
5468
|
+
if (itemId) {
|
|
5469
|
+
params = {
|
|
5470
|
+
...params,
|
|
5471
|
+
itemId: itemId
|
|
5472
|
+
};
|
|
5473
|
+
}
|
|
5474
|
+
if (typeof value === 'string') {
|
|
5475
|
+
return this.transformString(value, params);
|
|
5476
|
+
}
|
|
5477
|
+
else if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {
|
|
5478
|
+
return value.map((s) => this.transformString(s, params));
|
|
5479
|
+
}
|
|
5480
|
+
else if (typeof value === 'object') {
|
|
5481
|
+
// process only first level citizens
|
|
5482
|
+
const obj = { ...value };
|
|
5483
|
+
for (const key in obj) {
|
|
5484
|
+
const objProp = obj[key];
|
|
5485
|
+
if (typeof objProp === 'string') {
|
|
5486
|
+
obj[key] = this.transformString(objProp, params);
|
|
5487
|
+
}
|
|
5488
|
+
}
|
|
5489
|
+
return obj;
|
|
5490
|
+
}
|
|
5491
|
+
else {
|
|
5492
|
+
return value;
|
|
5493
|
+
}
|
|
5494
|
+
}
|
|
5495
|
+
transformString(s, params) {
|
|
5496
|
+
if ((s.indexOf('/') >= 0 && s.indexOf(':') >= 0) || s.startsWith(':')) {
|
|
5497
|
+
// this is url
|
|
5498
|
+
return s
|
|
5499
|
+
.split('/')
|
|
5500
|
+
.map(s => this.parametrizeStringAsUrl(s, params))
|
|
5501
|
+
.join('/');
|
|
5502
|
+
}
|
|
5503
|
+
else {
|
|
5504
|
+
// parametrize normally
|
|
5505
|
+
return this.parametrizeString(s, params);
|
|
5506
|
+
}
|
|
5507
|
+
}
|
|
5508
|
+
parametrizeStringAsUrl(s, params) {
|
|
5509
|
+
if (s.startsWith(':')) {
|
|
5510
|
+
const itemProperty = s.substring(1);
|
|
5511
|
+
return this.jsonPath.transform(params, itemProperty) ?? '';
|
|
5512
|
+
}
|
|
5513
|
+
else {
|
|
5514
|
+
return s;
|
|
5515
|
+
}
|
|
5516
|
+
}
|
|
5517
|
+
parametrizeString(s, params) {
|
|
5518
|
+
return s.replace(/{{\s?([^{}\s]*)\s?}}/g, (subs, key) => this.jsonPath.transform(params, key) ?? subs);
|
|
5519
|
+
}
|
|
5520
|
+
}
|
|
5521
|
+
MngParametrizePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngParametrizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5522
|
+
MngParametrizePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: MngParametrizePipe, name: "parametrize" });
|
|
5523
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngParametrizePipe, decorators: [{
|
|
5524
|
+
type: Pipe,
|
|
5525
|
+
args: [{
|
|
5526
|
+
name: 'parametrize',
|
|
5527
|
+
pure: true
|
|
5528
|
+
}]
|
|
5529
|
+
}] });
|
|
5530
|
+
|
|
5531
|
+
class MngGetterPipe {
|
|
5532
|
+
transform(value, getterFunction) {
|
|
5533
|
+
if (typeof getterFunction === 'function') {
|
|
5534
|
+
return getterFunction(value);
|
|
5535
|
+
}
|
|
5536
|
+
return value;
|
|
5537
|
+
}
|
|
5538
|
+
}
|
|
5539
|
+
MngGetterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngGetterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5540
|
+
MngGetterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: MngGetterPipe, name: "getter" });
|
|
5541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngGetterPipe, decorators: [{
|
|
5542
|
+
type: Pipe,
|
|
5543
|
+
args: [{
|
|
5544
|
+
name: 'getter',
|
|
5545
|
+
pure: true
|
|
5546
|
+
}]
|
|
5547
|
+
}] });
|
|
5548
|
+
|
|
5549
|
+
class MngTemplatePipe {
|
|
5550
|
+
constructor(parametrizePipe) {
|
|
5551
|
+
this.parametrizePipe = parametrizePipe;
|
|
5552
|
+
}
|
|
5553
|
+
transform(value, template) {
|
|
5554
|
+
if (typeof template === 'string') {
|
|
5555
|
+
return this.parametrizePipe.transform(template, undefined, value);
|
|
5556
|
+
}
|
|
5557
|
+
return value;
|
|
5558
|
+
}
|
|
5559
|
+
}
|
|
5560
|
+
MngTemplatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTemplatePipe, deps: [{ token: MngParametrizePipe }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5561
|
+
MngTemplatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.1.0", ngImport: i0, type: MngTemplatePipe, name: "template" });
|
|
5562
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTemplatePipe, decorators: [{
|
|
5563
|
+
type: Pipe,
|
|
5564
|
+
args: [{
|
|
5565
|
+
name: 'template',
|
|
5566
|
+
pure: true
|
|
5567
|
+
}]
|
|
5568
|
+
}], ctorParameters: function () { return [{ type: MngParametrizePipe }]; } });
|
|
5569
|
+
|
|
5286
5570
|
class MngActionExecutorService {
|
|
5287
|
-
constructor(injector, router, dialogService, confirmationService, translate, configurationService, navigationService, errorMapper,
|
|
5571
|
+
constructor(injector, router, dialogService, confirmationService, translate, configurationService, navigationService, errorMapper, parametrize, defaultEditorDialogComponent) {
|
|
5288
5572
|
this.injector = injector;
|
|
5289
5573
|
this.router = router;
|
|
5290
5574
|
this.dialogService = dialogService;
|
|
@@ -5293,7 +5577,7 @@ class MngActionExecutorService {
|
|
|
5293
5577
|
this.configurationService = configurationService;
|
|
5294
5578
|
this.navigationService = navigationService;
|
|
5295
5579
|
this.errorMapper = errorMapper;
|
|
5296
|
-
this.
|
|
5580
|
+
this.parametrize = parametrize;
|
|
5297
5581
|
this.defaultEditorDialogComponent = defaultEditorDialogComponent;
|
|
5298
5582
|
this.debug = false;
|
|
5299
5583
|
// this.debug = true;
|
|
@@ -5540,34 +5824,45 @@ class MngActionExecutorService {
|
|
|
5540
5824
|
const context = this.prepareActionContext(instance, parameters, dataProvider, previousActionInstance);
|
|
5541
5825
|
if (action.hasRunConfirmation) {
|
|
5542
5826
|
const sourceComponent = parameters?.sourceComponent;
|
|
5827
|
+
const confirmationDescriptor = action.runConfirmationDialogDescriptor;
|
|
5543
5828
|
if (typeof sourceComponent?.getConfirmationService !== 'function' || typeof sourceComponent?.getConfirmationServiceInstanceKey !== 'function') {
|
|
5544
5829
|
throw new Error(`Source component ${sourceComponent} should be implementing IConfirmationService interface to be able to provide confirmation functionality.`);
|
|
5545
5830
|
}
|
|
5831
|
+
const item = parameters.item;
|
|
5546
5832
|
const srcConfirmComponent = sourceComponent;
|
|
5547
5833
|
let confirmParams = {
|
|
5548
5834
|
key: srcConfirmComponent.getConfirmationServiceInstanceKey(action),
|
|
5549
|
-
|
|
5550
|
-
|
|
5835
|
+
icon: confirmationDescriptor.icon,
|
|
5836
|
+
acceptVisible: true,
|
|
5837
|
+
acceptIcon: confirmationDescriptor.acceptIcon ?? undefined,
|
|
5838
|
+
acceptButtonStyleClass: confirmationDescriptor.acceptButtonStyle.getButtonClass(),
|
|
5839
|
+
rejectVisible: true,
|
|
5840
|
+
rejectIcon: confirmationDescriptor.rejectIcon ?? undefined,
|
|
5841
|
+
rejectButtonStyleClass: confirmationDescriptor.rejectButtonStyle.getButtonClass(),
|
|
5842
|
+
closeOnEscape: confirmationDescriptor.closeOnEscape
|
|
5551
5843
|
};
|
|
5552
|
-
|
|
5553
|
-
|
|
5554
|
-
confirmParams.header = I18nUtils.Action.get(this.translate, action, 'confirm.title', action.runConfirmationTitle, item, 'general.confirmation') ?? undefined;
|
|
5844
|
+
if (confirmationDescriptor.title !== null) {
|
|
5845
|
+
confirmParams.header = I18nUtils.Action.get(this.translate, action, 'confirm.title', confirmationDescriptor.title, item, 'general.confirmation') ?? undefined;
|
|
5555
5846
|
}
|
|
5556
|
-
if (
|
|
5847
|
+
if (confirmationDescriptor.message !== null) {
|
|
5557
5848
|
confirmParams.message =
|
|
5558
|
-
I18nUtils.Action.get(this.translate, action, 'confirm.message',
|
|
5849
|
+
I18nUtils.Action.get(this.translate, action, 'confirm.message', confirmationDescriptor.message, StringUtil.escapeHtmlAny(item), 'general.confirmation') ??
|
|
5559
5850
|
undefined;
|
|
5560
5851
|
}
|
|
5561
|
-
if (
|
|
5562
|
-
confirmParams.
|
|
5852
|
+
if (confirmationDescriptor.acceptLabel !== null) {
|
|
5853
|
+
confirmParams.acceptLabel = I18nUtils.Action.get(this.translate, action, 'confirm.accept', confirmationDescriptor.acceptLabel, item, 'general.yes') ?? undefined;
|
|
5563
5854
|
}
|
|
5564
|
-
if (
|
|
5565
|
-
confirmParams.
|
|
5566
|
-
confirmParams.acceptVisible = true;
|
|
5855
|
+
if (confirmationDescriptor.acceptIcon !== null) {
|
|
5856
|
+
confirmParams.acceptIcon = confirmationDescriptor.acceptIcon;
|
|
5567
5857
|
}
|
|
5568
|
-
if (
|
|
5569
|
-
confirmParams.
|
|
5570
|
-
|
|
5858
|
+
if (confirmationDescriptor.rejectIcon !== null) {
|
|
5859
|
+
confirmParams.rejectIcon = confirmationDescriptor.rejectIcon;
|
|
5860
|
+
}
|
|
5861
|
+
if (confirmationDescriptor.rejectLabel !== null) {
|
|
5862
|
+
confirmParams.rejectLabel = I18nUtils.Action.get(this.translate, action, 'confirm.reject', confirmationDescriptor.rejectLabel, item, 'general.no') ?? undefined;
|
|
5863
|
+
}
|
|
5864
|
+
if (confirmationDescriptor.rejectLabel === null && confirmationDescriptor.rejectIcon === null) {
|
|
5865
|
+
confirmParams.rejectVisible = false;
|
|
5571
5866
|
}
|
|
5572
5867
|
confirmParams.accept = () => {
|
|
5573
5868
|
instance.state = ActionInstanceStateEnum.RunConfirmationEndAccept;
|
|
@@ -5577,8 +5872,8 @@ class MngActionExecutorService {
|
|
|
5577
5872
|
instance.state = ActionInstanceStateEnum.RunConfirmationEndReject;
|
|
5578
5873
|
this.deactivateAction(instance);
|
|
5579
5874
|
};
|
|
5580
|
-
if (
|
|
5581
|
-
confirmParams =
|
|
5875
|
+
if (confirmationDescriptor.runConfirmationConfigMapFn) {
|
|
5876
|
+
confirmParams = confirmationDescriptor.runConfirmationConfigMapFn(context, confirmParams);
|
|
5582
5877
|
}
|
|
5583
5878
|
context.confirmation = confirmParams;
|
|
5584
5879
|
instance.state = ActionInstanceStateEnum.RunConfirmationStart;
|
|
@@ -5732,7 +6027,7 @@ class MngActionExecutorService {
|
|
|
5732
6027
|
if (actionUrl.startsWith('/')) {
|
|
5733
6028
|
actionUrl = actionUrl.substring(1);
|
|
5734
6029
|
}
|
|
5735
|
-
const actionUrlSegments = this.
|
|
6030
|
+
const actionUrlSegments = this.parametrize.transform(actionUrl, parameters.itemId, parameters.item, parameters.actionData).split('/');
|
|
5736
6031
|
instance.triggerRouteNavigation = from(this.router.navigate([baseUrl, ...actionUrlSegments], { relativeTo: parameters.route, queryParams: parsedUrl.queryParams }));
|
|
5737
6032
|
return instance;
|
|
5738
6033
|
}
|
|
@@ -5794,11 +6089,11 @@ class MngActionExecutorService {
|
|
|
5794
6089
|
return this.errorMapper.toMngError(error, actionError);
|
|
5795
6090
|
}
|
|
5796
6091
|
}
|
|
5797
|
-
MngActionExecutorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionExecutorService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: i1$2.TranslateService }, { token: MngConfigurationService }, { token: MngNavigationService }, { token: MngErrorMapperService }, { token:
|
|
6092
|
+
MngActionExecutorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionExecutorService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: i1$2.TranslateService }, { token: MngConfigurationService }, { token: MngNavigationService }, { token: MngErrorMapperService }, { token: MngParametrizePipe }, { token: ACTION_EDITOR_DIALOG_COMPONENT_SETTING }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5798
6093
|
MngActionExecutorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionExecutorService });
|
|
5799
6094
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionExecutorService, decorators: [{
|
|
5800
6095
|
type: Injectable
|
|
5801
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: i1$2.TranslateService }, { type: MngConfigurationService }, { type: MngNavigationService }, { type: MngErrorMapperService }, { type:
|
|
6096
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: i1$2.TranslateService }, { type: MngConfigurationService }, { type: MngNavigationService }, { type: MngErrorMapperService }, { type: MngParametrizePipe }, { type: i0.Type, decorators: [{
|
|
5802
6097
|
type: Inject,
|
|
5803
6098
|
args: [ACTION_EDITOR_DIALOG_COMPONENT_SETTING]
|
|
5804
6099
|
}] }]; } });
|
|
@@ -6259,7 +6554,7 @@ class MngActionComponent {
|
|
|
6259
6554
|
}
|
|
6260
6555
|
ngOnInit() {
|
|
6261
6556
|
this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
|
|
6262
|
-
this.hasNoTitle = this.action.
|
|
6557
|
+
this.hasNoTitle = this.action.buttonDescriptor.label === null;
|
|
6263
6558
|
this.isEnabledSubject.next(true);
|
|
6264
6559
|
this.isVisibleSubject.next(true);
|
|
6265
6560
|
this.isPermittedSubject.next(true);
|
|
@@ -6282,7 +6577,7 @@ class MngActionComponent {
|
|
|
6282
6577
|
this.isHostHidden = !isVisible || !isPermitted;
|
|
6283
6578
|
});
|
|
6284
6579
|
this.subscriptions.push(hostVisibilitySubscription);
|
|
6285
|
-
this.buttonClass = this.action.
|
|
6580
|
+
this.buttonClass = this.action.buttonDescriptor.styleClass.getButtonClass(this.hasNoTitle);
|
|
6286
6581
|
}
|
|
6287
6582
|
ngOnChanges(changes) {
|
|
6288
6583
|
if (!(changes['item']?.firstChange ?? true) || !(changes['itemId']?.firstChange ?? true) || !(changes['actionData']?.firstChange ?? true)) {
|
|
@@ -6359,21 +6654,21 @@ class MngActionComponent {
|
|
|
6359
6654
|
}
|
|
6360
6655
|
if (!this.hasNoTitle) {
|
|
6361
6656
|
this.labelSubscription?.unsubscribe();
|
|
6362
|
-
this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action
|
|
6657
|
+
this.labelSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'title', this.action.buttonDescriptor.label ?? undefined, this.item).subscribe({
|
|
6363
6658
|
next: i18n => this.labelSubject.next(i18n)
|
|
6364
6659
|
});
|
|
6365
6660
|
}
|
|
6366
6661
|
this.tooltipSubscription?.unsubscribe();
|
|
6367
|
-
this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action
|
|
6662
|
+
this.tooltipSubscription = I18nUtils.Action.getAsync(this.translate, this.action, 'tooltip', this.action.buttonDescriptor.tooltip, this.item).subscribe({
|
|
6368
6663
|
next: i18n => this.tooltipSubject.next(i18n)
|
|
6369
6664
|
});
|
|
6370
6665
|
}
|
|
6371
6666
|
}
|
|
6372
6667
|
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 });
|
|
6373
|
-
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\"\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]=\"
|
|
6668
|
+
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 });
|
|
6374
6669
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionComponent, decorators: [{
|
|
6375
6670
|
type: Component,
|
|
6376
|
-
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\"\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]=\"
|
|
6671
|
+
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"] }]
|
|
6377
6672
|
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1$2.TranslateService }, { type: MngAuthorizationService }, { type: MngActionExecutorService }, { type: i2.ConfirmationService }, { type: MngViewContainerComponentService, decorators: [{
|
|
6378
6673
|
type: Optional
|
|
6379
6674
|
}] }]; }, propDecorators: { hostClass: [{
|
|
@@ -6654,13 +6949,14 @@ class MngFormEditorComponent {
|
|
|
6654
6949
|
if (field && field.setter) {
|
|
6655
6950
|
const splitPath = field.property.split('.');
|
|
6656
6951
|
let fieldValue = formValue;
|
|
6657
|
-
for (let i = 0; i < splitPath.length; i++) {
|
|
6952
|
+
for (let i = 0; i < splitPath.length - 1; i++) {
|
|
6658
6953
|
const currentSubPath = splitPath[i];
|
|
6659
6954
|
if (typeof fieldValue[currentSubPath] !== 'object') {
|
|
6660
6955
|
fieldValue[currentSubPath] = {};
|
|
6661
6956
|
}
|
|
6662
6957
|
fieldValue = fieldValue[currentSubPath];
|
|
6663
6958
|
}
|
|
6959
|
+
fieldValue = fieldValue[splitPath[splitPath.length - 1]];
|
|
6664
6960
|
field.setter(formValue, fieldValue);
|
|
6665
6961
|
}
|
|
6666
6962
|
});
|
|
@@ -7096,6 +7392,8 @@ class MngDropdownComponent {
|
|
|
7096
7392
|
this.className = null;
|
|
7097
7393
|
this.dropdownClassName = null;
|
|
7098
7394
|
this.changeValueOnBlur = false;
|
|
7395
|
+
this.loadingSubject = new ReplaySubject(1);
|
|
7396
|
+
this.$loading = this.loadingSubject.asObservable();
|
|
7099
7397
|
this.valueChangeEventEmitter = new EventEmitter();
|
|
7100
7398
|
this.itemsSubject = new ReplaySubject(1);
|
|
7101
7399
|
this.dataProviderService = null;
|
|
@@ -7105,6 +7403,7 @@ class MngDropdownComponent {
|
|
|
7105
7403
|
this.onTouchedFn = () => { };
|
|
7106
7404
|
this.dropdownFormControl = new FormControl();
|
|
7107
7405
|
this.items$ = this.itemsSubject.asObservable();
|
|
7406
|
+
this.loadingSubject.next(false);
|
|
7108
7407
|
}
|
|
7109
7408
|
ngOnInit() {
|
|
7110
7409
|
this.itemsLabelProperty = this.itemsLabelPropertyInit;
|
|
@@ -7115,6 +7414,7 @@ class MngDropdownComponent {
|
|
|
7115
7414
|
}
|
|
7116
7415
|
});
|
|
7117
7416
|
if (this.dataProvider) {
|
|
7417
|
+
this.loadingSubject.next(true);
|
|
7118
7418
|
this.dataProviderService = this.dataProvider.serviceType ? this.injector.get(this.dataProvider.serviceType) : null;
|
|
7119
7419
|
const queryParamBuilder = MediusQueryParamBuilder.create();
|
|
7120
7420
|
if (this.itemsLabelTranslate) {
|
|
@@ -7162,6 +7462,7 @@ class MngDropdownComponent {
|
|
|
7162
7462
|
}))
|
|
7163
7463
|
.subscribe(res => {
|
|
7164
7464
|
this.itemsSubject.next(res);
|
|
7465
|
+
this.loadingSubject.next(false);
|
|
7165
7466
|
});
|
|
7166
7467
|
if (this.selectFirstItem && !this.dropdownFormControl?.value) {
|
|
7167
7468
|
this.items$.pipe(first()).subscribe(res => {
|
|
@@ -7213,10 +7514,10 @@ class MngDropdownComponent {
|
|
|
7213
7514
|
}
|
|
7214
7515
|
}
|
|
7215
7516
|
MngDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngDropdownComponent, deps: [{ token: i0.Injector }, { token: i1$2.TranslateService }, { token: MngFormlyFieldWrapperComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
7216
|
-
MngDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", 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", changeValueOnBlur: "changeValueOnBlur" }, 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 (onBlur)=\"onDropdownBlur($event)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\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]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5$1.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", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6$1.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7517
|
+
MngDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", 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", changeValueOnBlur: "changeValueOnBlur" }, 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 (onBlur)=\"onDropdownBlur($event)\"\n [dropdownIcon]=\"($loading | async) ?? false ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\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]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5$1.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", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "itemSize", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i6$1.MultiSelect, selector: "p-multiSelect", inputs: ["style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "label", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "autoZIndex", "baseZIndex", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "defaultLabel", "placeholder", "options", "filterValue", "itemSize"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
7217
7518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngDropdownComponent, decorators: [{
|
|
7218
7519
|
type: Component,
|
|
7219
|
-
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 (onBlur)=\"onDropdownBlur($event)\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\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]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n" }]
|
|
7520
|
+
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 (onBlur)=\"onDropdownBlur($event)\"\n [dropdownIcon]=\"($loading | async) ?? false ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n appendTo=\"body\">\n</p-dropdown>\n<ng-template #pMultiselect>\n <p-multiSelect\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\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]=\"true\"\n [showToggleAll]=\"false\"\n (onPanelHide)=\"onPanelHide($event)\"\n appendTo=\"body\">\n </p-multiSelect>\n</ng-template>\n" }]
|
|
7220
7521
|
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$2.TranslateService }, { type: MngFormlyFieldWrapperComponent, decorators: [{
|
|
7221
7522
|
type: Optional
|
|
7222
7523
|
}] }]; }, propDecorators: { dataProvider: [{
|
|
@@ -7313,11 +7614,11 @@ class MngActionEditorComponent {
|
|
|
7313
7614
|
this.setTitle();
|
|
7314
7615
|
for (const action of this.action.editorActions) {
|
|
7315
7616
|
if (action instanceof ActionEditorSubmitDescriptor) {
|
|
7316
|
-
if (typeof action.icon === 'undefined') {
|
|
7317
|
-
action.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');
|
|
7617
|
+
if (typeof action.buttonDescriptor.icon === 'undefined') {
|
|
7618
|
+
action.buttonDescriptor.withIcon(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'pi pi-check' : 'pi pi-times');
|
|
7318
7619
|
}
|
|
7319
|
-
if (typeof action.
|
|
7320
|
-
action.
|
|
7620
|
+
if (typeof action.buttonDescriptor.label === 'undefined') {
|
|
7621
|
+
action.buttonDescriptor.withLabel(action.submitType === ActionEditorSubmitTypeEnum.Submit ? 'general.save' : this.isDialog ? 'general.close' : 'general.cancel');
|
|
7321
7622
|
}
|
|
7322
7623
|
// assign run operations
|
|
7323
7624
|
action.withRunNotificationSuccess(undefined, undefined, false);
|
|
@@ -7484,6 +7785,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
|
|
|
7484
7785
|
args: [MngFormEditorComponent]
|
|
7485
7786
|
}] } });
|
|
7486
7787
|
|
|
7788
|
+
class MngButtonComponent {
|
|
7789
|
+
constructor() {
|
|
7790
|
+
this.clickEmitter = new EventEmitter();
|
|
7791
|
+
this.focusEmitter = new EventEmitter();
|
|
7792
|
+
this.blurEmitter = new EventEmitter();
|
|
7793
|
+
this.buttonClass = 'p-button';
|
|
7794
|
+
}
|
|
7795
|
+
ngOnInit() {
|
|
7796
|
+
this.buttonClass = `${this.descriptor.styleClass.getButtonClass(this.descriptor.label == null)}`;
|
|
7797
|
+
}
|
|
7798
|
+
onClick(event) {
|
|
7799
|
+
this.clickEmitter.next(event);
|
|
7800
|
+
this.descriptor.onClick?.(event);
|
|
7801
|
+
}
|
|
7802
|
+
onFocus(event) {
|
|
7803
|
+
this.focusEmitter.next(event);
|
|
7804
|
+
this.descriptor.onFocus?.(event);
|
|
7805
|
+
}
|
|
7806
|
+
onBlur(event) {
|
|
7807
|
+
this.blurEmitter.next(event);
|
|
7808
|
+
this.descriptor.onBlur?.(event);
|
|
7809
|
+
}
|
|
7810
|
+
}
|
|
7811
|
+
MngButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7812
|
+
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 });
|
|
7813
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngButtonComponent, decorators: [{
|
|
7814
|
+
type: Component,
|
|
7815
|
+
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" }]
|
|
7816
|
+
}], propDecorators: { descriptor: [{
|
|
7817
|
+
type: Input
|
|
7818
|
+
}], clickEmitter: [{
|
|
7819
|
+
type: Output,
|
|
7820
|
+
args: ['buttonClick']
|
|
7821
|
+
}], focusEmitter: [{
|
|
7822
|
+
type: Output,
|
|
7823
|
+
args: ['buttonFocus']
|
|
7824
|
+
}], blurEmitter: [{
|
|
7825
|
+
type: Output,
|
|
7826
|
+
args: ['buttonBlur']
|
|
7827
|
+
}] } });
|
|
7828
|
+
|
|
7487
7829
|
class MngFormlyFieldAutocompleteComponent extends FieldType {
|
|
7488
7830
|
constructor() {
|
|
7489
7831
|
super(...arguments);
|
|
@@ -7721,10 +8063,10 @@ class MngTableColumnValueComponent {
|
|
|
7721
8063
|
}
|
|
7722
8064
|
}
|
|
7723
8065
|
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 });
|
|
7724
|
-
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 });
|
|
8066
|
+
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 });
|
|
7725
8067
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableColumnValueComponent, decorators: [{
|
|
7726
8068
|
type: Component,
|
|
7727
|
-
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"] }]
|
|
8069
|
+
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"] }]
|
|
7728
8070
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i2.MessageService }, { type: i1$2.TranslateService }]; }, propDecorators: { descriptor: [{
|
|
7729
8071
|
type: Input
|
|
7730
8072
|
}], item: [{
|
|
@@ -8396,13 +8738,14 @@ class AMngTableviewRouteComponent {
|
|
|
8396
8738
|
this.actions = this.createActionDescriptors();
|
|
8397
8739
|
}
|
|
8398
8740
|
createActionDescriptors() {
|
|
8399
|
-
|
|
8400
|
-
|
|
8401
|
-
|
|
8402
|
-
|
|
8403
|
-
|
|
8404
|
-
|
|
8405
|
-
|
|
8741
|
+
return [
|
|
8742
|
+
this.createActionDescriptorForDetails(),
|
|
8743
|
+
this.createActionDescriptorForAdd(),
|
|
8744
|
+
this.createActionDescriptorForEdit(),
|
|
8745
|
+
this.createActionDescriptorForDelete(),
|
|
8746
|
+
this.createActionDescriptorForRefresh(),
|
|
8747
|
+
this.createActionDescriptorForExport()
|
|
8748
|
+
];
|
|
8406
8749
|
}
|
|
8407
8750
|
createActionDescriptorForDetails(descriptor = this.descriptor.viewEditor) {
|
|
8408
8751
|
return new ActionEditorDetailsDescriptor(descriptor);
|
|
@@ -8417,7 +8760,7 @@ class AMngTableviewRouteComponent {
|
|
|
8417
8760
|
return new ActionDeleteDescriptor(descriptor);
|
|
8418
8761
|
}
|
|
8419
8762
|
createActionDescriptorForExport(descriptor = this.descriptor.model) {
|
|
8420
|
-
|
|
8763
|
+
const action = new ActionDescriptor(descriptor, 'export')
|
|
8421
8764
|
.withRunFunction(ctx => {
|
|
8422
8765
|
const queryParamBuilder = ctx.parameters.queryParam ? MediusQueryParamBuilder.createFromExisting(ctx.parameters.queryParam) : MediusQueryParamBuilder.create();
|
|
8423
8766
|
queryParamBuilder.withItemsOffset(0).withItemsPerPage(1000);
|
|
@@ -8429,8 +8772,21 @@ class AMngTableviewRouteComponent {
|
|
|
8429
8772
|
return undefined;
|
|
8430
8773
|
}));
|
|
8431
8774
|
})
|
|
8775
|
+
.withPosition(ActionPositionEnum.ToolbarRight);
|
|
8776
|
+
action.buttonDescriptor.withIcon('pi pi-upload');
|
|
8777
|
+
return action;
|
|
8778
|
+
}
|
|
8779
|
+
createActionDescriptorForRefresh(descriptor = this.descriptor.model) {
|
|
8780
|
+
const action = new ActionDescriptor(descriptor, 'refresh')
|
|
8432
8781
|
.withPosition(ActionPositionEnum.ToolbarRight)
|
|
8433
|
-
.
|
|
8782
|
+
.withPermissionsRouteType(Permissions.ActionTypes.READ)
|
|
8783
|
+
.withRunNotificationSuccess(undefined, undefined, false)
|
|
8784
|
+
.withRunFunction(ctx => {
|
|
8785
|
+
ctx.parameters.viewContainer.triggerTableReload({});
|
|
8786
|
+
return of(null);
|
|
8787
|
+
});
|
|
8788
|
+
action.buttonDescriptor.withIcon('pi pi-refresh').styleClass.withActionLevel(ActionLevelEnum.Secondary);
|
|
8789
|
+
return action;
|
|
8434
8790
|
}
|
|
8435
8791
|
}
|
|
8436
8792
|
AMngTableviewRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: AMngTableviewRouteComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -8675,20 +9031,18 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
|
|
|
8675
9031
|
if (hasViewAction) {
|
|
8676
9032
|
const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.viewEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)
|
|
8677
9033
|
.withPosition(ActionPositionEnum.RowClick)
|
|
8678
|
-
.withTitle(null)
|
|
8679
9034
|
.withDialogClassName('mng-field-dialog mng-action-editor-dialog')
|
|
8680
9035
|
.withDialogSize(ActionEditorDialogSizeEnum.Small);
|
|
8681
9036
|
viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitTypeEnum.Cancel)]);
|
|
9037
|
+
viewAction.buttonDescriptor.withLabel(null);
|
|
8682
9038
|
this.actions.push(viewAction);
|
|
8683
9039
|
}
|
|
8684
9040
|
if (hasAddAction) {
|
|
8685
9041
|
const addAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.addEditor, 'add', this.descriptor.editor.model.type, this.descriptor.property)
|
|
8686
9042
|
.withPosition(ActionPositionEnum.ToolbarRight)
|
|
8687
|
-
.withTitle(null)
|
|
8688
|
-
.withIcon('pi pi-plus')
|
|
8689
9043
|
.withDialogClassName('mng-field-dialog mng-action-editor-dialog')
|
|
8690
9044
|
.withDialogSize(ActionEditorDialogSizeEnum.Small)
|
|
8691
|
-
.withSize(ActionSizeEnum.ExtraSmall)
|
|
9045
|
+
.withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(ActionSizeEnum.ExtraSmall)))
|
|
8692
9046
|
.withSubmitFunction(ctx => {
|
|
8693
9047
|
if (!ctx.parameters.item) {
|
|
8694
9048
|
return throwError(() => new Error(`No item was provided in context, edit cannot be done.`));
|
|
@@ -8701,16 +9055,15 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
|
|
|
8701
9055
|
})
|
|
8702
9056
|
.withIsVisibleFunction(() => of(!this.options?.formState.disabled))
|
|
8703
9057
|
.withIsEnabledFunction(() => this.isEnabled$);
|
|
9058
|
+
addAction.buttonDescriptor.withLabel(null).withIcon('pi pi-plus');
|
|
8704
9059
|
this.actions.push(addAction);
|
|
8705
9060
|
}
|
|
8706
9061
|
if (hasEditAction) {
|
|
8707
9062
|
const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)
|
|
8708
9063
|
.withPosition(ActionPositionEnum.RowInline)
|
|
8709
|
-
.withTitle(null)
|
|
8710
|
-
.withIcon('pi pi-pencil')
|
|
8711
9064
|
.withDialogClassName('mng-field-dialog mng-action-editor-dialog')
|
|
8712
9065
|
.withDialogSize(ActionEditorDialogSizeEnum.Small)
|
|
8713
|
-
.withSize(ActionSizeEnum.ExtraSmall)
|
|
9066
|
+
.withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withSize(ActionSizeEnum.ExtraSmall)))
|
|
8714
9067
|
.withSubmitFunction(ctx => {
|
|
8715
9068
|
if (!ctx.parameters.item) {
|
|
8716
9069
|
return throwError(() => new Error(`No item was provided in context, edit cannot be done.`));
|
|
@@ -8723,15 +9076,13 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
|
|
|
8723
9076
|
})
|
|
8724
9077
|
.withIsVisibleFunction(() => of(!this.formControl?.disabled))
|
|
8725
9078
|
.withIsEnabledFunction(() => this.isEnabled$);
|
|
9079
|
+
editAction.buttonDescriptor.withLabel(null).withIcon('pi pi-pencil');
|
|
8726
9080
|
this.actions.push(editAction);
|
|
8727
9081
|
}
|
|
8728
9082
|
if (hasDeleteAction) {
|
|
8729
9083
|
const deleteAction = new ActionDescriptor(this.descriptor.tableviewDescriptor.model, 'delete', this.descriptor.editor.model.type, this.descriptor.property)
|
|
8730
9084
|
.withPosition(ActionPositionEnum.RowInline)
|
|
8731
|
-
.
|
|
8732
|
-
.withTitle(null)
|
|
8733
|
-
.withIcon('pi pi-trash')
|
|
8734
|
-
.withSize(ActionSizeEnum.ExtraSmall)
|
|
9085
|
+
.withButtonDescriptor(new ButtonDescriptor().withStyleClass(new ButtonStyleBuilder(ActionLevelEnum.Danger).withSize(ActionSizeEnum.ExtraSmall)))
|
|
8735
9086
|
.withRunFunction(ctx => {
|
|
8736
9087
|
if (!ctx.parameters.item) {
|
|
8737
9088
|
return throwError(() => new Error(`No item was provided in context, delete cannot be done.`));
|
|
@@ -8756,6 +9107,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
|
|
|
8756
9107
|
})
|
|
8757
9108
|
.withIsVisibleFunction(() => of(!this.options?.formState.disabled))
|
|
8758
9109
|
.withIsEnabledFunction(() => this.isEnabled$);
|
|
9110
|
+
deleteAction.buttonDescriptor.withLabel(null).withIcon('pi pi-trash');
|
|
8759
9111
|
this.actions.push(deleteAction);
|
|
8760
9112
|
}
|
|
8761
9113
|
this.actions.push(...this.descriptor.actions);
|
|
@@ -9918,7 +10270,9 @@ const declarations = [
|
|
|
9918
10270
|
MngEnumPipe,
|
|
9919
10271
|
MngBooleanPipe,
|
|
9920
10272
|
MngI18nPropertyPipe,
|
|
9921
|
-
|
|
10273
|
+
MngParametrizePipe,
|
|
10274
|
+
MngGetterPipe,
|
|
10275
|
+
MngTemplatePipe,
|
|
9922
10276
|
// layout components
|
|
9923
10277
|
MngBreadcrumbComponent,
|
|
9924
10278
|
MngFooterComponent,
|
|
@@ -9953,7 +10307,9 @@ const declarations = [
|
|
|
9953
10307
|
MngFormEditorComponent,
|
|
9954
10308
|
MngActionComponent,
|
|
9955
10309
|
MngActionEditorComponent,
|
|
9956
|
-
MngActionRouteComponent
|
|
10310
|
+
MngActionRouteComponent,
|
|
10311
|
+
//button
|
|
10312
|
+
MngButtonComponent
|
|
9957
10313
|
];
|
|
9958
10314
|
class MngCommonsModule {
|
|
9959
10315
|
static forRoot(config) {
|
|
@@ -9978,7 +10334,9 @@ class MngCommonsModule {
|
|
|
9978
10334
|
MngEnumPipe,
|
|
9979
10335
|
MngBooleanPipe,
|
|
9980
10336
|
MngI18nPropertyPipe,
|
|
9981
|
-
|
|
10337
|
+
MngParametrizePipe,
|
|
10338
|
+
MngGetterPipe,
|
|
10339
|
+
MngTemplatePipe,
|
|
9982
10340
|
// component service
|
|
9983
10341
|
MngMainLayoutComponentService,
|
|
9984
10342
|
MngViewContainerComponentService,
|
|
@@ -10035,7 +10393,9 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
10035
10393
|
MngEnumPipe,
|
|
10036
10394
|
MngBooleanPipe,
|
|
10037
10395
|
MngI18nPropertyPipe,
|
|
10038
|
-
|
|
10396
|
+
MngParametrizePipe,
|
|
10397
|
+
MngGetterPipe,
|
|
10398
|
+
MngTemplatePipe,
|
|
10039
10399
|
// layout components
|
|
10040
10400
|
MngBreadcrumbComponent,
|
|
10041
10401
|
MngFooterComponent,
|
|
@@ -10070,7 +10430,9 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
10070
10430
|
MngFormEditorComponent,
|
|
10071
10431
|
MngActionComponent,
|
|
10072
10432
|
MngActionEditorComponent,
|
|
10073
|
-
MngActionRouteComponent
|
|
10433
|
+
MngActionRouteComponent,
|
|
10434
|
+
//button
|
|
10435
|
+
MngButtonComponent], imports: [
|
|
10074
10436
|
// angular modules
|
|
10075
10437
|
CommonModule,
|
|
10076
10438
|
RouterModule,
|
|
@@ -10150,7 +10512,9 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
10150
10512
|
MngEnumPipe,
|
|
10151
10513
|
MngBooleanPipe,
|
|
10152
10514
|
MngI18nPropertyPipe,
|
|
10153
|
-
|
|
10515
|
+
MngParametrizePipe,
|
|
10516
|
+
MngGetterPipe,
|
|
10517
|
+
MngTemplatePipe,
|
|
10154
10518
|
// layout components
|
|
10155
10519
|
MngBreadcrumbComponent,
|
|
10156
10520
|
MngFooterComponent,
|
|
@@ -10185,7 +10549,9 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
10185
10549
|
MngFormEditorComponent,
|
|
10186
10550
|
MngActionComponent,
|
|
10187
10551
|
MngActionEditorComponent,
|
|
10188
|
-
MngActionRouteComponent
|
|
10552
|
+
MngActionRouteComponent,
|
|
10553
|
+
//button
|
|
10554
|
+
MngButtonComponent] });
|
|
10189
10555
|
MngCommonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngCommonsModule, imports: [
|
|
10190
10556
|
// angular modules
|
|
10191
10557
|
CommonModule,
|
|
@@ -11001,5 +11367,5 @@ class TableviewRouteBuilder {
|
|
|
11001
11367
|
* Generated bundle index. Do not edit.
|
|
11002
11368
|
*/
|
|
11003
11369
|
|
|
11004
|
-
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,
|
|
11370
|
+
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 };
|
|
11005
11371
|
//# sourceMappingURL=mediusinc-mng-commons.mjs.map
|