@acorex/modules 18.0.16 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/application-management/lib/actions/index.d.ts +1 -0
  2. package/application-management/lib/actions/show-detail.action.d.ts +8 -0
  3. package/application-management/lib/application-management-mock-data.d.ts +3 -18
  4. package/application-management/lib/application-management.module.d.ts +3 -2
  5. package/application-management/lib/layouts/index.d.ts +1 -0
  6. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +15 -0
  7. package/application-management/lib/module-designer/module-designer.component.d.ts +17 -3
  8. package/application-management/lib/module-designer/module-designer.type.d.ts +1 -0
  9. package/application-management/lib/services/context-menu.service.d.ts +26 -0
  10. package/application-management/lib/workflows/create-module-entity.workflow.d.ts +2 -0
  11. package/application-management/lib/workflows/index.d.ts +2 -0
  12. package/application-management/lib/workflows/show-module-entity-details.workflow.d.ts +2 -0
  13. package/esm2022/application-management/lib/actions/index.mjs +2 -0
  14. package/esm2022/application-management/lib/actions/show-detail.action.mjs +25 -0
  15. package/esm2022/application-management/lib/application-management-mock-data.mjs +4 -4
  16. package/esm2022/application-management/lib/application-management.module.mjs +44 -6
  17. package/esm2022/application-management/lib/layouts/index.mjs +2 -0
  18. package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +77 -0
  19. package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +83 -32
  20. package/esm2022/application-management/lib/module-designer/module-designer.type.mjs +2 -0
  21. package/esm2022/application-management/lib/services/context-menu.service.mjs +168 -0
  22. package/esm2022/application-management/lib/workflows/create-module-entity.workflow.mjs +42 -0
  23. package/esm2022/application-management/lib/workflows/index.mjs +3 -0
  24. package/esm2022/application-management/lib/workflows/show-module-entity-details.workflow.mjs +9 -0
  25. package/esm2022/backend/lib/data/api/module-designer.service.mjs +2 -2
  26. package/fesm2022/acorex-modules-application-management-module-designer.component-CDZZ-5pF.mjs +323 -0
  27. package/fesm2022/acorex-modules-application-management-module-designer.component-CDZZ-5pF.mjs.map +1 -0
  28. package/fesm2022/acorex-modules-application-management.mjs +191 -13
  29. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  30. package/fesm2022/acorex-modules-backend.mjs +1 -1
  31. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  32. package/package.json +7 -7
  33. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs +0 -100
  34. package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs.map +0 -1
