@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.
- package/esm2020/lib/components/action/action.component.mjs +8 -8
- package/esm2020/lib/components/action/editor/action-editor.component.mjs +41 -20
- package/esm2020/lib/components/action/route/action-route.component.mjs +3 -3
- package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +21 -3
- package/esm2020/lib/components/form/editor/form-editor.component.mjs +29 -29
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +3 -3
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +13 -15
- package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +5 -5
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +1 -1
- package/esm2020/lib/components/tableview/table/table.component.mjs +1 -1
- package/esm2020/lib/components/tableview/tableview.component.mjs +16 -14
- package/esm2020/lib/descriptors/action.descriptor.mjs +19 -12
- package/esm2020/lib/descriptors/editor.descriptor.mjs +5 -8
- package/esm2020/lib/descriptors/field.descriptor.mjs +13 -3
- package/esm2020/lib/descriptors/tableview.descriptor.mjs +32 -32
- package/esm2020/lib/descriptors/types/editor.type.mjs +8 -8
- package/esm2020/lib/models/view-container.model.mjs +1 -1
- package/esm2020/lib/router/tableview-route-builder.mjs +2 -2
- package/esm2020/lib/security/model/permissions.model.mjs +1 -9
- package/esm2020/lib/services/view-container.component.service.mjs +21 -8
- package/fesm2015/mediusinc-mng-commons.mjs +587 -527
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +568 -510
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/components/action/editor/action-editor.component.d.ts +1 -2
- package/lib/components/form/autocomplete/autocomplete.component.d.ts +7 -2
- package/lib/components/form/editor/form-editor.component.d.ts +1 -1
- package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -3
- package/lib/components/tableview/tableview.component.d.ts +2 -2
- package/lib/descriptors/action.descriptor.d.ts +6 -4
- package/lib/descriptors/editor.descriptor.d.ts +5 -6
- package/lib/descriptors/field.descriptor.d.ts +5 -1
- package/lib/descriptors/tableview.descriptor.d.ts +5 -5
- package/lib/descriptors/types/editor.type.d.ts +2 -2
- package/lib/models/view-container.model.d.ts +31 -0
- package/lib/router/tableview-route-builder.d.ts +1 -1
- package/lib/security/model/permissions.model.d.ts +0 -7
- package/lib/services/view-container.component.service.d.ts +12 -6
- package/package.json +1 -1
- package/scss/mng-overrides/_layout_dialog.scss +1 -0
- package/scss/mng-overrides/_theme_autocomplete.scss +16 -0
- package/scss/mng-overrides/_theme_styles.scss +1 -0
- 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,
|
|
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
|
-
|
|
766
|
-
|
|
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
|
-
|
|
785
|
-
|
|
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
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
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
|
-
|
|
817
|
-
|
|
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
|
-
|
|
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
|
|
869
|
-
(function (
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
})(
|
|
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
|
|
1466
|
-
return this.
|
|
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.
|
|
1545
|
-
console.warn(`Permissions set on action ${this._actionNameLong} with route type '${this.
|
|
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
|
-
|
|
1551
|
-
this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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.
|
|
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.
|
|
4334
|
-
this.
|
|
4335
|
-
this._addEditor = new EditorDescriptor(modelType, idProperty, titleProperty,
|
|
4336
|
-
this._editEditor = new EditorDescriptor(modelType, idProperty, titleProperty,
|
|
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.
|
|
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.
|
|
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
|
|
4375
|
-
return this.
|
|
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.
|
|
4557
|
+
this._detailsEditor = descriptor;
|
|
4395
4558
|
this._editEditor = descriptor;
|
|
4396
4559
|
this._addEditor = descriptor;
|
|
4397
4560
|
return this;
|
|
4398
4561
|
}
|
|
4399
|
-
|
|
4400
|
-
this.
|
|
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.
|
|
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
|
|
4595
|
+
case TableviewEditorTypeEnum.Edit:
|
|
4433
4596
|
return this._editEditor.getField(property);
|
|
4434
|
-
case
|
|
4597
|
+
case TableviewEditorTypeEnum.Add:
|
|
4435
4598
|
return this._addEditor.getField(property);
|
|
4436
|
-
case
|
|
4437
|
-
return this.
|
|
4438
|
-
case
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
5858
|
-
|
|
5859
|
-
|
|
5860
|
-
|
|
5861
|
-
|
|
5862
|
-
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
|
|
5866
|
-
|
|
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
|
|
5928
|
-
return this.
|
|
6032
|
+
get authorizationType() {
|
|
6033
|
+
return this._authorizationType;
|
|
5929
6034
|
}
|
|
5930
|
-
|
|
5931
|
-
|
|
5932
|
-
|
|
5933
|
-
|
|
5934
|
-
|
|
5935
|
-
|
|
6035
|
+
}
|
|
6036
|
+
var Permissions;
|
|
6037
|
+
(function (Permissions) {
|
|
6038
|
+
class All extends APermissions {
|
|
6039
|
+
constructor() {
|
|
6040
|
+
super(AuthorizationTypeEnum.All);
|
|
6041
|
+
this._permissions = [];
|
|
5936
6042
|
}
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
5940
|
-
|
|
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
|
-
|
|
5952
|
-
|
|
5953
|
-
currentContext.executionComplete();
|
|
6048
|
+
get permissions() {
|
|
6049
|
+
return this._permissions;
|
|
5954
6050
|
}
|
|
5955
|
-
|
|
5956
|
-
|
|
5957
|
-
|
|
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
|
-
|
|
6000
|
-
|
|
6001
|
-
|
|
6056
|
+
Permissions.All = All;
|
|
6057
|
+
class Any extends APermissions {
|
|
6058
|
+
constructor() {
|
|
6059
|
+
super(AuthorizationTypeEnum.Any);
|
|
6060
|
+
this._permissions = [];
|
|
6002
6061
|
}
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
|
|
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
|
-
|
|
6010
|
-
|
|
6011
|
-
this.executionComplete();
|
|
6067
|
+
get permissions() {
|
|
6068
|
+
return this._permissions;
|
|
6012
6069
|
}
|
|
6013
|
-
|
|
6014
|
-
|
|
6015
|
-
|
|
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
|
-
|
|
6022
|
-
|
|
6023
|
-
|
|
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
|
-
|
|
6071
|
-
|
|
6072
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
7590
|
-
if (routeData.tableviewPermissions[this.action.
|
|
7591
|
-
this.routePermissions = routeData.tableviewPermissions[this.action.
|
|
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.
|
|
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.
|
|
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?.
|
|
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?.
|
|
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
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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]=\"
|
|
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]=\"
|
|
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.
|
|
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
|
-
.
|
|
10018
|
+
.withTableviewCategory(TableviewActionDefaultCategories.READ)
|
|
9960
10019
|
.withRunNotificationSuccess(undefined, undefined, false)
|
|
9961
10020
|
.withRunFunction((ctx) => {
|
|
9962
|
-
ctx.parameters.viewContainer
|
|
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(
|
|
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.
|
|
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.
|
|
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:
|
|
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
|
-
}]
|
|
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
|
-
|
|
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,
|
|
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
|