@mediusinc/mng-commons 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2020/lib/components/action/action.component.mjs +28 -6
  2. package/esm2020/lib/components/action/editor/action-editor.component.mjs +7 -6
  3. package/esm2020/lib/components/action/models/action-execution.model.mjs +1 -1
  4. package/esm2020/lib/components/form/editor/form-editor.component.mjs +3 -3
  5. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +4 -6
  6. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +1 -1
  7. package/esm2020/lib/components/tableview/table/table.component.mjs +3 -3
  8. package/esm2020/lib/descriptors/action.descriptor.mjs +87 -4
  9. package/esm2020/lib/mng-commons.module.mjs +6 -2
  10. package/esm2020/lib/models/error.model.mjs +1 -1
  11. package/esm2020/lib/pipes/index.mjs +2 -1
  12. package/esm2020/lib/pipes/link-formatter.pipe.mjs +39 -0
  13. package/esm2020/lib/services/action-executor.service.mjs +33 -39
  14. package/esm2020/lib/utils/index.mjs +2 -2
  15. package/esm2020/lib/utils/notification.util.mjs +47 -0
  16. package/fesm2015/mediusinc-mng-commons.mjs +298 -159
  17. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  18. package/fesm2020/mediusinc-mng-commons.mjs +297 -158
  19. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  20. package/lib/components/action/action.component.d.ts +12 -1
  21. package/lib/components/action/models/action-execution.model.d.ts +2 -0
  22. package/lib/descriptors/action.descriptor.d.ts +35 -1
  23. package/lib/mng-commons.module.d.ts +69 -68
  24. package/lib/models/error.model.d.ts +2 -0
  25. package/lib/pipes/index.d.ts +1 -0
  26. package/lib/pipes/link-formatter.pipe.d.ts +11 -0
  27. package/lib/services/action-executor.service.d.ts +5 -3
  28. package/lib/utils/index.d.ts +1 -1
  29. package/lib/utils/{toast.util.d.ts → notification.util.d.ts} +7 -10
  30. package/package.json +1 -1
  31. package/scss/mng-overrides/_theme_button.scss +4 -0
  32. package/esm2020/lib/utils/toast.util.mjs +0 -44
@@ -2,7 +2,7 @@ import * as i4 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { HttpErrorResponse, HttpClient, HttpClientModule } from '@angular/common/http';
4
4
  import * as i0 from '@angular/core';
5
- import { InjectionToken, Injectable, Inject, EventEmitter, Component, ChangeDetectionStrategy, Optional, Input, Output, Directive, ContentChildren, ViewChild, forwardRef, Pipe, ViewChildren, HostListener, APP_INITIALIZER, NgModule } from '@angular/core';
5
+ import { InjectionToken, Injectable, Pipe, Inject, EventEmitter, Component, ChangeDetectionStrategy, Optional, HostBinding, Input, Output, Directive, ContentChildren, ViewChild, forwardRef, ViewChildren, HostListener, APP_INITIALIZER, NgModule } from '@angular/core';
6
6
  import * as i2$1 from '@angular/forms';
7
7
  import { Validators, FormGroup, FormArray, NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule } from '@angular/forms';
8
8
  import * as i1 from '@angular/router';
