@acorex/modules 18.1.1 → 18.1.3
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/application-management-mock-data.d.ts +7 -0
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +3 -0
- package/application-management/lib/module-designer/module-designer.component.d.ts +3 -1
- package/application-management/lib/workflows/create-module-entity.workflow.d.ts +8 -1
- package/backend/lib/data/api/comment.service.d.ts +7 -6
- package/esm2022/application-management/lib/application-management-mock-data.mjs +21 -1
- package/esm2022/application-management/lib/application-management.module.mjs +2 -3
- package/esm2022/application-management/lib/application-management.service.mjs +3 -3
- package/esm2022/application-management/lib/entities/applications.entity.mjs +3 -3
- package/esm2022/application-management/lib/entities/entity.entity.mjs +16 -2
- package/esm2022/application-management/lib/entities/modules.entity.mjs +4 -4
- package/esm2022/application-management/lib/entities/property.entity.mjs +16 -14
- package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +18 -8
- package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +13 -5
- package/esm2022/application-management/lib/services/context-menu.service.mjs +1 -2
- package/esm2022/application-management/lib/workflows/create-module-entity.workflow.mjs +25 -1
- package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +3 -11
- package/esm2022/backend/lib/backend.module.mjs +2 -2
- package/esm2022/backend/lib/data/api/comment.service.mjs +14 -16
- package/fesm2022/{acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs → acorex-modules-application-management-module-designer.component-C-lY0Apl.mjs} +16 -9
- package/fesm2022/acorex-modules-application-management-module-designer.component-C-lY0Apl.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +96 -53
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs → acorex-modules-auth-acorex-modules-auth-4OzzidjS.mjs} +10 -18
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-4OzzidjS.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs → acorex-modules-auth-app-chooser.component-CHTEeWgx.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs.map → acorex-modules-auth-app-chooser.component-CHTEeWgx.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-login.module-DGBKGxI3.mjs → acorex-modules-auth-login.module-DMit4yw0.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-DGBKGxI3.mjs.map → acorex-modules-auth-login.module-DMit4yw0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-B_8Sfw0M.mjs → acorex-modules-auth-master.layout-BCYIjTB0.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-B_8Sfw0M.mjs.map → acorex-modules-auth-master.layout-BCYIjTB0.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-BfDjRRN_.mjs → acorex-modules-auth-password.component-D16ms36y.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-BfDjRRN_.mjs.map → acorex-modules-auth-password.component-D16ms36y.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-password.component-DZJ1qwfa.mjs → acorex-modules-auth-password.component-WA-CA0Ln.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-password.component-DZJ1qwfa.mjs.map → acorex-modules-auth-password.component-WA-CA0Ln.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-routes-Bw7nXDvx.mjs → acorex-modules-auth-routes-C3ye31RS.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-Bw7nXDvx.mjs.map → acorex-modules-auth-routes-C3ye31RS.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-DKStBo1V.mjs → acorex-modules-auth-two-factor.module-CkZCBo0B.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-two-factor.module-DKStBo1V.mjs.map → acorex-modules-auth-two-factor.module-CkZCBo0B.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-backend.mjs +14 -16
- package/fesm2022/acorex-modules-backend.mjs.map +1 -1
- package/package.json +7 -7
- package/application-management/lib/actions/index.d.ts +0 -1
- package/application-management/lib/actions/show-detail.action.d.ts +0 -8
- package/esm2022/application-management/lib/actions/index.mjs +0 -2
- package/esm2022/application-management/lib/actions/show-detail.action.mjs +0 -25
- package/fesm2022/acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs.map +0 -1
@@ -1,16 +1,15 @@
|
|
1
1
|
import { AXPEntityDetailViewModelResolver, AXPEntityDefinitionRegistryService } from '@acorex/platform/layout/entity';
|
2
|
-
import { AXPRootLayoutComponent } from '@acorex/platform/themes/default';
|
2
|
+
import { AXPEntityDetailListViewComponent, AXPRootLayoutComponent } from '@acorex/platform/themes/default';
|
3
3
|
import * as i1$1 from '@acorex/platform/workflow';
|
4
|
-
import { AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
|
4
|
+
import { AXPWorkflowService, AXPWorkflowAction, AXPWorkflowModule } from '@acorex/platform/workflow';
|
5
5
|
import * as i0 from '@angular/core';
|
6
|
-
import { inject,
|
6
|
+
import { inject, signal, Component, ChangeDetectionStrategy, Injectable, Injector, NgModule, Optional, Inject } from '@angular/core';
|
7
7
|
import * as i2 from '@angular/router';
|
8
8
|
import { ActivatedRoute, RouterModule } from '@angular/router';
|
9
|
-
import { AXPWorkflowNavigateAction, isSmallScreen, getChildDrawer, AXPStickyDirective, AXPGridLayoutDirective, AXPDataGenerator, AXPStorageService, AXPEntityDataProviderImpl, AXPEntityQueryType, AXPEntityCommandScope } from '@acorex/platform/common';
|
10
9
|
import { AXActionSheetModule } from '@acorex/components/action-sheet';
|
11
|
-
import * as
|
10
|
+
import * as i8 from '@acorex/components/breadcrumbs';
|
12
11
|
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
13
|
-
import * as
|
12
|
+
import * as i7 from '@acorex/components/button';
|
14
13
|
import { AXButtonModule } from '@acorex/components/button';
|
15
14
|
import * as i3 from '@acorex/components/decorators';
|
16
15
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
@@ -22,9 +21,11 @@ import * as i5 from '@acorex/components/form';
|
|
22
21
|
import { AXFormModule } from '@acorex/components/form';
|
23
22
|
import { AXLoadingModule } from '@acorex/components/loading';
|
24
23
|
import { AXPopoverModule } from '@acorex/components/popover';
|
24
|
+
import * as i6 from '@acorex/components/tabs';
|
25
25
|
import { AXTabsModule } from '@acorex/components/tabs';
|
26
26
|
import { AXTranslationModule } from '@acorex/core/translation';
|
27
|
-
import
|
27
|
+
import { isSmallScreen, getChildDrawer, AXPStickyDirective, AXPGridLayoutDirective, AXPWorkflowNavigateAction, AXPDataGenerator, AXPStorageService, AXPEntityDataProviderImpl, AXPEntityQueryType, AXPEntityCommandScope } from '@acorex/platform/common';
|
28
|
+
import * as i9 from '@acorex/platform/layout/builder';
|
28
29
|
import { AXPLayoutBuilderModule, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
|
29
30
|
import { AXPWidgetsModule } from '@acorex/platform/widgets';
|
30
31
|
import * as i1 from '@angular/common';
|
@@ -32,37 +33,22 @@ import { CommonModule } from '@angular/common';
|
|
32
33
|
import { Store } from '@ngrx/store';
|
33
34
|
import { applySortArray, applyFilterArray } from '@acorex/platform/core';
|
34
35
|
|
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
36
|
class AXPModuleEntityDetailViewComponent {
|
57
37
|
constructor() {
|
58
38
|
this.activeRoute = inject(ActivatedRoute);
|
39
|
+
this.workflow = inject(AXPWorkflowService);
|
59
40
|
this.vm = this.activeRoute.snapshot.data['vm'];
|
60
41
|
//
|
61
42
|
this.store = inject((Store));
|
62
43
|
this.isSM = this.store.select(isSmallScreen());
|
63
44
|
this.isOpen = this.store.select(getChildDrawer());
|
45
|
+
this.selectedRelatedIEntityTabIndex = signal(0);
|
64
46
|
this.selectedDetailTabIndex = signal(0);
|
65
47
|
}
|
48
|
+
handleActiveRelatedEntityChanged(e) {
|
49
|
+
this.selectedRelatedIEntityTabIndex.set(e.index);
|
50
|
+
this.vm.sections;
|
51
|
+
}
|
66
52
|
handleActiveDetailTabChanged(e) {
|
67
53
|
this.selectedDetailTabIndex.set(e.index);
|
68
54
|
}
|
@@ -70,11 +56,11 @@ class AXPModuleEntityDetailViewComponent {
|
|
70
56
|
this.vm.destroy();
|
71
57
|
}
|
72
58
|
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-
|
59
|
+
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-mt-4\" [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 @if(vm.relatedEntities().length) {\n <ax-tabs\n [look]=\"'with-line'\"\n class=\"ax-mt-2 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"e.title()\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\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: "component", type: i6.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i6.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i7.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: i7.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i7.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i8.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i8.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
|
74
60
|
//
|
75
|
-
AXPLayoutBuilderModule }, { kind: "component", type:
|
61
|
+
AXPLayoutBuilderModule }, { kind: "component", type: i9.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i9.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
62
|
//
|
77
|
-
AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
63
|
+
AXTranslationModule }, { kind: "component", type: AXPEntityDetailListViewComponent, selector: "axp-entity-detail-list-view", inputs: ["viewModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
78
64
|
}
|
79
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPModuleEntityDetailViewComponent, decorators: [{
|
80
66
|
type: Component,
|
@@ -99,9 +85,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
99
85
|
AXPGridLayoutDirective,
|
100
86
|
//
|
101
87
|
AXTranslationModule,
|
102
|
-
|
88
|
+
AXPEntityDetailListViewComponent,
|
89
|
+
], 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-mt-4\" [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 @if(vm.relatedEntities().length) {\n <ax-tabs\n [look]=\"'with-line'\"\n class=\"ax-mt-2 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"e.title()\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>\n" }]
|
103
90
|
}] });
|
104
91
|
|
92
|
+
class AXPShowModuleEntityDetailViewAction extends AXPWorkflowAction {
|
93
|
+
constructor() {
|
94
|
+
super(...arguments);
|
95
|
+
this.navigation = inject(AXPWorkflowNavigateAction);
|
96
|
+
}
|
97
|
+
async execute(context) {
|
98
|
+
const [module, entity] = context.getVariable('entity').split('.');
|
99
|
+
const { id } = context.getVariable('data');
|
100
|
+
const newPayload = {
|
101
|
+
commands: `/console/module-designer/m/${module}/e/${entity}/${id}/view`,
|
102
|
+
};
|
103
|
+
context.setVariable('payload', newPayload);
|
104
|
+
this.navigation.execute(context);
|
105
|
+
}
|
106
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
107
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction }); }
|
108
|
+
}
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPShowModuleEntityDetailViewAction, decorators: [{
|
110
|
+
type: Injectable
|
111
|
+
}] });
|
105
112
|
const AXPCreateModuleEntityWorkflow = {
|
106
113
|
startStepId: 'show-popup',
|
107
114
|
steps: {
|
@@ -160,7 +167,7 @@ const routes = [
|
|
160
167
|
children: [
|
161
168
|
{
|
162
169
|
path: 'module-designer',
|
163
|
-
loadComponent: () => import('./acorex-modules-application-management-module-designer.component-
|
170
|
+
loadComponent: () => import('./acorex-modules-application-management-module-designer.component-C-lY0Apl.mjs').then((c) => c.AXMModuleDesignerComponent),
|
164
171
|
children: [
|
165
172
|
{
|
166
173
|
path: 'm/:module',
|
@@ -332,6 +339,26 @@ const PERMISSIONS = Array.from({ length: 5 }).map((_, i) => {
|
|
332
339
|
isArchived: AXPDataGenerator.boolean(),
|
333
340
|
};
|
334
341
|
});
|
342
|
+
const PROPERTIES = Array.from({ length: 10 }).map((_, i) => {
|
343
|
+
const source = [
|
344
|
+
'property1',
|
345
|
+
'property2',
|
346
|
+
'property3',
|
347
|
+
'property4',
|
348
|
+
'property5',
|
349
|
+
'property6',
|
350
|
+
'property7',
|
351
|
+
'property8',
|
352
|
+
];
|
353
|
+
const name = AXPDataGenerator.pick(source);
|
354
|
+
return {
|
355
|
+
id: AXPDataGenerator.uuid(),
|
356
|
+
entityId: AXPDataGenerator.pick(ENTITIES).id,
|
357
|
+
name: name,
|
358
|
+
title: name,
|
359
|
+
path: name,
|
360
|
+
};
|
361
|
+
});
|
335
362
|
|
336
363
|
class AXPApplicationManagementService {
|
337
364
|
constructor(injector) {
|
@@ -356,7 +383,7 @@ class AXPApplicationManagementService {
|
|
356
383
|
this._entityDataProvider.initial(ENTITIES);
|
357
384
|
//
|
358
385
|
this._propertyDataProvider = new AXPEntityDataProviderImpl(storageService, 'properties');
|
359
|
-
this._propertyDataProvider.initial(
|
386
|
+
this._propertyDataProvider.initial(PROPERTIES);
|
360
387
|
//
|
361
388
|
this._permissionDataProvider = new AXPEntityDataProviderImpl(storageService, 'permissions');
|
362
389
|
this._permissionDataProvider.initial(PERMISSIONS);
|
@@ -681,7 +708,7 @@ async function applicationEntityFactory(injector) {
|
|
681
708
|
columns: ['application.title', 'module.title'],
|
682
709
|
conditions: [
|
683
710
|
{
|
684
|
-
name: '
|
711
|
+
name: 'applicationId',
|
685
712
|
operator: {
|
686
713
|
type: 'equal',
|
687
714
|
},
|
@@ -694,7 +721,7 @@ async function applicationEntityFactory(injector) {
|
|
694
721
|
columns: ['name', 'title', 'isArchived'],
|
695
722
|
conditions: [
|
696
723
|
{
|
697
|
-
name: '
|
724
|
+
name: 'applicationId',
|
698
725
|
operator: {
|
699
726
|
type: 'equal',
|
700
727
|
},
|
@@ -1262,7 +1289,21 @@ async function entityEntityFactory(injector) {
|
|
1262
1289
|
individual: 'Entity',
|
1263
1290
|
plural: 'Entities',
|
1264
1291
|
},
|
1265
|
-
relatedEntities: [
|
1292
|
+
relatedEntities: [
|
1293
|
+
{
|
1294
|
+
entity: 'application-management.property',
|
1295
|
+
columns: ['entity.title', 'name', 'title', 'isArchived'],
|
1296
|
+
conditions: [
|
1297
|
+
{
|
1298
|
+
name: 'entityId',
|
1299
|
+
operator: {
|
1300
|
+
type: 'equal',
|
1301
|
+
},
|
1302
|
+
value: 'id',
|
1303
|
+
},
|
1304
|
+
],
|
1305
|
+
},
|
1306
|
+
],
|
1266
1307
|
groups: [
|
1267
1308
|
{
|
1268
1309
|
id: 'entity',
|
@@ -1838,7 +1879,7 @@ async function modulesEntityFactory(injector) {
|
|
1838
1879
|
columns: ['module.title', 'name', 'title', 'isArchived'],
|
1839
1880
|
conditions: [
|
1840
1881
|
{
|
1841
|
-
name: '
|
1882
|
+
name: 'moduleId',
|
1842
1883
|
operator: {
|
1843
1884
|
type: 'equal',
|
1844
1885
|
},
|
@@ -1851,7 +1892,7 @@ async function modulesEntityFactory(injector) {
|
|
1851
1892
|
columns: ['module.title', 'name', 'title', 'isArchived'],
|
1852
1893
|
conditions: [
|
1853
1894
|
{
|
1854
|
-
name: '
|
1895
|
+
name: 'moduleId',
|
1855
1896
|
operator: {
|
1856
1897
|
type: 'equal',
|
1857
1898
|
},
|
@@ -1864,7 +1905,7 @@ async function modulesEntityFactory(injector) {
|
|
1864
1905
|
columns: ['module.title', 'name', 'title', 'isArchived'],
|
1865
1906
|
conditions: [
|
1866
1907
|
{
|
1867
|
-
name: '
|
1908
|
+
name: 'moduleId',
|
1868
1909
|
operator: {
|
1869
1910
|
type: 'equal',
|
1870
1911
|
},
|
@@ -2521,20 +2562,22 @@ async function propertyEntityFactory(injector) {
|
|
2521
2562
|
dataType: 'boolean',
|
2522
2563
|
interface: {
|
2523
2564
|
type: AXPWidgetsCatalog.toggle,
|
2565
|
+
options: {
|
2566
|
+
falsyText: 'False',
|
2567
|
+
trulyText: 'True',
|
2568
|
+
},
|
2524
2569
|
},
|
2525
2570
|
},
|
2526
2571
|
},
|
2527
2572
|
{
|
2528
|
-
name: 'schema.interface
|
2529
|
-
title: '
|
2573
|
+
name: 'schema.interface',
|
2574
|
+
title: 'Interface',
|
2530
2575
|
groupId: 'interface',
|
2531
2576
|
schema: {
|
2532
|
-
dataType: '
|
2577
|
+
dataType: 'object',
|
2533
2578
|
interface: {
|
2534
|
-
type: AXPWidgetsCatalog.
|
2535
|
-
options: {
|
2536
|
-
dataSource: Object.values(AXPWidgetsCatalog),
|
2537
|
-
},
|
2579
|
+
type: AXPWidgetsCatalog.widgetSelector,
|
2580
|
+
options: {},
|
2538
2581
|
},
|
2539
2582
|
},
|
2540
2583
|
},
|
@@ -2547,7 +2590,6 @@ async function propertyEntityFactory(injector) {
|
|
2547
2590
|
{ name: 'schema.defaultValue' },
|
2548
2591
|
{ name: 'schema.defaultValue' },
|
2549
2592
|
{ name: 'schema.nullable' },
|
2550
|
-
{ name: 'schema.interface.type' },
|
2551
2593
|
],
|
2552
2594
|
commands: {
|
2553
2595
|
create: {
|
@@ -2565,6 +2607,7 @@ async function propertyEntityFactory(injector) {
|
|
2565
2607
|
},
|
2566
2608
|
update: {
|
2567
2609
|
execute: async (data) => {
|
2610
|
+
debugger;
|
2568
2611
|
return new Promise((resolve) => {
|
2569
2612
|
setTimeout(async () => {
|
2570
2613
|
await dataService.propertyDataProvider.updateOne(data.id, data);
|
@@ -2665,7 +2708,7 @@ async function propertyEntityFactory(injector) {
|
|
2665
2708
|
},
|
2666
2709
|
},
|
2667
2710
|
{
|
2668
|
-
name: 'schema.interface
|
2711
|
+
name: 'schema.interface',
|
2669
2712
|
layout: {
|
2670
2713
|
positions: {
|
2671
2714
|
lg: {
|
@@ -2740,11 +2783,11 @@ async function propertyEntityFactory(injector) {
|
|
2740
2783
|
},
|
2741
2784
|
},
|
2742
2785
|
{
|
2743
|
-
name: 'schema.interface
|
2786
|
+
name: 'schema.interface',
|
2744
2787
|
layout: {
|
2745
2788
|
positions: {
|
2746
2789
|
lg: {
|
2747
|
-
colSpan:
|
2790
|
+
colSpan: 12,
|
2748
2791
|
},
|
2749
2792
|
},
|
2750
2793
|
},
|
@@ -2816,11 +2859,11 @@ async function propertyEntityFactory(injector) {
|
|
2816
2859
|
},
|
2817
2860
|
},
|
2818
2861
|
{
|
2819
|
-
name: 'schema.interface
|
2862
|
+
name: 'schema.interface',
|
2820
2863
|
layout: {
|
2821
2864
|
positions: {
|
2822
2865
|
lg: {
|
2823
|
-
colSpan:
|
2866
|
+
colSpan: 12,
|
2824
2867
|
},
|
2825
2868
|
},
|
2826
2869
|
},
|