@mediusinc/mng-commons 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/esm2020/lib/components/action/action.component.mjs +8 -8
  2. package/esm2020/lib/components/action/editor/action-editor.component.mjs +41 -20
  3. package/esm2020/lib/components/action/route/action-route.component.mjs +3 -3
  4. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +21 -3
  5. package/esm2020/lib/components/form/editor/form-editor.component.mjs +29 -29
  6. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
  7. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +13 -15
  8. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +5 -5
  9. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +1 -1
  10. package/esm2020/lib/components/tableview/table/table.component.mjs +1 -1
  11. package/esm2020/lib/components/tableview/tableview.component.mjs +16 -14
  12. package/esm2020/lib/descriptors/action.descriptor.mjs +19 -12
  13. package/esm2020/lib/descriptors/editor.descriptor.mjs +5 -8
  14. package/esm2020/lib/descriptors/field.descriptor.mjs +13 -3
  15. package/esm2020/lib/descriptors/tableview.descriptor.mjs +32 -32
  16. package/esm2020/lib/descriptors/types/editor.type.mjs +8 -8
  17. package/esm2020/lib/models/view-container.model.mjs +1 -1
  18. package/esm2020/lib/router/tableview-route-builder.mjs +2 -2
  19. package/esm2020/lib/security/model/permissions.model.mjs +1 -9
  20. package/esm2020/lib/services/view-container.component.service.mjs +21 -8
  21. package/fesm2015/mediusinc-mng-commons.mjs +587 -527
  22. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  23. package/fesm2020/mediusinc-mng-commons.mjs +568 -510
  24. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  25. package/lib/components/action/editor/action-editor.component.d.ts +1 -2
  26. package/lib/components/form/autocomplete/autocomplete.component.d.ts +7 -2
  27. package/lib/components/form/editor/form-editor.component.d.ts +1 -1
  28. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -3
  29. package/lib/components/tableview/tableview.component.d.ts +2 -2
  30. package/lib/descriptors/action.descriptor.d.ts +6 -4
  31. package/lib/descriptors/editor.descriptor.d.ts +5 -6
  32. package/lib/descriptors/field.descriptor.d.ts +5 -1
  33. package/lib/descriptors/tableview.descriptor.d.ts +5 -5
  34. package/lib/descriptors/types/editor.type.d.ts +2 -2
  35. package/lib/models/view-container.model.d.ts +31 -0
  36. package/lib/router/tableview-route-builder.d.ts +1 -1
  37. package/lib/security/model/permissions.model.d.ts +0 -7
  38. package/lib/services/view-container.component.service.d.ts +12 -6
  39. package/package.json +1 -1
  40. package/scss/mng-overrides/_layout_dialog.scss +1 -0
  41. package/scss/mng-overrides/_theme_autocomplete.scss +16 -0
  42. package/scss/mng-overrides/_theme_styles.scss +1 -0
  43. package/version-info.json +5 -5
@@ -74,7 +74,7 @@ import * as i6$2 from 'primeng/toolbar';
74
74
  import { ToolbarModule } from 'primeng/toolbar';
75
75
  import * as i7 from 'primeng/tooltip';
76
76
  import { TooltipModule } from 'primeng/tooltip';
77
- import { isObservable, throwError, of, Subject, BehaviorSubject, ReplaySubject, distinctUntilChanged, combineLatest, tap, switchMap, mergeMap as mergeMap$1, from, Observable, merge, debounceTime } from 'rxjs';
77
+ import { isObservable, throwError, BehaviorSubject, Subject, ReplaySubject, distinctUntilChanged, of, combineLatest, tap, switchMap, mergeMap as mergeMap$1, from, Observable, merge, debounceTime } from 'rxjs';
78
78
  import { map, mergeMap, catchError, first, filter, finalize, startWith } from 'rxjs/operators';
79
79
  import 'reflect-metadata';
80
80
  import * as i4 from '@angular/platform-browser';
@@ -577,6 +577,257 @@ DateUtil.NG_PRIME_FORMAT_MAP = {
577
577
  YYYY: 'yy'
578
578
  };
579
579
 