@@ -399,6 +399,9 @@ class ActionDescriptor {
399
399
  this._routeUrl = null;
400
400
  this._className = '';
401
401
  this._size = ActionDescriptor.SizeEnum.Normal;
402
+ this._isStyleText = false;
403
+ this._isStyleOutlined = false;
404
+ this._isStyleRaised = false;
402
405
  this._hasRunConfirmation = false;
403
406
  this._hasRunNotificationSuccess = true;
404
407
  this._hasRunNotificationError = true;
@@ -474,6 +477,15 @@ class ActionDescriptor {
474
477
  get className() {
475
478
  return this._className;
476
479
  }
480
+ get isStyleText() {
481
+ return this._isStyleText;
482
+ }
483
+ get isStyleOutlined() {
484
+ return this._isStyleOutlined;
485
+ }
486
+ get isStyleRaised() {
487
+ return this._isStyleRaised;
488
+ }
477
489
  get size() {
478
490
  return this._size;
479
491
  }
@@ -585,6 +597,12 @@ class ActionDescriptor {
585
597
  this._size = size;
586
598
  return this;
587
599
  }
600
+ withStyle(styleText = false, styleOutlined = false, styleRaised = false) {
601
+ this._isStyleText = styleText;
602
+ this._isStyleOutlined = styleOutlined;
603
+ this._isStyleRaised = styleRaised;
604
+ return this;
605
+ }
588
606
  withPosition(position) {
589
607
  this._position = position;
590
608
  return this;
@@ -625,6 +643,7 @@ class ActionEditorDescriptor extends ActionDescriptor {
625
643
  this._editorActions = [];
626
644
  this._editorTitle = undefined;
627
645
  this._hasFetchNotificationSuccess = false;
646
+ this._dialogClassName = '';
628
647
  this._type = ActionTypeEnum.Editor;
629
648
  this._editorDescriptor = editorDescriptor;
630
649
  this._editorActions.push(new ActionEditorSubmitDescriptor(this), new ActionEditorSubmitDescriptor(this, ActionEditorSubmitDescriptor.TypeEnum.Cancel));
@@ -635,6 +654,9 @@ class ActionEditorDescriptor extends ActionDescriptor {
635
654
  get editorDescriptor() {
636
655
  return this._editorDescriptor;
637
656
  }
657
+ get dialogClassName() {
658
+ return this._dialogClassName;
659
+ }
638
660
  get hasFetchNotificationSuccess() {
639
661
  return this._hasFetchNotificationSuccess;
640
662
  }
@@ -681,6 +703,10 @@ class ActionEditorDescriptor extends ActionDescriptor {
681
703
  this._dataProvider = new EditorDataProvider(this._model.type, serviceType);
682
704
  return this;
683
705
  }
706
+ withDialogClassName(className) {
707
+ this._dialogClassName = className;
708
+ return this;
709
+ }
684
710
  withRunFunction(fn) {
685
711
  return this.withSubmitFunction(fn);
686
712
  }
@@ -717,6 +743,7 @@ class ActionEditorSubmitDescriptor extends ActionDescriptor {
717
743
  this._editorAction = editorAction;
718
744
  this._submitType = submitType;
719
745
  this._position = ActionPositionEnum.FooterRight;
746
+ this._isStyleText = true;
720
747
  }
721
748
  get submitType() {
722
749
  return this._submitType;
@@ -741,7 +768,7 @@ class ActionEditorDetailsDescriptor extends ActionEditorDescriptor {
741
768
  : throwError(new Error(`Data provider fetch function or item id ${(_d = ctx.data) === null || _d === void 0 ? void 0 : _d.itemId} is missing.`));
742
769
  });
743
770
  this.withEditorActions([new ActionEditorSubmitDescriptor(this, ActionEditorSubmitDescriptor.TypeEnum.Cancel)]);
744
- this.withClassName('mng-details-dynamic-dialog');
771
+ this.withDialogClassName('mng-details-dynamic-dialog');
745
772
  }
746
773
  withServiceType(serviceType) {
747
774
  return this.withServiceFetchFunction(serviceType);
@@ -763,7 +790,7 @@ class ActionEditorAddDescriptor extends ActionEditorDescriptor {
763
790
  this.withSubmitFunction(ctx => { var _a, _b; return ((_a = ctx.dataProvider) === null || _a === void 0 ? void 0 : _a.create) ? ctx.dataProvider.create((_b = ctx.data) === null || _b === void 0 ? void 0 : _b.item, ctx.serviceInstance) : throwError(new Error(`Data provider create function is missing.`)); });
764
791
  this.withLevel(ActionLevelEnum.Success);
765
792
  this.withIcon('pi pi-plus');
766
- this.withClassName('mng-details-dynamic-dialog');
793
+ this.withDialogClassName('mng-details-dynamic-dialog');
767
794
  }
768
795
  withServiceType(serviceType) {
769
796
  return this.withServiceSubmitFunction(serviceType);
@@ -799,7 +826,7 @@ class ActionEditorEditDescriptor extends ActionEditorDescriptor {
799
826
  : throwError(new Error(`Data provider update function or item id ${(_d = ctx.data) === null || _d === void 0 ? void 0 : _d.itemId} is missing.`));
800
827
  });
801
828
  this.withIcon('pi pi-pencil');
802
- this.withClassName('mng-details-dynamic-dialog');
829
+ this.withDialogClassName('mng-details-dynamic-dialog');
803
830
  }
804
831
  withServiceType(serviceType) {
805
832
  return this.withServiceSubmitFunction(serviceType);
@@ -844,6 +871,62 @@ class ActionDeleteDescriptor extends ActionDescriptor {
844
871
  return this;
845
872
  }
846
873
  }
874
+ class ActionLinkDescriptor extends ActionDescriptor {
875
+ constructor(model) {
876
+ super(model, 'link');
877
+ this._url = '';
878
+ this._pathSegments = [];
879
+ this._replaceUrl = false;
880
+ this._target = '_self';
881
+ this._isStyleLink = false;
882
+ }
883
+ get url() {
884
+ return this._url;
885
+ }
886
+ get pathSegments() {
887
+ return this._pathSegments;
888
+ }
889
+ get queryParams() {
890
+ return this._queryParams;
891
+ }
892
+ get queryParamsHandling() {
893
+ return this._queryParamsHandling;
894
+ }
895
+ get replaceUrl() {
896
+ return this._replaceUrl;
897
+ }
898
+ get target() {
899
+ return this._target;
900
+ }
901
+ get isStyleLink() {
902
+ return this._isStyleLink;
903
+ }
904
+ withHref(url) {
905
+ this._url = url;
906
+ return this;
907
+ }
908
+ withRouterLink(...pathSegments) {
909
+ this._pathSegments = pathSegments;
910
+ return this;
911
+ }
912
+ withQueryParams(queryParams, queryParamsHandling) {
913
+ this._queryParams = queryParams;
914
+ this._queryParamsHandling = queryParamsHandling;
915
+ return this;
916
+ }
917
+ withReplaceUrl(replaceUrl = false) {
918
+ this._replaceUrl = replaceUrl;
919
+ return this;
920
+ }
921
+ withTarget(target = '_self') {
922
+ this._target = target;
923
+ return this;
924
+ }
925
+ withStyleLink(isStyleLink) {
926
+ this._isStyleLink = isStyleLink;
927
+ return this;
928
+ }
929
+ }
847
930
  var ActionPositionEnum;
848
931
  (function (ActionPositionEnum) {
849
932
  ActionPositionEnum[ActionPositionEnum["ToolbarLeft"] = 0] = "ToolbarLeft";
@@ -3013,14 +3096,17 @@ class ModelUtil {
3013
3096
  }
3014
3097
  }
3015
3098
 
3016
- class ToastUtil {
3099
+ class NotificationUtil {
3017
3100
  static notification(viewContainer, title, message, severity = 'success') {
3018
3101
  const messageService = viewContainer === null || viewContainer === void 0 ? void 0 : viewContainer.getMessageService();
3019
- if (!messageService) {
3102
+ const notification = { severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000 };
3103
+ if (messageService) {
3104
+ messageService.add(notification);
3105
+ }
3106
+ else {
3020
3107
  console.warn(`No message service was provided through view container, message will not be displayed.`);
3021
- return;
3022
3108
  }
3023
- messageService.add({ severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000 });
3109
+ return notification;
3024
3110
  }
3025
3111
  static tableNotificationError(translationService, table, error, viewContainer) {
3026
3112
  var _a, _b;
@@ -3034,13 +3120,13 @@ class ToastUtil {
3034
3120
  console.log(params);
3035
3121
  const tableErrorTitle = (_a = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.title', undefined, undefined, 'general.error', params)) !== null && _a !== void 0 ? _a : undefined;
3036
3122
  const tableErrorMessage = (_b = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params)) !== null && _b !== void 0 ? _b : undefined;
3037
- ToastUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error');
3123
+ return NotificationUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error');
3038
3124
  }
3039
3125
  static actionNotificationSuccess(translationService, action, functionName, customTitleKey, customMessageKey, viewContainer, item) {
3040
3126
  var _a, _b;
3041
3127
  const actionSuccessTitle = (_a = I18nUtil.instantActionTranslation(translationService, action, 'success.title', customTitleKey, item, 'general.success', functionName)) !== null && _a !== void 0 ? _a : undefined;
3042
3128
  const actionSuccessMessage = (_b = I18nUtil.instantActionTranslation(translationService, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName)) !== null && _b !== void 0 ? _b : undefined;
3043
- ToastUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);
3129
+ return NotificationUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);
3044
3130
  }
3045
3131
  static actionNotificationError(translationService, action, error, functionName, viewContainer, item) {
3046
3132
  var _a, _b;
@@ -3049,7 +3135,7 @@ class ToastUtil {
3049
3135
  };
3050
3136
  const actionErrorTitle = (_a = I18nUtil.instantActionTranslation(translationService, action, 'error.title', action.runNotificationErrorTitle, item, 'general.error', functionName, params)) !== null && _a !== void 0 ? _a : undefined;
3051
3137
  const actionErrorMessage = (_b = I18nUtil.instantActionTranslation(translationService, action, 'error.message', action.runNotificationErrorMessage, item, 'general.errorMessage', functionName, params)) !== null && _b !== void 0 ? _b : undefined;
3052
- ToastUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, 'error');
3138
+ return NotificationUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, 'error');
3053
3139
  }
3054
3140
  static getFormEditorWarningMessage(translationService, title, message) {
3055
3141
  var _a, _b;
@@ -3633,8 +3719,142 @@ class DefaultMngErrorMapperService extends MngErrorMapperService {
3633
3719
  }
3634
3720
  }
3635
3721
 
3722
+ class MngBooleanPipe {
3723
+ transform(value, yes, no, icon = false) {
3724
+ if (typeof value === 'boolean') {
3725
+ if (icon) {
3726
+ return value ? yes !== null && yes !== void 0 ? yes : 'pi pi-check' : no !== null && no !== void 0 ? no : 'pi pi-times';
3727
+ }
3728
+ else {
3729
+ return value ? yes !== null && yes !== void 0 ? yes : 'general.yes' : no !== null && no !== void 0 ? no : 'general.no';
3730
+ }
3731
+ }
3732
+ else {
3733
+ return value;
3734
+ }
3735
+ }
3736
+ }
3737
+ MngBooleanPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3738
+ MngBooleanPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, name: "boolean" });
3739
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, decorators: [{
3740
+ type: Pipe,
3741
+ args: [{
3742
+ name: 'boolean',
3743
+ pure: true
3744
+ }]
3745
+ }] });
3746
+
3747
+ class MngEnumPipe {
3748
+ transform(value, enumObj, i18nPath, nameAsValue = false) {
3749
+ if (!value || !enumObj) {
3750
+ return value;
3751
+ }
3752
+ const enumConstantName = nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumObj, value);
3753
+ if (typeof i18nPath === 'undefined') {
3754
+ i18nPath = TypeUtil.findEnumName(enumObj);
3755
+ }
3756
+ return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;
3757
+ }
3758
+ }
3759
+ MngEnumPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3760
+ MngEnumPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, name: "enum" });
3761
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, decorators: [{
3762
+ type: Pipe,
3763
+ args: [{
3764
+ name: 'enum',
3765
+ pure: true
3766
+ }]
3767
+ }] });
3768
+
3769
+ class MngI18nPropertyPipe {
3770
+ transform(property, model) {
3771
+ return I18nUtil.getModelPropertyKey(model, property);
3772
+ }
3773
+ }
3774
+ MngI18nPropertyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3775
+ MngI18nPropertyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, name: "i18nProperty" });
3776
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, decorators: [{
3777
+ type: Pipe,
3778
+ args: [{
3779
+ name: 'i18nProperty',
3780
+ pure: true
3781
+ }]
3782
+ }] });
3783
+
3784
+ class MngLinkFormatterPipe {
3785
+ parseUrl(s, itemId, itemAny, model, actionData) {
3786
+ var _a, _b;
3787
+ if (s === ':itemId') {
3788
+ return itemId;
3789
+ }
3790
+ else if (model && s.startsWith(`:${model.typeName}.`)) {
3791
+ return (_a = itemAny[s.substring(model.typeName.length + 2)]) !== null && _a !== void 0 ? _a : '';
3792
+ }
3793
+ else if (s.startsWith(':')) {
3794
+ return (_b = actionData === null || actionData === void 0 ? void 0 : actionData[s.substring(1)]) !== null && _b !== void 0 ? _b : '';
3795
+ }
3796
+ else {
3797
+ return s;
3798
+ }
3799
+ }
3800
+ transform(value, itemId, item, model, actionData) {
3801
+ const itemAny = (item !== null && item !== void 0 ? item : {});
3802
+ if (typeof value === 'string') {
3803
+ return value.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData));
3804
+ }
3805
+ else {
3806
+ const transformedItems = [];
3807
+ value.forEach(val => transformedItems.push(...val.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData))));
3808
+ return transformedItems;
3809
+ }
3810
+ }
3811
+ }
3812
+ MngLinkFormatterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngLinkFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3813
+ MngLinkFormatterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngLinkFormatterPipe, name: "linkFormatter" });
3814
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngLinkFormatterPipe, decorators: [{
3815
+ type: Pipe,
3816
+ args: [{
3817
+ name: 'linkFormatter',
3818
+ pure: true
3819
+ }]
3820
+ }] });
3821
+
3822
+ class MngPropertyPathPipe {
3823
+ transform(value, path = '') {
3824
+ if (path.indexOf('.') >= 0) {
3825
+ const pathSplit = path.split('.');
3826
+ let currValue = value;
3827
+ for (const p of pathSplit) {
3828
+ if (typeof currValue === 'undefined' || currValue === null) {
3829
+ return currValue;
3830
+ }
3831
+ else if (typeof currValue === 'object') {
3832
+ currValue = currValue[p];
3833
+ }
3834
+ else {
3835
+ console.warn(`Path ${path} is not valid for object`, value);
3836
+ return currValue;
3837
+ }
3838
+ }
3839
+ return currValue;
3840
+ }
3841
+ else {
3842
+ return typeof value === 'object' ? value[path] : value;
3843
+ }
3844
+ }
3845
+ }
3846
+ MngPropertyPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3847
+ MngPropertyPathPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, name: "propertyPath" });
3848
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, decorators: [{
3849
+ type: Pipe,
3850
+ args: [{
3851
+ name: 'propertyPath',
3852
+ pure: true
3853
+ }]
3854
+ }] });
3855
+
3636
3856
  class MngActionExecutorService {
3637
- constructor(injector, router, dialogService, confirmationService, translate, navigationService, errorMapper, defaultEditorDialogComponent) {
3857
+ constructor(injector, router, dialogService, confirmationService, translate, navigationService, errorMapper, linkFormatter, defaultEditorDialogComponent) {
3638
3858
  this.injector = injector;
3639
3859
  this.router = router;
3640
3860
  this.dialogService = dialogService;
@@ -3642,6 +3862,7 @@ class MngActionExecutorService {
3642
3862
  this.translate = translate;
3643
3863
  this.navigationService = navigationService;
3644
3864
  this.errorMapper = errorMapper;
3865
+ this.linkFormatter = linkFormatter;
3645
3866
  this.defaultEditorDialogComponent = defaultEditorDialogComponent;
3646
3867
  }
3647
3868
  prepareActionExecContext(action, itemId, item, dataProvider, viewContainer, sourceComponent, actionData) {
@@ -3691,17 +3912,17 @@ class MngActionExecutorService {
3691
3912
  confirmParams.accept = () => {
3692
3913
  action
3693
3914
  .runFunction(context)
3694
- .pipe(first(), map(res => new ActionRunResult(context, res)), map(value => {
3915
+ .pipe(first(), map(res => new ActionRunResult(context, res)), map(runResult => {
3695
3916
  if (action.hasRunNotificationSuccess) {
3696
- ToastUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3917
+ runResult.notification = NotificationUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3697
3918
  }
3698
- return value;
3919
+ return runResult;
3699
3920
  }), catchError(err => {
3700
3921
  const actionError = this.toMngActionError(err);
3701
3922
  if (action.hasRunNotificationError) {
3702
- ToastUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3923
+ actionError.notification = NotificationUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3703
3924
  }
3704
- throw actionError;
3925
+ return throwError(() => actionError);
3705
3926
  }))
3706
3927
  .subscribe(res => {
3707
3928
  observer.next(res);
@@ -3716,17 +3937,17 @@ class MngActionExecutorService {
3716
3937
  return observable;
3717
3938
  }
3718
3939
  else {
3719
- return action.runFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(value => {
3940
+ return action.runFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(runResult => {
3720
3941
  if (action.hasRunNotificationSuccess) {
3721
- ToastUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3942
+ runResult.notification = NotificationUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3722
3943
  }
3723
- return value;
3944
+ return runResult;
3724
3945
  }), catchError(err => {
3725
3946
  const actionError = this.toMngActionError(err);
3726
3947
  if (action.hasRunNotificationError) {
3727
- ToastUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3948
+ actionError.notification = NotificationUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3728
3949
  }
3729
- throw actionError;
3950
+ return throwError(() => actionError);
3730
3951
  }));
3731
3952
  }
3732
3953
  }
@@ -3746,17 +3967,17 @@ class MngActionExecutorService {
3746
3967
  if (typeof action.submitFunction !== 'function') {
3747
3968
  throw new Error(`Submit function for action ${action.actionName} cannot be invoked.`);
3748
3969
  }
3749
- return action.submitFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(value => {
3970
+ return action.submitFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(runResult => {
3750
3971
  if (action.hasRunNotificationSuccess) {
3751
- ToastUtil.actionNotificationSuccess(this.translate, action, 'submit', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, formItem);
3972
+ runResult.notification = NotificationUtil.actionNotificationSuccess(this.translate, action, 'submit', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, formItem);
3752
3973
  }
3753
- return value;
3974
+ return runResult;
3754
3975
  }), catchError(err => {
3755
3976
  const actionError = this.toMngActionError(err);
3756
3977
  if (action.hasRunNotificationError) {
3757
- ToastUtil.actionNotificationError(this.translate, action, actionError, 'submit', viewContainer, formItem);
3978
+ actionError.notification = NotificationUtil.actionNotificationError(this.translate, action, actionError, 'submit', viewContainer, formItem);
3758
3979
  }
3759
- throw actionError;
3980
+ return throwError(() => actionError);
3760
3981
  }));
3761
3982
  }
3762
3983
  /**
@@ -3830,14 +4051,20 @@ class MngActionExecutorService {
3830
4051
  activateAction(action, itemId, item, actionData, viewContainer, sourceComponent) {
3831
4052
  if (action.type === ActionTypeEnum.Editor) {
3832
4053
  let dialogComponent = this.defaultEditorDialogComponent;
3833
- if (action instanceof ActionEditorDescriptor && action.editorComponent) {
3834
- dialogComponent = action.editorComponent;
4054
+ let dialogClassName = '';
4055
+ if (action instanceof ActionEditorDescriptor) {
4056
+ if (action.editorComponent) {
4057
+ dialogComponent = action.editorComponent;
4058
+ }
4059
+ if (action.dialogClassName) {
4060
+ dialogClassName = action.dialogClassName;
4061
+ }
3835
4062
  }
3836
4063
  const dialogConfig = {
3837
4064
  data: {
3838
4065
  action
3839
4066
  },
3840
- styleClass: action.className
4067
+ styleClass: dialogClassName
3841
4068
  };
3842
4069
  if (itemId) {
3843
4070
  dialogConfig.data.itemId = itemId;
@@ -3897,22 +4124,7 @@ class MngActionExecutorService {
3897
4124
  if (actionUrl.startsWith('/')) {
3898
4125
  actionUrl = actionUrl.substring(1);
3899
4126
  }
3900
- const itemAny = (item !== null && item !== void 0 ? item : {});
3901
- const actionUrlSegments = actionUrl.split('/').map(s => {
3902
- var _a, _b;
3903
- if (s === ':itemId') {
3904
- return itemId;
3905
- }
3906
- else if (s.startsWith(`:${action.model.typeName}.`)) {
3907
- return (_a = itemAny[s.substring(action.model.typeName.length + 2)]) !== null && _a !== void 0 ? _a : '';
3908
- }
3909
- else if (s.startsWith(':')) {
3910
- return (_b = actionData === null || actionData === void 0 ? void 0 : actionData[s.substring(1)]) !== null && _b !== void 0 ? _b : '';
3911
- }
3912
- else {
3913
- return s;
3914
- }
3915
- });
4127
+ const actionUrlSegments = this.linkFormatter.transform(actionUrl, itemId, item, action.model, actionData);
3916
4128
  return of(new ActionTriggerResult(undefined, from(this.router.navigate([baseUrl, ...actionUrlSegments], { relativeTo: route, queryParams: parsedUrl.queryParams }))));
3917
4129
  }
3918
4130
  else {
@@ -3961,12 +4173,12 @@ class MngActionExecutorService {
3961
4173
  return this.errorMapper.toMngError(error, actionError);
3962
4174
  }
3963
4175
  }
3964
- MngActionExecutorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: i3$1.TranslateService }, { token: MngNavigationService }, { token: MngErrorMapperService }, { token: ACTION_EDITOR_DIALOG_COMPONENT_SETTING }], target: i0.ɵɵFactoryTarget.Injectable });
4176
+ MngActionExecutorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: i3$1.TranslateService }, { token: MngNavigationService }, { token: MngErrorMapperService }, { token: MngLinkFormatterPipe }, { token: ACTION_EDITOR_DIALOG_COMPONENT_SETTING }], target: i0.ɵɵFactoryTarget.Injectable });
3965
4177
  MngActionExecutorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService });
3966
4178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService, decorators: [{
3967
4179
  type: Injectable
3968
4180
  }], ctorParameters: function () {
3969
- return [{ type: i0.Injector }, { type: i1.Router }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: i3$1.TranslateService }, { type: MngNavigationService }, { type: MngErrorMapperService }, { type: i0.Type, decorators: [{
4181
+ return [{ type: i0.Injector }, { type: i1.Router }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: i3$1.TranslateService }, { type: MngNavigationService }, { type: MngErrorMapperService }, { type: MngLinkFormatterPipe }, { type: i0.Type, decorators: [{
3970
4182
  type: Inject,
3971
4183
  args: [ACTION_EDITOR_DIALOG_COMPONENT_SETTING]
3972
4184
  }] }];
@@ -4430,22 +4642,39 @@ class MngActionComponent {
4430
4642
  this.actionExecutor = actionExecutor;
4431
4643
  this.confirmationService = confirmationService;
4432
4644
  this.viewContainerService = viewContainerService;
4645
+ this.levelDefault = ActionLevelEnum.Default;
4646
+ this.levelPrimary = ActionLevelEnum.Primary;
4647
+ this.levelSecondary = ActionLevelEnum.Secondary;
4648
+ this.levelInfo = ActionLevelEnum.Info;
4649
+ this.levelHelp = ActionLevelEnum.Help;
4650
+ this.levelSuccess = ActionLevelEnum.Success;
4651
+ this.levelWarning = ActionLevelEnum.Warning;
4652
+ this.levelDanger = ActionLevelEnum.Danger;
4653
+ this.hostClass = 'mng-action-button';
4433
4654
  this.inputDisabled = of(false);
4434
4655
  this.inputLoading = of(false);
4435
4656
  this.triggerEventEmitter = new EventEmitter();
4436
4657
  this.loadingSubject = new ReplaySubject(1);
4437
4658
  this.$loading = this.loadingSubject.asObservable();
4438
4659
  this.cmpId = Math.random().toString(36).substring(2);
4660
+ this.hasNoTitle = false;
4439
4661
  this.loadingSubject.next(false);
4440
4662
  }
4441
4663
  ngOnInit() {
4442
4664
  var _a, _b, _c, _d, _e, _f, _g;
4443
4665
  this.viewContainer = (_b = (_a = this.viewContainerInit) !== null && _a !== void 0 ? _a : this.viewContainerService) !== null && _b !== void 0 ? _b : undefined;
4666
+ this.hasNoTitle = this.action.title === null;
4444
4667
  const context = this.actionExecutor.prepareActionExecContext(this.action, this.itemId, this.item, this.dataProvider, (_c = this.viewContainer) !== null && _c !== void 0 ? _c : undefined, this, this.actionData);
4445
4668
  this.$isVisible = typeof this.action.isVisibleFunction === 'function' ? this.action.isVisibleFunction(context) : of(true);
4446
4669
  this.$isEnabled = typeof this.action.isEnabledFunction === 'function' ? this.action.isEnabledFunction(context) : of(true);
4447
- this.$label = I18nUtil.streamActionTranslation(this.translate, this.action, 'title', (_e = (_d = this.action) === null || _d === void 0 ? void 0 : _d.title) !== null && _e !== void 0 ? _e : undefined, this.item);
4670
+ this.$label = this.hasNoTitle ? of(null) : I18nUtil.streamActionTranslation(this.translate, this.action, 'title', (_e = (_d = this.action) === null || _d === void 0 ? void 0 : _d.title) !== null && _e !== void 0 ? _e : undefined, this.item);
4448
4671
  this.$tooltip = I18nUtil.streamActionTranslation(this.translate, this.action, 'tooltip', (_g = (_f = this.action) === null || _f === void 0 ? void 0 : _f.tooltip) !== null && _g !== void 0 ? _g : undefined, this.item);
4672
+ if (this.action instanceof ActionLinkDescriptor) {
4673
+ this.actionLink = this.action;
4674
+ }
4675
+ if (this.action.className) {
4676
+ this.hostClass = this.action.className;
4677
+ }
4449
4678
  }
4450
4679
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4451
4680
  triggerAction(event) {
@@ -4474,15 +4703,18 @@ class MngActionComponent {
4474
4703
  }
4475
4704
  }
4476
4705
  MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i3$1.TranslateService }, { token: MngActionExecutorService }, { token: i2.ConfirmationService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
4477
- MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { triggerEventEmitter: "trigger" }, providers: [ConfirmationService], ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <button\n *ngIf=\"action.icon && action.title === null; else noIcon\"\n type=\"button\"\n pButton\n pRipple\n [icon]=\"action.icon\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n <ng-template #noIcon>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-sm]=\"action.isSizeSmall\"\n [class.p-button-lg]=\"action.isSizeLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", components: [{ type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4706
+ MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.3", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { triggerEventEmitter: "trigger" }, host: { properties: { "class": "this.hostClass" } }, providers: [ConfirmationService], ngImport: i0, template: "<ng-container *ngIf=\"$isVisible | async\">\n <a *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [href]=\"actionLink.url\"\n [target]=\"actionLink.target\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n <ng-template #routerLink>\n <a *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"actionLink.pathSegments | linkFormatter:itemId:item:action.model:actionData\"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], components: [{ type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { type: i8.Ripple, selector: "[pRipple]" }, { type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i9.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }], pipes: { "async": i4.AsyncPipe, "linkFormatter": MngLinkFormatterPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4478
4707
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, decorators: [{
4479
4708
  type: Component,
4480
- args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <button\n *ngIf=\"action.icon && action.title === null; else noIcon\"\n type=\"button\"\n pButton\n pRipple\n [icon]=\"action.icon\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button mng-action-button-icon p-button-rounded\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n <ng-template #noIcon>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n (click)=\"triggerAction($event)\"\n class=\"mng-action-button p-button-text\"\n [class.p-button-sm]=\"action.isSizeSmall\"\n [class.p-button-lg]=\"action.isSizeLarge\"\n [class.p-button-primary]=\"action.level === 1\"\n [class.p-button-success]=\"action.level === 5\"\n [class.p-button-danger]=\"action.level === 7\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n" }]
4709
+ args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"$isVisible | async\">\n <a *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [href]=\"actionLink.url\"\n [target]=\"actionLink.target\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n <ng-template #routerLink>\n <a *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"actionLink.pathSegments | linkFormatter:itemId:item:action.model:actionData\"\n [queryParams]=\"actionLink.queryParams\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [icon]=\"$any(action.icon)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-link]=\"actionLink.isStyleLink\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\">{{ ($label | async) ?? '' }}</a>\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class.p-button-rounded]=\"hasNoTitle\"\n [class.mng-action-button-icon]=\"hasNoTitle\"\n [class.p-button-text]=\"action.isStyleText\"\n [class.p-button-raised]=\"action.isStyleRaised\"\n [class.p-button-outlined]=\"action.isStyleOutlined\"\n [class.mng-button-xs]=\"action.isSizeExtraSmall\"\n [class.mng-button-sm]=\"action.isSizeSmall\"\n [class.mng-button-lg]=\"action.isSizeLarge\"\n [class.mng-button-xl]=\"action.isSizeExtraLarge\"\n [class.p-button-default]=\"action.level === levelDefault\"\n [class.p-button-primary]=\"action.level === levelPrimary\"\n [class.p-button-secondary]=\"action.level === levelSecondary\"\n [class.p-button-info]=\"action.level === levelInfo\"\n [class.p-button-help]=\"action.level === levelHelp\"\n [class.p-button-success]=\"action.level === levelSuccess\"\n [class.p-button-warning]=\"action.level === levelWarning\"\n [class.p-button-danger]=\"action.level === levelDanger\"></button>\n </ng-template>\n <p-confirmDialog *ngIf=\"action.hasRunConfirmation\" [key]=\"action.actionName + '_' + cmpId\" [baseZIndex]=\"50\" appendTo=\"body\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
4481
4710
  }], ctorParameters: function () {
4482
4711
  return [{ type: i1.ActivatedRoute }, { type: i3$1.TranslateService }, { type: MngActionExecutorService }, { type: i2.ConfirmationService }, { type: MngViewContainerComponentService, decorators: [{
4483
4712
  type: Optional
4484
4713
  }] }];
4485
- }, propDecorators: { action: [{
4714
+ }, propDecorators: { hostClass: [{
4715
+ type: HostBinding,
4716
+ args: ['class']
4717
+ }], action: [{
4486
4718
  type: Input
4487
4719
  }], item: [{
4488
4720
  type: Input
@@ -4737,7 +4969,7 @@ class MngFormEditorComponent {
4737
4969
  }
4738
4970
  const event = new MngFormEditorSubmitEvent(formSubmitItem);
4739
4971
  event.success = false;
4740
- this.formMessages.push(ToastUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));
4972
+ this.formMessages.push(NotificationUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));
4741
4973
  this.formSubmitEventEmitter.next(event);
4742
4974
  }
4743
4975
  }
@@ -5268,15 +5500,16 @@ class MngActionEditorComponent {
5268
5500
  this.actionExecutor
5269
5501
  .runEditorFetch(this.action, this.item, this.itemId, this.dataProvider, this.sourceComponent, this.viewContainer)
5270
5502
  .pipe(first(), catchError(err => {
5503
+ const actionError = this.actionExecutor.toMngActionError(err);
5271
5504
  if (this.action.hasRunNotificationError) {
5272
- ToastUtil.actionNotificationError(this.translate, this.action, err, 'fetch', this.viewContainer, this.item);
5505
+ NotificationUtil.actionNotificationError(this.translate, this.action, actionError, 'fetch', this.viewContainer, this.item);
5273
5506
  }
5274
- throw err;
5507
+ return throwError(() => actionError);
5275
5508
  }), finalize(() => this.loadingSubject.next(false)))
5276
5509
  .subscribe(res => {
5277
5510
  this.item = res.result;
5278
5511
  if (this.action.hasFetchNotificationSuccess) {
5279
- ToastUtil.actionNotificationSuccess(this.translate, this.action, 'fetch', this.action.fetchNotificationSuccessTitle, this.action.fetchNotificationSuccessMessage, this.viewContainer, this.item);
5512
+ NotificationUtil.actionNotificationSuccess(this.translate, this.action, 'fetch', this.action.fetchNotificationSuccessTitle, this.action.fetchNotificationSuccessMessage, this.viewContainer, this.item);
5280
5513
  }
5281
5514
  this.setTitle();
5282
5515
  });
@@ -5495,87 +5728,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
5495
5728
  type: Input
5496
5729
  }] } });
5497
5730
 
5498
- class MngPropertyPathPipe {
5499
- transform(value, path = '') {
5500
- if (path.indexOf('.') >= 0) {
5501
- const pathSplit = path.split('.');
5502
- let currValue = value;
5503
- for (const p of pathSplit) {
5504
- if (typeof currValue === 'undefined' || currValue === null) {
5505
- return currValue;
5506
- }
5507
- else if (typeof currValue === 'object') {
5508
- currValue = currValue[p];
5509
- }
5510
- else {
5511
- console.warn(`Path ${path} is not valid for object`, value);
5512
- return currValue;
5513
- }
5514
- }
5515
- return currValue;
5516
- }
5517
- else {
5518
- return typeof value === 'object' ? value[path] : value;
5519
- }
5520
- }
5521
- }
5522
- MngPropertyPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5523
- MngPropertyPathPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, name: "propertyPath" });
5524
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, decorators: [{
5525
- type: Pipe,
5526
- args: [{
5527
- name: 'propertyPath',
5528
- pure: true
5529
- }]
5530
- }] });
5531
-
5532
- class MngBooleanPipe {
5533
- transform(value, yes, no, icon = false) {
5534
- if (typeof value === 'boolean') {
5535
- if (icon) {
5536
- return value ? yes !== null && yes !== void 0 ? yes : 'pi pi-check' : no !== null && no !== void 0 ? no : 'pi pi-times';
5537
- }
5538
- else {
5539
- return value ? yes !== null && yes !== void 0 ? yes : 'general.yes' : no !== null && no !== void 0 ? no : 'general.no';
5540
- }
5541
- }
5542
- else {
5543
- return value;
5544
- }
5545
- }
5546
- }
5547
- MngBooleanPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5548
- MngBooleanPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, name: "boolean" });
5549
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, decorators: [{
5550
- type: Pipe,
5551
- args: [{
5552
- name: 'boolean',
5553
- pure: true
5554
- }]
5555
- }] });
5556
-
5557
- class MngEnumPipe {
5558
- transform(value, enumObj, i18nPath, nameAsValue = false) {
5559
- if (!value || !enumObj) {
5560
- return value;
5561
- }
5562
- const enumConstantName = nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumObj, value);
5563
- if (typeof i18nPath === 'undefined') {
5564
- i18nPath = TypeUtil.findEnumName(enumObj);
5565
- }
5566
- return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;
5567
- }
5568
- }
5569
- MngEnumPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5570
- MngEnumPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, name: "enum" });
5571
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, decorators: [{
5572
- type: Pipe,
5573
- args: [{
5574
- name: 'enum',
5575
- pure: true
5576
- }]
5577
- }] });
5578
-
5579
5731
  class MngTableColumnValueComponent {
5580
5732
  constructor() {
5581
5733
  this.columnTypeString = ColumnDescriptor.TypeEnum.String;
@@ -5596,21 +5748,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
5596
5748
  type: Input
5597
5749
  }] } });
5598
5750
 
5599
- class MngI18nPropertyPipe {
5600
- transform(property, model) {
5601
- return I18nUtil.getModelPropertyKey(model, property);
5602
- }
5603
- }
5604
- MngI18nPropertyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5605
- MngI18nPropertyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, name: "i18nProperty" });
5606
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, decorators: [{
5607
- type: Pipe,
5608
- args: [{
5609
- name: 'i18nProperty',
5610
- pure: true
5611
- }]
5612
- }] });
5613
-
5614
5751
  var TypeEnum = FilterDescriptor.TypeEnum;
5615
5752
  var PaginationModeEnum = TableDescriptor.PaginationModeEnum;
5616
5753
  class MngTableComponent {
@@ -5810,7 +5947,7 @@ class MngTableComponent {
5810
5947
  this.dataProviderLoadingSubject.next(false);
5811
5948
  }, err => {
5812
5949
  var _a;
5813
- ToastUtil.tableNotificationError(this.translate, this.descriptor, err, (_a = this.viewContainerService) !== null && _a !== void 0 ? _a : undefined);
5950
+ NotificationUtil.tableNotificationError(this.translate, this.descriptor, err, (_a = this.viewContainerService) !== null && _a !== void 0 ? _a : undefined);
5814
5951
  const emptyQueryResult = new MediusQueryResult();
5815
5952
  emptyQueryResult.pageData = [];
5816
5953
  emptyQueryResult.allDataCount = 0;
@@ -6276,9 +6413,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
6276
6413
  const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.viewEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)
6277
6414
  .withPosition(ActionPositionEnum.RowClick)
6278
6415
  .withTitle(null)
6279
- .withIcon('pi pi-search')
6280
- .withClassName('mng-formly-field-table-form-dialog')
6281
- .withSize(SizeEnum.ExtraSmall);
6416
+ .withDialogClassName('mng-formly-field-table-form-dialog');
6282
6417
  viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitDescriptor.TypeEnum.Cancel)]);
6283
6418
  this.rowClickActions.push(viewAction);
6284
6419
  }
@@ -6287,7 +6422,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
6287
6422
  .withPosition(ActionPositionEnum.ToolbarRight)
6288
6423
  .withTitle(null)
6289
6424
  .withIcon('pi pi-plus')
6290
- .withClassName('mng-formly-field-table-form-dialog')
6425
+ .withDialogClassName('mng-formly-field-table-form-dialog')
6291
6426
  .withSize(SizeEnum.ExtraSmall)
6292
6427
  .withSubmitFunction(ctx => {
6293
6428
  var _a;
@@ -6308,7 +6443,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
6308
6443
  const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)
6309
6444
  .withTitle(null)
6310
6445
  .withIcon('pi pi-pencil')
6311
- .withClassName('mng-formly-field-table-form-dialog')
6446
+ .withDialogClassName('mng-formly-field-table-form-dialog')
6312
6447
  .withSize(SizeEnum.ExtraSmall)
6313
6448
  .withSubmitFunction(ctx => {
6314
6449
  var _a, _b;
@@ -7337,6 +7472,7 @@ const declarations = [
7337
7472
  MngEnumPipe,
7338
7473
  MngBooleanPipe,
7339
7474
  MngI18nPropertyPipe,
7475
+ MngLinkFormatterPipe,
7340
7476
  // layout components
7341
7477
  MngBreadcrumbComponent,
7342
7478
  MngFooterComponent,
@@ -7383,6 +7519,7 @@ class MngCommonsModule {
7383
7519
  MngActionExecutorService,
7384
7520
  MngNavigationService,
7385
7521
  MngCommonsService,
7522
+ MngLinkFormatterPipe,
7386
7523
  // component service
7387
7524
  MngMainLayoutComponentService,
7388
7525
  MngViewContainerComponentService,
@@ -7439,6 +7576,7 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
7439
7576
  MngEnumPipe,
7440
7577
  MngBooleanPipe,
7441
7578
  MngI18nPropertyPipe,
7579
+ MngLinkFormatterPipe,
7442
7580
  // layout components
7443
7581
  MngBreadcrumbComponent,
7444
7582
  MngFooterComponent,
@@ -7553,6 +7691,7 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
7553
7691
  MngEnumPipe,
7554
7692
  MngBooleanPipe,
7555
7693
  MngI18nPropertyPipe,
7694
+ MngLinkFormatterPipe,
7556
7695
  // layout components
7557
7696
  MngBreadcrumbComponent,
7558
7697
  MngFooterComponent,
@@ -8234,5 +8373,5 @@ class RouteDataBuilder {
8234
8373
  * Generated bundle index. Do not edit.
8235
8374
  */
8236
8375
 
8237
- export { AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, ActionActivationResult, ActionActivationTriggerEnum, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionError, ActionExecContext, ActionLevelEnum, ActionPositionEnum, ActionRunResult, ActionTriggerResult, ActionTypeEnum, ColumnDescriptor, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, FieldValidator, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, I18nUtil, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_DROPDOWN_VALUE_ACCESSOR, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngI18nPropertyPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngPropertyPathPipe, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTopbarComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, ObjectSerializer, RouteBuilder, RouteDataBuilder, RoutesBuilder, TableDataProvider, TableDescriptor, TableviewDataProvider, TableviewDescriptor, ToastUtil, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngCommonsInitializerProvider, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
8376
+ export { AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, ActionActivationResult, ActionActivationTriggerEnum, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionError, ActionExecContext, ActionLevelEnum, ActionLinkDescriptor, ActionPositionEnum, ActionRunResult, ActionTriggerResult, ActionTypeEnum, ColumnDescriptor, DataProvider, DefaultMngErrorMapperService, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldDescriptor, FieldGroupDescriptor, FieldInputDescriptor, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldManyEditorDescriptor, FieldManyToManyEditorDescriptor, FieldTabGroupDescriptor, FieldValidator, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, I18nUtil, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_DROPDOWN_VALUE_ACCESSOR, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngI18nPropertyPipe, MngLinkFormatterPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngPropertyPathPipe, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTopbarComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, NotificationUtil, ObjectSerializer, RouteBuilder, RouteDataBuilder, RoutesBuilder, TableDataProvider, TableDescriptor, TableviewDataProvider, TableviewDescriptor, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngCommonsInitializerProvider, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
8238
8377
  //# sourceMappingURL=mediusinc-mng-commons.mjs.map