@acorex-platform/framework-client 0.0.30 → 0.0.32
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/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs → acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs} +23 -2
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-common.mjs +673 -110
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-core.mjs +76 -7
- package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +3 -6
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +469 -73
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CJemNxCu.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Bu8LLCVa.mjs} +3321 -2163
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Bu8LLCVa.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DQXGk8nF.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-EU1dgVH_.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-DQXGk8nF.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-EU1dgVH_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DSLUUXfQ.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-DNBhGkO8.mjs} +43 -15
- package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-DNBhGkO8.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-B3__csKW.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs.map → acorex-platform-framework-client-layout-entity-file-list-popup.component-B3__csKW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-uf51NO5m.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-DtNSVjeF.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-uf51NO5m.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-DtNSVjeF.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs +37 -6
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +148 -130
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-D3pnOGmB.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-D3pnOGmB.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1127 -717
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-realtime.mjs +70 -5
- package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-runtime.mjs +121 -6
- package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-DCpl6AXq.mjs} +51 -12
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-DCpl6AXq.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +770 -679
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-shared-settings.provider-D2XPkc71.mjs → acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs} +76 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +309 -29
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
- package/package.json +7 -7
- package/types/acorex-platform-framework-client-common.d.ts +137 -9
- package/types/acorex-platform-framework-client-core.d.ts +4 -1
- package/types/acorex-platform-framework-client-layout-components.d.ts +139 -20
- package/types/acorex-platform-framework-client-layout-entity.d.ts +515 -252
- package/types/acorex-platform-framework-client-layout-views.d.ts +48 -0
- package/types/acorex-platform-framework-client-layout-widget-core.d.ts +2 -2
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +130 -80
- package/types/acorex-platform-framework-client-realtime.d.ts +39 -2
- package/types/acorex-platform-framework-client-runtime.d.ts +56 -5
- package/types/acorex-platform-framework-client-themes-default.d.ts +144 -14
- package/types/acorex-platform-framework-client-themes-shared.d.ts +36 -3
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-CJemNxCu.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-DSLUUXfQ.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-D2XPkc71.mjs.map +0 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { AXActionSheetModule } from '@acorex/components/action-sheet';
|
|
2
2
|
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
3
|
-
import * as i3
|
|
3
|
+
import * as i3 from '@acorex/components/button';
|
|
4
4
|
import { AXButtonModule } from '@acorex/components/button';
|
|
5
5
|
import * as i2 from '@acorex/components/decorators';
|
|
6
6
|
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
7
7
|
import { AXDialogModule } from '@acorex/components/dialog';
|
|
8
8
|
import { AXDrawerModule } from '@acorex/components/drawer';
|
|
9
9
|
import { AXDropdownModule } from '@acorex/components/dropdown';
|
|
10
|
-
import * as i1 from '@acorex/components/form';
|
|
10
|
+
import * as i1$1 from '@acorex/components/form';
|
|
11
11
|
import { AXFormModule } from '@acorex/components/form';
|
|
12
12
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
13
13
|
import { AXPopoverModule } from '@acorex/components/popover';
|
|
14
|
-
import * as
|
|
14
|
+
import * as i4 from '@acorex/components/tabs';
|
|
15
15
|
import { AXTabsModule } from '@acorex/components/tabs';
|
|
16
|
-
import * as i3$
|
|
16
|
+
import * as i3$1 from '@acorex/core/translation';
|
|
17
17
|
import { AXTranslationModule } from '@acorex/core/translation';
|
|
18
18
|
import { AXPAuthModule } from '@acorex-platform/framework-client/auth';
|
|
19
19
|
import * as i1$2 from '@acorex-platform/framework-client/core';
|
|
@@ -26,38 +26,77 @@ import { AXPPageLayoutBaseComponent, AXPPageLayoutComponent, AXPPageLayoutBase }
|
|
|
26
26
|
import { AXPLayoutThemeService } from '@acorex-platform/framework-client/themes/shared';
|
|
27
27
|
import { AXPWidgetsModule } from '@acorex-platform/framework-client/layout/widgets';
|
|
28
28
|
import * as i0 from '@angular/core';
|
|
29
|
-
import { inject, viewChild, signal, effect, ChangeDetectionStrategy, Component
|
|
29
|
+
import { inject, viewChild, signal, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
30
30
|
import { ActivatedRoute, RouterModule } from '@angular/router';
|
|
31
31
|
import { Subject, takeUntil } from 'rxjs';
|
|
32
|
-
import * as i1
|
|
32
|
+
import * as i1 from '@angular/common';
|
|
33
33
|
import { CommonModule } from '@angular/common';
|
|
34
34
|
import { AXPEntityDetailListViewComponent } from './acorex-platform-framework-client-themes-default.mjs';
|
|
35
35
|
|
|
36
36
|
class AXPEntitySingleOverviewComponent {
|
|
37
37
|
constructor() {
|
|
38
|
+
//#region ----- Services & Dependencies -----
|
|
38
39
|
this.activeRoute = inject(ActivatedRoute);
|
|
39
40
|
this.vm = this.activeRoute.snapshot.data['vm'];
|
|
40
41
|
this.widgetContainer = viewChild(AXPWidgetContainerComponent, /* @ts-ignore */
|
|
41
42
|
...(ngDevMode ? [{ debugName: "widgetContainer" }] : /* istanbul ignore next */ []));
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region ----- State Signals -----
|
|
42
45
|
this.selectedRelatedIEntityTabIndex = signal(0, /* @ts-ignore */
|
|
43
46
|
...(ngDevMode ? [{ debugName: "selectedRelatedIEntityTabIndex" }] : /* istanbul ignore next */ []));
|
|
47
|
+
this.recordStylingClass = signal(undefined, /* @ts-ignore */
|
|
48
|
+
...(ngDevMode ? [{ debugName: "recordStylingClass" }] : /* istanbul ignore next */ []));
|
|
49
|
+
this.fieldStylingClassByName = signal({}, /* @ts-ignore */
|
|
50
|
+
...(ngDevMode ? [{ debugName: "fieldStylingClassByName" }] : /* istanbul ignore next */ []));
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region ----- Lifecycle -----
|
|
44
53
|
this.#refresh = effect(() => {
|
|
45
54
|
if (this.vm.updateTrigger()) {
|
|
46
55
|
this.widgetContainer()?.refresh();
|
|
47
56
|
}
|
|
48
57
|
}, /* @ts-ignore */
|
|
49
58
|
...(ngDevMode ? [{ debugName: "#refresh" }] : /* istanbul ignore next */ []));
|
|
59
|
+
this.#styling = effect(() => {
|
|
60
|
+
const data = this.vm.context();
|
|
61
|
+
const sections = this.vm.sections();
|
|
62
|
+
untracked(() => {
|
|
63
|
+
void this.refreshStyling(data, sections);
|
|
64
|
+
});
|
|
65
|
+
}, /* @ts-ignore */
|
|
66
|
+
...(ngDevMode ? [{ debugName: "#styling" }] : /* istanbul ignore next */ []));
|
|
50
67
|
}
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region ----- Lifecycle -----
|
|
70
|
+
#refresh;
|
|
71
|
+
#styling;
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region ----- Event Handlers -----
|
|
51
74
|
handleActiveRelatedEntityChanged(e) {
|
|
52
75
|
this.selectedRelatedIEntityTabIndex.set(e.index);
|
|
53
76
|
}
|
|
54
|
-
|
|
77
|
+
//#endregion
|
|
78
|
+
//#region ----- Styling -----
|
|
79
|
+
fieldStylingClass(name) {
|
|
80
|
+
return this.fieldStylingClassByName()[name];
|
|
81
|
+
}
|
|
82
|
+
async refreshStyling(data, sections) {
|
|
83
|
+
this.recordStylingClass.set(await this.vm.resolveRecordStylingClass(data));
|
|
84
|
+
const fieldNames = sections.flatMap((section) => section.props().map((attr) => attr.name()));
|
|
85
|
+
const fieldClasses = {};
|
|
86
|
+
await Promise.all(fieldNames.map(async (name) => {
|
|
87
|
+
const fieldClass = await this.vm.resolveFieldStylingClass(name, data);
|
|
88
|
+
if (fieldClass) {
|
|
89
|
+
fieldClasses[name] = fieldClass;
|
|
90
|
+
}
|
|
91
|
+
}));
|
|
92
|
+
this.fieldStylingClassByName.set(fieldClasses);
|
|
93
|
+
}
|
|
55
94
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntitySingleOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntitySingleOverviewComponent, isStandalone: true, selector: "axp-entity-single-overview", viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: AXPWidgetContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"grid grid-cols-12 gap-4\">\n <axp-widgets-container [context]=\"vm.context()\">\n @for (section of vm.sections(); track section.name()) {\n <div class=\"card mt-2\" [axp-grid-layout]=\"section.layout()\">\n <ax-form #form>\n <div class=\"card-header py-2! px-4!\">\n <p>\n <span class=\"text-lg! font-semibold\">{{\n section.title() | translate | async\n }}</span>\n <br />\n @if (section.description()) {\n <span class=\"text-sm font-normal opacity-75\">{{\n section.description()\n }}</span>\n }\n </p>\n @if (section.editable()) {\n <ax-button\n class=\"ax-sm\"\n [color]=\"'default'\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"card-body grid! grid-cols-12! gap-4!\">\n @for (attr of section.props(); track $index) {\n <div\n class=\"flex flex-col gap-1\"\n [axp-grid-layout]=\"attr.layout()\"\n [class.hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n @if (attr.showLabel()) {\n <div class=\"font-semibold mb-1\">\n <span>{{ attr.title() | translate | async }}</span>\n </div>\n }\n </div>\n <div>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n @if (attr.description()) {\n <p class=\"text-sm mt-1 font-normal opacity-75\">\n {{ attr.description() | translate | async }}\n </p>\n }\n </div>\n }\n </div>\n </ax-form>\n </div>\n }\n </axp-widgets-container>\n</div>\n\n@if ((vm.relatedEntities() | async)?.length) {\n <ax-tabs\n [look]=\"'classic'\"\n class=\"mt-4 font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <ax-tab-item\n [text]=\"(e.title() | translate | async)!\"\n [key]=\"index.toString()\"\n >\n </ax-tab-item>\n }\n </ax-tabs>\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <div [class.hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view\n [viewModel]=\"e\"\n ></axp-entity-detail-list-view>\n </div>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], 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:
|
|
95
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPEntitySingleOverviewComponent, isStandalone: true, selector: "axp-entity-single-overview", viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: AXPWidgetContainerComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"grid grid-cols-12 gap-4\" [ngClass]=\"recordStylingClass()\">\n <axp-widgets-container [context]=\"vm.context()\">\n @for (section of vm.sections(); track section.name()) {\n <div class=\"card mt-2\" [axp-grid-layout]=\"section.layout()\">\n <ax-form #form>\n <div class=\"card-header py-2! px-4!\">\n <p>\n <span class=\"text-lg! font-semibold\">{{\n section.title() | translate | async\n }}</span>\n <br />\n @if (section.description()) {\n <span class=\"text-sm font-normal opacity-75\">{{\n section.description()\n }}</span>\n }\n </p>\n @if (section.editable()) {\n <ax-button\n class=\"ax-sm\"\n [color]=\"'default'\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"card-body grid! grid-cols-12! gap-4!\">\n @for (attr of section.props(); track $index) {\n <div\n class=\"flex flex-col gap-1\"\n [axp-grid-layout]=\"attr.layout()\"\n [ngClass]=\"fieldStylingClass(attr.name())\"\n [class.hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n @if (attr.showLabel()) {\n <div class=\"font-semibold mb-1\">\n <span>{{ attr.title() | translate | async }}</span>\n </div>\n }\n </div>\n <div>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n @if (attr.description()) {\n <p class=\"text-sm mt-1 font-normal opacity-75\">\n {{ attr.description() | translate | async }}\n </p>\n }\n </div>\n }\n </div>\n </ax-form>\n </div>\n }\n </axp-widgets-container>\n</div>\n\n@if ((vm.relatedEntities() | async)?.length) {\n <ax-tabs\n [look]=\"'classic'\"\n class=\"mt-4 font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <ax-tab-item\n [text]=\"(e.title() | translate | async)!\"\n [key]=\"index.toString()\"\n >\n </ax-tab-item>\n }\n </ax-tabs>\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <div [class.hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view\n [viewModel]=\"e\"\n ></axp-entity-detail-list-view>\n </div>\n }\n}\n", styles: [":host{display:block}.primary,.secondary,.success,.warning,.danger,.accent1,.accent2,.accent3{border-radius:var(--radius-md, .375rem)}.primary{background:rgb(var(--ax-sys-color-primary-lightest-surface))}.secondary{background:rgb(var(--ax-sys-color-secondary-lightest-surface))}.success{background:rgb(var(--ax-sys-color-success-lightest-surface))}.warning{background:rgb(var(--ax-sys-color-warning-lightest-surface))}.danger{background:rgb(var(--ax-sys-color-danger-lightest-surface))}.accent1{background:rgb(var(--ax-sys-color-accent1-lightest-surface))}.accent2{background:rgb(var(--ax-sys-color-accent2-lightest-surface))}.accent3{background:rgb(var(--ax-sys-color-accent3-lightest-surface))}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1$1.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], 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: i4.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i4.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type:
|
|
57
96
|
//
|
|
58
97
|
AXPWidgetCoreModule }, { kind: "component", type: i7.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i7.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[axp-grid-layout]", inputs: ["axp-grid-layout"] }, { kind: "component", type: AXPEntityDetailListViewComponent, selector: "axp-entity-detail-list-view", inputs: ["viewModel"] }, { kind: "ngmodule", type:
|
|
59
98
|
//
|
|
60
|
-
AXTranslationModule }, { kind: "pipe", type: i1
|
|
99
|
+
AXTranslationModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
61
100
|
}
|
|
62
101
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntitySingleOverviewComponent, decorators: [{
|
|
63
102
|
type: Component,
|
|
@@ -82,7 +121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
82
121
|
AXPEntityDetailListViewComponent,
|
|
83
122
|
//
|
|
84
123
|
AXTranslationModule,
|
|
85
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"grid grid-cols-12 gap-4\">\n <axp-widgets-container [context]=\"vm.context()\">\n @for (section of vm.sections(); track section.name()) {\n <div class=\"card mt-2\" [axp-grid-layout]=\"section.layout()\">\n <ax-form #form>\n <div class=\"card-header py-2! px-4!\">\n <p>\n <span class=\"text-lg! font-semibold\">{{\n section.title() | translate | async\n }}</span>\n <br />\n @if (section.description()) {\n <span class=\"text-sm font-normal opacity-75\">{{\n section.description()\n }}</span>\n }\n </p>\n @if (section.editable()) {\n <ax-button\n class=\"ax-sm\"\n [color]=\"'default'\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"card-body grid! grid-cols-12! gap-4!\">\n @for (attr of section.props(); track $index) {\n <div\n class=\"flex flex-col gap-1\"\n [axp-grid-layout]=\"attr.layout()\"\n [class.hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n @if (attr.showLabel()) {\n <div class=\"font-semibold mb-1\">\n <span>{{ attr.title() | translate | async }}</span>\n </div>\n }\n </div>\n <div>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n @if (attr.description()) {\n <p class=\"text-sm mt-1 font-normal opacity-75\">\n {{ attr.description() | translate | async }}\n </p>\n }\n </div>\n }\n </div>\n </ax-form>\n </div>\n }\n </axp-widgets-container>\n</div>\n\n@if ((vm.relatedEntities() | async)?.length) {\n <ax-tabs\n [look]=\"'classic'\"\n class=\"mt-4 font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <ax-tab-item\n [text]=\"(e.title() | translate | async)!\"\n [key]=\"index.toString()\"\n >\n </ax-tab-item>\n }\n </ax-tabs>\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <div [class.hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view\n [viewModel]=\"e\"\n ></axp-entity-detail-list-view>\n </div>\n }\n}\n" }]
|
|
124
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"grid grid-cols-12 gap-4\" [ngClass]=\"recordStylingClass()\">\n <axp-widgets-container [context]=\"vm.context()\">\n @for (section of vm.sections(); track section.name()) {\n <div class=\"card mt-2\" [axp-grid-layout]=\"section.layout()\">\n <ax-form #form>\n <div class=\"card-header py-2! px-4!\">\n <p>\n <span class=\"text-lg! font-semibold\">{{\n section.title() | translate | async\n }}</span>\n <br />\n @if (section.description()) {\n <span class=\"text-sm font-normal opacity-75\">{{\n section.description()\n }}</span>\n }\n </p>\n @if (section.editable()) {\n <ax-button\n class=\"ax-sm\"\n [color]=\"'default'\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"card-body grid! grid-cols-12! gap-4!\">\n @for (attr of section.props(); track $index) {\n <div\n class=\"flex flex-col gap-1\"\n [axp-grid-layout]=\"attr.layout()\"\n [ngClass]=\"fieldStylingClass(attr.name())\"\n [class.hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n @if (attr.showLabel()) {\n <div class=\"font-semibold mb-1\">\n <span>{{ attr.title() | translate | async }}</span>\n </div>\n }\n </div>\n <div>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n @if (attr.description()) {\n <p class=\"text-sm mt-1 font-normal opacity-75\">\n {{ attr.description() | translate | async }}\n </p>\n }\n </div>\n }\n </div>\n </ax-form>\n </div>\n }\n </axp-widgets-container>\n</div>\n\n@if ((vm.relatedEntities() | async)?.length) {\n <ax-tabs\n [look]=\"'classic'\"\n class=\"mt-4 font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <ax-tab-item\n [text]=\"(e.title() | translate | async)!\"\n [key]=\"index.toString()\"\n >\n </ax-tab-item>\n }\n </ax-tabs>\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <div [class.hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view\n [viewModel]=\"e\"\n ></axp-entity-detail-list-view>\n </div>\n }\n}\n", styles: [":host{display:block}.primary,.secondary,.success,.warning,.danger,.accent1,.accent2,.accent3{border-radius:var(--radius-md, .375rem)}.primary{background:rgb(var(--ax-sys-color-primary-lightest-surface))}.secondary{background:rgb(var(--ax-sys-color-secondary-lightest-surface))}.success{background:rgb(var(--ax-sys-color-success-lightest-surface))}.warning{background:rgb(var(--ax-sys-color-warning-lightest-surface))}.danger{background:rgb(var(--ax-sys-color-danger-lightest-surface))}.accent1{background:rgb(var(--ax-sys-color-accent1-lightest-surface))}.accent2{background:rgb(var(--ax-sys-color-accent2-lightest-surface))}.accent3{background:rgb(var(--ax-sys-color-accent3-lightest-surface))}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
86
125
|
}], propDecorators: { widgetContainer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPWidgetContainerComponent), { isSignal: true }] }] } });
|
|
87
126
|
|
|
88
127
|
class AXPEntityMasterSingleViewComponent extends AXPPageLayoutBaseComponent {
|
|
@@ -200,7 +239,7 @@ class AXPEntityMasterSingleViewComponent extends AXPPageLayoutBaseComponent {
|
|
|
200
239
|
provide: AXPPageLayoutBase,
|
|
201
240
|
useExisting: AXPEntityMasterSingleViewComponent,
|
|
202
241
|
},
|
|
203
|
-
], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-content>\n <axp-component-slot name=\"entity-detail-header\"></axp-component-slot>\n <axp-entity-single-overview></axp-entity-single-overview>\n <axp-component-slot name=\"entity-detail-footer\"></axp-component-slot>\n </axp-page-content>\n</axp-page-layout>", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$
|
|
242
|
+
], usesInheritance: true, ngImport: i0, template: "<axp-page-layout *translate=\"let t\">\n <axp-page-content>\n <axp-component-slot name=\"entity-detail-header\"></axp-component-slot>\n <axp-entity-single-overview></axp-entity-single-overview>\n <axp-component-slot name=\"entity-detail-footer\"></axp-component-slot>\n </axp-page-content>\n</axp-page-layout>", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXPAuthModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "component", type: AXPEntitySingleOverviewComponent, selector: "axp-entity-single-overview" }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "ngmodule", type: AXPComponentSlotModule }, { kind: "directive", type: i1$2.AXPComponentSlotDirective, selector: "axp-component-slot", inputs: ["name", "host", "context"], exportAs: ["slot"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
204
243
|
}
|
|
205
244
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPEntityMasterSingleViewComponent, decorators: [{
|
|
206
245
|
type: Component,
|
|
@@ -234,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
234
273
|
}] });
|
|
235
274
|
|
|
236
275
|
export { AXPEntityMasterSingleViewComponent };
|
|
237
|
-
//# sourceMappingURL=acorex-platform-framework-client-themes-default-entity-master-single-view.component-
|
|
276
|
+
//# sourceMappingURL=acorex-platform-framework-client-themes-default-entity-master-single-view.component-DCpl6AXq.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-framework-client-themes-default-entity-master-single-view.component-DCpl6AXq.mjs","sources":["../../../../../libs/framework/client/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.ts","../../../../../libs/framework/client/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/overview/entity-single-overview.component.html","../../../../../libs/framework/client/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.ts","../../../../../libs/framework/client/themes/default/src/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.html"],"sourcesContent":["import { AXActionSheetModule } from '@acorex/components/action-sheet';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetCoreModule, AXPWidgetContainerComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport {\n AXPEntityMasterSingleViewGroupViewModel,\n AXPEntityMasterSingleViewModel,\n} from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWidgetsModule } from '@acorex-platform/framework-client/layout/widgets';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, untracked, viewChild } from '@angular/core';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport { AXPEntityDetailListViewComponent } from '../../entity-detail-list-view/entity-detail-list-view.component';\nimport { AXPGridLayoutDirective } from '@acorex-platform/framework-client/core';\n\n@Component({\n templateUrl: './entity-single-overview.component.html',\n styleUrl: './entity-single-overview.component.css',\n selector: 'axp-entity-single-overview',\n imports: [\n CommonModule,\n RouterModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXButtonModule,\n AXBreadcrumbsModule,\n //\n AXPWidgetCoreModule,\n AXPWidgetsModule,\n AXPGridLayoutDirective,\n AXPEntityDetailListViewComponent,\n //\n AXTranslationModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPEntitySingleOverviewComponent {\n //#region ----- Services & Dependencies -----\n\n private activeRoute = inject(ActivatedRoute);\n\n protected readonly vm = this.activeRoute.snapshot.data['vm'] as AXPEntityMasterSingleViewModel;\n\n private widgetContainer = viewChild(AXPWidgetContainerComponent);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected selectedRelatedIEntityTabIndex = signal(0);\n\n protected recordStylingClass = signal<string | undefined>(undefined);\n\n protected fieldStylingClassByName = signal<Record<string, string>>({});\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n #refresh = effect(() => {\n if (this.vm.updateTrigger()) {\n this.widgetContainer()?.refresh();\n }\n });\n\n #styling = effect(() => {\n const data = this.vm.context();\n const sections = this.vm.sections();\n untracked(() => {\n void this.refreshStyling(data, sections);\n });\n });\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n handleActiveRelatedEntityChanged(e: AXTabStripChangedEvent) {\n this.selectedRelatedIEntityTabIndex.set(e.index);\n }\n\n //#endregion\n\n //#region ----- Styling -----\n\n protected fieldStylingClass(name: string): string | undefined {\n return this.fieldStylingClassByName()[name];\n }\n\n private async refreshStyling(data: unknown, sections: AXPEntityMasterSingleViewGroupViewModel[]): Promise<void> {\n this.recordStylingClass.set(await this.vm.resolveRecordStylingClass(data));\n\n const fieldNames = sections.flatMap((section) => section.props().map((attr) => attr.name()));\n const fieldClasses: Record<string, string> = {};\n await Promise.all(\n fieldNames.map(async (name) => {\n const fieldClass = await this.vm.resolveFieldStylingClass(name, data);\n if (fieldClass) {\n fieldClasses[name] = fieldClass;\n }\n }),\n );\n this.fieldStylingClassByName.set(fieldClasses);\n }\n\n //#endregion\n}\n","<div class=\"grid grid-cols-12 gap-4\" [ngClass]=\"recordStylingClass()\">\n <axp-widgets-container [context]=\"vm.context()\">\n @for (section of vm.sections(); track section.name()) {\n <div class=\"card mt-2\" [axp-grid-layout]=\"section.layout()\">\n <ax-form #form>\n <div class=\"card-header py-2! px-4!\">\n <p>\n <span class=\"text-lg! font-semibold\">{{\n section.title() | translate | async\n }}</span>\n <br />\n @if (section.description()) {\n <span class=\"text-sm font-normal opacity-75\">{{\n section.description()\n }}</span>\n }\n </p>\n @if (section.editable()) {\n <ax-button\n class=\"ax-sm\"\n [color]=\"'default'\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"card-body grid! grid-cols-12! gap-4!\">\n @for (attr of section.props(); track $index) {\n <div\n class=\"flex flex-col gap-1\"\n [axp-grid-layout]=\"attr.layout()\"\n [ngClass]=\"fieldStylingClass(attr.name())\"\n [class.hidden]=\"widget.options()['visibility'] == false\"\n >\n <div>\n @if (attr.showLabel()) {\n <div class=\"font-semibold mb-1\">\n <span>{{ attr.title() | translate | async }}</span>\n </div>\n }\n </div>\n <div>\n <ng-container\n axp-widget-renderer\n [node]=\"attr.node()\"\n [mode]=\"'view'\"\n #widget=\"widgetRenderer\"\n ></ng-container>\n </div>\n @if (attr.description()) {\n <p class=\"text-sm mt-1 font-normal opacity-75\">\n {{ attr.description() | translate | async }}\n </p>\n }\n </div>\n }\n </div>\n </ax-form>\n </div>\n }\n </axp-widgets-container>\n</div>\n\n@if ((vm.relatedEntities() | async)?.length) {\n <ax-tabs\n [look]=\"'classic'\"\n class=\"mt-4 font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <ax-tab-item\n [text]=\"(e.title() | translate | async)!\"\n [key]=\"index.toString()\"\n >\n </ax-tab-item>\n }\n </ax-tabs>\n @for (e of vm.relatedEntities() | async; track $index; let index = $index) {\n <div [class.hidden]=\"$index != selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view\n [viewModel]=\"e\"\n ></axp-entity-detail-list-view>\n </div>\n }\n}\n","\nimport { AXPActionMenuItem, AXPBackButton, AXPBreadcrumbItem, AXPExecuteCommand } from '@acorex-platform/framework-shared/core';\nimport { AXActionSheetModule } from '@acorex/components/action-sheet';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogModule } from '@acorex/components/dialog';\nimport { AXDrawerModule } from '@acorex/components/drawer';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXTabsModule, AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPAuthModule } from '@acorex-platform/framework-client/auth';\n\nimport { AXPContextStore, AXPEntityBroadcastService } from '@acorex-platform/framework-client/core';\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPComponentSlotModule } from '@acorex-platform/framework-client/core';\nimport { AXPThemeLayoutBlockComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPEntityMasterSingleViewModel, AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';\nimport { AXPLayoutThemeService } from '@acorex-platform/framework-client/themes/shared';\nimport { AXPWidgetsModule } from '@acorex-platform/framework-client/layout/widgets';\n\nimport { ChangeDetectionStrategy, Component, effect, inject, untracked } from '@angular/core';\nimport { ActivatedRoute, RouterModule } from '@angular/router';\nimport { Subject, takeUntil } from 'rxjs';\nimport { AXPEntitySingleOverviewComponent } from './overview/entity-single-overview.component';\n\n@Component({\n templateUrl: './entity-master-single-view.component.html',\n imports: [\n RouterModule,\n AXDecoratorModule,\n AXDropdownModule,\n AXPopoverModule,\n AXFormModule,\n AXActionSheetModule,\n AXPAuthModule,\n AXTranslationModule,\n AXDrawerModule,\n AXDialogModule,\n AXLoadingModule,\n AXTabsModule,\n AXButtonModule,\n AXBreadcrumbsModule,\n AXPWidgetCoreModule,\n AXPWidgetsModule,\n AXPEntitySingleOverviewComponent,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXPComponentSlotModule\n],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXPPageLayoutBase,\n useExisting: AXPEntityMasterSingleViewComponent,\n },\n ],\n})\nexport class AXPEntityMasterSingleViewComponent extends AXPPageLayoutBaseComponent {\n private activeRoute = inject(ActivatedRoute);\n protected readonly vm = this.activeRoute.snapshot.data['vm'] as AXPEntityMasterSingleViewModel;\n protected store = inject(AXPLayoutThemeService);\n protected contextStore = inject(AXPContextStore);\n protected entityEvents = inject(AXPEntityBroadcastService);\n protected entityService = inject(AXPEntityService);\n\n private readonly destroyed = new Subject<void>();\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n this.entityEvents\n .listenDataReload()\n .pipe(takeUntil(this.destroyed))\n .subscribe(async (event) => {\n if (event.data.name == `${this.vm.entityDef.module}.${this.vm.entityDef.name}`) {\n const fn = this.vm.entityDef.queries?.byKey?.execute as Function;\n if (fn) {\n const data = await fn(this.vm.context().id);\n this.vm.context.set(data);\n }\n if (this.vm.entityDef.relatedEntities?.length) {\n for (const relatedEntity of this.vm.entityDef.relatedEntities) {\n this.entityEvents.publishLayoutRefresh(relatedEntity.entity);\n }\n }\n }\n });\n }\n\n #syncContext = effect(() => {\n // TODO: this is a hack to sync the context with the vm\n untracked(() => {\n this.contextStore.patch({\n entity: this.vm.context(),\n });\n });\n });\n\n override getPageTitle(): string {\n return this.vm.title();\n }\n\n override getPageDescription(): string {\n return this.vm.description() ?? '';\n }\n\n override getPageBreadcrumbs(): AXPBreadcrumbItem[] {\n return this.vm.beardcrumbs();\n }\n\n override getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return Promise.all(\n this.vm.primaryActions().map(async (tr) => {\n const hidden = await this.vm.evaluateExpressions(tr.hidden as any, this.vm.context());\n if (hidden) return null;\n const disabled = await this.vm.evaluateExpressions(tr.disabled as any, this.vm.context());\n\n return {\n name: tr.name,\n title: tr.title,\n icon: tr.icon,\n color: tr.color,\n disabled,\n command: {\n name: tr.name,\n options: tr.options,\n metadata: tr.metadata,\n },\n };\n }),\n ).then((items) => items.filter(Boolean) as AXPActionMenuItem[]);\n }\n\n override getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return Promise.all(\n this.vm.secondaryActions().map(async (tr) => {\n const hidden = await this.vm.evaluateExpressions(tr.hidden as any, this.vm.context());\n if (hidden) return null;\n const disabled = await this.vm.evaluateExpressions(tr.disabled as any, this.vm.context());\n\n return {\n name: tr.name,\n title: tr.title,\n icon: tr.icon,\n color: tr.color,\n disabled,\n separated: tr.separated,\n command: {\n name: tr.name,\n options: tr.options,\n metadata: tr.metadata,\n },\n };\n }),\n ).then((items) => items.filter(Boolean) as AXPActionMenuItem[]);\n }\n\n override execute(command: AXPExecuteCommand): void {\n if (command) {\n this.vm.execute(command);\n }\n }\n override async getBackButton(): Promise<AXPBackButton | null> {\n return {\n title: await this.translateService.translateAsync(this.vm.title()),\n };\n }\n override onBackButtonClick(): void {\n this.vm.navigateToUp();\n }\n\n ngOnDestroy(): void {\n this.vm.destroy();\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n","<axp-page-layout *translate=\"let t\">\n <axp-page-content>\n <axp-component-slot name=\"entity-detail-header\"></axp-component-slot>\n <axp-entity-single-overview></axp-entity-single-overview>\n <axp-component-slot name=\"entity-detail-footer\"></axp-component-slot>\n </axp-page-content>\n</axp-page-layout>"],"names":["i3","i6","i7","i2"],"mappings":"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"}
|