580
+ class ActionError {
581
+ constructor(error, // error details
582
+ dismissed = false // by user
583
+ ) {
584
+ this.error = error;
585
+ this.dismissed = dismissed;
586
+ }
587
+ }
588
+ /**
589
+ * Action execution instance containing data about execution state of action
590
+ */
591
+ class ActionInstance {
592
+ constructor(action, state = ActionInstanceStateEnum.TriggerStart, debug = false) {
593
+ this.debug = debug;
594
+ // function execution
595
+ this.isRunLoadingSubject = new BehaviorSubject(false);
596
+ this.contexts = [];
597
+ this.executionSubject = new Subject();
598
+ this.executionIsRunningSubject = new BehaviorSubject(false);
599
+ this.stateSubject = new BehaviorSubject(1);
600
+ this.resultSubject = new ReplaySubject(1);
601
+ this.errorSubject = new ReplaySubject(1);
602
+ this.contextExecutionSubscriptions = [];
603
+ this.instanceId = Math.random().toString(36).substring(2);
604
+ this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;
605
+ this.action = action;
606
+ this.state = state;
607
+ }
608
+ get isRunLoading$() {
609
+ return this.isRunLoadingSubject.asObservable();
610
+ }
611
+ get context() {
612
+ return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];
613
+ }
614
+ get execution$() {
615
+ return this.executionSubject.asObservable();
616
+ }
617
+ get executionIsRunning$() {
618
+ return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());
619
+ }
620
+ get state() {
621
+ return this.stateSubject.value;
622
+ }
623
+ set state(state) {
624
+ if (state > this.stateSubject.value) {
625
+ if (this.debug) {
626
+ console.debug(`ActionInstance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);
627
+ }
628
+ this.stateSubject.next(state);
629
+ }
630
+ }
631
+ get state$() {
632
+ return this.stateSubject.asObservable().pipe(distinctUntilChanged());
633
+ }
634
+ get result() {
635
+ return this._result;
636
+ }
637
+ set result(result) {
638
+ if (typeof result === 'undefined') {
639
+ return;
640
+ }
641
+ if (this.debug) {
642
+ console.debug(`ActionInstance ${this.instanceLongName} - result`, result);
643
+ }
644
+ this._result = result;
645
+ this.resultSubject.next(result);
646
+ }
647
+ get result$() {
648
+ return this.resultSubject.asObservable();
649
+ }
650
+ get error() {
651
+ return this._error;
652
+ }
653
+ set error(error) {
654
+ if (typeof error === 'undefined') {
655
+ return;
656
+ }
657
+ if (this.debug) {
658
+ console.debug(`ActionInstance ${this.instanceLongName} - error`, error);
659
+ }
660
+ this._error = error;
661
+ this.errorSubject.next(error);
662
+ }
663
+ get error$() {
664
+ return this.errorSubject.asObservable();
665
+ }
666
+ contextAt(idx) {
667
+ return idx < this.contexts.length ? this.contexts[idx] : undefined;
668
+ }
669
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
670
+ newContext(context, finishPrevious = true) {
671
+ if (this.debug) {
672
+ console.debug(`ActionInstance ${this.instanceLongName} - new context ${context.contextLongName}`);
673
+ }
674
+ const currentContext = this.context;
675
+ if (currentContext) {
676
+ currentContext.executionComplete();
677
+ }
678
+ this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());
679
+ this.contextExecutionSubscriptions = [];
680
+ this.contextExecutionSubscriptions.push(context.execution$.subscribe({
681
+ next: next => this.executionSubject.next(next),
682
+ error: error => this.executionSubject.error(error)
683
+ }));
684
+ this.contextExecutionSubscriptions.push(context.executionIsRunning$.subscribe({
685
+ next: next => this.executionIsRunningSubject.next(next)
686
+ }));
687
+ this.contexts.push(context);
688
+ }
689
+ finish() {
690
+ if (this.stateSubject.value < ActionInstanceStateEnum.FinishSuccess) {
691
+ this.state = ActionInstanceStateEnum.FinishSuccess;
692
+ }
693
+ // complete all subjects
694
+ this.contexts.forEach(c => c.finish());
695
+ this.executionSubject.complete();
696
+ this.executionIsRunningSubject.complete();
697
+ this.stateSubject.complete();
698
+ this.resultSubject.complete();
699
+ this.errorSubject.complete();
700
+ }
701
+ }
702
+ /**
703
+ * Class containing all main data for action to be executed in run/fetch/submit states.
704
+ */
705
+ class ActionContext {
706
+ constructor(instance, parameters, functionName, dataProvider, serviceInstance, executionSubject = new ReplaySubject(1), executionIsRunningSubject = new BehaviorSubject(false)) {
707
+ this.instance = instance;
708
+ this.parameters = parameters;
709
+ this.functionName = functionName;
710
+ this.dataProvider = dataProvider;
711
+ this.serviceInstance = serviceInstance;
712
+ this.executionSubject = executionSubject;
713
+ this.executionIsRunningSubject = executionIsRunningSubject;
714
+ this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;
715
+ }
716
+ get execution$() {
717
+ return this.executionSubject.asObservable();
718
+ }
719
+ get executionIsRunning$() {
720
+ return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());
721
+ }
722
+ executionStart() {
723
+ if (this.instance.debug) {
724
+ console.debug(`ActionContext ${this.contextLongName} - execution start`);
725
+ }
726
+ this.executionIsRunningSubject.next(true);
727
+ }
728
+ executionNext(next, finish = true) {
729
+ if (this.instance.debug) {
730
+ console.debug(`ActionContext ${this.contextLongName} - execution next event`, next, finish);
731
+ }
732
+ this.executionSubject.next(next);
733
+ if (finish) {
734
+ this.executionComplete();
735
+ }
736
+ }
737
+ executionComplete() {
738
+ if (this.instance.debug) {
739
+ console.debug(`ActionContext ${this.contextLongName} - execution complete`);
740
+ }
741
+ this.executionSubject.complete();
742
+ this.executionIsRunningSubject.next(false);
743
+ }
744
+ executionError(err) {
745
+ if (this.instance.debug) {
746
+ console.debug(`ActionContext ${this.contextLongName} - execution error`, err);
747
+ }
748
+ this.executionSubject.error(err);
749
+ this.executionIsRunningSubject.next(false);
750
+ }
751
+ finish() {
752
+ this.executionSubject.complete();
753
+ this.executionIsRunningSubject.complete();
754
+ }
755
+ }
756
+ /**
757
+ * Class containing all main data for action validations (enabled/visible) to be executed in validation states.
758
+ */
759
+ class ActionContextValidation {
760
+ constructor(descriptor, parameters, dataProvider, serviceInstance) {
761
+ this.descriptor = descriptor;
762
+ this.parameters = parameters;
763
+ this.dataProvider = dataProvider;
764
+ this.serviceInstance = serviceInstance;
765
+ }
766
+ }
767
+ class ActionParameters {
768
+ constructor(itemId, item) {
769
+ this.itemId = itemId;
770
+ this.item = item;
771
+ this.selectedItems = [];
772
+ }
773
+ withActionData(actionData) {
774
+ this.actionData = actionData;
775
+ return this;
776
+ }
777
+ withQueryParam(queryParam) {
778
+ this.queryParam = queryParam;
779
+ return this;
780
+ }
781
+ withViewContainer(viewContainer) {
782
+ this.viewContainer = viewContainer;
783
+ return this;
784
+ }
785
+ withSourceComponent(sourceComponent) {
786
+ this.sourceComponent = sourceComponent;
787
+ return this;
788
+ }
789
+ withRoute(route) {
790
+ this.route = route;
791
+ return this;
792
+ }
793
+ withSelectedItems(selectedItems) {
794
+ this.selectedItems = selectedItems;
795
+ return this;
796
+ }
797
+ }
798
+ var ActionInstanceStateEnum;
799
+ (function (ActionInstanceStateEnum) {
800
+ ActionInstanceStateEnum[ActionInstanceStateEnum["TriggerStart"] = 0] = "TriggerStart";
801
+ ActionInstanceStateEnum[ActionInstanceStateEnum["TriggerEnd"] = 1] = "TriggerEnd";
802
+ ActionInstanceStateEnum[ActionInstanceStateEnum["ActivationStart"] = 2] = "ActivationStart";
803
+ ActionInstanceStateEnum[ActionInstanceStateEnum["ActivationEnd"] = 3] = "ActivationEnd";
804
+ ActionInstanceStateEnum[ActionInstanceStateEnum["FetchStart"] = 4] = "FetchStart";
805
+ ActionInstanceStateEnum[ActionInstanceStateEnum["FetchEnd"] = 5] = "FetchEnd";
806
+ ActionInstanceStateEnum[ActionInstanceStateEnum["FetchError"] = 6] = "FetchError";
807
+ ActionInstanceStateEnum[ActionInstanceStateEnum["RunConfirmationStart"] = 7] = "RunConfirmationStart";
808
+ ActionInstanceStateEnum[ActionInstanceStateEnum["RunConfirmationEndAccept"] = 8] = "RunConfirmationEndAccept";
809
+ ActionInstanceStateEnum[ActionInstanceStateEnum["RunConfirmationEndReject"] = 9] = "RunConfirmationEndReject";
810
+ ActionInstanceStateEnum[ActionInstanceStateEnum["RunStart"] = 10] = "RunStart";
811
+ ActionInstanceStateEnum[ActionInstanceStateEnum["RunEnd"] = 11] = "RunEnd";
812
+ ActionInstanceStateEnum[ActionInstanceStateEnum["RunError"] = 12] = "RunError";
813
+ ActionInstanceStateEnum[ActionInstanceStateEnum["NextActionStart"] = 13] = "NextActionStart";
814
+ ActionInstanceStateEnum[ActionInstanceStateEnum["NextActionEnd"] = 14] = "NextActionEnd";
815
+ ActionInstanceStateEnum[ActionInstanceStateEnum["FinishSuccess"] = 15] = "FinishSuccess";
816
+ ActionInstanceStateEnum[ActionInstanceStateEnum["FinishError"] = 16] = "FinishError";
817
+ ActionInstanceStateEnum[ActionInstanceStateEnum["FinishDismissed"] = 17] = "FinishDismissed"; // action was dismissed by user
818
+ })(ActionInstanceStateEnum || (ActionInstanceStateEnum = {}));
819
+
820
+ /**
821
+ * Default categories for tableview actions
822
+ */
823
+ class TableviewActionDefaultCategories {
824
+ }
825
+ TableviewActionDefaultCategories.READ = 'read';
826
+ TableviewActionDefaultCategories.ADD = 'add';
827
+ TableviewActionDefaultCategories.EDIT = 'edit';
828
+ TableviewActionDefaultCategories.DELETE = 'delete';
829
+ TableviewActionDefaultCategories.DETAILS = 'details';
830
+
580
831
  class DataProvider {
581
832
  constructor(modelType, serviceType) {
582
833
  this._modelType = modelType;
@@ -695,138 +946,36 @@ class DynamicTableviewDataProvider extends TableviewDataProvider {
695
946
  return this;
696
947
  }
697
948
  withFetch(fetch) {
698
- this._fetch = fetch;
699
- return this;
700
- }
701
- get getAll() {
702
- return this._getAll;
703
- }
704
- get fetch() {
705
- return this._fetch;
706
- }
707
- }
708
-
709
- class TableviewCrudDataProvider extends TableviewDataProvider {
710
- constructor(modelType, serviceType, idPropertyName, useGetAllForFetch = false) {
711
- super(modelType, serviceType);
712
- this.withGetAll((queryParam, service) => service.getAllPost(queryParam));
713
- if (useGetAllForFetch) {
714
- const selectedIdPropertyName = idPropertyName ?? ModelUtil.findIdAttribute(modelType) ?? 'id';
715
- this.withFetch((id, service) => {
716
- const qp = MediusQueryParamBuilder.create(10, 0).withFilter(selectedIdPropertyName, id, id, MediusFilterMatchType.Equals, true).build();
717
- return service.getAllPost(qp).pipe(map(res => res.pageData[0]));
718
- });
719
- }
720
- else {
721
- this.withFetch((id, service) => service.getByIdGet(id));
722
- }
723
- this.withCreate((item, service) => service.createPost(item));
724
- this.withUpdate((id, item, service) => service.updatePut(id, item));
725
- this.withDelete((id, item, service) => service.removeDelete(id, item));
726
- }
727
- }
728
-
729
- var AuthorizationTypeEnum;
730
- (function (AuthorizationTypeEnum) {
731
- AuthorizationTypeEnum["All"] = "ALL";
732
- AuthorizationTypeEnum["Any"] = "ANY";
733
- AuthorizationTypeEnum["Rbac"] = "ROLE_BASED_ACCESS_CONTROL";
734
- AuthorizationTypeEnum["Service"] = "SERVICE";
735
- })(AuthorizationTypeEnum || (AuthorizationTypeEnum = {}));
736
-
737
- class APermissions {
738
- constructor(type) {
739
- this._authorizationType = type;
740
- }
741
- get authorizationType() {
742
- return this._authorizationType;
743
- }
744
- }
745
- var Permissions;
746
- (function (Permissions) {
747
- class All extends APermissions {
748
- constructor() {
749
- super(AuthorizationTypeEnum.All);
750
- this._permissions = [];
751
- }
752
- static of(...permissions) {
753
- const inst = new All();
754
- inst.and(...permissions);
755
- return inst;
756
- }
757
- get permissions() {
758
- return this._permissions;
759
- }
760
- and(...permissions) {
761
- this._permissions.push(...permissions);
762
- return this;
763
- }
949
+ this._fetch = fetch;
950
+ return this;
764
951
  }
765
- Permissions.All = All;
766
- class Any extends APermissions {
767
- constructor() {
768
- super(AuthorizationTypeEnum.Any);
769
- this._permissions = [];
770
- }
771
- static of(...permissions) {
772
- const inst = new Any();
773
- inst.or(...permissions);
774
- return inst;
775
- }
776
- get permissions() {
777
- return this._permissions;
778
- }
779
- or(...permissions) {
780
- this._permissions.push(...permissions);
781
- return this;
782
- }
952
+ get getAll() {
953
+ return this._getAll;
783
954
  }
784
- Permissions.Any = Any;
785
- class Roles extends APermissions {
786
- constructor() {
787
- super(AuthorizationTypeEnum.Rbac);
788
- this._roles = [];
789
- }
790
- static of(...roles) {
791
- const inst = new Roles();
792
- inst.or(...roles);
793
- return inst;
794
- }
795
- get roles() {
796
- return this._roles;
797
- }
798
- and(...roles) {
799
- if (this._roles.length === 0) {
800
- this._roles.push([]);
801
- }
802
- this._roles[this._roles.length - 1].push(...roles);
803
- return this;
804
- }
805
- or(...roles) {
806
- this._roles.push(...roles.map(s => [s]));
807
- return this;
808
- }
955
+ get fetch() {
956
+ return this._fetch;
809
957
  }
810
- Permissions.Roles = Roles;
811
- class Service extends APermissions {
812
- constructor(service) {
813
- super(AuthorizationTypeEnum.Service);
814
- this.service = service;
958
+ }
959
+
960
+ class TableviewCrudDataProvider extends TableviewDataProvider {
961
+ constructor(modelType, serviceType, idPropertyName, useGetAllForFetch = false) {
962
+ super(modelType, serviceType);
963
+ this.withGetAll((queryParam, service) => service.getAllPost(queryParam));
964
+ if (useGetAllForFetch) {
965
+ const selectedIdPropertyName = idPropertyName ?? ModelUtil.findIdAttribute(modelType) ?? 'id';
966
+ this.withFetch((id, service) => {
967
+ const qp = MediusQueryParamBuilder.create(10, 0).withFilter(selectedIdPropertyName, id, id, MediusFilterMatchType.Equals, true).build();
968
+ return service.getAllPost(qp).pipe(map(res => res.pageData[0]));
969
+ });
815
970
  }
816
- static of(service) {
817
- return new Service(service);
971
+ else {
972
+ this.withFetch((id, service) => service.getByIdGet(id));
818
973
  }
974
+ this.withCreate((item, service) => service.createPost(item));
975
+ this.withUpdate((id, item, service) => service.updatePut(id, item));
976
+ this.withDelete((id, item, service) => service.removeDelete(id, item));
819
977
  }
820
- Permissions.Service = Service;
821
- class ActionTypes {
822
- }
823
- ActionTypes.READ = 'read';
824
- ActionTypes.ADD = 'add';
825
- ActionTypes.EDIT = 'edit';
826
- ActionTypes.DELETE = 'delete';
827
- ActionTypes.DETAILS = 'details';
828
- Permissions.ActionTypes = ActionTypes;
829
- })(Permissions || (Permissions = {}));
978
+ }
830
979
 
831
980
  var ActionPositionEnum;
832
981
  (function (ActionPositionEnum) {
@@ -865,13 +1014,13 @@ var ColumnTypeEnum;
865
1014
  ColumnTypeEnum[ColumnTypeEnum["Custom"] = 6] = "Custom";
866
1015
  })(ColumnTypeEnum || (ColumnTypeEnum = {}));
867
1016
 
868
- var TableviewTypeEnum;
869
- (function (TableviewTypeEnum) {
870
- TableviewTypeEnum[TableviewTypeEnum["None"] = 0] = "None";
871
- TableviewTypeEnum[TableviewTypeEnum["View"] = 1] = "View";
872
- TableviewTypeEnum[TableviewTypeEnum["Edit"] = 2] = "Edit";
873
- TableviewTypeEnum[TableviewTypeEnum["Add"] = 3] = "Add";
874
- })(TableviewTypeEnum || (TableviewTypeEnum = {}));
1017
+ var TableviewEditorTypeEnum;
1018
+ (function (TableviewEditorTypeEnum) {
1019
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["None"] = 0] = "None";
1020
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["Details"] = 1] = "Details";
1021
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["Edit"] = 2] = "Edit";
1022
+ TableviewEditorTypeEnum[TableviewEditorTypeEnum["Add"] = 3] = "Add";
1023
+ })(TableviewEditorTypeEnum || (TableviewEditorTypeEnum = {}));
875
1024
 
876
1025
  var FieldSizeEnum;
877
1026
  (function (FieldSizeEnum) {
@@ -1462,8 +1611,8 @@ class ActionDescriptor {
1462
1611
  get permissions() {
1463
1612
  return this._permissions;
1464
1613
  }
1465
- get permissionsRouteType() {
1466
- return this._permissionsRouteType;
1614
+ get tableviewCategory() {
1615
+ return this._tableviewCategory;
1467
1616
  }
1468
1617
  get hasItemsSelection() {
1469
1618
  return this._hasItemsSelection;
@@ -1471,6 +1620,9 @@ class ActionDescriptor {
1471
1620
  get button() {
1472
1621
  return this._button;
1473
1622
  }
1623
+ get positionTableviewCategories() {
1624
+ return this._positionTableviewCategories;
1625
+ }
1474
1626
  withDataProvider(dataProvider) {
1475
1627
  this._dataProvider = dataProvider;
1476
1628
  return this;
@@ -1541,14 +1693,14 @@ class ActionDescriptor {
1541
1693
  return this;
1542
1694
  }
1543
1695
  withPermissions(permissions) {
1544
- if (this._permissionsRouteType) {
1545
- console.warn(`Permissions set on action ${this._actionNameLong} with route type '${this._permissionsRouteType}' will be omitted in route guard validation.`);
1696
+ if (this._tableviewCategory) {
1697
+ console.warn(`Permissions set on action ${this._actionNameLong} with route type '${this._tableviewCategory}' will be omitted in route guard validation.`);
1546
1698
  }
1547
1699
  this._permissions = permissions;
1548
1700
  return this;
1549
1701
  }
1550
- withPermissionsRouteType(permissionsRouteType) {
1551
- this._permissionsRouteType = permissionsRouteType;
1702
+ withTableviewCategory(permissionsRouteType) {
1703
+ this._tableviewCategory = permissionsRouteType;
1552
1704
  return this;
1553
1705
  }
1554
1706
  withButtonDescriptor(button) {
@@ -1564,6 +1716,10 @@ class ActionDescriptor {
1564
1716
  this._isEnabledFunction = this._isEnabledFunction ?? (ctx => of((ctx.parameters.selectedItems?.length ?? 0) > 0));
1565
1717
  return this;
1566
1718
  }
1719
+ withPositionTableviewCategories(positionTableviewCategories) {
1720
+ this._positionTableviewCategories = positionTableviewCategories;
1721
+ return this;
1722
+ }
1567
1723
  }
1568
1724
  class ActionSimpleDescriptor extends ActionDescriptor {
1569
1725
  constructor(actionName, modelType, idProperty, titleProperty) {
@@ -1715,7 +1871,7 @@ class ActionEditorDetailsDescriptor extends ActionEditorDescriptor {
1715
1871
  this.withRouteTrigger(':itemId');
1716
1872
  this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);
1717
1873
  this.withEditorActions([new ActionEditorSubmitDescriptor(this, ActionEditorSubmitTypeEnum.Cancel)]);
1718
- this.withPermissionsRouteType(Permissions.ActionTypes.DETAILS);
1874
+ this.withTableviewCategory(TableviewActionDefaultCategories.DETAILS);
1719
1875
  }
1720
1876
  withServiceType(serviceType) {
1721
1877
  return this.withServiceFetchFunction(serviceType);
@@ -1738,7 +1894,7 @@ class ActionEditorAddDescriptor extends ActionEditorDescriptor {
1738
1894
  this.withSubmitFunction(ActionDataProviderUtil.runCreateOrFail);
1739
1895
  this.button.styleClass.withActionLevel(StyleLevelEnum.Success);
1740
1896
  this.button.withIcon('pi pi-plus');
1741
- this.withPermissionsRouteType(Permissions.ActionTypes.ADD);
1897
+ this.withTableviewCategory(TableviewActionDefaultCategories.ADD);
1742
1898
  }
1743
1899
  withServiceType(serviceType) {
1744
1900
  return this.withServiceSubmitFunction(serviceType);
@@ -1763,7 +1919,7 @@ class ActionEditorEditDescriptor extends ActionEditorDescriptor {
1763
1919
  this.withRouteTrigger(':itemId/edit');
1764
1920
  this.withFetchFunction(ActionDataProviderUtil.runFetchOrFail);
1765
1921
  this.withSubmitFunction(ActionDataProviderUtil.runUpdateOrFail);
1766
- this.withPermissionsRouteType(Permissions.ActionTypes.EDIT);
1922
+ this.withTableviewCategory(TableviewActionDefaultCategories.EDIT);
1767
1923
  this.button.withLabel(null).withIcon('pi pi-pencil');
1768
1924
  }
1769
1925
  withServiceType(serviceType) {
@@ -1789,7 +1945,7 @@ class ActionDeleteDescriptor extends ActionDescriptor {
1789
1945
  this.withRunFunction(ActionDataProviderUtil.runDeleteOrFail);
1790
1946
  this.button.styleClass.withActionLevel(StyleLevelEnum.Danger);
1791
1947
  this.withRunConfirmation();
1792
- this.withPermissionsRouteType(Permissions.ActionTypes.DELETE);
1948
+ this.withTableviewCategory(TableviewActionDefaultCategories.DELETE);
1793
1949
  this.button.withLabel(null).withIcon('pi pi-trash');
1794
1950
  }
1795
1951
  withServiceType(serviceType) {
@@ -2690,7 +2846,7 @@ class ColumnDynamicDescriptor extends ColumnDescriptor {
2690
2846
  }
2691
2847
 
2692
2848
  class EditorDescriptor {
2693
- constructor(modelType, idProperty, titleProperty, tableviewEditorType = TableviewTypeEnum.None) {
2849
+ constructor(modelType, idProperty, titleProperty, tableviewEditorType = TableviewEditorTypeEnum.None) {
2694
2850
  this._tabs = [];
2695
2851
  this._groups = [];
2696
2852
  this._fields = [];
@@ -2707,7 +2863,7 @@ class EditorDescriptor {
2707
2863
  * @param titleProperty
2708
2864
  * @param tableEditorType
2709
2865
  */
2710
- static from(modelType, idProperty, titleProperty, tableEditorType = TableviewTypeEnum.None) {
2866
+ static from(modelType, idProperty, titleProperty, tableEditorType = TableviewEditorTypeEnum.None) {
2711
2867
  return EditorDescriptor.fromModelWithAttributes(modelType, TableviewUtil.getAttributeDefMap(modelType), titleProperty, idProperty, tableEditorType);
2712
2868
  }
2713
2869
  /**
@@ -2719,7 +2875,7 @@ class EditorDescriptor {
2719
2875
  * @param titleProperty
2720
2876
  * @param tableEditorType
2721
2877
  */
2722
- static fromModelWithAttributes(modelType, attributes, idProperty, titleProperty, tableEditorType = TableviewTypeEnum.None) {
2878
+ static fromModelWithAttributes(modelType, attributes, idProperty, titleProperty, tableEditorType = TableviewEditorTypeEnum.None) {
2723
2879
  const descriptor = new EditorDescriptor(modelType, idProperty, titleProperty, tableEditorType);
2724
2880
  attributes
2725
2881
  .filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array'))
@@ -2735,9 +2891,6 @@ class EditorDescriptor {
2735
2891
  get fields() {
2736
2892
  return this._fields;
2737
2893
  }
2738
- get tableviewEditorType() {
2739
- return this._disabled;
2740
- }
2741
2894
  get disabled() {
2742
2895
  return this._disabled;
2743
2896
  }
@@ -3432,6 +3585,8 @@ class FieldLookupDescriptor extends AFieldDescriptor {
3432
3585
  this._dropdownClassName = 'mng-filter-lookup-dropdown';
3433
3586
  this._autocompleteOpenOnFocus = false;
3434
3587
  this._autocompleteInlineSearch = false;
3588
+ this._autocompleteAutoClear = false;
3589
+ this._autocompleteSelectFirst = false;
3435
3590
  this._modelType = modelType;
3436
3591
  ModelUtil.trySetLookupItemsProperties(this);
3437
3592
  }
@@ -3462,6 +3617,12 @@ class FieldLookupDescriptor extends AFieldDescriptor {
3462
3617
  get autocompleteInlineSearch() {
3463
3618
  return this._autocompleteInlineSearch;
3464
3619
  }
3620
+ get autocompleteAutoClear() {
3621
+ return this._autocompleteAutoClear;
3622
+ }
3623
+ get autocompleteSelectFirst() {
3624
+ return this._autocompleteSelectFirst;
3625
+ }
3465
3626
  get dropdownClassName() {
3466
3627
  return this._dropdownClassName;
3467
3628
  }
@@ -3509,8 +3670,10 @@ class FieldLookupDescriptor extends AFieldDescriptor {
3509
3670
  withConfig(config) {
3510
3671
  return super.withConfig(config);
3511
3672
  }
3512
- asAutocomplete(openOnFocus = false, inlineSearch = false) {
3673
+ asAutocomplete(openOnFocus = false, inlineSearch = false, selectFirst = false, autoClear = false) {
3513
3674
  this._lookupType = FieldLookupTypeEnum.Autocomplete;
3675
+ this._autocompleteAutoClear = autoClear;
3676
+ this._autocompleteSelectFirst = selectFirst;
3514
3677
  this._autocompleteOpenOnFocus = openOnFocus;
3515
3678
  this._autocompleteInlineSearch = inlineSearch;
3516
3679
  return this;
@@ -3698,7 +3861,7 @@ class FieldManyEditorDescriptor extends AFieldDescriptor {
3698
3861
  return this._tableviewDescriptor.addEditor;
3699
3862
  }
3700
3863
  get editorForRead() {
3701
- return this._tableviewDescriptor.viewEditor;
3864
+ return this._tableviewDescriptor.detailsEditor;
3702
3865
  }
3703
3866
  get editorForUpdate() {
3704
3867
  return this._tableviewDescriptor.editEditor;
@@ -4330,10 +4493,10 @@ class TableviewDescriptor {
4330
4493
  this._modelType = modelType;
4331
4494
  this._model = new ModelDescriptor(modelType, idProperty, titleProperty);
4332
4495
  this._table = new TableDescriptor(modelType, idProperty, titleProperty);
4333
- this._viewEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.View);
4334
- this._viewEditor.withDisabled();
4335
- this._addEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.Add);
4336
- this._editEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewTypeEnum.Edit);
4496
+ this._detailsEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Details);
4497
+ this._detailsEditor.withDisabled();
4498
+ this._addEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Add);
4499
+ this._editEditor = new EditorDescriptor(modelType, idProperty, titleProperty, TableviewEditorTypeEnum.Edit);
4337
4500
  this._tableTitle = `${this._model.typeName}.name`;
4338
4501
  }
4339
4502
  /**
@@ -4346,7 +4509,7 @@ class TableviewDescriptor {
4346
4509
  const descriptor = new TableviewDescriptor(modelType, idProperty, titleProperty);
4347
4510
  descriptor._table = TableDescriptor.from(modelType, idProperty, titleProperty);
4348
4511
  descriptor._editEditor = EditorDescriptor.from(modelType, idProperty, titleProperty);
4349
- descriptor._viewEditor = EditorDescriptor.from(modelType, idProperty, titleProperty);
4512
+ descriptor._detailsEditor = EditorDescriptor.from(modelType, idProperty, titleProperty);
4350
4513
  descriptor._addEditor = EditorDescriptor.from(modelType, idProperty, titleProperty);
4351
4514
  return descriptor;
4352
4515
  }
@@ -4363,7 +4526,7 @@ class TableviewDescriptor {
4363
4526
  descriptor._table = TableDescriptor.fromModelWithAttributes(modelType, columnAttributes, idProperty, titleProperty);
4364
4527
  if (fieldAttributes !== null) {
4365
4528
  descriptor._editEditor = EditorDescriptor.fromModelWithAttributes(modelType, fieldAttributes ?? columnAttributes, idProperty, titleProperty);
4366
- descriptor._viewEditor = EditorDescriptor.fromModelWithAttributes(modelType, fieldAttributes ?? columnAttributes, idProperty, titleProperty);
4529
+ descriptor._detailsEditor = EditorDescriptor.fromModelWithAttributes(modelType, fieldAttributes ?? columnAttributes, idProperty, titleProperty);
4367
4530
  descriptor._addEditor = EditorDescriptor.fromModelWithAttributes(modelType, fieldAttributes ?? columnAttributes, idProperty, titleProperty);
4368
4531
  }
4369
4532
  return descriptor;
@@ -4371,8 +4534,8 @@ class TableviewDescriptor {
4371
4534
  get table() {
4372
4535
  return this._table;
4373
4536
  }
4374
- get viewEditor() {
4375
- return this._viewEditor;
4537
+ get detailsEditor() {
4538
+ return this._detailsEditor;
4376
4539
  }
4377
4540
  get addEditor() {
4378
4541
  return this._addEditor;
@@ -4391,13 +4554,13 @@ class TableviewDescriptor {
4391
4554
  return this;
4392
4555
  }
4393
4556
  withEditorDescriptors(descriptor) {
4394
- this._viewEditor = descriptor;
4557
+ this._detailsEditor = descriptor;
4395
4558
  this._editEditor = descriptor;
4396
4559
  this._addEditor = descriptor;
4397
4560
  return this;
4398
4561
  }
4399
- withViewDescriptor(descriptor) {
4400
- this._viewEditor = descriptor;
4562
+ withDetailsDescriptor(descriptor) {
4563
+ this._detailsEditor = descriptor;
4401
4564
  return this;
4402
4565
  }
4403
4566
  withAddDescriptor(descriptor) {
@@ -4413,7 +4576,7 @@ class TableviewDescriptor {
4413
4576
  return this;
4414
4577
  }
4415
4578
  withValidator(name, expression) {
4416
- this._viewEditor.addValidation(name, expression);
4579
+ this._detailsEditor.addValidation(name, expression);
4417
4580
  this._addEditor.addValidation(name, expression);
4418
4581
  this._editEditor.addValidation(name, expression);
4419
4582
  return this;
@@ -4429,20 +4592,20 @@ class TableviewDescriptor {
4429
4592
  }
4430
4593
  getField(property, editorType) {
4431
4594
  switch (editorType) {
4432
- case TableviewTypeEnum.Edit:
4595
+ case TableviewEditorTypeEnum.Edit:
4433
4596
  return this._editEditor.getField(property);
4434
- case TableviewTypeEnum.Add:
4597
+ case TableviewEditorTypeEnum.Add:
4435
4598
  return this._addEditor.getField(property);
4436
- case TableviewTypeEnum.View:
4437
- return this._viewEditor.getField(property);
4438
- case TableviewTypeEnum.None:
4599
+ case TableviewEditorTypeEnum.Details:
4600
+ return this._detailsEditor.getField(property);
4601
+ case TableviewEditorTypeEnum.None:
4439
4602
  return null;
4440
4603
  }
4441
4604
  }
4442
4605
  removeField(property) {
4443
4606
  this._editEditor.removeField(property);
4444
4607
  this._addEditor.removeField(property);
4445
- this._viewEditor.removeField(property);
4608
+ this._detailsEditor.removeField(property);
4446
4609
  }
4447
4610
  addColumnNumber(property, displayFormat) {
4448
4611
  return this._table.addColumnNumber(property, displayFormat);
@@ -4460,49 +4623,49 @@ class TableviewDescriptor {
4460
4623
  return this._table.addColumnCustomComponent(property, customComponentType);
4461
4624
  }
4462
4625
  createTabGroup(name, title) {
4463
- this._viewEditor.createTabGroup(name, title);
4626
+ this._detailsEditor.createTabGroup(name, title);
4464
4627
  this._addEditor.createTabGroup(name, title);
4465
4628
  this._editEditor.createTabGroup(name, title);
4466
4629
  return this;
4467
4630
  }
4468
4631
  createFieldGroup(name, title) {
4469
- this._viewEditor.createFieldGroup(name, title);
4632
+ this._detailsEditor.createFieldGroup(name, title);
4470
4633
  this._addEditor.createFieldGroup(name, title);
4471
4634
  this._editEditor.createFieldGroup(name, title);
4472
4635
  return this;
4473
4636
  }
4474
4637
  addFieldDescriptor(field) {
4475
- this._viewEditor.addFieldDescriptor(field);
4638
+ this._detailsEditor.addFieldDescriptor(field);
4476
4639
  this._addEditor.addFieldDescriptor(field);
4477
4640
  this._editEditor.addFieldDescriptor(field);
4478
4641
  return this;
4479
4642
  }
4480
4643
  addField(property) {
4481
- const field = this._viewEditor.addField(property);
4644
+ const field = this._detailsEditor.addField(property);
4482
4645
  this._addEditor.addFieldDescriptor(field);
4483
4646
  this._editEditor.addFieldDescriptor(field);
4484
4647
  return field;
4485
4648
  }
4486
4649
  addFieldLookup(property, modelType) {
4487
- const field = this._viewEditor.addFieldLookup(property, modelType);
4650
+ const field = this._detailsEditor.addFieldLookup(property, modelType);
4488
4651
  this._addEditor.addFieldDescriptor(field);
4489
4652
  this._editEditor.addFieldDescriptor(field);
4490
4653
  return field;
4491
4654
  }
4492
4655
  addFieldLookupEnum(property, enumType, options, nameAsValue = false, optionsTitlePath) {
4493
- const field = this._viewEditor.addFieldLookupEnum(property, enumType, options, nameAsValue, optionsTitlePath);
4656
+ const field = this._detailsEditor.addFieldLookupEnum(property, enumType, options, nameAsValue, optionsTitlePath);
4494
4657
  this._addEditor.addFieldDescriptor(field);
4495
4658
  this._editEditor.addFieldDescriptor(field);
4496
4659
  return field;
4497
4660
  }
4498
4661
  addFieldManyEditor(property, tableviewDescriptor) {
4499
- const field = this._viewEditor.addFieldManyEditor(property, tableviewDescriptor);
4662
+ const field = this._detailsEditor.addFieldManyEditor(property, tableviewDescriptor);
4500
4663
  this._addEditor.addFieldDescriptor(field);
4501
4664
  this._editEditor.addFieldDescriptor(field);
4502
4665
  return field;
4503
4666
  }
4504
4667
  addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor) {
4505
- const field = this._viewEditor.addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor);
4668
+ const field = this._detailsEditor.addFieldManyToManyEditor(property, mainTableDescriptor, lookupTableDescriptor);
4506
4669
  this._addEditor.addFieldDescriptor(field);
4507
4670
  this._editEditor.addFieldDescriptor(field);
4508
4671
  return field;
@@ -4510,7 +4673,7 @@ class TableviewDescriptor {
4510
4673
  copy() {
4511
4674
  const tableview = new TableviewDescriptor(this._model.type, this._model.idPropertyName, this._model.titlePropertyName);
4512
4675
  tableview._table = this._table.copy();
4513
- tableview._viewEditor = this._viewEditor.copy();
4676
+ tableview._detailsEditor = this._detailsEditor.copy();
4514
4677
  tableview._addEditor = this._addEditor.copy();
4515
4678
  tableview._editEditor = this._editEditor.copy();
4516
4679
  return tableview;
@@ -4536,7 +4699,7 @@ class TableviewDescriptor {
4536
4699
  this._table.withColumnModifiedType(property, columnType);
4537
4700
  this._editEditor.withFieldModifiedType(property, fieldType);
4538
4701
  this._addEditor.withFieldModifiedType(property, fieldType);
4539
- this._viewEditor.withFieldModifiedType(property, fieldType);
4702
+ this._detailsEditor.withFieldModifiedType(property, fieldType);
4540
4703
  }
4541
4704
  return this;
4542
4705
  }
@@ -4553,7 +4716,7 @@ class TableviewDescriptor {
4553
4716
  attributeDef.fieldType = fieldType ?? FieldInputTypeEnum.Text;
4554
4717
  this._table.withColumnModifiedEnum(property, enumType);
4555
4718
  this._editEditor.withFieldModifiedEnum(property, enumType);
4556
- this._viewEditor.withFieldModifiedEnum(property, enumType);
4719
+ this._detailsEditor.withFieldModifiedEnum(property, enumType);
4557
4720
  this._addEditor.withFieldModifiedEnum(property, enumType);
4558
4721
  }
4559
4722
  return this;
@@ -4579,7 +4742,7 @@ class TableviewDescriptor {
4579
4742
  if (lookupProvider != null) {
4580
4743
  this._table.withColumnModifiedLookup(property, lookupProvider, itemsLabelProperty, filterProperty);
4581
4744
  this._addEditor.withFieldModifiedLookup(property, modelType, lookupProvider, itemsLabelProperty);
4582
- this._viewEditor.withFieldModifiedLookup(property, modelType, lookupProvider, itemsLabelProperty);
4745
+ this._detailsEditor.withFieldModifiedLookup(property, modelType, lookupProvider, itemsLabelProperty);
4583
4746
  this._editEditor.withFieldModifiedLookup(property, modelType, lookupProvider, itemsLabelProperty);
4584
4747
  }
4585
4748
  else {
@@ -5854,256 +6017,99 @@ MediusRestUtil.matchModeMapping = [
5854
6017
  [FilterMatchMode.DATE_IS_NOT, 'neq', MediusFilterMatchType.NotEquals, FilterTypeEnum.Date]
5855
6018
  ];
5856
6019
 
5857
- class ActionError {
5858
- constructor(error, // error details
5859
- dismissed = false // by user
5860
- ) {
5861
- this.error = error;
5862
- this.dismissed = dismissed;
5863
- }
5864
- }
5865
- /**
5866
- * Action execution instance containing data about execution state of action
5867
- */
5868
- class ActionInstance {
5869
- constructor(action, state = ActionInstanceStateEnum.TriggerStart, debug = false) {
5870
- this.debug = debug;
5871
- // function execution
5872
- this.isRunLoadingSubject = new BehaviorSubject(false);
5873
- this.contexts = [];
5874
- this.executionSubject = new Subject();
5875
- this.executionIsRunningSubject = new BehaviorSubject(false);
5876
- this.stateSubject = new BehaviorSubject(1);
5877
- this.resultSubject = new ReplaySubject(1);
5878
- this.errorSubject = new ReplaySubject(1);
5879
- this.contextExecutionSubscriptions = [];
5880
- this.instanceId = Math.random().toString(36).substring(2);
5881
- this.instanceLongName = `${action.actionNameLong}_${this.instanceId}`;
5882
- this.action = action;
5883
- this.state = state;
5884
- }
5885
- get isRunLoading$() {
5886
- return this.isRunLoadingSubject.asObservable();
5887
- }
5888
- get context() {
5889
- return this.contexts.length === 0 ? undefined : this.contexts[this.contexts.length - 1];
5890
- }
5891
- get execution$() {
5892
- return this.executionSubject.asObservable();
5893
- }
5894
- get executionIsRunning$() {
5895
- return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());
5896
- }
5897
- get state() {
5898
- return this.stateSubject.value;
5899
- }
5900
- set state(state) {
5901
- if (state > this.stateSubject.value) {
5902
- if (this.debug) {
5903
- console.debug(`ActionInstance ${this.instanceLongName} - state #${state}: ${ActionInstanceStateEnum[state]}`);
5904
- }
5905
- this.stateSubject.next(state);
5906
- }
5907
- }
5908
- get state$() {
5909
- return this.stateSubject.asObservable().pipe(distinctUntilChanged());
5910
- }
5911
- get result() {
5912
- return this._result;
5913
- }
5914
- set result(result) {
5915
- if (typeof result === 'undefined') {
5916
- return;
5917
- }
5918
- if (this.debug) {
5919
- console.debug(`ActionInstance ${this.instanceLongName} - result`, result);
5920
- }
5921
- this._result = result;
5922
- this.resultSubject.next(result);
5923
- }
5924
- get result$() {
5925
- return this.resultSubject.asObservable();
6020
+ var AuthorizationTypeEnum;
6021
+ (function (AuthorizationTypeEnum) {
6022
+ AuthorizationTypeEnum["All"] = "ALL";
6023
+ AuthorizationTypeEnum["Any"] = "ANY";
6024
+ AuthorizationTypeEnum["Rbac"] = "ROLE_BASED_ACCESS_CONTROL";
6025
+ AuthorizationTypeEnum["Service"] = "SERVICE";
6026
+ })(AuthorizationTypeEnum || (AuthorizationTypeEnum = {}));
6027
+
6028
+ class APermissions {
6029
+ constructor(type) {
6030
+ this._authorizationType = type;
5926
6031
  }
5927
- get error() {
5928
- return this._error;
6032
+ get authorizationType() {
6033
+ return this._authorizationType;
5929
6034
  }
5930
- set error(error) {
5931
- if (typeof error === 'undefined') {
5932
- return;
5933
- }
5934
- if (this.debug) {
5935
- console.debug(`ActionInstance ${this.instanceLongName} - error`, error);
6035
+ }
6036
+ var Permissions;
6037
+ (function (Permissions) {
6038
+ class All extends APermissions {
6039
+ constructor() {
6040
+ super(AuthorizationTypeEnum.All);
6041
+ this._permissions = [];
5936
6042
  }
5937
- this._error = error;
5938
- this.errorSubject.next(error);
5939
- }
5940
- get error$() {
5941
- return this.errorSubject.asObservable();
5942
- }
5943
- contextAt(idx) {
5944
- return idx < this.contexts.length ? this.contexts[idx] : undefined;
5945
- }
5946
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
5947
- newContext(context, finishPrevious = true) {
5948
- if (this.debug) {
5949
- console.debug(`ActionInstance ${this.instanceLongName} - new context ${context.contextLongName}`);
6043
+ static of(...permissions) {
6044
+ const inst = new All();
6045
+ inst.and(...permissions);
6046
+ return inst;
5950
6047
  }
5951
- const currentContext = this.context;
5952
- if (currentContext) {
5953
- currentContext.executionComplete();
6048
+ get permissions() {
6049
+ return this._permissions;
5954
6050
  }
5955
- this.contextExecutionSubscriptions.forEach(s => s.unsubscribe());
5956
- this.contextExecutionSubscriptions = [];
5957
- this.contextExecutionSubscriptions.push(context.execution$.subscribe({
5958
- next: next => this.executionSubject.next(next),
5959
- error: error => this.executionSubject.error(error)
5960
- }));
5961
- this.contextExecutionSubscriptions.push(context.executionIsRunning$.subscribe({
5962
- next: next => this.executionIsRunningSubject.next(next)
5963
- }));
5964
- this.contexts.push(context);
5965
- }
5966
- finish() {
5967
- if (this.stateSubject.value < ActionInstanceStateEnum.FinishSuccess) {
5968
- this.state = ActionInstanceStateEnum.FinishSuccess;
6051
+ and(...permissions) {
6052
+ this._permissions.push(...permissions);
6053
+ return this;
5969
6054
  }
5970
- // complete all subjects
5971
- this.contexts.forEach(c => c.finish());
5972
- this.executionSubject.complete();
5973
- this.executionIsRunningSubject.complete();
5974
- this.stateSubject.complete();
5975
- this.resultSubject.complete();
5976
- this.errorSubject.complete();
5977
- }
5978
- }
5979
- /**
5980
- * Class containing all main data for action to be executed in run/fetch/submit states.
5981
- */
5982
- class ActionContext {
5983
- constructor(instance, parameters, functionName, dataProvider, serviceInstance, executionSubject = new ReplaySubject(1), executionIsRunningSubject = new BehaviorSubject(false)) {
5984
- this.instance = instance;
5985
- this.parameters = parameters;
5986
- this.functionName = functionName;
5987
- this.dataProvider = dataProvider;
5988
- this.serviceInstance = serviceInstance;
5989
- this.executionSubject = executionSubject;
5990
- this.executionIsRunningSubject = executionIsRunningSubject;
5991
- this.contextLongName = `${this.instance.instanceLongName}_${functionName}`;
5992
- }
5993
- get execution$() {
5994
- return this.executionSubject.asObservable();
5995
- }
5996
- get executionIsRunning$() {
5997
- return this.executionIsRunningSubject.asObservable().pipe(distinctUntilChanged());
5998
6055
  }
5999
- executionStart() {
6000
- if (this.instance.debug) {
6001
- console.debug(`ActionContext ${this.contextLongName} - execution start`);
6056
+ Permissions.All = All;
6057
+ class Any extends APermissions {
6058
+ constructor() {
6059
+ super(AuthorizationTypeEnum.Any);
6060
+ this._permissions = [];
6002
6061
  }
6003
- this.executionIsRunningSubject.next(true);
6004
- }
6005
- executionNext(next, finish = true) {
6006
- if (this.instance.debug) {
6007
- console.debug(`ActionContext ${this.contextLongName} - execution next event`, next, finish);
6062
+ static of(...permissions) {
6063
+ const inst = new Any();
6064
+ inst.or(...permissions);
6065
+ return inst;
6008
6066
  }
6009
- this.executionSubject.next(next);
6010
- if (finish) {
6011
- this.executionComplete();
6067
+ get permissions() {
6068
+ return this._permissions;
6012
6069
  }
6013
- }
6014
- executionComplete() {
6015
- if (this.instance.debug) {
6016
- console.debug(`ActionContext ${this.contextLongName} - execution complete`);
6070
+ or(...permissions) {
6071
+ this._permissions.push(...permissions);
6072
+ return this;
6017
6073
  }
6018
- this.executionSubject.complete();
6019
- this.executionIsRunningSubject.next(false);
6020
6074
  }
6021
- executionError(err) {
6022
- if (this.instance.debug) {
6023
- console.debug(`ActionContext ${this.contextLongName} - execution error`, err);
6075
+ Permissions.Any = Any;
6076
+ class Roles extends APermissions {
6077
+ constructor() {
6078
+ super(AuthorizationTypeEnum.Rbac);
6079
+ this._roles = [];
6080
+ }
6081
+ static of(...roles) {
6082
+ const inst = new Roles();
6083
+ inst.or(...roles);
6084
+ return inst;
6085
+ }
6086
+ get roles() {
6087
+ return this._roles;
6088
+ }
6089
+ and(...roles) {
6090
+ if (this._roles.length === 0) {
6091
+ this._roles.push([]);
6092
+ }
6093
+ this._roles[this._roles.length - 1].push(...roles);
6094
+ return this;
6095
+ }
6096
+ or(...roles) {
6097
+ this._roles.push(...roles.map(s => [s]));
6098
+ return this;
6024
6099
  }
6025
- this.executionSubject.error(err);
6026
- this.executionIsRunningSubject.next(false);
6027
- }
6028
- finish() {
6029
- this.executionSubject.complete();
6030
- this.executionIsRunningSubject.complete();
6031
- }
6032
- }
6033
- /**
6034
- * Class containing all main data for action validations (enabled/visible) to be executed in validation states.
6035
- */
6036
- class ActionContextValidation {
6037
- constructor(descriptor, parameters, dataProvider, serviceInstance) {
6038
- this.descriptor = descriptor;
6039
- this.parameters = parameters;
6040
- this.dataProvider = dataProvider;
6041
- this.serviceInstance = serviceInstance;
6042
- }
6043
- }
6044
- class ActionParameters {
6045
- constructor(itemId, item) {
6046
- this.itemId = itemId;
6047
- this.item = item;
6048
- this.selectedItems = [];
6049
- }
6050
- withActionData(actionData) {
6051
- this.actionData = actionData;
6052
- return this;
6053
- }
6054
- withQueryParam(queryParam) {
6055
- this.queryParam = queryParam;
6056
- return this;
6057
- }
6058
- withViewContainer(viewContainer) {
6059
- this.viewContainer = viewContainer;
6060
- return this;
6061
- }
6062
- withSourceComponent(sourceComponent) {
6063
- this.sourceComponent = sourceComponent;
6064
- return this;
6065
- }
6066
- withRoute(route) {
6067
- this.route = route;
6068
- return this;
6069
6100
  }
6070
- withSelectedItems(selectedItems) {
6071
- this.selectedItems = selectedItems;
6072
- return this;
6101
+ Permissions.Roles = Roles;
6102
+ class Service extends APermissions {
6103
+ constructor(service) {
6104
+ super(AuthorizationTypeEnum.Service);
6105
+ this.service = service;
6106
+ }
6107
+ static of(service) {
6108
+ return new Service(service);
6109
+ }
6073
6110
  }
6074
- }
6075
- var ActionInstanceStateEnum;
6076
- (function (ActionInstanceStateEnum) {
6077
- ActionInstanceStateEnum[ActionInstanceStateEnum["TriggerStart"] = 0] = "TriggerStart";
6078
- ActionInstanceStateEnum[ActionInstanceStateEnum["TriggerEnd"] = 1] = "TriggerEnd";
6079
- ActionInstanceStateEnum[ActionInstanceStateEnum["ActivationStart"] = 2] = "ActivationStart";
6080
- ActionInstanceStateEnum[ActionInstanceStateEnum["ActivationEnd"] = 3] = "ActivationEnd";
6081
- ActionInstanceStateEnum[ActionInstanceStateEnum["FetchStart"] = 4] = "FetchStart";
6082
- ActionInstanceStateEnum[ActionInstanceStateEnum["FetchEnd"] = 5] = "FetchEnd";
6083
- ActionInstanceStateEnum[ActionInstanceStateEnum["FetchError"] = 6] = "FetchError";
6084
- ActionInstanceStateEnum[ActionInstanceStateEnum["RunConfirmationStart"] = 7] = "RunConfirmationStart";
6085
- ActionInstanceStateEnum[ActionInstanceStateEnum["RunConfirmationEndAccept"] = 8] = "RunConfirmationEndAccept";
6086
- ActionInstanceStateEnum[ActionInstanceStateEnum["RunConfirmationEndReject"] = 9] = "RunConfirmationEndReject";
6087
- ActionInstanceStateEnum[ActionInstanceStateEnum["RunStart"] = 10] = "RunStart";
6088
- ActionInstanceStateEnum[ActionInstanceStateEnum["RunEnd"] = 11] = "RunEnd";
6089
- ActionInstanceStateEnum[ActionInstanceStateEnum["RunError"] = 12] = "RunError";
6090
- ActionInstanceStateEnum[ActionInstanceStateEnum["NextActionStart"] = 13] = "NextActionStart";
6091
- ActionInstanceStateEnum[ActionInstanceStateEnum["NextActionEnd"] = 14] = "NextActionEnd";
6092
- ActionInstanceStateEnum[ActionInstanceStateEnum["FinishSuccess"] = 15] = "FinishSuccess";
6093
- ActionInstanceStateEnum[ActionInstanceStateEnum["FinishError"] = 16] = "FinishError";
6094
- ActionInstanceStateEnum[ActionInstanceStateEnum["FinishDismissed"] = 17] = "FinishDismissed"; // action was dismissed by user
6095
- })(ActionInstanceStateEnum || (ActionInstanceStateEnum = {}));
6096
-
6097
- /**
6098
- * Default categories for tableview actions
6099
- */
6100
- class TableviewActionDefaultCategories {
6101
- }
6102
- TableviewActionDefaultCategories.READ = 'read';
6103
- TableviewActionDefaultCategories.ADD = 'add';
6104
- TableviewActionDefaultCategories.EDIT = 'edit';
6105
- TableviewActionDefaultCategories.DELETE = 'delete';
6106
- TableviewActionDefaultCategories.DETAILS = 'details';
6111
+ Permissions.Service = Service;
6112
+ })(Permissions || (Permissions = {}));
6107
6113
 
6108
6114
  class AuthorizationUtil {
6109
6115
  static isPermitted(permissions, userRoles) {
@@ -7458,23 +7464,36 @@ class MngViewContainerComponentService {
7458
7464
  constructor(messageService) {
7459
7465
  this.messageService = messageService;
7460
7466
  this.actions = [];
7461
- this._reloadTableSubject = new Subject();
7467
+ this._tableReloadSubject = new Subject();
7468
+ this._editorResetSubject = new Subject();
7462
7469
  }
7463
7470
  set dataProvider(dataProvider) {
7464
7471
  this._dataProvider = dataProvider;
7465
7472
  }
7466
- get reloadTable() {
7467
- return this._reloadTableSubject.asObservable();
7468
- }
7469
- triggerTableReload(event) {
7470
- this._reloadTableSubject.next(event);
7471
- }
7472
7473
  getMessageService() {
7473
7474
  return this.messageService;
7474
7475
  }
7475
7476
  getDataProvider() {
7476
7477
  return this._dataProvider;
7477
7478
  }
7479
+ getActions() {
7480
+ return this.actions;
7481
+ }
7482
+ setActions(actions) {
7483
+ this.actions = actions;
7484
+ }
7485
+ getTableReload$() {
7486
+ return this._tableReloadSubject.asObservable();
7487
+ }
7488
+ reloadTable(event) {
7489
+ this._tableReloadSubject.next(event ?? {});
7490
+ }
7491
+ getEditorReset$() {
7492
+ return this._editorResetSubject.asObservable();
7493
+ }
7494
+ resetEditor(event) {
7495
+ this._editorResetSubject.next(event ?? {});
7496
+ }
7478
7497
  }
7479
7498
  MngViewContainerComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngViewContainerComponentService, deps: [{ token: i2.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
7480
7499
  MngViewContainerComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngViewContainerComponentService });
@@ -7586,9 +7605,9 @@ class MngActionComponent {
7586
7605
  if (this.action instanceof ActionLinkDescriptor) {
7587
7606
  this.actionLink = this.action;
7588
7607
  }
7589
- if (this.action.permissionsRouteType && routeData.tableviewPermissions) {
7590
- if (routeData.tableviewPermissions[this.action.permissionsRouteType]) {
7591
- this.routePermissions = routeData.tableviewPermissions[this.action.permissionsRouteType];
7608
+ if (this.action.tableviewCategory && routeData.tableviewPermissions) {
7609
+ if (routeData.tableviewPermissions[this.action.tableviewCategory]) {
7610
+ this.routePermissions = routeData.tableviewPermissions[this.action.tableviewCategory];
7592
7611
  }
7593
7612
  }
7594
7613
  this.processSubscriptions();
@@ -7599,7 +7618,7 @@ class MngActionComponent {
7599
7618
  this.isHostHidden = !isVisible || !isPermitted;
7600
7619
  });
7601
7620
  this.subscriptions.push(hostVisibilitySubscription);
7602
- this.buttonClass = this.action.button.styleClass.build(this.action.button.label == null || this.action.button.label.length == 0);
7621
+ this.buttonClass = this.action.button.styleClass.build(this.hasNoTitle);
7603
7622
  }
7604
7623
  ngOnChanges(changes) {
7605
7624
  if (!(changes['item']?.firstChange ?? true) ||
@@ -7633,7 +7652,7 @@ class MngActionComponent {
7633
7652
  next: () => {
7634
7653
  this.finishEventEmitter.next(instance);
7635
7654
  if (this.action.hasItemsSelection) {
7636
- this.viewContainerService?.triggerTableReload({});
7655
+ this.viewContainer?.reloadTable?.({ data: { event: event } });
7637
7656
  }
7638
7657
  }
7639
7658
  }));
@@ -7697,10 +7716,10 @@ class MngActionComponent {
7697
7716
  }
7698
7717
  }
7699
7718
  MngActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1$2.TranslateService }, { token: MngAuthorizationService }, { token: MngActionExecutorService }, { token: i2.ConfirmationService }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
7700
- MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", queryParam: "queryParam", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"], selectedItems: "selectedItems" }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass", "class.m-0": "this.isHostHidden" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class]=\"buttonClass\"></button>\n </ng-template>\n <p-confirmDialog\n *ngIf=\"action.runConfirmationDialogDescriptor\"\n [key]=\"action.actionName + '_' + cmpId\"\n [baseZIndex]=\"50\"\n appendTo=\"body\"\n [closable]=\"action.runConfirmationDialogDescriptor.closable\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: MngParametrizePipe, name: "parametrize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7719
+ MngActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngActionComponent, selector: "mng-action", inputs: { action: "action", item: "item", itemId: "itemId", actionData: "actionData", queryParam: "queryParam", dataProvider: "dataProvider", inputDisabled: ["disabled", "inputDisabled"], inputLoading: ["loading", "inputLoading"], viewContainerInit: ["viewContainer", "viewContainerInit"], selectedItems: "selectedItems" }, outputs: { finishEventEmitter: "finish" }, host: { properties: { "class": "this.hostClass", "class.m-0": "this.isHostHidden" } }, providers: [ConfirmationService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class]=\"buttonClass\"></button>\n </ng-template>\n <p-confirmDialog\n *ngIf=\"action.runConfirmationDialogDescriptor\"\n [key]=\"action.actionName + '_' + cmpId\"\n [baseZIndex]=\"50\"\n appendTo=\"body\"\n [closable]=\"action.runConfirmationDialogDescriptor.closable\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i7.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "directive", type: i6.Ripple, selector: "[pRipple]" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: MngParametrizePipe, name: "parametrize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7701
7720
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionComponent, decorators: [{
7702
7721
  type: Component,
7703
- args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class]=\"buttonClass\"></button>\n </ng-template>\n <p-confirmDialog\n *ngIf=\"action.runConfirmationDialogDescriptor\"\n [key]=\"action.actionName + '_' + cmpId\"\n [baseZIndex]=\"50\"\n appendTo=\"body\"\n [closable]=\"action.runConfirmationDialogDescriptor.closable\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
7722
+ args: [{ selector: 'mng-action', changeDetection: ChangeDetectionStrategy.OnPush, providers: [ConfirmationService], template: "<ng-container *ngIf=\"($isVisible | async) && ($isPermitted | async)\">\n <a\n *ngIf=\"actionLink && actionLink.url !== ''; else routerLink\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [href]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.url | parametrize: itemId:item:actionData)\"\n [target]=\"actionLink.target\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n <ng-template #routerLink>\n <a\n *ngIf=\"actionLink; else button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [target]=\"actionLink.target\"\n [replaceUrl]=\"actionLink.replaceUrl\"\n [routerLink]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false) ? null : (actionLink.pathSegments | parametrize: itemId:item:actionData)\"\n [queryParams]=\"actionLink.queryParams | parametrize: itemId:item:actionData\"\n [queryParamsHandling]=\"actionLink.queryParamsHandling\"\n [class.disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n [pTooltip]=\"$any($tooltip | async)\"\n [class]=\"buttonClass\"\n >{{ ($label | async) ?? '' }}</a\n >\n </ng-template>\n <ng-template #button>\n <button\n type=\"button\"\n pButton\n pRipple\n [icon]=\"$any(action.button.icon)\"\n [label]=\"($label | async) ?? ''\"\n [pTooltip]=\"$any($tooltip | async)\"\n [loading]=\"(($loading | async) ?? false) || ((inputLoading | async) ?? false)\"\n [disabled]=\"($isEnabled | async) === false || ((inputDisabled | async) ?? false)\"\n (click)=\"triggerAction($event)\"\n [class]=\"buttonClass\"></button>\n </ng-template>\n <p-confirmDialog\n *ngIf=\"action.runConfirmationDialogDescriptor\"\n [key]=\"action.actionName + '_' + cmpId\"\n [baseZIndex]=\"50\"\n appendTo=\"body\"\n [closable]=\"action.runConfirmationDialogDescriptor.closable\"></p-confirmDialog>\n</ng-container>\n", styles: [":host{display:inline-block}\n"] }]
7704
7723
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i1$2.TranslateService }, { type: MngAuthorizationService }, { type: MngActionExecutorService }, { type: i2.ConfirmationService }, { type: MngViewContainerComponentService, decorators: [{
7705
7724
  type: Optional
7706
7725
  }] }]; }, propDecorators: { hostClass: [{
@@ -7750,7 +7769,7 @@ class MngActionRouteComponent {
7750
7769
  this.subscriptions = [];
7751
7770
  }
7752
7771
  ngOnInit() {
7753
- this.actions = this.viewContainerService?.actions.filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];
7772
+ this.actions = this.viewContainerService?.getActions().filter(a => a.activationTrigger === ActionActivationTriggerEnum.OnRoute) ?? [];
7754
7773
  const subscription = this.route.params.subscribe(p => {
7755
7774
  const action = this.findActiveAction(p);
7756
7775
  if (action) {
@@ -7796,7 +7815,7 @@ class MngActionRouteComponent {
7796
7815
  if (!this.viewContainerService) {
7797
7816
  console.warn(`View container service could not be found, table reload will not be triggered.`);
7798
7817
  }
7799
- this.viewContainerService?.triggerTableReload(actionEv); // reload only if no error in action and
7818
+ this.viewContainerService?.reloadTable({ data: { event: actionEv } }); // reload only if no error in action and
7800
7819
  }
7801
7820
  this.untriggerAction();
7802
7821
  });
@@ -7996,6 +8015,34 @@ class MngFormEditorComponent {
7996
8015
  });
7997
8016
  return formValue;
7998
8017
  }
8018
+ resetFormModel(item) {
8019
+ this.formOrigItem = item;
8020
+ // TODO: to check if this is ok, could be problems with dates, if so, try lodash
8021
+ const formModel = JSON.parse(JSON.stringify(item ?? {}));
8022
+ this.descriptor.fields.forEach(field => {
8023
+ if (field.getter && item) {
8024
+ const splitPath = field.property.split('.');
8025
+ let currentObject = formModel;
8026
+ for (let i = 0; i < splitPath.length; i++) {
8027
+ const currentSubPath = splitPath[i];
8028
+ if (i === splitPath.length - 1) {
8029
+ currentObject[currentSubPath] = field.getter(item);
8030
+ }
8031
+ else {
8032
+ if (typeof currentObject[currentSubPath] !== 'object') {
8033
+ currentObject[currentSubPath] = {};
8034
+ }
8035
+ currentObject = currentObject[currentSubPath];
8036
+ }
8037
+ }
8038
+ }
8039
+ });
8040
+ if (typeof this.formOptions.resetModel === 'function') {
8041
+ // could not be initiated yet
8042
+ this.formOptions.resetModel(this.formModel);
8043
+ }
8044
+ this.formModel = formModel;
8045
+ }
7999
8046
  getFormField(key) {
8000
8047
  return this.findFormField(this.form, key.split('.'));
8001
8048
  }
@@ -8063,34 +8110,6 @@ class MngFormEditorComponent {
8063
8110
  }
8064
8111
  return false;
8065
8112
  }
8066
- resetFormModel(item) {
8067
- this.formOrigItem = item;
8068
- // TODO: to check if this is ok, could be problems with dates, if so, try lodash
8069
- const formModel = JSON.parse(JSON.stringify(item ?? {}));
8070
- this.descriptor.fields.forEach(field => {
8071
- if (field.getter && item) {
8072
- const splitPath = field.property.split('.');
8073
- let currentObject = formModel;
8074
- for (let i = 0; i < splitPath.length; i++) {
8075
- const currentSubPath = splitPath[i];
8076
- if (i === splitPath.length - 1) {
8077
- currentObject[currentSubPath] = field.getter(item);
8078
- }
8079
- else {
8080
- if (typeof currentObject[currentSubPath] !== 'object') {
8081
- currentObject[currentSubPath] = {};
8082
- }
8083
- currentObject = currentObject[currentSubPath];
8084
- }
8085
- }
8086
- }
8087
- });
8088
- if (typeof this.formOptions.resetModel === 'function') {
8089
- // could not be initiated yet
8090
- this.formOptions.resetModel(this.formModel);
8091
- }
8092
- this.formModel = formModel;
8093
- }
8094
8113
  updateFormState() {
8095
8114
  this.formOptions.formState.disabled = this.isFormDisabled !== null ? this.isFormDisabled === true : this.descriptor.disabled;
8096
8115
  }
@@ -8155,6 +8174,9 @@ class MngAutocompleteComponent {
8155
8174
  this.multiselect = false;
8156
8175
  this.className = null;
8157
8176
  this.dropdownClassName = null;
8177
+ this.showClear = false;
8178
+ this.autoClear = false;
8179
+ this.selectFirst = false; //on every input field change return first given value (or null)
8158
8180
  this.valueChangeEventEmitter = new EventEmitter();
8159
8181
  this.isInited = false;
8160
8182
  this.suggestionsSubject = new BehaviorSubject([]);
@@ -8169,9 +8191,13 @@ class MngAutocompleteComponent {
8169
8191
  }
8170
8192
  ngOnInit() {
8171
8193
  this.setItemsAndDataProvider();
8194
+ if (this.selectFirst) {
8195
+ this.suggestionSubscription = this.suggestions$.subscribe(e => this.valueChangeEventEmitter.emit(e.length === 0 ? null : e[0]));
8196
+ }
8172
8197
  }
8173
8198
  ngOnDestroy() {
8174
8199
  this.searchSubscription?.unsubscribe();
8200
+ this.suggestionSubscription?.unsubscribe();
8175
8201
  }
8176
8202
  onSearch(event) {
8177
8203
  this.searchSubscription?.unsubscribe();
@@ -8208,6 +8234,11 @@ class MngAutocompleteComponent {
8208
8234
  onBlur(event) {
8209
8235
  this.formlyWrapper?.formControl?.markAsTouched();
8210
8236
  }
8237
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8238
+ onClear(event) {
8239
+ this.onChangeFn();
8240
+ this.valueChangeEventEmitter.next(null);
8241
+ }
8211
8242
  registerOnChange(fn) {
8212
8243
  this.onChangeFn = fn;
8213
8244
  }
@@ -8371,10 +8402,10 @@ class MngAutocompleteComponent {
8371
8402
  }
8372
8403
  }
8373
8404
  MngAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngAutocompleteComponent, deps: [{ token: i0.Injector }, { token: i1$2.TranslateService }, { token: MngFormlyFieldWrapperComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
8374
- MngAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsValuePropertyInit: ["itemsValueProperty", "itemsValuePropertyInit"], itemsLabelPropertyInit: ["itemsLabelProperty", "itemsLabelPropertyInit"], itemsLabelTranslate: "itemsLabelTranslate", inlineSearch: "inlineSearch", openOnFocus: "openOnFocus", multiselect: "multiselect", placeholder: "placeholder", className: "className", dropdownClassName: "dropdownClassName" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeAutocomplete", first: true, predicate: AutoComplete, descendants: true }], ngImport: i0, template: "<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n", dependencies: [{ kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$2.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "itemSize", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8405
+ MngAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: { dataProvider: "dataProvider", dataKeyProperty: "dataKeyProperty", itemsValuePropertyInit: ["itemsValueProperty", "itemsValuePropertyInit"], itemsLabelPropertyInit: ["itemsLabelProperty", "itemsLabelPropertyInit"], itemsLabelTranslate: "itemsLabelTranslate", inlineSearch: "inlineSearch", openOnFocus: "openOnFocus", multiselect: "multiselect", placeholder: "placeholder", className: "className", dropdownClassName: "dropdownClassName", showClear: "showClear", autoClear: "autoClear", selectFirst: "selectFirst" }, outputs: { valueChangeEventEmitter: "valueChange" }, providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], viewQueries: [{ propertyName: "primeAutocomplete", first: true, predicate: AutoComplete, descendants: true }], ngImport: i0, template: "<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n [showClear]=\"showClear\"\n [forceSelection]=\"autoClear\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n (onClear)=\"onClear($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n", dependencies: [{ kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4$2.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "itemSize", "suggestions"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8375
8406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngAutocompleteComponent, decorators: [{
8376
8407
  type: Component,
8377
- args: [{ selector: 'mng-autocomplete', providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n" }]
8408
+ args: [{ selector: 'mng-autocomplete', providers: [MNG_AUTOCOMPLETE_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<p-autoComplete\n (onFocus)=\"onFocus($event)\"\n [formControl]=\"autocompleteFormControl\"\n [placeholder]=\"$any(placeholder)\"\n [dropdown]=\"true\"\n [dataKey]=\"$any(dataKeyProperty)\"\n [field]=\"$any(itemsLabelProperty)\"\n [suggestions]=\"(suggestions$ | async) ?? []\"\n [multiple]=\"multiselect\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"$any(className)\"\n [panelStyleClass]=\"$any(dropdownClassName)\"\n [minLength]=\"openOnFocus ? 0 : 1\"\n [showClear]=\"showClear\"\n [forceSelection]=\"autoClear\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onBlur)=\"onBlur($event)\"\n (onClear)=\"onClear($event)\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n</p-autoComplete>\n" }]
8378
8409
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$2.TranslateService }, { type: MngFormlyFieldWrapperComponent, decorators: [{
8379
8410
  type: Optional
8380
8411
  }] }]; }, propDecorators: { dataProvider: [{
@@ -8401,6 +8432,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
8401
8432
  type: Input
8402
8433
  }], dropdownClassName: [{
8403
8434
  type: Input
8435
+ }], showClear: [{
8436
+ type: Input
8437
+ }], autoClear: [{
8438
+ type: Input
8439
+ }], selectFirst: [{
8440
+ type: Input
8404
8441
  }], valueChangeEventEmitter: [{
8405
8442
  type: Output,
8406
8443
  args: ['valueChange']
@@ -8704,9 +8741,7 @@ class MngActionEditorComponent {
8704
8741
  this.viewContainerService = viewContainerService;
8705
8742
  this.actionRunEventEmitter = new EventEmitter();
8706
8743
  this.actionCancelEventEmitter = new EventEmitter();
8707
- this.cmpId = Math.random().toString(36).substring(2);
8708
8744
  this.isDialog = true;
8709
- this.isSaveButton = true;
8710
8745
  this.toolbarLeftActions = [];
8711
8746
  this.toolbarRightActions = [];
8712
8747
  this.footerLeftActions = [];
@@ -8746,7 +8781,6 @@ class MngActionEditorComponent {
8746
8781
  this.isDialog = false;
8747
8782
  this.viewContainer = this.viewContainerInit ?? this.viewContainerService ?? undefined;
8748
8783
  }
8749
- this.isSaveButton = typeof this.action.submitFunction === 'function';
8750
8784
  this.setTitle();
8751
8785
  for (const action of this.action.editorActions) {
8752
8786
  if (action instanceof ActionEditorSubmitDescriptor) {
@@ -8771,24 +8805,32 @@ class MngActionEditorComponent {
8771
8805
  });
8772
8806
  }
8773
8807
  }
8774
- switch (action.position) {
8775
- case ActionPositionEnum.ToolbarLeft:
8776
- this.toolbarLeftActions.push(action);
8777
- break;
8778
- case ActionPositionEnum.ToolbarRight:
8779
- this.toolbarRightActions.push(action);
8780
- break;
8781
- case ActionPositionEnum.FooterLeft:
8782
- this.footerLeftActions.push(action);
8783
- break;
8784
- case ActionPositionEnum.FooterRight:
8785
- this.footerRightActions.push(action);
8786
- break;
8787
- }
8808
+ this.placeActionsOnPositions(action);
8809
+ }
8810
+ for (const action of this.viewContainer?.getActions().filter(value => value.positionTableviewCategories?.includes(this.action.tableviewCategory)) ?? []) {
8811
+ this.placeActionsOnPositions(action);
8788
8812
  }
8789
8813
  this.toolbarRightActions = this.toolbarRightActions.reverse();
8790
8814
  this.footerRightActions = this.footerRightActions.reverse();
8791
8815
  this.loadItemWithDataProvider();
8816
+ if (typeof this.viewContainer.getEditorReset$ === 'function') {
8817
+ const viewContainerEditor = this.viewContainer;
8818
+ viewContainerEditor.getEditorReset$().subscribe({
8819
+ next: e => {
8820
+ if (e.fetch) {
8821
+ this.loadItemWithDataProvider();
8822
+ }
8823
+ else if (e.item) {
8824
+ this.editorComponent?.resetFormModel(e.item);
8825
+ }
8826
+ else if (e.fields) {
8827
+ for (const key in e.fields) {
8828
+ this.editorComponent?.resetFormFieldValue(key, e.fields[key]);
8829
+ }
8830
+ }
8831
+ }
8832
+ });
8833
+ }
8792
8834
  }
8793
8835
  ngOnDestroy() {
8794
8836
  this.subscriptions.forEach(s => s.unsubscribe());
@@ -8879,12 +8921,28 @@ class MngActionEditorComponent {
8879
8921
  this.actionExecutor.deactivateAction(this.instance);
8880
8922
  }
8881
8923
  }
8924
+ placeActionsOnPositions(action) {
8925
+ switch (action.position) {
8926
+ case ActionPositionEnum.ToolbarLeft:
8927
+ this.toolbarLeftActions.push(action);
8928
+ break;
8929
+ case ActionPositionEnum.ToolbarRight:
8930
+ this.toolbarRightActions.push(action);
8931
+ break;
8932
+ case ActionPositionEnum.FooterLeft:
8933
+ this.footerLeftActions.push(action);
8934
+ break;
8935
+ case ActionPositionEnum.FooterRight:
8936
+ this.footerRightActions.push(action);
8937
+ break;
8938
+ }
8939
+ }
8882
8940
  }
8883
8941
  MngActionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionEditorComponent, deps: [{ token: i0.Injector }, { token: i1$2.TranslateService }, { token: MngActionExecutorService }, { token: MngCommonsService }, { token: MngNavigationService }, { token: i3.DynamicDialogRef, optional: true }, { token: i3.DynamicDialogConfig, optional: true }, { token: MngViewContainerComponentService, optional: true }], target: i0.ɵɵFactoryTarget.Component });
8884
- MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit", actionCancelEventEmitter: "actionCancel" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i6$2.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { kind: "component", type: i7$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { kind: "component", type: MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8942
+ MngActionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngActionEditorComponent, selector: "mng-action-editor", inputs: { action: "action", itemId: "itemId", item: "item", actionData: "actionData", dataProvider: "dataProvider", viewContainerInit: ["viewContainer", "viewContainerInit"] }, outputs: { actionRunEventEmitter: "actionSubmit", actionCancelEventEmitter: "actionCancel" }, queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "submitButtonElementRef", first: true, predicate: ["submitButton"], descendants: true }, { propertyName: "editorComponent", first: true, predicate: MngFormEditorComponent, descendants: true }], ngImport: i0, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action\n *ngFor=\"let action of toolbarLeftActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action\n *ngFor=\"let action of toolbarRightActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action\n *ngFor=\"let action of footerLeftActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </div>\n <div>\n <mng-action\n *ngFor=\"let action of footerRightActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i6$2.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { kind: "component", type: i7$1.ProgressSpinner, selector: "p-progressSpinner", inputs: ["style", "styleClass", "strokeWidth", "fill", "animationDuration"] }, { kind: "component", type: MngFormEditorComponent, selector: "mng-form-editor", inputs: ["descriptor", "submitLoading", "item", "isSubmitButtonVisible", "isFormDisabled"], outputs: ["formSubmit"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8885
8943
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngActionEditorComponent, decorators: [{
8886
8944
  type: Component,
8887
- args: [{ selector: 'mng-action-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action *ngFor=\"let action of footerLeftActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n <div>\n <mng-action *ngFor=\"let action of footerRightActions\" [action]=\"action\" [disabled]=\"submitLoading$\" [viewContainer]=\"viewContainer\"></mng-action>\n </div>\n </div>\n</div>\n" }]
8945
+ args: [{ selector: 'mng-action-editor', changeDetection: ChangeDetectionStrategy.OnPush, template: "<h5 *ngIf=\"!isDialog && title\">{{ title }}</h5>\n<div class=\"h-full flex flex-column\">\n <div class=\"flex-grow-1\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <p-toolbar styleClass=\"mng-action-editor-toolbar\">\n <ng-template pTemplate=\"left\">\n <mng-action\n *ngFor=\"let action of toolbarLeftActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </ng-template>\n <ng-template pTemplate=\"right\">\n <mng-action\n *ngFor=\"let action of toolbarRightActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </ng-template>\n </p-toolbar>\n </div>\n\n <div class=\"flex-grow-1\">\n <div class=\"text-center\" *ngIf=\"loading$ | async\">\n <p-progressSpinner [style]=\"{width: '3rem', height: '3rem'}\" strokeWidth=\"3\"></p-progressSpinner>\n </div>\n <mng-form-editor *ngIf=\"action.editorDescriptor && (loading$ | async) === false\" [descriptor]=\"action.editorDescriptor\" [item]=\"item\" (formSubmit)=\"onSubmit($event)\">\n </mng-form-editor>\n </div>\n\n <div class=\"flex flex-row justify-content-between\">\n <div>\n <mng-action\n *ngFor=\"let action of footerLeftActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </div>\n <div>\n <mng-action\n *ngFor=\"let action of footerRightActions\"\n [action]=\"action\"\n [disabled]=\"submitLoading$\"\n [viewContainer]=\"viewContainer\"\n [item]=\"item\"\n [itemId]=\"itemId\"></mng-action>\n </div>\n </div>\n</div>\n" }]
8888
8946
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$2.TranslateService }, { type: MngActionExecutorService }, { type: MngCommonsService }, { type: MngNavigationService }, { type: i3.DynamicDialogRef, decorators: [{
8889
8947
  type: Optional
8890
8948
  }] }, { type: i3.DynamicDialogConfig, decorators: [{
@@ -8955,10 +9013,10 @@ class MngFormlyFieldAutocompleteComponent extends FieldType {
8955
9013
  }
8956
9014
  }
8957
9015
  MngFormlyFieldAutocompleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngFormlyFieldAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
8958
- MngFormlyFieldAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngFormlyFieldAutocompleteComponent, selector: "mng-formly-field-autocomplete", usesInheritance: true, ngImport: i0, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\">\n</mng-autocomplete>\n", dependencies: [{ kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9016
+ MngFormlyFieldAutocompleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngFormlyFieldAutocompleteComponent, selector: "mng-formly-field-autocomplete", usesInheritance: true, ngImport: i0, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!to.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst\"\n [autoClear]=\"descriptor.autocompleteAutoClear\">\n</mng-autocomplete>\n", dependencies: [{ kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName", "showClear", "autoClear", "selectFirst"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8959
9017
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngFormlyFieldAutocompleteComponent, decorators: [{
8960
9018
  type: Component,
8961
- args: [{ selector: 'mng-formly-field-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\">\n</mng-autocomplete>\n" }]
9019
+ args: [{ selector: 'mng-formly-field-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-autocomplete\n [id]=\"$any(key)\"\n [formControl]=\"aFormControl\"\n [formlyAttributes]=\"field\"\n [dataProvider]=\"$any(descriptor.dataProvider)\"\n [dataKeyProperty]=\"$any(descriptor.dataKeyProperty)\"\n [itemsLabelProperty]=\"$any(descriptor.itemsLabelProperty)\"\n [itemsValueProperty]=\"$any(descriptor.itemsValueProperty)\"\n [className]=\"descriptor.inputClassName\"\n [showClear]=\"!to.required\"\n [selectFirst]=\"descriptor.autocompleteSelectFirst\"\n [autoClear]=\"descriptor.autocompleteAutoClear\">\n</mng-autocomplete>\n" }]
8962
9020
  }] });
8963
9021
 
8964
9022
  class MngFormlyFieldInputComponent extends FieldType {
@@ -9267,7 +9325,7 @@ class MngTableColumnFilterComponent {
9267
9325
  }
9268
9326
  }
9269
9327
  MngTableColumnFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableColumnFilterComponent, deps: [{ token: i2.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component });
9270
- MngTableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableColumnFilterComponent, selector: "mng-table-column-filter", inputs: { descriptor: "descriptor", display: "display" }, viewQueries: [{ propertyName: "primeColumnFilter", first: true, predicate: ColumnFilter, descendants: true }], ngImport: i0, template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"$any(primeDefaultMatchMode)\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [showMenu]=\"primeShowMatchMode\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container *ngIf=\"activeMatchMode === 'between'; else datePicker\">\n <mng-date-range\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [dateFormat]=\"descriptor.datePickerFormat\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"></mng-date-range>\n </ng-container>\n <ng-template #datePicker>\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\">\n </p-calendar>\n </ng-template>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$3.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$4.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { kind: "component", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName"], outputs: ["valueChange"] }, { kind: "component", type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur"], outputs: ["valueChange"] }, { kind: "component", type: MngDateRangeComponent, selector: "mng-date-range", inputs: ["placeholder", "showTime", "showSeconds", "dateFormat"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
9328
+ MngTableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableColumnFilterComponent, selector: "mng-table-column-filter", inputs: { descriptor: "descriptor", display: "display" }, viewQueries: [{ propertyName: "primeColumnFilter", first: true, predicate: ColumnFilter, descendants: true }], ngImport: i0, template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"$any(primeDefaultMatchMode)\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [showMenu]=\"primeShowMatchMode\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container *ngIf=\"activeMatchMode === 'between'; else datePicker\">\n <mng-date-range\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [dateFormat]=\"descriptor.datePickerFormat\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"></mng-date-range>\n </ng-container>\n <ng-template #datePicker>\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\">\n </p-calendar>\n </ng-template>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n", dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i4$3.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "view", "defaultDate", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6$4.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping"] }, { kind: "component", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName", "showClear", "autoClear", "selectFirst"], outputs: ["valueChange"] }, { kind: "component", type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur"], outputs: ["valueChange"] }, { kind: "component", type: MngDateRangeComponent, selector: "mng-date-range", inputs: ["placeholder", "showTime", "showSeconds", "dateFormat"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
9271
9329
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableColumnFilterComponent, decorators: [{
9272
9330
  type: Component,
9273
9331
  args: [{ selector: 'mng-table-column-filter', template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"$any(primeDefaultMatchMode)\"\n [matchModeOptions]=\"$any(primeMatchModes)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [showMenu]=\"primeShowMatchMode\"\n [minFractionDigits]=\"$any(descriptor.numberMinFractionDigits)\"\n [maxFractionDigits]=\"$any(descriptor.numberMaxFractionDigits)\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container *ngIf=\"activeMatchMode === 'between'; else datePicker\">\n <mng-date-range\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [dateFormat]=\"descriptor.datePickerFormat\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"></mng-date-range>\n </ng-container>\n <ng-template #datePicker>\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\">\n </p-calendar>\n </ng-template>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.dataKeyProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n" }]
@@ -9819,8 +9877,7 @@ class MngTableviewComponent {
9819
9877
  this.actionExecutor = actionExecutor;
9820
9878
  this.viewContainerService = viewContainerService;
9821
9879
  this.actions = [];
9822
- this.rowClickActions = [];
9823
- this.rowInlineActions = [];
9880
+ this.tableActions = [];
9824
9881
  this.toolbarLeftActions = [];
9825
9882
  this.toolbarRightActions = [];
9826
9883
  this.subscriptions = [];
@@ -9828,28 +9885,27 @@ class MngTableviewComponent {
9828
9885
  this.selectedItems = [];
9829
9886
  }
9830
9887
  ngOnInit() {
9831
- this.viewContainerService.actions = this.actions;
9888
+ this.viewContainerService.setActions(this.actions);
9832
9889
  if (this.dataProvider) {
9833
9890
  this.viewContainerService.dataProvider = this.dataProvider;
9834
9891
  }
9835
- const reloadTableSubscription = this.viewContainerService.reloadTable.subscribe(() => {
9892
+ const reloadTableSubscription = this.viewContainerService.getTableReload$().subscribe(() => {
9836
9893
  this.reloadTable();
9837
9894
  });
9838
9895
  this.subscriptions.push(reloadTableSubscription);
9839
- for (const action of this.actions) {
9896
+ for (const action of this.actions.filter(value => value.positionTableviewCategories?.includes(TableviewActionDefaultCategories.READ) ?? true)) {
9840
9897
  switch (action.position) {
9841
- case ActionPositionEnum.RowClick:
9842
- this.rowClickActions.push(action);
9843
- break;
9844
- case ActionPositionEnum.RowInline:
9845
- this.rowInlineActions.push(action);
9846
- break;
9847
9898
  case ActionPositionEnum.ToolbarLeft:
9848
9899
  this.toolbarLeftActions.push(action);
9849
9900
  break;
9850
9901
  case ActionPositionEnum.ToolbarRight:
9851
9902
  this.toolbarRightActions.push(action);
9852
9903
  break;
9904
+ case ActionPositionEnum.TableHeader:
9905
+ case ActionPositionEnum.RowInline:
9906
+ case ActionPositionEnum.RowClick:
9907
+ this.tableActions.push(action);
9908
+ break;
9853
9909
  }
9854
9910
  }
9855
9911
  this.toolbarRightActions = this.toolbarRightActions.reverse();
@@ -9873,6 +9929,9 @@ class MngTableviewComponent {
9873
9929
  getDataProvider() {
9874
9930
  return this.dataProvider;
9875
9931
  }
9932
+ getActions() {
9933
+ return this.actions;
9934
+ }
9876
9935
  reloadTable() {
9877
9936
  this.tableComponent?.reload();
9878
9937
  }
@@ -9884,10 +9943,10 @@ class MngTableviewComponent {
9884
9943
  }
9885
9944
  }
9886
9945
  MngTableviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableviewComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.MessageService }, { token: i1$2.TranslateService }, { token: i3.DialogService }, { token: i2.ConfirmationService }, { token: MngActionExecutorService }, { token: MngViewContainerComponentService }], target: i0.ɵɵFactoryTarget.Component });
9887
- MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableviewComponent, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [MessageService, ConfirmationService, MngViewContainerComponentService], queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "tableComponent", first: true, predicate: MngTableComponent, descendants: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"actions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n <ng-container *ngIf=\"footerTemplate\" [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$4.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i6$2.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { kind: "directive", type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
9946
+ MngTableviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableviewComponent, selector: "mng-tableview", inputs: { descriptor: "descriptor", dataProvider: "dataProvider", actions: "actions" }, providers: [MessageService, ConfirmationService, MngViewContainerComponentService], queries: [{ propertyName: "templates", predicate: MngTemplateDirective }], viewQueries: [{ propertyName: "tableComponent", first: true, predicate: MngTableComponent, descendants: true }], ngImport: i0, template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n <ng-container *ngIf=\"footerTemplate\" [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n", dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7$4.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "component", type: i6$2.Toolbar, selector: "p-toolbar", inputs: ["style", "styleClass"] }, { kind: "directive", type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
9888
9947
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableviewComponent, decorators: [{
9889
9948
  type: Component,
9890
- args: [{ selector: 'mng-tableview', providers: [MessageService, ConfirmationService, MngViewContainerComponentService], template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"actions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n <ng-container *ngIf=\"footerTemplate\" [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
9949
+ args: [{ selector: 'mng-tableview', providers: [MessageService, ConfirmationService, MngViewContainerComponentService], template: "<div class=\"mng-tableview\">\n <p-toast></p-toast>\n\n <div class=\"card\">\n <p-toolbar styleClass=\"mb-4\" *ngIf=\"toolbarLeftActions.length > 0 || toolbarRightActions.length > 0\">\n <ng-template pTemplate=\"left\">\n <mng-action *ngFor=\"let action of toolbarLeftActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n\n <ng-template pTemplate=\"right\">\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\" [queryParam]=\"tableQueryParam\" [selectedItems]=\"selectedItems\"></mng-action>\n </ng-template>\n </p-toolbar>\n\n <mng-table\n [descriptor]=\"descriptor.table\"\n [dataProvider]=\"dataProvider\"\n [useQueryParams]=\"true\"\n [actions]=\"tableActions\"\n [selectionEnabled]=\"hasItemSelectionAction\"\n [selectionMode]=\"'multiple'\"\n (tableLoad)=\"onTableLoad($event)\"\n (selectionChange)=\"selectionChange($event)\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-between table-header\">\n <h5 class=\"p-0 m-0\">{{ descriptor.tableTitle ?? '' | translate }}</h5>\n </div>\n </ng-template>\n\n <ng-template let-queryResult=\"queryResult\" mngTemplate=\"footer\">\n <ng-container *ngIf=\"footerTemplate\" [ngTemplateOutlet]=\"footerTemplate\" [ngTemplateOutletContext]=\"{queryResult: queryResult}\"></ng-container>\n </ng-template>\n </mng-table>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n" }]
9891
9950
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.MessageService }, { type: i1$2.TranslateService }, { type: i3.DialogService }, { type: i2.ConfirmationService }, { type: MngActionExecutorService }, { type: MngViewContainerComponentService }]; }, propDecorators: { descriptor: [{
9892
9951
  type: Input
9893
9952
  }], dataProvider: [{
@@ -9924,7 +9983,7 @@ class AMngTableviewRouteComponent {
9924
9983
  this.createActionDescriptorForExport()
9925
9984
  ].filter(e => e != null);
9926
9985
  }
9927
- createActionDescriptorForDetails(descriptor = this.descriptor.viewEditor) {
9986
+ createActionDescriptorForDetails(descriptor = this.descriptor.detailsEditor) {
9928
9987
  return !this.routeData.tableviewActions || this.routeData.tableviewActions.hasDetails ? new ActionEditorDetailsDescriptor(descriptor) : null;
9929
9988
  }
9930
9989
  createActionDescriptorForAdd(descriptor = this.descriptor.addEditor) {
@@ -9956,10 +10015,10 @@ class AMngTableviewRouteComponent {
9956
10015
  createActionDescriptorForRefresh(descriptor = this.descriptor.model) {
9957
10016
  const action = new ActionDescriptor(descriptor, 'refresh')
9958
10017
  .withPosition(ActionPositionEnum.ToolbarRight)
9959
- .withPermissionsRouteType(Permissions.ActionTypes.READ)
10018
+ .withTableviewCategory(TableviewActionDefaultCategories.READ)
9960
10019
  .withRunNotificationSuccess(undefined, undefined, false)
9961
10020
  .withRunFunction((ctx) => {
9962
- ctx.parameters.viewContainer.triggerTableReload({});
10021
+ ctx.parameters.viewContainer?.reloadTable?.({});
9963
10022
  return of(null);
9964
10023
  });
9965
10024
  action.button.withIcon('pi pi-refresh').styleClass.withActionLevel(StyleLevelEnum.Secondary);
@@ -10181,9 +10240,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
10181
10240
  }] } });
10182
10241
 
10183
10242
  class MngFormlyFieldTableDialogFormComponent extends FieldType {
10184
- constructor(actionExecutor) {
10185
- super();
10186
- this.actionExecutor = actionExecutor;
10243
+ constructor() {
10244
+ super(...arguments);
10187
10245
  this.itemsSubject = new ReplaySubject(1);
10188
10246
  this.items$ = this.itemsSubject.asObservable();
10189
10247
  this.actions = [];
@@ -10193,13 +10251,13 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
10193
10251
  this.isEnabled$ = this.isDisabledSubject.asObservable().pipe(distinctUntilChanged(), map(e => !e));
10194
10252
  }
10195
10253
  ngOnInit() {
10196
- this.descriptor = this.to['descriptor'];
10254
+ this.descriptor = this.props['descriptor'];
10197
10255
  const hasViewAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.View);
10198
10256
  const hasAddAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Add);
10199
10257
  const hasEditAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Edit);
10200
10258
  const hasDeleteAction = this.descriptor.fieldActions.some(a => a === FieldManyEditorActionEnum.Delete);
10201
10259
  if (hasViewAction) {
10202
- const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.viewEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)
10260
+ const viewAction = new ActionEditorDescriptor(this.descriptor.tableviewDescriptor.detailsEditor, 'details', this.descriptor.editor.model.type, this.descriptor.property)
10203
10261
  .withPosition(ActionPositionEnum.RowClick)
10204
10262
  .withDialogClassName('mng-field-dialog mng-action-editor-dialog')
10205
10263
  .withDialogSize(StyleSizeEnum.Small);
@@ -10329,12 +10387,12 @@ class MngFormlyFieldTableDialogFormComponent extends FieldType {
10329
10387
  });
10330
10388
  }
10331
10389
  }
10332
- MngFormlyFieldTableDialogFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, deps: [{ token: MngActionExecutorService }], target: i0.ɵɵFactoryTarget.Component });
10390
+ MngFormlyFieldTableDialogFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
10333
10391
  MngFormlyFieldTableDialogFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngFormlyFieldTableDialogFormComponent, selector: "mng-formly-table-dialog-form-field", usesInheritance: true, ngImport: i0, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MngTemplateDirective, selector: "[mngTemplate]", inputs: ["type", "mngTemplate"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "component", type: MngActionComponent, selector: "mng-action", inputs: ["action", "item", "itemId", "actionData", "queryParam", "dataProvider", "disabled", "loading", "viewContainer", "selectedItems"], outputs: ["finish"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10334
10392
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngFormlyFieldTableDialogFormComponent, decorators: [{
10335
10393
  type: Component,
10336
10394
  args: [{ selector: 'mng-formly-table-dialog-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-table [descriptor]=\"descriptor.tableDescriptor\" [items]=\"items$\" [actions]=\"actions\">\n <ng-template mngTemplate=\"caption\">\n <div class=\"flex flex-column md:flex-row md:justify-content-end align-items-center table-header\">\n <label class=\"mng-datatable-form-label p-0 m-0\" [for]=\"key\">{{ to?.label! | translate }} <span *ngIf=\"to.required && to['hideRequiredMarker'] !== true\">*</span></label>\n <mng-action *ngFor=\"let action of toolbarRightActions\" [action]=\"action\"></mng-action>\n </div>\n </ng-template>\n</mng-table>\n", styles: [".submit-button{display:none!important;visibility:hidden}\n"] }]
10337
- }], ctorParameters: function () { return [{ type: MngActionExecutorService }]; } });
10395
+ }] });
10338
10396
 
10339
10397
  class MngFormlyFieldTableDialogMultiselectComponent extends FieldType {
10340
10398
  constructor(injector) {
@@ -12478,7 +12536,7 @@ class TableviewRouteBuilder {
12478
12536
  }
12479
12537
  return this;
12480
12538
  }
12481
- withPermissionsOther(key, permissions) {
12539
+ withPermissionByCategory(key, permissions) {
12482
12540
  if (!this.permissions) {
12483
12541
  this.permissions = {};
12484
12542
  }
@@ -12561,5 +12619,5 @@ class TableviewRouteBuilder {
12561
12619
  * Generated bundle index. Do not edit.
12562
12620
  */
12563
12621
 
12564
- export { ACTION_EDITOR_DIALOG_COMPONENT_SETTING, AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngBaseApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, APermissions, ActionActivationTriggerEnum, ActionButtonDescriptor, ActionConfirmationDialogDescriptor, ActionContext, ActionContextValidation, ActionDataProviderUtil, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionEditorSubmitTypeEnum, ActionError, ActionInstance, ActionInstanceStateEnum, ActionLinkDescriptor, ActionParameters, ActionPositionEnum, ActionSimpleDescriptor, ActionTypeEnum, AuthorizationTypeEnum, AuthorizationUtil, ButtonStyleBuilder, ButtonStyleRoundedEnum, ColumnDescriptor, ColumnDynamicDescriptor, ColumnTypeEnum, DataProvider, DateUtil, DefaultMngErrorMapperService, DynamicTableviewDataProvider, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldGroupDescriptor, FieldGroupTypeEnum, FieldInputDescriptor, FieldInputTypeEnum, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupTypeEnum, FieldManyEditorActionEnum, FieldManyEditorDescriptor, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorDescriptor, FieldManyToManyEditorTypeEnum, FieldSizeEnum, FieldTabGroupDescriptor, FieldValidationDescriptor, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, I18nUtils, JsonPathPipe, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_BROWSER_STORAGE_IT, MNG_COMMONS_INITIALIZER_IT, MNG_DATE_RANGE_VALUE_ACCESSOR, MNG_DROPDOWN_VALUE_ACCESSOR, MNG_MODULE_CONFIG_IT, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAuthorizationGuard, MngAuthorizationService, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngClassMapPipe, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDateRangeComponent, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLabelComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngGetterPipe, MngI18nPropertyPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngParametrizePipe, MngTableCellClickEvent, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableLoadEvent, MngTableReloadEvent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTemplatePipe, MngTopbarComponent, MngVersionComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, NotificationUtil, ObjectSerializer, Permissions, RouteBuilder, RoutesBuilder, StringUtil, StyleLevelEnum, StyleSizeEnum, StylesUtil, TableDataProvider, TableDescriptor, TableDynamicColumnsModeEnum, TableDynamicDescriptor, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum, TableviewActionDefaultCategories, TableviewCrudDataProvider, TableviewDataProvider, TableviewDescriptor, TableviewDynamicDescriptor, TableviewRouteBuilder, TableviewTypeEnum, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
12622
+ export { ACTION_EDITOR_DIALOG_COMPONENT_SETTING, AFieldDescriptor, AFieldGroupDescriptor, AGenericFieldDescriptor, AMngApiService, AMngBaseApiService, AMngCrudApiService, AMngGetAllApiService, AMngTableviewRouteComponent, APermissions, ActionActivationTriggerEnum, ActionButtonDescriptor, ActionConfirmationDialogDescriptor, ActionContext, ActionContextValidation, ActionDataProviderUtil, ActionDeleteDescriptor, ActionDescriptor, ActionEditorAddDescriptor, ActionEditorDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor, ActionEditorSubmitDescriptor, ActionEditorSubmitTypeEnum, ActionError, ActionInstance, ActionInstanceStateEnum, ActionLinkDescriptor, ActionParameters, ActionPositionEnum, ActionSimpleDescriptor, ActionTypeEnum, AuthorizationTypeEnum, AuthorizationUtil, ButtonStyleBuilder, ButtonStyleRoundedEnum, ColumnDescriptor, ColumnDynamicDescriptor, ColumnTypeEnum, DataProvider, DateUtil, DefaultMngErrorMapperService, DynamicTableviewDataProvider, EditorDataProvider, EditorDescriptor, EditorFormlyUtil, EnumName, EnumUtil, FieldGroupDescriptor, FieldGroupTypeEnum, FieldInputDescriptor, FieldInputTypeEnum, FieldLookupDescriptor, FieldLookupEnumDescriptor, FieldLookupTypeEnum, FieldManyEditorActionEnum, FieldManyEditorDescriptor, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorDescriptor, FieldManyToManyEditorTypeEnum, FieldSizeEnum, FieldTabGroupDescriptor, FieldValidationDescriptor, FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, I18nUtils, JsonPathPipe, LookupDataProvider, MNG_AUTOCOMPLETE_VALUE_ACCESSOR, MNG_BROWSER_STORAGE_IT, MNG_COMMONS_INITIALIZER_IT, MNG_DATE_RANGE_VALUE_ACCESSOR, MNG_DROPDOWN_VALUE_ACCESSOR, MNG_MODULE_CONFIG_IT, MediusFilterMatchType, MediusFilterParam, MediusQueryMode, MediusQueryParam, MediusQueryParamBuilder, MediusQueryResult, MediusRestUtil, MngActionComponent, MngActionEditorComponent, MngActionExecutorService, MngActionRouteComponent, MngAuthorizationGuard, MngAuthorizationService, MngAutocompleteComponent, MngBooleanPipe, MngBreadcrumbComponent, MngClassMapPipe, MngCommonsModule, MngCommonsService, MngComponentDirective, MngConfigurationService, MngDateRangeComponent, MngDropdownComponent, MngEnumPipe, MngErrorMapperService, MngFooterComponent, MngFormEditorComponent, MngFormEditorSubmitEvent, MngFormFieldEvent, MngFormFieldEventComponentSubtype, MngFormFieldEventDialogSubtype, MngFormFieldEventTypeEnum, MngFormlyFieldAutocompleteComponent, MngFormlyFieldDropdownComponent, MngFormlyFieldFieldsetComponent, MngFormlyFieldInputComponent, MngFormlyFieldLabelComponent, MngFormlyFieldLookupDialogComponent, MngFormlyFieldTableDialogFormComponent, MngFormlyFieldTableDialogMultiselectComponent, MngFormlyFieldTabsComponent, MngFormlyFieldWrapperComponent, MngFormlyTableWrapperComponent, MngGetterPipe, MngI18nPropertyPipe, MngMainLayoutComponent, MngMainLayoutComponentService, MngMenuComponent, MngMenuItemComponent, MngNavigationService, MngParametrizePipe, MngTableCellClickEvent, MngTableColumnFilterComponent, MngTableColumnValueComponent, MngTableComponent, MngTableLoadEvent, MngTableReloadEvent, MngTableviewComponent, MngTableviewRouteComponent, MngTemplateDirective, MngTemplatePipe, MngTopbarComponent, MngVersionComponent, MngViewContainerComponentService, ModelDescriptor, ModelUtil, NotificationUtil, ObjectSerializer, Permissions, RouteBuilder, RoutesBuilder, StringUtil, StyleLevelEnum, StyleSizeEnum, StylesUtil, TableDataProvider, TableDescriptor, TableDynamicColumnsModeEnum, TableDynamicDescriptor, TableFilterDisplayEnum, TablePaginationModeEnum, TableSizeEnum, TableviewActionDefaultCategories, TableviewCrudDataProvider, TableviewDataProvider, TableviewDescriptor, TableviewDynamicDescriptor, TableviewEditorTypeEnum, TableviewRouteBuilder, TypeName, TypeUtil, enumNameDecoratorPropertyName, enumsMapBase, formlyTypesConfig, formlyWrappersConfig, getEmailValidationMessage, getFormlyValidationMessages, getMaxLengthValidationMessage, getMinLengthValidationMessage, getRequiredValidationMessage, getTextPatternValidationMessage, mngConfigJsonAppInitializerProvider, mngConfigurationServiceProvider, mngFormlyConfigProvider, primeNgModules, typeMapBase, typeNameDecoratorPropertyName };
12565
12623
  //# sourceMappingURL=mediusinc-mng-commons.mjs.map