@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
  }
@@ -680,6 +702,10 @@ class ActionEditorDescriptor extends ActionDescriptor {
680
702
  this._dataProvider = new EditorDataProvider(this._model.type, serviceType);
681
703
  return this;
682
704
  }
705
+ withDialogClassName(className) {
706
+ this._dialogClassName = className;
707
+ return this;
708
+ }
683
709
  withRunFunction(fn) {
684
710
  return this.withSubmitFunction(fn);
685
711
  }
@@ -716,6 +742,7 @@ class ActionEditorSubmitDescriptor extends ActionDescriptor {
716
742
  this._editorAction = editorAction;
717
743
  this._submitType = submitType;
718
744
  this._position = ActionPositionEnum.FooterRight;
745
+ this._isStyleText = true;
719
746
  }
720
747
  get submitType() {
721
748
  return this._submitType;
@@ -737,7 +764,7 @@ class ActionEditorDetailsDescriptor extends ActionEditorDescriptor {
737
764
  ? ctx.dataProvider.fetch(ctx.data?.itemId, ctx.serviceInstance)
738
765
  : throwError(new Error(`Data provider fetch function or item id ${ctx.data?.itemId} is missing.`)));
739
766
  this.withEditorActions([new ActionEditorSubmitDescriptor(this, ActionEditorSubmitDescriptor.TypeEnum.Cancel)]);
740
- this.withClassName('mng-details-dynamic-dialog');
767
+ this.withDialogClassName('mng-details-dynamic-dialog');
741
768
  }