@@ -1,12 +1,157 @@
1
- import { AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';
1
+ import { AXPEntityDetailViewModelResolver, AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';
2
2
  import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
3
+ import * as i1$1 from '@acorex/platform/workflow';
4
+ import { AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
3
5
  import * as i0 from '@angular/core';
4
- import { Injector, NgModule, Optional, Inject, Injectable } from '@angular/core';
5
- import * as i1 from '@angular/router';
6
- import { RouterModule } from '@angular/router';
7
- import { AXPDataGenerator, AXPStorageService, AXPEntityDataProviderImpl, AXPEntityQueryType, AXPEntityCommandScope } from '@acorex/platform/common';
6
+ import { inject, Injectable, signal, Component, ChangeDetectionStrategy, Injector, NgModule, Optional, Inject } from '@angular/core';
7
+ import * as i2 from '@angular/router';
8
+ import { ActivatedRoute, RouterModule } from '@angular/router';
9
+ import { AXPWorkflowNavigateAction, isSmallScreen, getChildDrawer, AXPStickyDirective, AXPGridLayoutDirective, AXPDataGenerator, AXPStorageService, AXPEntityDataProviderImpl, AXPEntityQueryType, AXPEntityCommandScope } from '@acorex/platform/common';
10
+ import { AXActionSheetModule } from '@acorex/components/action-sheet';
11
+ import * as i7 from '@acorex/components/breadcrumbs';
12
+ import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
13
+ import * as i6 from '@acorex/components/button';
14
+ import { AXButtonModule } from '@acorex/components/button';
15
+ import * as i3 from '@acorex/components/decorators';
16
+ import { AXDecoratorModule } from '@acorex/components/decorators';
17
+ import { AXDialogModule } from '@acorex/components/dialog';
18
+ import { AXDrawerModule } from '@acorex/components/drawer';
19
+ import * as i4 from '@acorex/components/dropdown';
20
+ import { AXDropdownModule } from '@acorex/components/dropdown';
21
+ import * as i5 from '@acorex/components/form';
22
+ import { AXFormModule } from '@acorex/components/form';
23
+ import { AXLoadingModule } from '@acorex/components/loading';
24
+ import { AXPopoverModule } from '@acorex/components/popover';
25
+ import { AXTabsModule } from '@acorex/components/tabs';
26
+ import { AXTranslationModule } from '@acorex/core/translation';
27
+ import * as i8 from '@acorex/platform/layout/builder';
28
+ import { AXPLayoutBuilderModule, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
29
+ import { AXPWidgetsModule } from '@acorex/platform/widgets';
30
+ import * as i1 from '@angular/common';
31
+ import { CommonModule } from '@angular/common';
32
+ import { Store } from '@ngrx/store';
8
33
  import { applySortArray, applyFilterArray } from '@acorex/platform/core';
9
- import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
34
+
35
+ class AXPShowModuleEntityDetailViewAction extends AXPWorkflowAction {
36
+ constructor() {
37
+ super(...arguments);
38
+ this.navigation = inject(AXPWorkflowNavigateAction);
39
+ }
40
+ async execute(context) {
41
+ const [module, entity] = context.getVariable('entity').split('.');
42
+ const { id } = context.getVariable('data');
43
+ const newPayload = {
44
+ commands: `/console/module-designer/m/${module}/e/${entity}/${id}/view`,
45
+ };
46
+ context.setVariable('payload', newPayload);
47
+ this.navigation.execute(context);
48
+ }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
50
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction }); }
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, decorators: [{
53
+ type: Injectable
54
+ }] });
55
+
56
+ class AXPModuleEntityDetailViewComponent {
57
+ constructor() {
58
+ this.activeRoute = inject(ActivatedRoute);
59
+ this.vm = this.activeRoute.snapshot.data['vm'];
60
+ //
61
+ this.store = inject((Store));
62
+ this.isSM = this.store.select(isSmallScreen());
63
+ this.isOpen = this.store.select(getChildDrawer());
64
+ this.selectedDetailTabIndex = signal(0);
65
+ }
66
+ handleActiveDetailTabChanged(e) {
67
+ this.selectedDetailTabIndex.set(e.index);
68
+ }
69
+ ngOnDestroy() {
70
+ this.vm.destroy();
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPModuleEntityDetailViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPModuleEntityDetailViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-shadow-md ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i6.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i6.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i6.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i7.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i7.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
74
+ //
75
+ AXPLayoutBuilderModule }, { kind: "component", type: i8.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i8.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }, { kind: "ngmodule", type:
76
+ //
77
+ AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPModuleEntityDetailViewComponent, decorators: [{
80
+ type: Component,
81
+ args: [{ imports: [
82
+ CommonModule,
83
+ RouterModule,
84
+ AXDecoratorModule,
85
+ AXDropdownModule,
86
+ AXPopoverModule,
87
+ AXFormModule,
88
+ AXActionSheetModule,
89
+ AXDrawerModule,
90
+ AXDialogModule,
91
+ AXLoadingModule,
92
+ AXTabsModule,
93
+ AXButtonModule,
94
+ AXBreadcrumbsModule,
95
+ //
96
+ AXPLayoutBuilderModule,
97
+ AXPWidgetsModule,
98
+ AXPStickyDirective,
99
+ AXPGridLayoutDirective,
100
+ //
101
+ AXTranslationModule,
102
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-3xl ax-font-bold\">{{ vm.title() }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-shadow-md ax-mt-2\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n </div>\n</div>\n" }]
103
+ }] });
104
+
105
+ const AXPCreateModuleEntityWorkflow = {
106
+ startStepId: 'show-popup',
107
+ steps: {
108
+ 'show-popup': {
109
+ action: 'AXPEntityCreatePopupAction',
110
+ nextSteps: [
111
+ {
112
+ conditions: [{ type: 'SINGLE', expression: 'context.getOutput("result") == true' }],
113
+ nextStepId: 'show-toast',
114
+ },
115
+ ],
116
+ },
117
+ 'show-toast': {
118
+ action: 'AXPToastAction',
119
+ input: {
120
+ color: 'success',
121
+ title: 'Entity Created',
122
+ content: 'New Record has been successfully created.',
123
+ },
124
+ nextSteps: [
125
+ {
126
+ conditions: [],
127
+ nextStepId: 'dispatch-event',
128
+ },
129
+ ],
130
+ },
131
+ 'dispatch-event': {
132
+ action: 'AXPEntityCreateSubmittedAction',
133
+ nextSteps: [
134
+ {
135
+ conditions: [{ type: 'SINGLE', expression: 'context.getVariable("redirect") != false' }],
136
+ nextStepId: 'show-entity',
137
+ },
138
+ ],
139
+ },
140
+ 'show-entity': {
141
+ id: 'show-entity',
142
+ action: 'AXPShowModuleEntityDetailViewAction',
143
+ },
144
+ },
145
+ };
146
+
147
+ const AXPShowModuleEntityDetailsViewWorkflow = {
148
+ startStepId: 'showDetailView',
149
+ steps: {
150
+ showDetailView: {
151
+ action: 'AXPShowModuleEntityDetailViewAction',
152
+ },
153
+ },
154
+ };
10
155
 
11
156
  const routes = [
12
157
  {
@@ -15,7 +160,20 @@ const routes = [
15
160
  children: [
16
161
  {
17
162
  path: 'module-designer',
18
- loadComponent: () => import('./acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs').then((c) => c.AXMModuleDesignerComponent),
163
+ loadComponent: () => import('./acorex-modules-application-management-module-designer.component-CDZZ-5pF.mjs').then((c) => c.AXMModuleDesignerComponent),
164
+ children: [
165
+ {
166
+ path: 'm/:module',
167
+ children: [
168
+ {
169
+ path: 'e/:entity/:id/view',
170
+ resolve: { vm: AXPEntityDetailViewModelResolver },
171
+ component: AXPModuleEntityDetailViewComponent,
172
+ },
173
+ ],
174
+ data: { reuse: false },
175
+ },
176
+ ],
19
177
  },
20
178
  ],
21
179
  },
@@ -50,13 +208,33 @@ class AXMApplicationManagementModule {
50
208
  */
51
209
  constructor(instances) { }
52
210
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, deps: [{ token: 'AXP_REGISTER_MODULES_ENTITIES', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }
53
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [i1.RouterModule] }); }
54
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [RouterModule.forChild(routes)] }); }
211
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [i1$1.AXPWorkflowModule, i2.RouterModule] }); }
212
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, imports: [AXPWorkflowModule.forChild({
213
+ actions: {
214
+ AXPShowModuleEntityDetailViewAction,
215
+ },
216
+ workflows: {
217
+ 'create-module-entity': AXPCreateModuleEntityWorkflow,
218
+ 'show-module-entity-details': AXPShowModuleEntityDetailsViewWorkflow,
219
+ },
220
+ }),
221
+ RouterModule.forChild(routes)] }); }
55
222
  }
