@acorex/modules 18.0.16 → 18.1.1
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/application-management/lib/actions/index.d.ts +1 -0
- package/application-management/lib/actions/show-detail.action.d.ts +8 -0
- package/application-management/lib/application-management-mock-data.d.ts +3 -18
- package/application-management/lib/application-management.module.d.ts +3 -2
- package/application-management/lib/layouts/index.d.ts +1 -0
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +15 -0
- package/application-management/lib/module-designer/module-designer.component.d.ts +17 -3
- package/application-management/lib/module-designer/module-designer.type.d.ts +1 -0
- package/application-management/lib/services/context-menu.service.d.ts +26 -0
- package/application-management/lib/workflows/create-module-entity.workflow.d.ts +2 -0
- package/application-management/lib/workflows/index.d.ts +2 -0
- package/application-management/lib/workflows/show-module-entity-details.workflow.d.ts +2 -0
- package/esm2022/application-management/lib/actions/index.mjs +2 -0
- package/esm2022/application-management/lib/actions/show-detail.action.mjs +25 -0
- package/esm2022/application-management/lib/application-management-mock-data.mjs +4 -4
- package/esm2022/application-management/lib/application-management.module.mjs +44 -6
- package/esm2022/application-management/lib/layouts/index.mjs +2 -0
- package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +77 -0
- package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +83 -32
- package/esm2022/application-management/lib/module-designer/module-designer.type.mjs +2 -0
- package/esm2022/application-management/lib/services/context-menu.service.mjs +167 -0
- package/esm2022/application-management/lib/workflows/create-module-entity.workflow.mjs +42 -0
- package/esm2022/application-management/lib/workflows/index.mjs +3 -0
- package/esm2022/application-management/lib/workflows/show-module-entity-details.workflow.mjs +9 -0
- package/esm2022/auth/lib/shared/layouts/master/master.layout.mjs +3 -3
- package/esm2022/backend/lib/data/api/module-designer.service.mjs +2 -2
- package/fesm2022/acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs +322 -0
- package/fesm2022/acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +191 -13
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs → acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs} +8 -8
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-D09VaQPe.mjs.map → acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs → acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-DN1ZJiZs.mjs.map → acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-CGA5aTg2.mjs → acorex-modules-auth-login.module-DGBKGxI3.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-CGA5aTg2.mjs.map → acorex-modules-auth-login.module-DGBKGxI3.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-ZJWzjLrb.mjs → acorex-modules-auth-master.layout-B_8Sfw0M.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-master.layout-ZJWzjLrb.mjs.map → acorex-modules-auth-master.layout-B_8Sfw0M.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-MJhNk3UI.mjs → acorex-modules-auth-password.component-BfDjRRN_.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-MJhNk3UI.mjs.map → acorex-modules-auth-password.component-BfDjRRN_.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-C4yqf342.mjs → acorex-modules-auth-password.component-DZJ1qwfa.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-C4yqf342.mjs.map → acorex-modules-auth-password.component-DZJ1qwfa.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-DhORV1Js.mjs → acorex-modules-auth-routes-Bw7nXDvx.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-DhORV1Js.mjs.map → acorex-modules-auth-routes-Bw7nXDvx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-BWKP0_jO.mjs → acorex-modules-auth-two-factor.module-DKStBo1V.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-BWKP0_jO.mjs.map → acorex-modules-auth-two-factor.module-DKStBo1V.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-backend.mjs +1 -1
- package/fesm2022/acorex-modules-backend.mjs.map +1 -1
- package/package.json +7 -7
- package/fesm2022/acorex-modules-application-management-module-designer.component-KlwqCJCF.mjs +0 -100
- 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
|
5
|
-
import * as
|
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
|
-
|
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-
|
163
|
+
loadComponent: () => import('./acorex-modules-application-management-module-designer.component-Bgq9-BVv.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: [
|
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: [
|
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
|
-
|
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
|
-
|
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
|
-
|
329
|
+
moduleId: AXPDataGenerator.pick(MODULES).id,
|
152
330
|
name: name,
|
153
331
|
title: name,
|
154
332
|
isArchived: AXPDataGenerator.boolean(),
|