742
769
  withServiceType(serviceType) {
743
770
  return this.withServiceFetchFunction(serviceType);
@@ -759,7 +786,7 @@ class ActionEditorAddDescriptor extends ActionEditorDescriptor {
759
786
  this.withSubmitFunction(ctx => ctx.dataProvider?.create ? ctx.dataProvider.create(ctx.data?.item, ctx.serviceInstance) : throwError(new Error(`Data provider create function is missing.`)));
760
787
  this.withLevel(ActionLevelEnum.Success);
761
788
  this.withIcon('pi pi-plus');
762
- this.withClassName('mng-details-dynamic-dialog');
789
+ this.withDialogClassName('mng-details-dynamic-dialog');
763
790
  }
764
791
  withServiceType(serviceType) {
765
792
  return this.withServiceSubmitFunction(serviceType);
@@ -789,7 +816,7 @@ class ActionEditorEditDescriptor extends ActionEditorDescriptor {
789
816
  ? ctx.dataProvider.update(ctx.data.itemId, ctx.data?.item, ctx.serviceInstance)
790
817
  : throwError(new Error(`Data provider update function or item id ${ctx.data?.itemId} is missing.`)));
791
818
  this.withIcon('pi pi-pencil');
792
- this.withClassName('mng-details-dynamic-dialog');
819
+ this.withDialogClassName('mng-details-dynamic-dialog');
793
820
  }
794
821
  withServiceType(serviceType) {
795
822
  return this.withServiceSubmitFunction(serviceType);
@@ -833,6 +860,62 @@ class ActionDeleteDescriptor extends ActionDescriptor {
833
860
  return this;
834
861
  }
835
862
  }
863
+ class ActionLinkDescriptor extends ActionDescriptor {
864
+ constructor(model) {
865
+ super(model, 'link');
866
+ this._url = '';
867
+ this._pathSegments = [];
868
+ this._replaceUrl = false;
869
+ this._target = '_self';
870
+ this._isStyleLink = false;
871
+ }
872
+ get url() {
873
+ return this._url;
874
+ }
875
+ get pathSegments() {
876
+ return this._pathSegments;
877
+ }
878
+ get queryParams() {
879
+ return this._queryParams;
880
+ }
881
+ get queryParamsHandling() {
882
+ return this._queryParamsHandling;
883
+ }
884
+ get replaceUrl() {
885
+ return this._replaceUrl;
886
+ }
887
+ get target() {
888
+ return this._target;
889
+ }
890
+ get isStyleLink() {
891
+ return this._isStyleLink;
892
+ }
893
+ withHref(url) {
894
+ this._url = url;
895
+ return this;
896
+ }
897
+ withRouterLink(...pathSegments) {
898
+ this._pathSegments = pathSegments;
899
+ return this;
900
+ }
901
+ withQueryParams(queryParams, queryParamsHandling) {
902
+ this._queryParams = queryParams;
903
+ this._queryParamsHandling = queryParamsHandling;
904
+ return this;
905
+ }
906
+ withReplaceUrl(replaceUrl = false) {
907
+ this._replaceUrl = replaceUrl;
908
+ return this;
909
+ }
910
+ withTarget(target = '_self') {
911
+ this._target = target;
912
+ return this;
913
+ }
914
+ withStyleLink(isStyleLink) {
915
+ this._isStyleLink = isStyleLink;
916
+ return this;
917
+ }
918
+ }
836
919
  var ActionPositionEnum;
837
920
  (function (ActionPositionEnum) {
838
921
  ActionPositionEnum[ActionPositionEnum["ToolbarLeft"] = 0] = "ToolbarLeft";
@@ -2991,14 +3074,17 @@ class ModelUtil {
2991
3074
  }
2992
3075
  }
2993
3076
 
2994
- class ToastUtil {
3077
+ class NotificationUtil {
2995
3078
  static notification(viewContainer, title, message, severity = 'success') {
2996
3079
  const messageService = viewContainer?.getMessageService();
2997
- if (!messageService) {
3080
+ const notification = { severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000 };
3081
+ if (messageService) {
3082
+ messageService.add(notification);
3083
+ }
3084
+ else {
2998
3085
  console.warn(`No message service was provided through view container, message will not be displayed.`);
2999
- return;
3000
3086
  }
3001
- messageService.add({ severity: severity, summary: title, detail: message, life: severity === 'error' ? 10000 : 5000 });
3087
+ return notification;
3002
3088
  }
3003
3089
  static tableNotificationError(translationService, table, error, viewContainer) {
3004
3090
  const params = {};
@@ -3011,12 +3097,12 @@ class ToastUtil {
3011
3097
  console.log(params);
3012
3098
  const tableErrorTitle = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;
3013
3099
  const tableErrorMessage = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;
3014
- ToastUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error');
3100
+ return NotificationUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error');
3015
3101
  }
3016
3102
  static actionNotificationSuccess(translationService, action, functionName, customTitleKey, customMessageKey, viewContainer, item) {
3017
3103
  const actionSuccessTitle = I18nUtil.instantActionTranslation(translationService, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;
3018
3104
  const actionSuccessMessage = I18nUtil.instantActionTranslation(translationService, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;
3019
- ToastUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);
3105
+ return NotificationUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);
3020
3106
  }
3021
3107
  static actionNotificationError(translationService, action, error, functionName, viewContainer, item) {
3022
3108
  const params = {
@@ -3025,7 +3111,7 @@ class ToastUtil {
3025
3111
  const actionErrorTitle = I18nUtil.instantActionTranslation(translationService, action, 'error.title', action.runNotificationErrorTitle, item, 'general.error', functionName, params) ??
3026
3112
  undefined;
3027
3113
  const actionErrorMessage = I18nUtil.instantActionTranslation(translationService, action, 'error.message', action.runNotificationErrorMessage, item, 'general.errorMessage', functionName, params) ?? undefined;
3028
- ToastUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, 'error');
3114
+ return NotificationUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, 'error');
3029
3115
  }
3030
3116
  static getFormEditorWarningMessage(translationService, title, message) {
3031
3117
  const actionErrorTitle = translationService.instant(title) ?? undefined;
@@ -3607,8 +3693,141 @@ class DefaultMngErrorMapperService extends MngErrorMapperService {
3607
3693
  }
3608
3694
  }
3609
3695
 
3696
+ class MngBooleanPipe {
3697
+ transform(value, yes, no, icon = false) {
3698
+ if (typeof value === 'boolean') {
3699
+ if (icon) {
3700
+ return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';
3701
+ }
3702
+ else {
3703
+ return value ? yes ?? 'general.yes' : no ?? 'general.no';
3704
+ }
3705
+ }
3706
+ else {
3707
+ return value;
3708
+ }
3709
+ }
3710
+ }
3711
+ MngBooleanPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3712
+ MngBooleanPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, name: "boolean" });
3713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, decorators: [{
3714
+ type: Pipe,
3715
+ args: [{
3716
+ name: 'boolean',
3717
+ pure: true
3718
+ }]
3719
+ }] });
3720
+
3721
+ class MngEnumPipe {
3722
+ transform(value, enumObj, i18nPath, nameAsValue = false) {
3723
+ if (!value || !enumObj) {
3724
+ return value;
3725
+ }
3726
+ const enumConstantName = nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumObj, value);
3727
+ if (typeof i18nPath === 'undefined') {
3728
+ i18nPath = TypeUtil.findEnumName(enumObj);
3729
+ }
3730
+ return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;
3731
+ }
3732
+ }
3733
+ MngEnumPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3734
+ MngEnumPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, name: "enum" });
3735
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, decorators: [{
3736
+ type: Pipe,
3737
+ args: [{
3738
+ name: 'enum',
3739
+ pure: true
3740
+ }]
3741
+ }] });
3742
+
3743
+ class MngI18nPropertyPipe {
3744
+ transform(property, model) {
3745
+ return I18nUtil.getModelPropertyKey(model, property);
3746
+ }
3747
+ }
3748
+ MngI18nPropertyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3749
+ MngI18nPropertyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, name: "i18nProperty" });
3750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, decorators: [{
3751
+ type: Pipe,
3752
+ args: [{
3753
+ name: 'i18nProperty',
3754
+ pure: true
3755
+ }]
3756
+ }] });
3757
+
3758
+ class MngLinkFormatterPipe {
3759
+ parseUrl(s, itemId, itemAny, model, actionData) {
3760
+ if (s === ':itemId') {
3761
+ return itemId;
3762
+ }
3763
+ else if (model && s.startsWith(`:${model.typeName}.`)) {
3764
+ return itemAny[s.substring(model.typeName.length + 2)] ?? '';
3765
+ }
3766
+ else if (s.startsWith(':')) {
3767
+ return actionData?.[s.substring(1)] ?? '';
3768
+ }
3769
+ else {
3770
+ return s;
3771
+ }
3772
+ }
3773
+ transform(value, itemId, item, model, actionData) {
3774
+ const itemAny = (item ?? {});
3775
+ if (typeof value === 'string') {
3776
+ return value.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData));
3777
+ }
3778
+ else {
3779
+ const transformedItems = [];
3780
+ value.forEach(val => transformedItems.push(...val.split('/').map(s => this.parseUrl(s, itemId, itemAny, model, actionData))));
3781
+ return transformedItems;
3782
+ }
3783
+ }
3784
+ }
3785
+ MngLinkFormatterPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngLinkFormatterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3786
+ MngLinkFormatterPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngLinkFormatterPipe, name: "linkFormatter" });
3787
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngLinkFormatterPipe, decorators: [{
3788
+ type: Pipe,
3789
+ args: [{
3790
+ name: 'linkFormatter',
3791
+ pure: true
3792
+ }]
3793
+ }] });
3794
+
3795
+ class MngPropertyPathPipe {
3796
+ transform(value, path = '') {
3797
+ if (path.indexOf('.') >= 0) {
3798
+ const pathSplit = path.split('.');
3799
+ let currValue = value;
3800
+ for (const p of pathSplit) {
3801
+ if (typeof currValue === 'undefined' || currValue === null) {
3802
+ return currValue;
3803
+ }
3804
+ else if (typeof currValue === 'object') {
3805
+ currValue = currValue[p];
3806
+ }
3807
+ else {
3808
+ console.warn(`Path ${path} is not valid for object`, value);
3809
+ return currValue;
3810
+ }
3811
+ }
3812
+ return currValue;
3813
+ }
3814
+ else {
3815
+ return typeof value === 'object' ? value[path] : value;
3816
+ }
3817
+ }
3818
+ }
3819
+ MngPropertyPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3820
+ MngPropertyPathPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, name: "propertyPath" });
3821
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, decorators: [{
3822
+ type: Pipe,
3823
+ args: [{
3824
+ name: 'propertyPath',
3825
+ pure: true
3826
+ }]
3827
+ }] });
3828
+
3610
3829
  class MngActionExecutorService {
3611
- constructor(injector, router, dialogService, confirmationService, translate, navigationService, errorMapper, defaultEditorDialogComponent) {
3830
+ constructor(injector, router, dialogService, confirmationService, translate, navigationService, errorMapper, linkFormatter, defaultEditorDialogComponent) {
3612
3831
  this.injector = injector;
3613
3832
  this.router = router;
3614
3833
  this.dialogService = dialogService;
@@ -3616,6 +3835,7 @@ class MngActionExecutorService {
3616
3835
  this.translate = translate;
3617
3836
  this.navigationService = navigationService;
3618
3837
  this.errorMapper = errorMapper;
3838
+ this.linkFormatter = linkFormatter;
3619
3839
  this.defaultEditorDialogComponent = defaultEditorDialogComponent;
3620
3840
  }
3621
3841
  prepareActionExecContext(action, itemId, item, dataProvider, viewContainer, sourceComponent, actionData) {
@@ -3663,17 +3883,17 @@ class MngActionExecutorService {
3663
3883
  confirmParams.accept = () => {
3664
3884
  action
3665
3885
  .runFunction(context)
3666
- .pipe(first(), map(res => new ActionRunResult(context, res)), map(value => {
3886
+ .pipe(first(), map(res => new ActionRunResult(context, res)), map(runResult => {
3667
3887
  if (action.hasRunNotificationSuccess) {
3668
- ToastUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3888
+ runResult.notification = NotificationUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3669
3889
  }
3670
- return value;
3890
+ return runResult;
3671
3891
  }), catchError(err => {
3672
3892
  const actionError = this.toMngActionError(err);
3673
3893
  if (action.hasRunNotificationError) {
3674
- ToastUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3894
+ actionError.notification = NotificationUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3675
3895
  }
3676
- throw actionError;
3896
+ return throwError(() => actionError);
3677
3897
  }))
3678
3898
  .subscribe(res => {
3679
3899
  observer.next(res);
@@ -3688,17 +3908,17 @@ class MngActionExecutorService {
3688
3908
  return observable;
3689
3909
  }
3690
3910
  else {
3691
- return action.runFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(value => {
3911
+ return action.runFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(runResult => {
3692
3912
  if (action.hasRunNotificationSuccess) {
3693
- ToastUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3913
+ runResult.notification = NotificationUtil.actionNotificationSuccess(this.translate, action, 'run', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, item);
3694
3914
  }
3695
- return value;
3915
+ return runResult;
3696
3916
  }), catchError(err => {
3697
3917
  const actionError = this.toMngActionError(err);
3698
3918
  if (action.hasRunNotificationError) {
3699
- ToastUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3919
+ actionError.notification = NotificationUtil.actionNotificationError(this.translate, action, actionError, 'run', viewContainer, item);
3700
3920
  }
3701
- throw actionError;
3921
+ return throwError(() => actionError);
3702
3922
  }));
3703
3923
  }
3704
3924
  }
@@ -3718,17 +3938,17 @@ class MngActionExecutorService {
3718
3938
  if (typeof action.submitFunction !== 'function') {
3719
3939
  throw new Error(`Submit function for action ${action.actionName} cannot be invoked.`);
3720
3940
  }
3721
- return action.submitFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(value => {
3941
+ return action.submitFunction(context).pipe(map(res => new ActionRunResult(context, res)), map(runResult => {
3722
3942
  if (action.hasRunNotificationSuccess) {
3723
- ToastUtil.actionNotificationSuccess(this.translate, action, 'submit', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, formItem);
3943
+ runResult.notification = NotificationUtil.actionNotificationSuccess(this.translate, action, 'submit', action.runNotificationSuccessTitle, action.runNotificationSuccessMessage, viewContainer, formItem);
3724
3944
  }
3725
- return value;
3945
+ return runResult;
3726
3946
  }), catchError(err => {
3727
3947
  const actionError = this.toMngActionError(err);
3728
3948
  if (action.hasRunNotificationError) {
3729
- ToastUtil.actionNotificationError(this.translate, action, actionError, 'submit', viewContainer, formItem);
3949
+ actionError.notification = NotificationUtil.actionNotificationError(this.translate, action, actionError, 'submit', viewContainer, formItem);
3730
3950
  }
3731
- throw actionError;
3951
+ return throwError(() => actionError);
3732
3952
  }));
3733
3953
  }
3734
3954
  /**
@@ -3801,14 +4021,20 @@ class MngActionExecutorService {
3801
4021
  activateAction(action, itemId, item, actionData, viewContainer, sourceComponent) {
3802
4022
  if (action.type === ActionTypeEnum.Editor) {
3803
4023
  let dialogComponent = this.defaultEditorDialogComponent;
3804
- if (action instanceof ActionEditorDescriptor && action.editorComponent) {
3805
- dialogComponent = action.editorComponent;
4024
+ let dialogClassName = '';
4025
+ if (action instanceof ActionEditorDescriptor) {
4026
+ if (action.editorComponent) {
4027
+ dialogComponent = action.editorComponent;
4028
+ }
4029
+ if (action.dialogClassName) {
4030
+ dialogClassName = action.dialogClassName;
4031
+ }
3806
4032
  }
3807
4033
  const dialogConfig = {
3808
4034
  data: {
3809
4035
  action
3810
4036
  },
3811
- styleClass: action.className
4037
+ styleClass: dialogClassName
3812
4038
  };
3813
4039
  if (itemId) {
3814
4040
  dialogConfig.data.itemId = itemId;
@@ -3867,21 +4093,7 @@ class MngActionExecutorService {
3867
4093
  if (actionUrl.startsWith('/')) {
3868
4094
  actionUrl = actionUrl.substring(1);
3869
4095
  }
3870
- const itemAny = (item ?? {});
3871
- const actionUrlSegments = actionUrl.split('/').map(s => {
3872
- if (s === ':itemId') {
3873
- return itemId;
3874
- }
3875
- else if (s.startsWith(`:${action.model.typeName}.`)) {
3876
- return itemAny[s.substring(action.model.typeName.length + 2)] ?? '';
3877
- }
3878
- else if (s.startsWith(':')) {
3879
- return actionData?.[s.substring(1)] ?? '';
3880
- }
3881
- else {
3882
- return s;
3883
- }
3884
- });
4096
+ const actionUrlSegments = this.linkFormatter.transform(actionUrl, itemId, item, action.model, actionData);
3885
4097
  return of(new ActionTriggerResult(undefined, from(this.router.navigate([baseUrl, ...actionUrlSegments], { relativeTo: route, queryParams: parsedUrl.queryParams }))));
3886
4098
  }
3887
4099
  else {
@@ -3928,11 +4140,11 @@ class MngActionExecutorService {
3928
4140
  return this.errorMapper.toMngError(error, actionError);
3929
4141
  }
3930
4142
  }
3931
- 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 });
4143
+ 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 });
3932
4144
  MngActionExecutorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService });
3933
4145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionExecutorService, decorators: [{
3934
4146
  type: Injectable
3935
- }], ctorParameters: function () { 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: [{
4147
+ }], ctorParameters: function () { 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: [{
3936
4148
  type: Inject,
3937
4149
  args: [ACTION_EDITOR_DIALOG_COMPONENT_SETTING]
3938
4150
  }] }]; } });
@@ -4384,21 +4596,38 @@ class MngActionComponent {
4384
4596
  this.actionExecutor = actionExecutor;
4385
4597
  this.confirmationService = confirmationService;
4386
4598
  this.viewContainerService = viewContainerService;
4599
+ this.levelDefault = ActionLevelEnum.Default;
4600
+ this.levelPrimary = ActionLevelEnum.Primary;
4601
+ this.levelSecondary = ActionLevelEnum.Secondary;
4602
+ this.levelInfo = ActionLevelEnum.Info;
4603
+ this.levelHelp = ActionLevelEnum.Help;
4604
+ this.levelSuccess = ActionLevelEnum.Success;
4605
+ this.levelWarning = ActionLevelEnum.Warning;
4606
+ this.levelDanger = ActionLevelEnum.Danger;
4607
+ this.hostClass = 'mng-action-button';
4387
4608
  this.inputDisabled = of(false);
4388
4609
  this.inputLoading = of(false);
4389
4610
  this.triggerEventEmitter = new EventEmitter();
4390
4611
  this.loadingSubject = new ReplaySubject(1);
4391
4612
  this.$loading = this.loadingSubject.asObservable();
4392
4613
  this.cmpId = Math.random().toString(36).substring(2);
4614
+ this.hasNoTitle = false;
4393
4615
  this.loadingSubject.next(false);
4394
4616
  }
4395
4617
  ngOnInit() {
4396
4618
  this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
4619
+ this.hasNoTitle = this.action.title === null;
4397
4620
  const context = this.actionExecutor.prepareActionExecContext(this.action, this.itemId, this.item, this.dataProvider, this.viewContainer ?? undefined, this, this.actionData);
4398
4621
  this.$isVisible = typeof this.action.isVisibleFunction === 'function' ? this.action.isVisibleFunction(context) : of(true);
4399
4622
  this.$isEnabled = typeof this.action.isEnabledFunction === 'function' ? this.action.isEnabledFunction(context) : of(true);
4400
- this.$label = I18nUtil.streamActionTranslation(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item);
4623
+ this.$label = this.hasNoTitle ? of(null) : I18nUtil.streamActionTranslation(this.translate, this.action, 'title', this.action?.title ?? undefined, this.item);
4401
4624
  this.$tooltip = I18nUtil.streamActionTranslation(this.translate, this.action, 'tooltip', this.action?.tooltip ?? undefined, this.item);
4625
+ if (this.action instanceof ActionLinkDescriptor) {
4626
+ this.actionLink = this.action;
4627
+ }
4628
+ if (this.action.className) {
4629
+ this.hostClass = this.action.className;
4630
+ }
4402
4631
  }
4403
4632
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4404
4633
  triggerAction(event) {
@@ -4427,13 +4656,16 @@ class MngActionComponent {
4427
4656
  }
4428
4657
  }
4429
4658
  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 });
4430
- 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 });
4659
+ 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 });
4431
4660
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngActionComponent, decorators: [{
4432
4661
  type: Component,
4433
- 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" }]
4662
+ 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"] }]
4434
4663
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i3$1.TranslateService }, { type: MngActionExecutorService }, { type: i2.ConfirmationService }, { type: MngViewContainerComponentService, decorators: [{
4435
4664
  type: Optional
4436
- }] }]; }, propDecorators: { action: [{
4665
+ }] }]; }, propDecorators: { hostClass: [{
4666
+ type: HostBinding,
4667
+ args: ['class']
4668
+ }], action: [{
4437
4669
  type: Input
4438
4670
  }], item: [{
4439
4671
  type: Input
@@ -4679,7 +4911,7 @@ class MngFormEditorComponent {
4679
4911
  }
4680
4912
  const event = new MngFormEditorSubmitEvent(formSubmitItem);
4681
4913
  event.success = false;
4682
- this.formMessages.push(ToastUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));
4914
+ this.formMessages.push(NotificationUtil.getFormEditorWarningMessage(this.translateService, 'mngEditor.invalidFormToastTitle', 'mngEditor.invalidFormToastMessage'));
4683
4915
  this.formSubmitEventEmitter.next(event);
4684
4916
  }
4685
4917
  }
@@ -5202,15 +5434,16 @@ class MngActionEditorComponent {
5202
5434
  this.actionExecutor
5203
5435
  .runEditorFetch(this.action, this.item, this.itemId, this.dataProvider, this.sourceComponent, this.viewContainer)
5204
5436
  .pipe(first(), catchError(err => {
5437
+ const actionError = this.actionExecutor.toMngActionError(err);
5205
5438
  if (this.action.hasRunNotificationError) {
5206
- ToastUtil.actionNotificationError(this.translate, this.action, err, 'fetch', this.viewContainer, this.item);
5439
+ NotificationUtil.actionNotificationError(this.translate, this.action, actionError, 'fetch', this.viewContainer, this.item);
5207
5440
  }
5208
- throw err;
5441
+ return throwError(() => actionError);
5209
5442
  }), finalize(() => this.loadingSubject.next(false)))
5210
5443
  .subscribe(res => {
5211
5444
  this.item = res.result;
5212
5445
  if (this.action.hasFetchNotificationSuccess) {
5213
- ToastUtil.actionNotificationSuccess(this.translate, this.action, 'fetch', this.action.fetchNotificationSuccessTitle, this.action.fetchNotificationSuccessMessage, this.viewContainer, this.item);
5446
+ NotificationUtil.actionNotificationSuccess(this.translate, this.action, 'fetch', this.action.fetchNotificationSuccessTitle, this.action.fetchNotificationSuccessMessage, this.viewContainer, this.item);
5214
5447
  }
5215
5448
  this.setTitle();
5216
5449
  });
@@ -5426,87 +5659,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
5426
5659
  type: Input
5427
5660
  }] } });
5428
5661
 
5429
- class MngPropertyPathPipe {
5430
- transform(value, path = '') {
5431
- if (path.indexOf('.') >= 0) {
5432
- const pathSplit = path.split('.');
5433
- let currValue = value;
5434
- for (const p of pathSplit) {
5435
- if (typeof currValue === 'undefined' || currValue === null) {
5436
- return currValue;
5437
- }
5438
- else if (typeof currValue === 'object') {
5439
- currValue = currValue[p];
5440
- }
5441
- else {
5442
- console.warn(`Path ${path} is not valid for object`, value);
5443
- return currValue;
5444
- }
5445
- }
5446
- return currValue;
5447
- }
5448
- else {
5449
- return typeof value === 'object' ? value[path] : value;
5450
- }
5451
- }
5452
- }
5453
- MngPropertyPathPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5454
- MngPropertyPathPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, name: "propertyPath" });
5455
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngPropertyPathPipe, decorators: [{
5456
- type: Pipe,
5457
- args: [{
5458
- name: 'propertyPath',
5459
- pure: true
5460
- }]
5461
- }] });
5462
-
5463
- class MngBooleanPipe {
5464
- transform(value, yes, no, icon = false) {
5465
- if (typeof value === 'boolean') {
5466
- if (icon) {
5467
- return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';
5468
- }
5469
- else {
5470
- return value ? yes ?? 'general.yes' : no ?? 'general.no';
5471
- }
5472
- }
5473
- else {
5474
- return value;
5475
- }
5476
- }
5477
- }
5478
- MngBooleanPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5479
- MngBooleanPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, name: "boolean" });
5480
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngBooleanPipe, decorators: [{
5481
- type: Pipe,
5482
- args: [{
5483
- name: 'boolean',
5484
- pure: true
5485
- }]
5486
- }] });
5487
-
5488
- class MngEnumPipe {
5489
- transform(value, enumObj, i18nPath, nameAsValue = false) {
5490
- if (!value || !enumObj) {
5491
- return value;
5492
- }
5493
- const enumConstantName = nameAsValue ? value : EnumUtil.getConstantNameFromEnumObject(enumObj, value);
5494
- if (typeof i18nPath === 'undefined') {
5495
- i18nPath = TypeUtil.findEnumName(enumObj);
5496
- }
5497
- return i18nPath ? `${i18nPath}.${enumConstantName}` : enumConstantName;
5498
- }
5499
- }
5500
- MngEnumPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5501
- MngEnumPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, name: "enum" });
5502
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngEnumPipe, decorators: [{
5503
- type: Pipe,
5504
- args: [{
5505
- name: 'enum',
5506
- pure: true
5507
- }]
5508
- }] });
5509
-
5510
5662
  class MngTableColumnValueComponent {
5511
5663
  constructor() {
5512
5664
  this.columnTypeString = ColumnDescriptor.TypeEnum.String;
@@ -5527,21 +5679,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImpor
5527
5679
  type: Input
5528
5680
  }] } });
5529
5681
 
5530
- class MngI18nPropertyPipe {
5531
- transform(property, model) {
5532
- return I18nUtil.getModelPropertyKey(model, property);
5533
- }
5534
- }
5535
- MngI18nPropertyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
5536
- MngI18nPropertyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, name: "i18nProperty" });
5537
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: MngI18nPropertyPipe, decorators: [{
5538
- type: Pipe,
5539
- args: [{
5540
- name: 'i18nProperty',
5541
- pure: true
5542
- }]
5543
- }] });
5544
-
5545
5682
  var TypeEnum = FilterDescriptor.TypeEnum;
5546
5683
  var PaginationModeEnum = TableDescriptor.PaginationModeEnum;
5547
5684
  class MngTableComponent {
@@ -5736,7 +5873,7 @@ class MngTableComponent {
5736
5873
  this.isSortChanged = false;
5737
5874
  this.dataProviderLoadingSubject.next(false);
5738
5875
  }, err => {
5739
- ToastUtil.tableNotificationError(this.translate, this.descriptor, err, this.viewContainerService ?? undefined);
5876
+ NotificationUtil.tableNotificationError(this.translate, this.descriptor, err, this.viewContainerService ?? undefined);
5740
5877
  const emptyQueryResult = new MediusQueryResult();
5741
5878
  emptyQueryResult.pageData = [];
5742
5879
  emptyQueryResult.allDataCount = 0;
@@ -6189,9 +6326,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
6189
6326
  const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.viewEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)
6190
6327
  .withPosition(ActionPositionEnum.RowClick)
6191
6328
  .withTitle(null)
6192
- .withIcon('pi pi-search')
6193
- .withClassName('mng-formly-field-table-form-dialog')
6194
- .withSize(SizeEnum.ExtraSmall);
6329
+ .withDialogClassName('mng-formly-field-table-form-dialog');
6195
6330
  viewAction.withEditorActions([new ActionEditorSubmitDescriptor(viewAction, ActionEditorSubmitDescriptor.TypeEnum.Cancel)]);
6196
6331
  this.rowClickActions.push(viewAction);
6197
6332
  }
@@ -6200,7 +6335,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
6200
6335
  .withPosition(ActionPositionEnum.ToolbarRight)
6201
6336
  .withTitle(null)
6202
6337
  .withIcon('pi pi-plus')
6203
- .withClassName('mng-formly-field-table-form-dialog')
6338
+ .withDialogClassName('mng-formly-field-table-form-dialog')
6204
6339
  .withSize(SizeEnum.ExtraSmall)
6205
6340
  .withSubmitFunction(ctx => {
6206
6341
  if (!ctx.data?.item) {
@@ -6220,7 +6355,7 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
6220
6355
  const editAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.editEditor, 'edit', this.descriptor.editor.model.type, this.descriptor.property)
6221
6356
  .withTitle(null)
6222
6357
  .withIcon('pi pi-pencil')
6223
- .withClassName('mng-formly-field-table-form-dialog')
6358
+ .withDialogClassName('mng-formly-field-table-form-dialog')
6224
6359
  .withSize(SizeEnum.ExtraSmall)
6225
6360
  .withSubmitFunction(ctx => {
6226
6361
  if (!ctx.data?.item) {
@@ -7233,6 +7368,7 @@ const declarations = [
7233
7368
  MngEnumPipe,
7234
7369
  MngBooleanPipe,
7235
7370
  MngI18nPropertyPipe,
7371
+ MngLinkFormatterPipe,
7236
7372
  // layout components
7237
7373
  MngBreadcrumbComponent,
7238
7374
  MngFooterComponent,
@@ -7279,6 +7415,7 @@ class MngCommonsModule {
7279
7415
  MngActionExecutorService,
7280
7416
  MngNavigationService,
7281
7417
  MngCommonsService,
7418
+ MngLinkFormatterPipe,
7282
7419
  // component service
7283
7420
  MngMainLayoutComponentService,
7284
7421
  MngViewContainerComponentService,
@@ -7335,6 +7472,7 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
7335
7472
  MngEnumPipe,
7336
7473
  MngBooleanPipe,
7337
7474
  MngI18nPropertyPipe,
7475
+ MngLinkFormatterPipe,
7338
7476
  // layout components
7339
7477
  MngBreadcrumbComponent,
7340
7478
  MngFooterComponent,
@@ -7447,6 +7585,7 @@ MngCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
7447
7585
  MngEnumPipe,
7448
7586
  MngBooleanPipe,
7449
7587
  MngI18nPropertyPipe,
7588
+ MngLinkFormatterPipe,
7450
7589
  // layout components
7451
7590
  MngBreadcrumbComponent,
7452
7591
  MngFooterComponent,
@@ -8126,5 +8265,5 @@ class RouteDataBuilder {
8126
8265
  * Generated bundle index. Do not edit.
8127
8266
  */
8128
8267
 
8129
- 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 };
8268
+ 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 };
8130
8269
  //# sourceMappingURL=mediusinc-mng-commons.mjs.map