56
223
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXMApplicationManagementModule, decorators: [{
57
224
  type: NgModule,
58
225
  args: [{
59
- imports: [RouterModule.forChild(routes)],
226
+ imports: [
227
+ AXPWorkflowModule.forChild({
228
+ actions: {
229
+ AXPShowModuleEntityDetailViewAction,
230
+ },
231
+ workflows: {
232
+ 'create-module-entity': AXPCreateModuleEntityWorkflow,
233
+ 'show-module-entity-details': AXPShowModuleEntityDetailsViewWorkflow,
234
+ },
235
+ }),
236
+ RouterModule.forChild(routes),
237
+ ],
60
238
  exports: [],
61
239
  declarations: [],
62
240
  }]
@@ -126,7 +304,7 @@ const FEATURES = Array.from({ length: 5 }).map((_, i) => {
126
304
  const name = AXPDataGenerator.pick(source);
127
305
  return {
128
306
  id: AXPDataGenerator.uuid(),
129
- module: AXPDataGenerator.pick(MODULES),
307
+ moduleId: AXPDataGenerator.pick(MODULES).id,
130
308
  name: name,
131
309
  title: name,
132
310
  isArchived: AXPDataGenerator.boolean(),
@@ -137,7 +315,7 @@ const ENTITIES = Array.from({ length: 5 }).map((_, i) => {
137
315
  const name = AXPDataGenerator.pick(source);
138
316
  return {
139
317
  id: AXPDataGenerator.uuid(),
140
- module: AXPDataGenerator.pick(MODULES),
318
+ moduleId: AXPDataGenerator.pick(MODULES).id,
141
319
  name: name,
142
320
  title: name,
143
321
  isArchived: AXPDataGenerator.boolean(),
@@ -148,7 +326,7 @@ const PERMISSIONS = Array.from({ length: 5 }).map((_, i) => {
148
326
  const name = AXPDataGenerator.pick(source);
149
327
  return {
150
328
  id: AXPDataGenerator.uuid(),
151
- module: AXPDataGenerator.pick(MODULES),
329
+ moduleId: AXPDataGenerator.pick(MODULES).id,
152
330
  name: name,
153
331
  title: name,
154
332
  isArchived: AXPDataGenerator.boolean(),