@acorex/platform 20.8.9 → 20.8.10
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-auth.mjs +125 -27
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-DVvuLUfF.mjs → acorex-platform-common-common-settings.provider-Bi1RYif5.mjs} +30 -32
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +711 -205
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +420 -127
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +557 -826
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +634 -114
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs} +9 -9
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +3365 -880
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +456 -204
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +18667 -14048
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +413 -171
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +507 -441
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs → acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs} +21 -76
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs +116 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +4 -4
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +6578 -4314
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-native.mjs +8 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +391 -166
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +16 -23
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-53VB-PS_.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-404.component-DVF9soT5.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
- package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +1784 -61
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs} +24 -25
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +408 -305
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +359 -100
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +31 -31
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +14 -2
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +302 -30
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +188 -44
- package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
- package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +160 -38
- package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +854 -125
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
- package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +848 -63
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +80 -47
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +274 -197
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +608 -122
- package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
- package/types/acorex-platform-runtime.d.ts +571 -0
- package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +113 -4
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +5 -4
- package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +162 -81
- package/fesm2022/acorex-platform-common-common-settings.provider-DVvuLUfF.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +0 -111
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +0 -160
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs +0 -1716
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-D2CtNrSn.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +0 -120
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +0 -64
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +0 -1
- package/runtime/index.d.ts +0 -307
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -3,12 +3,13 @@ import { OnInit, EventEmitter } from '@angular/core';
|
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { AXFormComponent } from '@acorex/components/form';
|
|
5
5
|
import { AXValidationSummary } from '@acorex/core/validation';
|
|
6
|
-
import { AXPWidgetNode, AXPWidgetRenderMode,
|
|
6
|
+
import { AXPWidgetNode, AXPWidgetRenderMode, AXPWidgetContainerComponent, AXPWidgetCoreElementAction } from '@acorex/platform/layout/widget-core';
|
|
7
7
|
import { AXDataSource } from '@acorex/cdk/common';
|
|
8
8
|
import { AXPopupSizeType } from '@acorex/components/popup';
|
|
9
9
|
import { AXStepWizardLook } from '@acorex/components/step-wizard';
|
|
10
|
-
import { AXPGridLayoutOptions, AXPExpression, AXPValidationRules, AXPOptionsData,
|
|
10
|
+
import { AXPMetaData, AXPGridLayoutOptions, AXPActionMenuItem, AXPMultiLanguageString, AXPExpression, AXPValidationRules, AXPOptionsData, AXPContextChangeEvent, AXPExecuteCommandResult } from '@acorex/platform/core';
|
|
11
11
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
12
|
+
import { AXPCommand } from '@acorex/platform/runtime';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Extended widget node properties (excluding type, path, name, options, children)
|
|
@@ -29,9 +30,9 @@ type AXPDynamicFormMode = 'view' | 'edit';
|
|
|
29
30
|
type AXPDynamicFormDirection = 'vertical' | 'horizontal' | 'grid';
|
|
30
31
|
interface AXPDynamicFormFieldDefinition {
|
|
31
32
|
path: string;
|
|
32
|
-
title?:
|
|
33
|
+
title?: AXPMultiLanguageString;
|
|
33
34
|
badge?: string;
|
|
34
|
-
description?:
|
|
35
|
+
description?: AXPMultiLanguageString;
|
|
35
36
|
widget: AXPWidgetNode;
|
|
36
37
|
/**
|
|
37
38
|
* Optional per-field rendering mode. Takes precedence over section and form modes.
|
|
@@ -41,8 +42,8 @@ interface AXPDynamicFormFieldDefinition {
|
|
|
41
42
|
}
|
|
42
43
|
interface AXPDynamicFormGroupDefinition {
|
|
43
44
|
name: string;
|
|
44
|
-
title?:
|
|
45
|
-
description?:
|
|
45
|
+
title?: AXPMultiLanguageString;
|
|
46
|
+
description?: AXPMultiLanguageString;
|
|
46
47
|
parameters: AXPDynamicFormFieldDefinition[];
|
|
47
48
|
/**
|
|
48
49
|
* Optional per-section rendering mode. Takes precedence over form mode and is overridden by field mode.
|
|
@@ -64,7 +65,7 @@ interface AXPDialogRef {
|
|
|
64
65
|
/**
|
|
65
66
|
* Manually close the dialog (optional - dialog closes automatically after user interaction)
|
|
66
67
|
*/
|
|
67
|
-
close(): void;
|
|
68
|
+
close(result?: any): void;
|
|
68
69
|
/**
|
|
69
70
|
* Get the form data from the dialog
|
|
70
71
|
*/
|
|
@@ -77,6 +78,17 @@ interface AXPDialogRef {
|
|
|
77
78
|
* Set the loading state of the dialog
|
|
78
79
|
*/
|
|
79
80
|
setLoading(loading: boolean): void;
|
|
81
|
+
/**
|
|
82
|
+
* Deep-merge partial values into the dialog layout context (e.g. after create returns an id).
|
|
83
|
+
*/
|
|
84
|
+
patchContext?(partial: Record<string, unknown>): void;
|
|
85
|
+
/**
|
|
86
|
+
* Invoke a registered widget's public `api()` method (e.g. step-wizard `next`).
|
|
87
|
+
*/
|
|
88
|
+
invokeWidget?(widgetName: string, method: string, options?: {
|
|
89
|
+
setLoading?: (loading: boolean) => void;
|
|
90
|
+
close?: (result?: any) => void;
|
|
91
|
+
}): Promise<void>;
|
|
80
92
|
}
|
|
81
93
|
interface LayoutWidgetOptions {
|
|
82
94
|
name?: string;
|
|
@@ -87,7 +99,7 @@ interface ValueWidgetOptions extends LayoutWidgetOptions {
|
|
|
87
99
|
validations?: AXPValidationRules;
|
|
88
100
|
}
|
|
89
101
|
interface TextBoxOptions extends ValueWidgetOptions {
|
|
90
|
-
placeholder?:
|
|
102
|
+
placeholder?: AXPMultiLanguageString;
|
|
91
103
|
maxLength?: number;
|
|
92
104
|
minLength?: number;
|
|
93
105
|
prefix?: string;
|
|
@@ -98,14 +110,14 @@ interface NumberBoxOptions extends ValueWidgetOptions {
|
|
|
98
110
|
min?: number;
|
|
99
111
|
max?: number;
|
|
100
112
|
step?: number;
|
|
101
|
-
placeholder?:
|
|
113
|
+
placeholder?: AXPMultiLanguageString;
|
|
102
114
|
format?: string;
|
|
103
115
|
}
|
|
104
116
|
interface SelectBoxOptions extends ValueWidgetOptions {
|
|
105
117
|
dataSource: any[] | (() => any[]) | (() => Promise<any[]>) | AXDataSource<any>;
|
|
106
118
|
valueField?: string;
|
|
107
119
|
textField?: string;
|
|
108
|
-
placeholder?:
|
|
120
|
+
placeholder?: AXPMultiLanguageString;
|
|
109
121
|
multiple?: boolean;
|
|
110
122
|
searchable?: boolean;
|
|
111
123
|
clearButton?: boolean;
|
|
@@ -116,7 +128,7 @@ interface DateTimeBoxOptions extends ValueWidgetOptions {
|
|
|
116
128
|
format?: string;
|
|
117
129
|
min?: Date | string;
|
|
118
130
|
max?: Date | string;
|
|
119
|
-
placeholder?:
|
|
131
|
+
placeholder?: AXPMultiLanguageString;
|
|
120
132
|
clearButton?: boolean;
|
|
121
133
|
}
|
|
122
134
|
interface ToggleSwitchOptions extends ValueWidgetOptions {
|
|
@@ -128,7 +140,7 @@ interface LargeTextBoxOptions extends ValueWidgetOptions {
|
|
|
128
140
|
rows?: number;
|
|
129
141
|
maxLength?: number;
|
|
130
142
|
minLength?: number;
|
|
131
|
-
placeholder?:
|
|
143
|
+
placeholder?: AXPMultiLanguageString;
|
|
132
144
|
resizable?: boolean;
|
|
133
145
|
}
|
|
134
146
|
interface ColorBoxOptions extends ValueWidgetOptions {
|
|
@@ -227,12 +239,18 @@ interface AXPFieldsetContainerOptions extends LayoutWidgetOptions {
|
|
|
227
239
|
isOpen?: boolean;
|
|
228
240
|
look?: 'fieldset' | 'card' | 'group' | 'container';
|
|
229
241
|
disabled?: boolean;
|
|
242
|
+
showTitle?: boolean;
|
|
230
243
|
showHeader?: boolean;
|
|
231
244
|
cols?: number;
|
|
232
245
|
}
|
|
246
|
+
/** How optional `hint` text is rendered in `form-field` layout widgets. */
|
|
247
|
+
type AXPFormFieldHintDisplayMode = 'icon' | 'note';
|
|
233
248
|
interface AXPFormFieldOptions extends LayoutWidgetOptions {
|
|
234
249
|
label?: string;
|
|
235
250
|
showLabel?: boolean;
|
|
251
|
+
/** Translated/helper copy; pairing with {@link hintDisplayMode}. */
|
|
252
|
+
hint?: AXPMultiLanguageString;
|
|
253
|
+
hintDisplayMode?: AXPFormFieldHintDisplayMode;
|
|
236
254
|
}
|
|
237
255
|
interface AXPDialogContainerOptions extends LayoutWidgetOptions {
|
|
238
256
|
title?: string;
|
|
@@ -240,14 +258,35 @@ interface AXPDialogContainerOptions extends LayoutWidgetOptions {
|
|
|
240
258
|
size?: AXPopupSizeType;
|
|
241
259
|
closeButton?: boolean;
|
|
242
260
|
context?: any;
|
|
261
|
+
metadata?: AXPMetaData;
|
|
262
|
+
/**
|
|
263
|
+
* When set, invoked on footer action with {@link AXPDialogRef}.
|
|
264
|
+
* Set via {@link IDialogBuilder.onAction}.
|
|
265
|
+
*/
|
|
266
|
+
onAction?: (dialogRef: AXPDialogRef) => unknown | Promise<unknown>;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Popup payload for `AXPDialogRendererComponent` (`data.config`) and the `layout-builder.dialog.config` hook.
|
|
270
|
+
*/
|
|
271
|
+
interface AXPLayoutBuilderDialogConfig {
|
|
272
|
+
title: string;
|
|
273
|
+
context: Record<string, unknown>;
|
|
274
|
+
definition: AXPWidgetNode;
|
|
275
|
+
metadata?: AXPMetaData;
|
|
276
|
+
actions: NonNullable<DialogBuilderState['actions']>;
|
|
277
|
+
onAction?: (dialogRef: AXPDialogRef) => unknown | Promise<unknown>;
|
|
243
278
|
}
|
|
244
279
|
interface RichTextOptions extends ValueWidgetOptions {
|
|
245
|
-
placeholder?:
|
|
280
|
+
placeholder?: AXPMultiLanguageString;
|
|
246
281
|
toolbar?: string[];
|
|
247
282
|
readonly?: boolean;
|
|
283
|
+
/** Max height (px) for scrollable full preview when `showFullContent` is true. */
|
|
284
|
+
height?: number;
|
|
285
|
+
/** When true, view mode renders full HTML in a scrollable area instead of a truncated snippet. */
|
|
286
|
+
showFullContent?: boolean;
|
|
248
287
|
}
|
|
249
288
|
interface PasswordBoxOptions extends ValueWidgetOptions {
|
|
250
|
-
placeholder?:
|
|
289
|
+
placeholder?: AXPMultiLanguageString;
|
|
251
290
|
revealToggle?: boolean;
|
|
252
291
|
maxLength?: number;
|
|
253
292
|
}
|
|
@@ -269,7 +308,7 @@ interface SelectionListOptions extends ValueWidgetOptions {
|
|
|
269
308
|
textField?: string;
|
|
270
309
|
multiple?: boolean;
|
|
271
310
|
searchable?: boolean;
|
|
272
|
-
placeholder?:
|
|
311
|
+
placeholder?: AXPMultiLanguageString;
|
|
273
312
|
}
|
|
274
313
|
interface AXPListWidgetColumn {
|
|
275
314
|
name: string;
|
|
@@ -408,7 +447,9 @@ type DialogBuilderState = AXPWidgetNode & {
|
|
|
408
447
|
interface IActionBuilder {
|
|
409
448
|
cancel(text?: string): IActionBuilder;
|
|
410
449
|
submit(text?: string): IActionBuilder;
|
|
411
|
-
custom(action: AXPActionMenuItem
|
|
450
|
+
custom(action: AXPActionMenuItem & {
|
|
451
|
+
position?: 'prefix' | 'suffix';
|
|
452
|
+
}): IActionBuilder;
|
|
412
453
|
}
|
|
413
454
|
interface ILayoutBuilder {
|
|
414
455
|
grid(delegate: (container: IGridContainerBuilder) => void): ILayoutBuilder;
|
|
@@ -508,6 +549,8 @@ interface IGridContainerBuilder extends IBaseContainerBuilder<IGridContainerBuil
|
|
|
508
549
|
setBackgroundColor(color: string): IGridContainerBuilder;
|
|
509
550
|
setPadding(padding: string): IGridContainerBuilder;
|
|
510
551
|
setMargin(margin: string): IGridContainerBuilder;
|
|
552
|
+
/** Add a grid-item-layout child with optional placement; delegate builds the fieldset content. */
|
|
553
|
+
item(layoutOptions: Partial<AXPGridLayoutOptions> | null | undefined, delegate: (container: IFieldsetContainerBuilder) => void): IGridContainerBuilder;
|
|
511
554
|
}
|
|
512
555
|
interface IPanelContainerBuilder extends IBaseContainerBuilder<IPanelContainerBuilder>, ILayoutContainerBuilder<IPanelContainerBuilder>, IChildContainerBuilder<IPanelContainerBuilder>, IWidgetContainerBuilder<IPanelContainerBuilder> {
|
|
513
556
|
setOptions(options: AXPPanelContainerOptions): IPanelContainerBuilder;
|
|
@@ -659,6 +702,11 @@ declare class AXPLayoutRendererComponent implements OnInit {
|
|
|
659
702
|
*/
|
|
660
703
|
mode: _angular_core.InputSignal<AXPDynamicFormMode>;
|
|
661
704
|
protected widgetTree: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
705
|
+
/**
|
|
706
|
+
* Prefer explicit {@link AXPWidgetNode.mode} on the root node (e.g. dialog flex `mode('view')`)
|
|
707
|
+
* so nested widgets resolve view vs edit correctly; fall back to the layout `mode` input.
|
|
708
|
+
*/
|
|
709
|
+
protected effectiveRenderMode: _angular_core.Signal<"view" | "edit" | "column" | "designer" | "print" | "filter">;
|
|
662
710
|
/**
|
|
663
711
|
* Convert layout data to widget tree when inputs change
|
|
664
712
|
*/
|
|
@@ -685,7 +733,7 @@ declare class AXPLayoutRendererComponent implements OnInit {
|
|
|
685
733
|
/**
|
|
686
734
|
* Handle context change events from widget container (optimized with RxJS)
|
|
687
735
|
*/
|
|
688
|
-
protected handleContextChanged(event:
|
|
736
|
+
protected handleContextChanged(event: AXPContextChangeEvent): void;
|
|
689
737
|
/**
|
|
690
738
|
* Get the form component instance
|
|
691
739
|
*/
|
|
@@ -740,8 +788,40 @@ declare class LayoutBuilderModule {
|
|
|
740
788
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<LayoutBuilderModule>;
|
|
741
789
|
}
|
|
742
790
|
|
|
791
|
+
/**
|
|
792
|
+
* Runs after dialog options and context are prepared and **before** footer customization and popup open.
|
|
793
|
+
* Listeners may mutate {@link AXPLayoutBuilderDialogBeforeOpenPayload.context} by reference.
|
|
794
|
+
*/
|
|
795
|
+
declare const AXP_LAYOUT_BUILDER_DIALOG_BEFORE_OPEN_HOOK_KEY = "layout-builder.dialog.before-open";
|
|
796
|
+
interface AXPLayoutBuilderDialogBeforeOpenPayload {
|
|
797
|
+
context: Record<string, unknown>;
|
|
798
|
+
dialogOptions: AXPDialogContainerOptions;
|
|
799
|
+
}
|
|
800
|
+
/**
|
|
801
|
+
* Runs after builder-defined footer actions exist and **before** the dialog opens.
|
|
802
|
+
* Listeners receive the live `actions.footer.prefix` / `suffix` arrays (same references as the dialog)
|
|
803
|
+
* so they may push, splice, filter, or replace items. They may also mutate {@link AXPLayoutBuilderDialogFooterPayload.context} by reference.
|
|
804
|
+
*/
|
|
805
|
+
declare const AXP_LAYOUT_BUILDER_DIALOG_CONFIG_HOOK_KEY = "layout-builder.dialog.config";
|
|
806
|
+
/**
|
|
807
|
+
* Runs whenever the dialog layout builder context changes (debounced upstream), **after** the popup is visible.
|
|
808
|
+
* Use for side effects that depend on live context (for example values updated by widgets after render).
|
|
809
|
+
* Payload mirrors `AXPDialogRendererComponent` semantics: {@link AXPLayoutBuilderDialogContextChangedPayload.getContext},
|
|
810
|
+
* {@link AXPLayoutBuilderDialogContextChangedPayload.patchContext}, and optional loading state.
|
|
811
|
+
*/
|
|
812
|
+
declare const AXP_LAYOUT_BUILDER_DIALOG_CONTEXT_CHANGED_HOOK_KEY = "layout-builder.dialog.context-changed";
|
|
813
|
+
interface AXPLayoutBuilderDialogContextChangedPayload {
|
|
814
|
+
/** Stable id for this dialog instance; lets listeners correlate repeated emissions or async follow-up work. */
|
|
815
|
+
sessionKey: string;
|
|
816
|
+
getContext: () => Record<string, unknown>;
|
|
817
|
+
metadata: Record<string, unknown> | undefined;
|
|
818
|
+
patchContext: (partial: Record<string, unknown>) => void;
|
|
819
|
+
setLoading: (loading: boolean) => void;
|
|
820
|
+
}
|
|
821
|
+
|
|
743
822
|
declare class AXPLayoutBuilderService {
|
|
744
823
|
private popupService;
|
|
824
|
+
private readonly hookService;
|
|
745
825
|
/**
|
|
746
826
|
* Create a new layout builder
|
|
747
827
|
*/
|
|
@@ -816,23 +896,7 @@ declare class AXPLayoutConversionService {
|
|
|
816
896
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutConversionService>;
|
|
817
897
|
}
|
|
818
898
|
|
|
819
|
-
|
|
820
|
-
title: string;
|
|
821
|
-
message?: string;
|
|
822
|
-
context: any;
|
|
823
|
-
definition: AXPWidgetNode;
|
|
824
|
-
actions?: {
|
|
825
|
-
footer?: {
|
|
826
|
-
prefix?: any[];
|
|
827
|
-
suffix?: any[];
|
|
828
|
-
};
|
|
829
|
-
};
|
|
830
|
-
/**
|
|
831
|
-
* When present, handler is called on action click with AXPDialogRef.
|
|
832
|
-
* Throw = stay open for retry. Return = close and resolve show() with return value.
|
|
833
|
-
*/
|
|
834
|
-
onAction?: (dialogRef: AXPDialogRef) => any | Promise<any>;
|
|
835
|
-
}
|
|
899
|
+
type DialogRendererConfig = AXPLayoutBuilderDialogConfig;
|
|
836
900
|
interface DialogRendererResult {
|
|
837
901
|
context: any;
|
|
838
902
|
action?: string;
|
|
@@ -843,35 +907,93 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
|
|
|
843
907
|
result: EventEmitter<DialogRendererResult>;
|
|
844
908
|
private widgetCoreService;
|
|
845
909
|
private expressionEvaluator;
|
|
910
|
+
private readonly commandService;
|
|
911
|
+
private readonly hookService;
|
|
846
912
|
private dialogResult?;
|
|
847
913
|
context: _angular_core.WritableSignal<any>;
|
|
848
|
-
callBack: (
|
|
914
|
+
callBack: (result: unknown) => void;
|
|
849
915
|
data: any;
|
|
850
916
|
private isDialogLoading;
|
|
851
917
|
footerPrefix: _angular_core.WritableSignal<AXPWidgetCoreElementAction[]>;
|
|
852
918
|
footerSuffix: _angular_core.WritableSignal<AXPWidgetCoreElementAction[]>;
|
|
919
|
+
/**
|
|
920
|
+
* Correlate layout context snapshots for distributed hooks (`layout-builder.dialog.context-changed`).
|
|
921
|
+
*/
|
|
922
|
+
private readonly contextChangedHooksSessionKey;
|
|
853
923
|
ngOnInit(): void;
|
|
854
924
|
private layoutRenderer;
|
|
855
925
|
private debounceTimer?;
|
|
856
926
|
handleContextChanged(event: any): void;
|
|
857
927
|
handleContextInitiated(event: any): void;
|
|
928
|
+
private invokeLayoutContextChangedHooks;
|
|
858
929
|
footerPrefixActions(): AXPWidgetCoreElementAction[];
|
|
859
930
|
footerSuffixActions(): AXPWidgetCoreElementAction[];
|
|
860
931
|
isFormLoading(): boolean;
|
|
861
932
|
isSubmitting(): boolean;
|
|
862
933
|
executeAction(action: AXPWidgetCoreElementAction): Promise<void>;
|
|
934
|
+
/** Whether the layout form should be validated before running this footer command. */
|
|
935
|
+
private shouldValidateBeforeAction;
|
|
936
|
+
/** True when a footer handler or command result asks to leave the dialog open (`keepDialogOpen` on the result or `result.data`). */
|
|
937
|
+
private shouldKeepDialogOpenAfterCommandResult;
|
|
938
|
+
private createDialogRef;
|
|
939
|
+
private closeWithOptionalSkipValidate;
|
|
940
|
+
/** Resolves footer/widget action command to a string (e.g. `cancel`, `submit`, `widget:...`). */
|
|
941
|
+
private resolveActionCommandName;
|
|
863
942
|
private parseWidgetCommand;
|
|
864
|
-
private
|
|
943
|
+
private invokeWidget;
|
|
865
944
|
close(result?: DialogRendererResult): Promise<void>;
|
|
866
945
|
private aggregateAndEvaluateActions;
|
|
867
946
|
private collectWidgetActions;
|
|
868
947
|
private collectDialogActionsFromConfig;
|
|
869
948
|
private evaluatePredicates;
|
|
870
949
|
private evalBool;
|
|
950
|
+
/** Resolves footer action title when it contains {{ ... }} (e.g. wizard labels from dialog context). */
|
|
951
|
+
private evalActionTitle;
|
|
871
952
|
private resolveApi;
|
|
872
953
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDialogRendererComponent, never>;
|
|
873
954
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDialogRendererComponent, "axp-dialog-renderer", never, {}, { "result": "result"; }, never, never, true, never>;
|
|
874
955
|
}
|
|
875
956
|
|
|
876
|
-
|
|
877
|
-
|
|
957
|
+
/** Registration key for {@link AXPPreviewWidgetFieldCommand}; lives alone so `LayoutBuilderModule` can reference it without static-importing the command implementation. */
|
|
958
|
+
declare const AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY = "Widget:Preview";
|
|
959
|
+
|
|
960
|
+
/** See `AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY` in `preview-widget-field.command.key.ts`. */
|
|
961
|
+
interface AXPPreviewWidgetFieldCommandInput {
|
|
962
|
+
/** Widget node to render (same shape as `widget-field-configurator` model). */
|
|
963
|
+
widget?: AXPWidgetNode;
|
|
964
|
+
/**
|
|
965
|
+
* Alternate property name for the widget node (matches metadata definition `interface` field).
|
|
966
|
+
*/
|
|
967
|
+
interface?: AXPWidgetNode | string;
|
|
968
|
+
fieldName?: string;
|
|
969
|
+
fieldTitle?: AXPMultiLanguageString;
|
|
970
|
+
name?: string;
|
|
971
|
+
title?: AXPMultiLanguageString;
|
|
972
|
+
}
|
|
973
|
+
type AXPPreviewWidgetFieldInvocation = AXPPreviewWidgetFieldCommandInput & {
|
|
974
|
+
__context__?: {
|
|
975
|
+
data?: Record<string, unknown>;
|
|
976
|
+
options?: Record<string, unknown>;
|
|
977
|
+
};
|
|
978
|
+
};
|
|
979
|
+
/**
|
|
980
|
+
* Opens a dialog that previews a widget configuration (same behavior as the preview button on
|
|
981
|
+
* `axp-widget-field-configurator`). Invoked from that component and from entity list actions.
|
|
982
|
+
*/
|
|
983
|
+
declare class AXPPreviewWidgetFieldCommand implements AXPCommand<AXPPreviewWidgetFieldCommandInput, void> {
|
|
984
|
+
private readonly formBuilderService;
|
|
985
|
+
private readonly widgetRegistry;
|
|
986
|
+
private readonly translationService;
|
|
987
|
+
private readonly crudService;
|
|
988
|
+
execute(input: AXPPreviewWidgetFieldInvocation): Promise<AXPExecuteCommandResult<void>>;
|
|
989
|
+
private mergeInvocation;
|
|
990
|
+
private normalizeWidget;
|
|
991
|
+
private resolveFieldTitleLabel;
|
|
992
|
+
private isCancelDialogOutcome;
|
|
993
|
+
private resolveWidgetDisplayTitle;
|
|
994
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPreviewWidgetFieldCommand, never>;
|
|
995
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPreviewWidgetFieldCommand>;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
export { AXPDialogRendererComponent, AXPLayoutBuilderService, AXPLayoutConversionService, AXPLayoutRendererComponent, AXPPreviewWidgetFieldCommand, AXP_LAYOUT_BUILDER_DIALOG_BEFORE_OPEN_HOOK_KEY, AXP_LAYOUT_BUILDER_DIALOG_CONFIG_HOOK_KEY, AXP_LAYOUT_BUILDER_DIALOG_CONTEXT_CHANGED_HOOK_KEY, AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY, LayoutBuilderModule };
|
|
999
|
+
export type { AXPDialogContainerOptions, AXPDialogRef, AXPDynamicFormDefinition, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLook, AXPDynamicFormMode, AXPFieldsetContainerOptions, AXPFlexContainerOptions, AXPFormFieldHintDisplayMode, AXPFormFieldOptions, AXPGridContainerOptions, AXPLayoutBuilderDialogBeforeOpenPayload, AXPLayoutBuilderDialogConfig, AXPLayoutBuilderDialogContextChangedPayload, AXPListWidgetColumn, AXPListWidgetOptions, AXPListWidgetRowCommand, AXPPageContainerOptions, AXPPanelContainerOptions, AXPPreviewWidgetFieldCommandInput, AXPStepDefinition, AXPStepWizardContainerOptions, AXPStepWizardDefinition, AXPStepWizardGuardPayload, AXPStepWizardStatus, AXPTabsetContainerOptions, AXPWidgetConfiguration, AXPWidgetNodeExtendedProperties, AXPWizardActionDefinition, AXPWizardActions, ColorBoxOptions, DateTimeBoxOptions, DialogBuilderState, DialogRendererConfig, DialogRendererResult, FormFieldBuilderState, IActionBuilder, IBaseContainerBuilder, IChildContainerBuilder, IDialogBuilder, IFieldsetContainerBuilder, IFlexContainerBuilder, IFormFieldBuilder, IGridContainerBuilder, ILayoutBuilder, ILayoutContainerBuilder, IListWidgetBuilder, IPageContainerBuilder, IPanelContainerBuilder, IStepBuilder, IStepWizardBuilder, ITabsetContainerBuilder, IWidgetBuilder, IWidgetContainerBuilder, InheritanceContext, InheritedProperties, LargeTextBoxOptions, LayoutBuilderState, LayoutWidgetOptions, LookupBoxOptions, NumberBoxOptions, PasswordBoxOptions, RichTextOptions, SelectBoxOptions, SelectionListOptions, TextBoxOptions, ToggleSwitchOptions, ValueWidgetOptions, WidgetBuilderState };
|