@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.
Files changed (49) hide show
  1. package/application-management/lib/application-management-mock-data.d.ts +7 -0
  2. package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +3 -0
  3. package/application-management/lib/module-designer/module-designer.component.d.ts +3 -1
  4. package/application-management/lib/workflows/create-module-entity.workflow.d.ts +8 -1
  5. package/backend/lib/data/api/comment.service.d.ts +7 -6
  6. package/esm2022/application-management/lib/application-management-mock-data.mjs +21 -1
  7. package/esm2022/application-management/lib/application-management.module.mjs +2 -3
  8. package/esm2022/application-management/lib/application-management.service.mjs +3 -3
  9. package/esm2022/application-management/lib/entities/applications.entity.mjs +3 -3
  10. package/esm2022/application-management/lib/entities/entity.entity.mjs +16 -2
  11. package/esm2022/application-management/lib/entities/modules.entity.mjs +4 -4
  12. package/esm2022/application-management/lib/entities/property.entity.mjs +16 -14
  13. package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +18 -8
  14. package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +13 -5
  15. package/esm2022/application-management/lib/services/context-menu.service.mjs +1 -2
  16. package/esm2022/application-management/lib/workflows/create-module-entity.workflow.mjs +25 -1
  17. package/esm2022/auth/lib/account/profile/profile-slot.component.mjs +3 -11
  18. package/esm2022/backend/lib/backend.module.mjs +2 -2
  19. package/esm2022/backend/lib/data/api/comment.service.mjs +14 -16
  20. package/fesm2022/{acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs → acorex-modules-application-management-module-designer.component-C-lY0Apl.mjs} +16 -9
  21. package/fesm2022/acorex-modules-application-management-module-designer.component-C-lY0Apl.mjs.map +1 -0
  22. package/fesm2022/acorex-modules-application-management.mjs +96 -53
  23. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  24. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-CS3UFdX0.mjs → acorex-modules-auth-acorex-modules-auth-4OzzidjS.mjs} +10 -18
  25. package/fesm2022/acorex-modules-auth-acorex-modules-auth-4OzzidjS.mjs.map +1 -0
  26. package/fesm2022/{acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs → acorex-modules-auth-app-chooser.component-CHTEeWgx.mjs} +2 -2
  27. package/fesm2022/{acorex-modules-auth-app-chooser.component-BlJbIMKi.mjs.map → acorex-modules-auth-app-chooser.component-CHTEeWgx.mjs.map} +1 -1
  28. package/fesm2022/{acorex-modules-auth-login.module-DGBKGxI3.mjs → acorex-modules-auth-login.module-DMit4yw0.mjs} +4 -4
  29. package/fesm2022/{acorex-modules-auth-login.module-DGBKGxI3.mjs.map → acorex-modules-auth-login.module-DMit4yw0.mjs.map} +1 -1
  30. package/fesm2022/{acorex-modules-auth-master.layout-B_8Sfw0M.mjs → acorex-modules-auth-master.layout-BCYIjTB0.mjs} +2 -2
  31. package/fesm2022/{acorex-modules-auth-master.layout-B_8Sfw0M.mjs.map → acorex-modules-auth-master.layout-BCYIjTB0.mjs.map} +1 -1
  32. package/fesm2022/{acorex-modules-auth-password.component-BfDjRRN_.mjs → acorex-modules-auth-password.component-D16ms36y.mjs} +2 -2
  33. package/fesm2022/{acorex-modules-auth-password.component-BfDjRRN_.mjs.map → acorex-modules-auth-password.component-D16ms36y.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-auth-password.component-DZJ1qwfa.mjs → acorex-modules-auth-password.component-WA-CA0Ln.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-auth-password.component-DZJ1qwfa.mjs.map → acorex-modules-auth-password.component-WA-CA0Ln.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-auth-routes-Bw7nXDvx.mjs → acorex-modules-auth-routes-C3ye31RS.mjs} +2 -2
  37. package/fesm2022/{acorex-modules-auth-routes-Bw7nXDvx.mjs.map → acorex-modules-auth-routes-C3ye31RS.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-auth-two-factor.module-DKStBo1V.mjs → acorex-modules-auth-two-factor.module-CkZCBo0B.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-auth-two-factor.module-DKStBo1V.mjs.map → acorex-modules-auth-two-factor.module-CkZCBo0B.mjs.map} +1 -1
  40. package/fesm2022/acorex-modules-auth.mjs +1 -1
  41. package/fesm2022/acorex-modules-backend.mjs +14 -16
  42. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  43. package/package.json +7 -7
  44. package/application-management/lib/actions/index.d.ts +0 -1
  45. package/application-management/lib/actions/show-detail.action.d.ts +0 -8
  46. package/esm2022/application-management/lib/actions/index.mjs +0 -2
  47. package/esm2022/application-management/lib/actions/show-detail.action.mjs +0 -25
  48. package/fesm2022/acorex-modules-application-management-module-designer.component-Bgq9-BVv.mjs.map +0 -1
  49. 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, Injectable, signal, Component, ChangeDetectionStrategy, Injector, NgModule, Optional, Inject } from '@angular/core';
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 i7 from '@acorex/components/breadcrumbs';
10
+ import * as i8 from '@acorex/components/breadcrumbs';
12
11
  import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
13
- import * as i6 from '@acorex/components/button';
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 * as i8 from '@acorex/platform/layout/builder';
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-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:
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: 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:
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
- ], 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" }]
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-Bgq9-BVv.mjs').then((c) => c.AXMModuleDesignerComponent),
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: 'application.id',
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: 'application.id',
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: 'module.id',
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: 'module.id',
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: 'module.id',
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.type',
2529
- title: 'Data Type',
2573
+ name: 'schema.interface',
2574
+ title: 'Interface',
2530
2575
  groupId: 'interface',
2531
2576
  schema: {
2532
- dataType: 'string',
2577
+ dataType: 'object',
2533
2578
  interface: {
2534
- type: AXPWidgetsCatalog.select,
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.type',
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.type',
2786
+ name: 'schema.interface',
2744
2787
  layout: {
2745
2788
  positions: {
2746
2789
  lg: {
2747
- colSpan: 6,
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.type',
2862
+ name: 'schema.interface',
2820
2863
  layout: {
2821
2864
  positions: {
2822
2865
  lg: {
2823
- colSpan: 6,
2866
+ colSpan: 12,
2824
2867
  },
2825
2868
  },
2826
2869
  },