@acorex-platform/framework-client 0.0.37 → 0.0.46
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-auth.mjs +212 -44
- package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs → acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs} +31 -1
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-ChU2tvyt.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-common.mjs +848 -76
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-core.mjs +273 -96
- package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +292 -11
- package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs} +10 -6
- package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-BqPaHKPM.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs +66 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-property-viewer-inline-code-editor.component-CcpUTEVQ.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs +195 -0
- package/fesm2022/acorex-platform-framework-client-layout-components-resource-appointment-board.component-DCkpgsFH.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +3987 -1020
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +1179 -304
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-C74cBc-K.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dc_NpBx6.mjs} +1697 -323
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-Dc_NpBx6.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-B6nG9dIS.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-Cx-n7ZuA.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-B6nG9dIS.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-Cx-n7ZuA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DLQA_Q2Y.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-BONV249y.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DLQA_Q2Y.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-BONV249y.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-B4wC1iqZ.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-uTG2nFly.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-B4wC1iqZ.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-uTG2nFly.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs +3 -3
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +3854 -3278
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CDpzvn6z.mjs +33191 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CDpzvn6z.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs} +8 -5
- package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs +45 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-value.util-Cb7R1qLO.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs +68 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-column.component-BL621E1r.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs +88 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-edit.component-CVsPKhNl.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs +71 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-code-editor-widget-view.component-BEq4O4al.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs +81 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs} +41 -23
- package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cw3NhWL8.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-4mX8aYzA.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-Cw3NhWL8.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs +71 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-column.component-Clb27Loe.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs +111 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-edit.component-l7q8A-D3.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs +77 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-scheduler-picker-widget-view.component-Cc1AH09b.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BEa-vD6O.mjs} +21 -8
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BEa-vD6O.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs +124 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs +345 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -31985
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-realtime.mjs +2 -1
- package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-runtime.mjs +47 -3
- package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CHLsBvBE.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-DBUwSzvg.mjs.map → acorex-platform-framework-client-themes-default-entity-master-single-view.component-CHLsBvBE.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +373 -70
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs → acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs} +102 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-DIkjSTU7.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +174 -22
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
- package/package.json +2 -2
- package/realtime/README.md +1 -1
- package/types/acorex-platform-framework-client-auth.d.ts +18 -1
- package/types/acorex-platform-framework-client-common.d.ts +209 -8
- package/types/acorex-platform-framework-client-core.d.ts +166 -121
- package/types/acorex-platform-framework-client-layout-builder.d.ts +29 -0
- package/types/acorex-platform-framework-client-layout-components.d.ts +699 -146
- package/types/acorex-platform-framework-client-layout-designer.d.ts +192 -14
- package/types/acorex-platform-framework-client-layout-entity.d.ts +159 -91
- package/types/acorex-platform-framework-client-layout-views.d.ts +16 -0
- package/types/acorex-platform-framework-client-layout-widget-core.d.ts +140 -37
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +235 -117
- package/types/acorex-platform-framework-client-realtime.d.ts +16 -3
- package/types/acorex-platform-framework-client-runtime.d.ts +8 -0
- package/types/acorex-platform-framework-client-themes-default.d.ts +62 -11
- package/types/acorex-platform-framework-client-themes-shared.d.ts +25 -2
- package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CzBr0cRi.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-Bp2cNCPO.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs +0 -77
- package/fesm2022/acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-C74cBc-K.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BDOdcoyN.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared-settings.provider-CpsAIsxj.mjs.map +0 -1
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import * as i1 from '@acorex/components/button';
|
|
2
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
3
|
+
import * as i2 from '@acorex/components/decorators';
|
|
4
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
5
|
+
import { AXPopupService } from '@acorex/components/popup';
|
|
6
|
+
import * as i3 from '@acorex/core/translation';
|
|
7
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
8
|
+
import { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';
|
|
9
|
+
import { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';
|
|
10
|
+
import * as i1$1 from '@angular/common';
|
|
11
|
+
import { CommonModule } from '@angular/common';
|
|
12
|
+
import * as i0 from '@angular/core';
|
|
13
|
+
import { inject, computed, signal, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
14
|
+
|
|
15
|
+
class AXPTriggersWidgetEditComponent extends AXPValueWidgetComponent {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
//#region ---- Services & Dependencies ----
|
|
19
|
+
this.popupService = inject(AXPopupService);
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region ---- Computed Properties ----
|
|
22
|
+
this.disabled = computed(() => this.options()['disabled'], /* @ts-ignore */
|
|
23
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
24
|
+
this.triggers = computed(() => {
|
|
25
|
+
const value = this.getValue();
|
|
26
|
+
return Array.isArray(value) ? value : [];
|
|
27
|
+
}, /* @ts-ignore */
|
|
28
|
+
...(ngDevMode ? [{ debugName: "triggers" }] : /* istanbul ignore next */ []));
|
|
29
|
+
this.hasTriggers = computed(() => {
|
|
30
|
+
return this.triggers().length > 0;
|
|
31
|
+
}, /* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [{ debugName: "hasTriggers" }] : /* istanbul ignore next */ []));
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region ---- Public Methods ----
|
|
36
|
+
getEventPreview(event) {
|
|
37
|
+
const preview = event.length > 50 ? event.substring(0, 50) + '...' : event;
|
|
38
|
+
return preview;
|
|
39
|
+
}
|
|
40
|
+
getActionPreview(action) {
|
|
41
|
+
const actionStr = Array.isArray(action) ? action.join(', ') : action;
|
|
42
|
+
const preview = actionStr.length > 50 ? actionStr.substring(0, 50) + '...' : actionStr;
|
|
43
|
+
return preview;
|
|
44
|
+
}
|
|
45
|
+
getActionFullText(action) {
|
|
46
|
+
return Array.isArray(action) ? action.join('\n') : action;
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region ---- Event Handlers ----
|
|
50
|
+
handleAddTrigger() {
|
|
51
|
+
const newTrigger = {
|
|
52
|
+
event: '',
|
|
53
|
+
action: '',
|
|
54
|
+
};
|
|
55
|
+
const currentTriggers = [...this.triggers()];
|
|
56
|
+
currentTriggers.push(newTrigger);
|
|
57
|
+
this.setValue(currentTriggers);
|
|
58
|
+
}
|
|
59
|
+
handleRemoveTrigger(index) {
|
|
60
|
+
const currentTriggers = [...this.triggers()];
|
|
61
|
+
currentTriggers.splice(index, 1);
|
|
62
|
+
this.setValue(currentTriggers);
|
|
63
|
+
}
|
|
64
|
+
async openEventEditor(index) {
|
|
65
|
+
const trigger = this.triggers()[index];
|
|
66
|
+
if (!trigger)
|
|
67
|
+
return;
|
|
68
|
+
const { AXPTriggerExpressionEditorPopupComponent } = await import('./acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs');
|
|
69
|
+
const result = await this.popupService.open(AXPTriggerExpressionEditorPopupComponent, {
|
|
70
|
+
title: '@general:widgets.triggers.edit-event-expression',
|
|
71
|
+
size: 'lg',
|
|
72
|
+
data: {
|
|
73
|
+
value: signal(trigger.event),
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
if (result?.data?.value) {
|
|
77
|
+
const updatedTriggers = [...this.triggers()];
|
|
78
|
+
updatedTriggers[index] = {
|
|
79
|
+
...updatedTriggers[index],
|
|
80
|
+
event: result.data.value,
|
|
81
|
+
};
|
|
82
|
+
this.setValue(updatedTriggers);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async openActionEditor(index) {
|
|
86
|
+
const trigger = this.triggers()[index];
|
|
87
|
+
if (!trigger)
|
|
88
|
+
return;
|
|
89
|
+
// Convert action to string for editing (if array, join with newlines)
|
|
90
|
+
const actionValue = Array.isArray(trigger.action)
|
|
91
|
+
? trigger.action.join('\n')
|
|
92
|
+
: trigger.action || '';
|
|
93
|
+
const { AXPTriggerExpressionEditorPopupComponent } = await import('./acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs');
|
|
94
|
+
const result = await this.popupService.open(AXPTriggerExpressionEditorPopupComponent, {
|
|
95
|
+
title: '@general:widgets.triggers.edit-action-expression',
|
|
96
|
+
size: 'lg',
|
|
97
|
+
data: {
|
|
98
|
+
value: signal(actionValue),
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
if (result?.data?.value !== undefined) {
|
|
102
|
+
const updatedTriggers = [...this.triggers()];
|
|
103
|
+
// Convert back to array if multiple lines, otherwise keep as string
|
|
104
|
+
const actionResult = result.data.value;
|
|
105
|
+
const action = actionResult.includes('\n')
|
|
106
|
+
? actionResult.split('\n').filter((l) => l.trim())
|
|
107
|
+
: actionResult;
|
|
108
|
+
updatedTriggers[index] = {
|
|
109
|
+
...updatedTriggers[index],
|
|
110
|
+
action: action,
|
|
111
|
+
};
|
|
112
|
+
this.setValue(updatedTriggers);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTriggersWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPTriggersWidgetEditComponent, isStandalone: true, selector: "axp-triggers-widget-editor", usesInheritance: true, ngImport: i0, template: `
|
|
117
|
+
<div class="flex flex-col gap-2">
|
|
118
|
+
@if (hasTriggers()) {
|
|
119
|
+
@for (trigger of triggers(); let i = $index; track i) {
|
|
120
|
+
<div
|
|
121
|
+
class="flex items-center gap-2 px-2 py-1 rounded-lg border shadow-sm lightest-surface hover:shadow-md transition-shadow"
|
|
122
|
+
>
|
|
123
|
+
<!-- Trigger Icon -->
|
|
124
|
+
<div
|
|
125
|
+
class="flex items-center justify-center w-8 h-8 rounded-md bg-pink-100 text-pink-600 font-semibold shrink-0"
|
|
126
|
+
>
|
|
127
|
+
<ax-icon icon="fa-light fa-bolt" ></ax-icon>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<!-- Trigger Details -->
|
|
131
|
+
<div class="flex-1 flex flex-col min-w-0">
|
|
132
|
+
<!-- Event -->
|
|
133
|
+
<div class="flex items-center gap-2">
|
|
134
|
+
<span class="text-xs font-semibold text-gray-500 uppercase tracking-wide w-16">
|
|
135
|
+
{{ '@general:widgets.triggers.event.label' | translate | async }}
|
|
136
|
+
</span>
|
|
137
|
+
<span
|
|
138
|
+
class="text-sm font-mono text-primary cursor-pointer underline truncate"
|
|
139
|
+
(click)="openEventEditor(i)"
|
|
140
|
+
[title]="trigger.event || ''"
|
|
141
|
+
>
|
|
142
|
+
@if (trigger.event) {
|
|
143
|
+
{{ getEventPreview(trigger.event) }}
|
|
144
|
+
} @else {
|
|
145
|
+
<span class="not-italic">
|
|
146
|
+
{{ '@general:widgets.triggers.event.placeholder' | translate | async }}
|
|
147
|
+
</span>
|
|
148
|
+
}
|
|
149
|
+
</span>
|
|
150
|
+
</div>
|
|
151
|
+
|
|
152
|
+
<!-- Action -->
|
|
153
|
+
<div class="flex items-center gap-2">
|
|
154
|
+
<span class="text-xs font-semibold text-gray-500 uppercase tracking-wide w-16">
|
|
155
|
+
{{ '@general:widgets.triggers.action.label' | translate | async }}
|
|
156
|
+
</span>
|
|
157
|
+
<span
|
|
158
|
+
class="text-sm font-mono text-success cursor-pointer underline truncate"
|
|
159
|
+
(click)="openActionEditor(i)"
|
|
160
|
+
[title]="getActionFullText(trigger.action)"
|
|
161
|
+
>
|
|
162
|
+
@if (trigger.action) {
|
|
163
|
+
{{ getActionPreview(trigger.action) }}
|
|
164
|
+
} @else {
|
|
165
|
+
<span class="not-italic">
|
|
166
|
+
{{ '@general:widgets.triggers.action.placeholder' | translate | async }}
|
|
167
|
+
</span>
|
|
168
|
+
}
|
|
169
|
+
</span>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
<!-- Action Buttons -->
|
|
174
|
+
<div class="flex items-center gap-2 shrink-0 ax-sm">
|
|
175
|
+
<ax-button
|
|
176
|
+
look="blank"
|
|
177
|
+
color="danger"
|
|
178
|
+
[disabled]="disabled()"
|
|
179
|
+
(onClick)="handleRemoveTrigger(i)"
|
|
180
|
+
class="px-3"
|
|
181
|
+
>
|
|
182
|
+
<ax-icon icon="fa-light fa-trash-can"></ax-icon>
|
|
183
|
+
</ax-button>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
}
|
|
187
|
+
} @else {
|
|
188
|
+
<axp-state-message
|
|
189
|
+
icon="fa-light fa-bolt"
|
|
190
|
+
[description]="'@general:widgets.triggers.empty-state.title'"
|
|
191
|
+
>
|
|
192
|
+
<ax-button
|
|
193
|
+
slot="actions"
|
|
194
|
+
[text]="'@general:widgets.triggers.add-first-trigger' | translate | async"
|
|
195
|
+
look="twotone"
|
|
196
|
+
[disabled]="disabled()"
|
|
197
|
+
(onClick)="handleAddTrigger()"
|
|
198
|
+
>
|
|
199
|
+
<ax-prefix>
|
|
200
|
+
<ax-icon class="fa-solid fa-add"></ax-icon>
|
|
201
|
+
</ax-prefix>
|
|
202
|
+
</ax-button>
|
|
203
|
+
</axp-state-message>
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
@if (hasTriggers()) {
|
|
207
|
+
<!-- Add Trigger Button -->
|
|
208
|
+
<div class="flex items-center justify-end">
|
|
209
|
+
<ax-button
|
|
210
|
+
[text]="'@general:widgets.triggers.add-trigger' | translate | async"
|
|
211
|
+
look="twotone"
|
|
212
|
+
color="primary"
|
|
213
|
+
[disabled]="disabled()"
|
|
214
|
+
(onClick)="handleAddTrigger()"
|
|
215
|
+
class="px-3"
|
|
216
|
+
>
|
|
217
|
+
<ax-prefix>
|
|
218
|
+
<ax-icon class="fa-solid fa-add"></ax-icon>
|
|
219
|
+
</ax-prefix>
|
|
220
|
+
</ax-button>
|
|
221
|
+
</div>
|
|
222
|
+
}
|
|
223
|
+
</div>
|
|
224
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
225
|
+
}
|
|
226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPTriggersWidgetEditComponent, decorators: [{
|
|
227
|
+
type: Component,
|
|
228
|
+
args: [{
|
|
229
|
+
selector: 'axp-triggers-widget-editor',
|
|
230
|
+
template: `
|
|
231
|
+
<div class="flex flex-col gap-2">
|
|
232
|
+
@if (hasTriggers()) {
|
|
233
|
+
@for (trigger of triggers(); let i = $index; track i) {
|
|
234
|
+
<div
|
|
235
|
+
class="flex items-center gap-2 px-2 py-1 rounded-lg border shadow-sm lightest-surface hover:shadow-md transition-shadow"
|
|
236
|
+
>
|
|
237
|
+
<!-- Trigger Icon -->
|
|
238
|
+
<div
|
|
239
|
+
class="flex items-center justify-center w-8 h-8 rounded-md bg-pink-100 text-pink-600 font-semibold shrink-0"
|
|
240
|
+
>
|
|
241
|
+
<ax-icon icon="fa-light fa-bolt" ></ax-icon>
|
|
242
|
+
</div>
|
|
243
|
+
|
|
244
|
+
<!-- Trigger Details -->
|
|
245
|
+
<div class="flex-1 flex flex-col min-w-0">
|
|
246
|
+
<!-- Event -->
|
|
247
|
+
<div class="flex items-center gap-2">
|
|
248
|
+
<span class="text-xs font-semibold text-gray-500 uppercase tracking-wide w-16">
|
|
249
|
+
{{ '@general:widgets.triggers.event.label' | translate | async }}
|
|
250
|
+
</span>
|
|
251
|
+
<span
|
|
252
|
+
class="text-sm font-mono text-primary cursor-pointer underline truncate"
|
|
253
|
+
(click)="openEventEditor(i)"
|
|
254
|
+
[title]="trigger.event || ''"
|
|
255
|
+
>
|
|
256
|
+
@if (trigger.event) {
|
|
257
|
+
{{ getEventPreview(trigger.event) }}
|
|
258
|
+
} @else {
|
|
259
|
+
<span class="not-italic">
|
|
260
|
+
{{ '@general:widgets.triggers.event.placeholder' | translate | async }}
|
|
261
|
+
</span>
|
|
262
|
+
}
|
|
263
|
+
</span>
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
<!-- Action -->
|
|
267
|
+
<div class="flex items-center gap-2">
|
|
268
|
+
<span class="text-xs font-semibold text-gray-500 uppercase tracking-wide w-16">
|
|
269
|
+
{{ '@general:widgets.triggers.action.label' | translate | async }}
|
|
270
|
+
</span>
|
|
271
|
+
<span
|
|
272
|
+
class="text-sm font-mono text-success cursor-pointer underline truncate"
|
|
273
|
+
(click)="openActionEditor(i)"
|
|
274
|
+
[title]="getActionFullText(trigger.action)"
|
|
275
|
+
>
|
|
276
|
+
@if (trigger.action) {
|
|
277
|
+
{{ getActionPreview(trigger.action) }}
|
|
278
|
+
} @else {
|
|
279
|
+
<span class="not-italic">
|
|
280
|
+
{{ '@general:widgets.triggers.action.placeholder' | translate | async }}
|
|
281
|
+
</span>
|
|
282
|
+
}
|
|
283
|
+
</span>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
|
|
287
|
+
<!-- Action Buttons -->
|
|
288
|
+
<div class="flex items-center gap-2 shrink-0 ax-sm">
|
|
289
|
+
<ax-button
|
|
290
|
+
look="blank"
|
|
291
|
+
color="danger"
|
|
292
|
+
[disabled]="disabled()"
|
|
293
|
+
(onClick)="handleRemoveTrigger(i)"
|
|
294
|
+
class="px-3"
|
|
295
|
+
>
|
|
296
|
+
<ax-icon icon="fa-light fa-trash-can"></ax-icon>
|
|
297
|
+
</ax-button>
|
|
298
|
+
</div>
|
|
299
|
+
</div>
|
|
300
|
+
}
|
|
301
|
+
} @else {
|
|
302
|
+
<axp-state-message
|
|
303
|
+
icon="fa-light fa-bolt"
|
|
304
|
+
[description]="'@general:widgets.triggers.empty-state.title'"
|
|
305
|
+
>
|
|
306
|
+
<ax-button
|
|
307
|
+
slot="actions"
|
|
308
|
+
[text]="'@general:widgets.triggers.add-first-trigger' | translate | async"
|
|
309
|
+
look="twotone"
|
|
310
|
+
[disabled]="disabled()"
|
|
311
|
+
(onClick)="handleAddTrigger()"
|
|
312
|
+
>
|
|
313
|
+
<ax-prefix>
|
|
314
|
+
<ax-icon class="fa-solid fa-add"></ax-icon>
|
|
315
|
+
</ax-prefix>
|
|
316
|
+
</ax-button>
|
|
317
|
+
</axp-state-message>
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
@if (hasTriggers()) {
|
|
321
|
+
<!-- Add Trigger Button -->
|
|
322
|
+
<div class="flex items-center justify-end">
|
|
323
|
+
<ax-button
|
|
324
|
+
[text]="'@general:widgets.triggers.add-trigger' | translate | async"
|
|
325
|
+
look="twotone"
|
|
326
|
+
color="primary"
|
|
327
|
+
[disabled]="disabled()"
|
|
328
|
+
(onClick)="handleAddTrigger()"
|
|
329
|
+
class="px-3"
|
|
330
|
+
>
|
|
331
|
+
<ax-prefix>
|
|
332
|
+
<ax-icon class="fa-solid fa-add"></ax-icon>
|
|
333
|
+
</ax-prefix>
|
|
334
|
+
</ax-button>
|
|
335
|
+
</div>
|
|
336
|
+
}
|
|
337
|
+
</div>
|
|
338
|
+
`,
|
|
339
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
340
|
+
imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPStateMessageComponent],
|
|
341
|
+
}]
|
|
342
|
+
}] });
|
|
343
|
+
|
|
344
|
+
export { AXPTriggersWidgetEditComponent };
|
|
345
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs","sources":["../../../../../libs/framework/client/layout/widgets/src/lib/widgets/property-editors/triggers/triggers-widget-editor.component.ts"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPValueWidgetComponent } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXPWidgetTrigger, AXPWidgetTriggers } from '@acorex-platform/framework-shared/core';\n\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\n\n@Component({\n selector: 'axp-triggers-widget-editor',\n template: `\n <div class=\"flex flex-col gap-2\">\n @if (hasTriggers()) {\n @for (trigger of triggers(); let i = $index; track i) {\n <div\n class=\"flex items-center gap-2 px-2 py-1 rounded-lg border shadow-sm lightest-surface hover:shadow-md transition-shadow\"\n >\n <!-- Trigger Icon -->\n <div\n class=\"flex items-center justify-center w-8 h-8 rounded-md bg-pink-100 text-pink-600 font-semibold shrink-0\"\n >\n <ax-icon icon=\"fa-light fa-bolt\" ></ax-icon>\n </div>\n\n <!-- Trigger Details -->\n <div class=\"flex-1 flex flex-col min-w-0\">\n <!-- Event -->\n <div class=\"flex items-center gap-2\">\n <span class=\"text-xs font-semibold text-gray-500 uppercase tracking-wide w-16\">\n {{ '@general:widgets.triggers.event.label' | translate | async }}\n </span>\n <span\n class=\"text-sm font-mono text-primary cursor-pointer underline truncate\"\n (click)=\"openEventEditor(i)\"\n [title]=\"trigger.event || ''\"\n >\n @if (trigger.event) {\n {{ getEventPreview(trigger.event) }}\n } @else {\n <span class=\"not-italic\">\n {{ '@general:widgets.triggers.event.placeholder' | translate | async }}\n </span>\n }\n </span>\n </div>\n\n <!-- Action -->\n <div class=\"flex items-center gap-2\">\n <span class=\"text-xs font-semibold text-gray-500 uppercase tracking-wide w-16\">\n {{ '@general:widgets.triggers.action.label' | translate | async }}\n </span>\n <span\n class=\"text-sm font-mono text-success cursor-pointer underline truncate\"\n (click)=\"openActionEditor(i)\"\n [title]=\"getActionFullText(trigger.action)\"\n >\n @if (trigger.action) {\n {{ getActionPreview(trigger.action) }}\n } @else {\n <span class=\"not-italic\">\n {{ '@general:widgets.triggers.action.placeholder' | translate | async }}\n </span>\n }\n </span>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div class=\"flex items-center gap-2 shrink-0 ax-sm\">\n <ax-button\n look=\"blank\"\n color=\"danger\"\n [disabled]=\"disabled()\"\n (onClick)=\"handleRemoveTrigger(i)\"\n class=\"px-3\"\n >\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n } @else {\n <axp-state-message\n icon=\"fa-light fa-bolt\"\n [description]=\"'@general:widgets.triggers.empty-state.title'\"\n >\n <ax-button\n slot=\"actions\"\n [text]=\"'@general:widgets.triggers.add-first-trigger' | translate | async\"\n look=\"twotone\"\n [disabled]=\"disabled()\"\n (onClick)=\"handleAddTrigger()\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </axp-state-message>\n }\n\n @if (hasTriggers()) {\n <!-- Add Trigger Button -->\n <div class=\"flex items-center justify-end\">\n <ax-button\n [text]=\"'@general:widgets.triggers.add-trigger' | translate | async\"\n look=\"twotone\"\n color=\"primary\"\n [disabled]=\"disabled()\"\n (onClick)=\"handleAddTrigger()\"\n class=\"px-3\"\n >\n <ax-prefix>\n <ax-icon class=\"fa-solid fa-add\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXButtonModule, AXDecoratorModule, AXTranslationModule, AXPStateMessageComponent],\n})\nexport class AXPTriggersWidgetEditComponent extends AXPValueWidgetComponent<AXPWidgetTriggers> {\n //#region ---- Services & Dependencies ----\n\n private readonly popupService = inject(AXPopupService);\n\n //#endregion\n\n //#region ---- Computed Properties ----\n\n protected disabled = computed<boolean>(() => this.options()['disabled'] as boolean);\n\n protected triggers = computed<AXPWidgetTriggers>(() => {\n const value = this.getValue();\n return Array.isArray(value) ? value : [];\n });\n\n protected hasTriggers = computed<boolean>(() => {\n return this.triggers().length > 0;\n });\n\n //#endregion\n\n //#region ---- Public Methods ----\n\n protected getEventPreview(event: string): string {\n const preview = event.length > 50 ? event.substring(0, 50) + '...' : event;\n return preview;\n }\n\n protected getActionPreview(action: string | string[]): string {\n const actionStr = Array.isArray(action) ? action.join(', ') : action;\n const preview = actionStr.length > 50 ? actionStr.substring(0, 50) + '...' : actionStr;\n return preview;\n }\n\n protected getActionFullText(action: string | string[]): string {\n return Array.isArray(action) ? action.join('\\n') : action;\n }\n\n //#endregion\n\n //#region ---- Event Handlers ----\n\n protected handleAddTrigger(): void {\n const newTrigger: AXPWidgetTrigger = {\n event: '',\n action: '',\n };\n const currentTriggers = [...this.triggers()];\n currentTriggers.push(newTrigger);\n this.setValue(currentTriggers);\n }\n\n protected handleRemoveTrigger(index: number): void {\n const currentTriggers = [...this.triggers()];\n currentTriggers.splice(index, 1);\n this.setValue(currentTriggers);\n }\n\n protected async openEventEditor(index: number): Promise<void> {\n const trigger = this.triggers()[index];\n if (!trigger) return;\n\n const { AXPTriggerExpressionEditorPopupComponent } = await import(\n './trigger-expression-editor-popup.component'\n );\n\n const result = await this.popupService.open(AXPTriggerExpressionEditorPopupComponent, {\n title: '@general:widgets.triggers.edit-event-expression',\n size: 'lg',\n data: {\n value: signal(trigger.event),\n },\n });\n\n if (result?.data?.value) {\n const updatedTriggers = [...this.triggers()];\n updatedTriggers[index] = {\n ...updatedTriggers[index],\n event: result.data.value,\n };\n this.setValue(updatedTriggers);\n }\n }\n\n protected async openActionEditor(index: number): Promise<void> {\n const trigger = this.triggers()[index];\n if (!trigger) return;\n\n // Convert action to string for editing (if array, join with newlines)\n const actionValue = Array.isArray(trigger.action)\n ? trigger.action.join('\\n')\n : trigger.action || '';\n\n const { AXPTriggerExpressionEditorPopupComponent } = await import(\n './trigger-expression-editor-popup.component'\n );\n\n const result = await this.popupService.open(AXPTriggerExpressionEditorPopupComponent, {\n title: '@general:widgets.triggers.edit-action-expression',\n size: 'lg',\n data: {\n value: signal(actionValue),\n },\n });\n\n if (result?.data?.value !== undefined) {\n const updatedTriggers = [...this.triggers()];\n // Convert back to array if multiple lines, otherwise keep as string\n const actionResult = result.data.value;\n const action = actionResult.includes('\\n')\n ? actionResult.split('\\n').filter((l: string) => l.trim())\n : actionResult;\n\n updatedTriggers[index] = {\n ...updatedTriggers[index],\n action: action,\n };\n this.setValue(updatedTriggers);\n }\n }\n\n //#endregion\n}\n\n"],"names":["i3","i4"],"mappings":"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"}
|