@acorex/platform 21.0.0-next.7 → 21.0.0-next.71
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 +281 -23
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs +163 -0
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +1381 -276
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1538 -611
- 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 +1372 -210
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
- package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-components.mjs +6298 -1929
- 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-attachments-page.component-D8iQnT-R.mjs +371 -0
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity-file-list-popup.component-_yrP5SQe.mjs +100 -0
- package/fesm2022/acorex-platform-layout-entity-file-list-popup.component-_yrP5SQe.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +22537 -9975
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +865 -218
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +2138 -487
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.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-image-preview.popup-V31OpYah.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-BtZMBxYp.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-J0zcGKBX.mjs +116 -0
- package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-J0zcGKBX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.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 +10434 -7982
- 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-CWLfNqV0.mjs +160 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CWLfNqV0.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs +120 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs} +21 -28
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.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-CdCV5ZoA.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 +2289 -90
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.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-9W52W6Nu.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-BjuzSe0T.mjs} +52 -33
- package/fesm2022/acorex-platform-themes-shared-settings.provider-BjuzSe0T.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 +790 -612
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +978 -238
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/fesm2022/acorex-platform.mjs.map +1 -1
- package/package.json +40 -38
- package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +241 -4
- package/{common/index.d.ts → types/acorex-platform-common.d.ts} +833 -89
- package/{core/index.d.ts → types/acorex-platform-core.d.ts} +779 -164
- 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} +277 -55
- package/types/acorex-platform-layout-components.d.ts +3257 -0
- package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
- package/types/acorex-platform-layout-entity.d.ts +4492 -0
- package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +247 -62
- package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +437 -131
- package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +1140 -506
- 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} +254 -7
- package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +30 -2
- package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +620 -617
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs +0 -71
- package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs +0 -135
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DfJEx_bs.mjs +0 -1542
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DfJEx_bs.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
- package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.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-DTnfRy5f.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs +0 -64
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
- package/layout/components/index.d.ts +0 -1669
- package/layout/entity/index.d.ts +0 -2287
- package/runtime/index.d.ts +0 -307
- /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
|
@@ -3,13 +3,30 @@ 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,
|
|
7
|
-
import { AXDataSource } from '@acorex/cdk/common';
|
|
6
|
+
import { AXPWidgetNode, AXPWidgetRenderMode, AXPWidgetContainerComponent, AXPWidgetCoreElementAction } from '@acorex/platform/layout/widget-core';
|
|
7
|
+
import { AXDataSource, AXComponentClosing } 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 { AXPActionMenuItem, AXPMultiLanguageString, AXPMetaData, AXPGridLayoutOptions, AXPExpression, AXPValidationRules, AXPOptionsData, AXPContextChangeEvent, AXPExecuteCommandResult } from '@acorex/platform/core';
|
|
11
11
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
12
|
+
import { AXPCommand } from '@acorex/platform/runtime';
|
|
13
|
+
|
|
14
|
+
type AXPDialogActionShortcut = string;
|
|
15
|
+
declare const DEFAULT_CANCEL_DIALOG_ACTION_SHORTCUTS: readonly AXPDialogActionShortcut[];
|
|
16
|
+
declare const DEFAULT_SUBMIT_DIALOG_ACTION_SHORTCUTS: readonly AXPDialogActionShortcut[];
|
|
17
|
+
interface AXPDialogActionOptions {
|
|
18
|
+
/**
|
|
19
|
+
* Additional keyboard shortcuts for this action (e.g. `'ctrl+s'`).
|
|
20
|
+
* Merged with built-in defaults for `cancel` / `submit`. Pass `[]` to disable all shortcuts.
|
|
21
|
+
*/
|
|
22
|
+
shortcuts?: AXPDialogActionShortcut[];
|
|
23
|
+
}
|
|
12
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Extended widget node properties (excluding type, path, name, options, children)
|
|
27
|
+
* These properties can be passed as a third parameter to customWidget method
|
|
28
|
+
*/
|
|
29
|
+
type AXPWidgetNodeExtendedProperties = Omit<AXPWidgetNode, 'type' | 'path' | 'name' | 'options'>;
|
|
13
30
|
/**
|
|
14
31
|
* Form appearance and density styling (using fieldset widget look)
|
|
15
32
|
*/
|
|
@@ -24,9 +41,9 @@ type AXPDynamicFormMode = 'view' | 'edit';
|
|
|
24
41
|
type AXPDynamicFormDirection = 'vertical' | 'horizontal' | 'grid';
|
|
25
42
|
interface AXPDynamicFormFieldDefinition {
|
|
26
43
|
path: string;
|
|
27
|
-
title?:
|
|
44
|
+
title?: AXPMultiLanguageString;
|
|
28
45
|
badge?: string;
|
|
29
|
-
description?:
|
|
46
|
+
description?: AXPMultiLanguageString;
|
|
30
47
|
widget: AXPWidgetNode;
|
|
31
48
|
/**
|
|
32
49
|
* Optional per-field rendering mode. Takes precedence over section and form modes.
|
|
@@ -36,8 +53,8 @@ interface AXPDynamicFormFieldDefinition {
|
|
|
36
53
|
}
|
|
37
54
|
interface AXPDynamicFormGroupDefinition {
|
|
38
55
|
name: string;
|
|
39
|
-
title?:
|
|
40
|
-
description?:
|
|
56
|
+
title?: AXPMultiLanguageString;
|
|
57
|
+
description?: AXPMultiLanguageString;
|
|
41
58
|
parameters: AXPDynamicFormFieldDefinition[];
|
|
42
59
|
/**
|
|
43
60
|
* Optional per-section rendering mode. Takes precedence over form mode and is overridden by field mode.
|
|
@@ -59,7 +76,7 @@ interface AXPDialogRef {
|
|
|
59
76
|
/**
|
|
60
77
|
* Manually close the dialog (optional - dialog closes automatically after user interaction)
|
|
61
78
|
*/
|
|
62
|
-
close(): void;
|
|
79
|
+
close(result?: any): void;
|
|
63
80
|
/**
|
|
64
81
|
* Get the form data from the dialog
|
|
65
82
|
*/
|
|
@@ -72,7 +89,20 @@ interface AXPDialogRef {
|
|
|
72
89
|
* Set the loading state of the dialog
|
|
73
90
|
*/
|
|
74
91
|
setLoading(loading: boolean): void;
|
|
92
|
+
/**
|
|
93
|
+
* Deep-merge partial values into the dialog layout context (e.g. after create returns an id).
|
|
94
|
+
*/
|
|
95
|
+
patchContext?(partial: Record<string, unknown>): void;
|
|
96
|
+
/**
|
|
97
|
+
* Invoke a registered widget's public `api()` method (e.g. step-wizard `next`).
|
|
98
|
+
*/
|
|
99
|
+
invokeWidget?(widgetName: string, method: string, options?: {
|
|
100
|
+
setLoading?: (loading: boolean) => void;
|
|
101
|
+
close?: (result?: any) => void;
|
|
102
|
+
}): Promise<void>;
|
|
75
103
|
}
|
|
104
|
+
/** Fallback {@link AXPDialogRef} when the popup is dismissed without a footer action (e.g. header close). */
|
|
105
|
+
declare function createDismissedDialogRef(context?: () => unknown): AXPDialogRef;
|
|
76
106
|
interface LayoutWidgetOptions {
|
|
77
107
|
name?: string;
|
|
78
108
|
}
|
|
@@ -82,7 +112,7 @@ interface ValueWidgetOptions extends LayoutWidgetOptions {
|
|
|
82
112
|
validations?: AXPValidationRules;
|
|
83
113
|
}
|
|
84
114
|
interface TextBoxOptions extends ValueWidgetOptions {
|
|
85
|
-
placeholder?:
|
|
115
|
+
placeholder?: AXPMultiLanguageString;
|
|
86
116
|
maxLength?: number;
|
|
87
117
|
minLength?: number;
|
|
88
118
|
prefix?: string;
|
|
@@ -93,14 +123,14 @@ interface NumberBoxOptions extends ValueWidgetOptions {
|
|
|
93
123
|
min?: number;
|
|
94
124
|
max?: number;
|
|
95
125
|
step?: number;
|
|
96
|
-
placeholder?:
|
|
126
|
+
placeholder?: AXPMultiLanguageString;
|
|
97
127
|
format?: string;
|
|
98
128
|
}
|
|
99
129
|
interface SelectBoxOptions extends ValueWidgetOptions {
|
|
100
130
|
dataSource: any[] | (() => any[]) | (() => Promise<any[]>) | AXDataSource<any>;
|
|
101
131
|
valueField?: string;
|
|
102
132
|
textField?: string;
|
|
103
|
-
placeholder?:
|
|
133
|
+
placeholder?: AXPMultiLanguageString;
|
|
104
134
|
multiple?: boolean;
|
|
105
135
|
searchable?: boolean;
|
|
106
136
|
clearButton?: boolean;
|
|
@@ -111,7 +141,7 @@ interface DateTimeBoxOptions extends ValueWidgetOptions {
|
|
|
111
141
|
format?: string;
|
|
112
142
|
min?: Date | string;
|
|
113
143
|
max?: Date | string;
|
|
114
|
-
placeholder?:
|
|
144
|
+
placeholder?: AXPMultiLanguageString;
|
|
115
145
|
clearButton?: boolean;
|
|
116
146
|
}
|
|
117
147
|
interface ToggleSwitchOptions extends ValueWidgetOptions {
|
|
@@ -123,7 +153,7 @@ interface LargeTextBoxOptions extends ValueWidgetOptions {
|
|
|
123
153
|
rows?: number;
|
|
124
154
|
maxLength?: number;
|
|
125
155
|
minLength?: number;
|
|
126
|
-
placeholder?:
|
|
156
|
+
placeholder?: AXPMultiLanguageString;
|
|
127
157
|
resizable?: boolean;
|
|
128
158
|
}
|
|
129
159
|
interface ColorBoxOptions extends ValueWidgetOptions {
|
|
@@ -222,12 +252,26 @@ interface AXPFieldsetContainerOptions extends LayoutWidgetOptions {
|
|
|
222
252
|
isOpen?: boolean;
|
|
223
253
|
look?: 'fieldset' | 'card' | 'group' | 'container';
|
|
224
254
|
disabled?: boolean;
|
|
255
|
+
showTitle?: boolean;
|
|
225
256
|
showHeader?: boolean;
|
|
226
257
|
cols?: number;
|
|
227
258
|
}
|
|
259
|
+
/** How optional `hint` text is rendered in `form-field` layout widgets. */
|
|
260
|
+
type AXPFormFieldHintDisplayMode = 'icon' | 'note';
|
|
228
261
|
interface AXPFormFieldOptions extends LayoutWidgetOptions {
|
|
229
262
|
label?: string;
|
|
230
263
|
showLabel?: boolean;
|
|
264
|
+
/** Translated/helper copy; pairing with {@link hintDisplayMode}. */
|
|
265
|
+
hint?: AXPMultiLanguageString;
|
|
266
|
+
hintDisplayMode?: AXPFormFieldHintDisplayMode;
|
|
267
|
+
}
|
|
268
|
+
interface AXPDialogCloseConfirmationOptions {
|
|
269
|
+
/** When false, dirty-close confirmation is disabled even if the builder flag is set. */
|
|
270
|
+
enabled?: boolean;
|
|
271
|
+
title?: AXPMultiLanguageString;
|
|
272
|
+
message?: AXPMultiLanguageString;
|
|
273
|
+
/** Custom dirty check; defaults to user-origin context paths plus composite widget `api().isDirty()`. */
|
|
274
|
+
isDirty?: (context: Record<string, unknown>, baseline: Record<string, unknown>) => boolean;
|
|
231
275
|
}
|
|
232
276
|
interface AXPDialogContainerOptions extends LayoutWidgetOptions {
|
|
233
277
|
title?: string;
|
|
@@ -235,14 +279,41 @@ interface AXPDialogContainerOptions extends LayoutWidgetOptions {
|
|
|
235
279
|
size?: AXPopupSizeType;
|
|
236
280
|
closeButton?: boolean;
|
|
237
281
|
context?: any;
|
|
282
|
+
metadata?: AXPMetaData;
|
|
283
|
+
/**
|
|
284
|
+
* When enabled, prompts before dismiss (cancel, Esc, header close) if dialog context is dirty.
|
|
285
|
+
* Set via {@link IDialogBuilder.confirmCloseWhenDirty}.
|
|
286
|
+
*/
|
|
287
|
+
confirmCloseWhenDirty?: boolean | AXPDialogCloseConfirmationOptions;
|
|
288
|
+
/**
|
|
289
|
+
* When set, invoked on footer action with {@link AXPDialogRef}.
|
|
290
|
+
* Set via {@link IDialogBuilder.onAction}.
|
|
291
|
+
*/
|
|
292
|
+
onAction?: (dialogRef: AXPDialogRef) => unknown | Promise<unknown>;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Popup payload for `AXPDialogRendererComponent` (`data.config`) and the `layout-builder.dialog.config` hook.
|
|
296
|
+
*/
|
|
297
|
+
interface AXPLayoutBuilderDialogConfig {
|
|
298
|
+
title: string;
|
|
299
|
+
context: Record<string, unknown>;
|
|
300
|
+
definition: AXPWidgetNode;
|
|
301
|
+
metadata?: AXPMetaData;
|
|
302
|
+
actions: NonNullable<DialogBuilderState['actions']>;
|
|
303
|
+
onAction?: (dialogRef: AXPDialogRef) => unknown | Promise<unknown>;
|
|
304
|
+
confirmCloseWhenDirty?: AXPDialogCloseConfirmationOptions;
|
|
238
305
|
}
|
|
239
306
|
interface RichTextOptions extends ValueWidgetOptions {
|
|
240
|
-
placeholder?:
|
|
307
|
+
placeholder?: AXPMultiLanguageString;
|
|
241
308
|
toolbar?: string[];
|
|
242
309
|
readonly?: boolean;
|
|
310
|
+
/** Max height (px) for scrollable full preview when `showFullContent` is true. */
|
|
311
|
+
height?: number;
|
|
312
|
+
/** When true, view mode renders full HTML in a scrollable area instead of a truncated snippet. */
|
|
313
|
+
showFullContent?: boolean;
|
|
243
314
|
}
|
|
244
315
|
interface PasswordBoxOptions extends ValueWidgetOptions {
|
|
245
|
-
placeholder?:
|
|
316
|
+
placeholder?: AXPMultiLanguageString;
|
|
246
317
|
revealToggle?: boolean;
|
|
247
318
|
maxLength?: number;
|
|
248
319
|
}
|
|
@@ -264,7 +335,7 @@ interface SelectionListOptions extends ValueWidgetOptions {
|
|
|
264
335
|
textField?: string;
|
|
265
336
|
multiple?: boolean;
|
|
266
337
|
searchable?: boolean;
|
|
267
|
-
placeholder?:
|
|
338
|
+
placeholder?: AXPMultiLanguageString;
|
|
268
339
|
}
|
|
269
340
|
interface AXPListWidgetColumn {
|
|
270
341
|
name: string;
|
|
@@ -384,26 +455,31 @@ interface AXPWidgetConfiguration {
|
|
|
384
455
|
options?: AXPOptionsData;
|
|
385
456
|
}
|
|
386
457
|
type LayoutBuilderState = AXPWidgetNode;
|
|
387
|
-
type WidgetBuilderState =
|
|
458
|
+
type WidgetBuilderState = AXPWidgetNode & {
|
|
388
459
|
layout?: AXPGridLayoutOptions;
|
|
389
460
|
};
|
|
390
461
|
type FormFieldBuilderState = AXPWidgetNode & {
|
|
391
462
|
layout?: AXPGridLayoutOptions;
|
|
392
463
|
};
|
|
464
|
+
/** Dialog footer action item; extends menu actions with placement and keyboard shortcuts. */
|
|
465
|
+
type AXPDialogActionMenuItem = AXPActionMenuItem & {
|
|
466
|
+
position?: 'prefix' | 'suffix';
|
|
467
|
+
shortcuts?: AXPDialogActionShortcut[];
|
|
468
|
+
};
|
|
393
469
|
type DialogBuilderState = AXPWidgetNode & {
|
|
394
470
|
layout?: AXPGridLayoutOptions;
|
|
395
471
|
dialogOptions?: AXPDialogContainerOptions;
|
|
396
472
|
actions?: {
|
|
397
473
|
footer?: {
|
|
398
|
-
prefix?:
|
|
399
|
-
suffix?:
|
|
474
|
+
prefix?: AXPDialogActionMenuItem[];
|
|
475
|
+
suffix?: AXPDialogActionMenuItem[];
|
|
400
476
|
};
|
|
401
477
|
};
|
|
402
478
|
};
|
|
403
479
|
interface IActionBuilder {
|
|
404
|
-
cancel(text?: string): IActionBuilder;
|
|
405
|
-
submit(text?: string): IActionBuilder;
|
|
406
|
-
custom(action:
|
|
480
|
+
cancel(text?: string, options?: AXPDialogActionOptions): IActionBuilder;
|
|
481
|
+
submit(text?: string, options?: AXPDialogActionOptions): IActionBuilder;
|
|
482
|
+
custom(action: AXPDialogActionMenuItem, options?: AXPDialogActionOptions): IActionBuilder;
|
|
407
483
|
}
|
|
408
484
|
interface ILayoutBuilder {
|
|
409
485
|
grid(delegate: (container: IGridContainerBuilder) => void): ILayoutBuilder;
|
|
@@ -412,7 +488,7 @@ interface ILayoutBuilder {
|
|
|
412
488
|
page(delegate: (container: IPageContainerBuilder) => void): ILayoutBuilder;
|
|
413
489
|
tabset(delegate: (container: ITabsetContainerBuilder) => void): ILayoutBuilder;
|
|
414
490
|
fieldset(delegate: (container: IFieldsetContainerBuilder) => void): ILayoutBuilder;
|
|
415
|
-
dialog(delegate: (container: IDialogBuilder) => void): IDialogBuilder
|
|
491
|
+
dialog<T = AXPDialogRef>(delegate: (container: IDialogBuilder<T>) => void): IDialogBuilder<T>;
|
|
416
492
|
stepWizard(delegate: (wizard: IStepWizardBuilder) => void): ILayoutBuilder;
|
|
417
493
|
build(): AXPWidgetNode;
|
|
418
494
|
toJson(options?: {
|
|
@@ -503,6 +579,8 @@ interface IGridContainerBuilder extends IBaseContainerBuilder<IGridContainerBuil
|
|
|
503
579
|
setBackgroundColor(color: string): IGridContainerBuilder;
|
|
504
580
|
setPadding(padding: string): IGridContainerBuilder;
|
|
505
581
|
setMargin(margin: string): IGridContainerBuilder;
|
|
582
|
+
/** Add a grid-item-layout child with optional placement; delegate builds the fieldset content. */
|
|
583
|
+
item(layoutOptions: Partial<AXPGridLayoutOptions> | null | undefined, delegate: (container: IFieldsetContainerBuilder) => void): IGridContainerBuilder;
|
|
506
584
|
}
|
|
507
585
|
interface IPanelContainerBuilder extends IBaseContainerBuilder<IPanelContainerBuilder>, ILayoutContainerBuilder<IPanelContainerBuilder>, IChildContainerBuilder<IPanelContainerBuilder>, IWidgetContainerBuilder<IPanelContainerBuilder> {
|
|
508
586
|
setOptions(options: AXPPanelContainerOptions): IPanelContainerBuilder;
|
|
@@ -545,6 +623,7 @@ interface IFormFieldBuilder extends IBaseContainerBuilder<IFormFieldBuilder>, IL
|
|
|
545
623
|
toggleSwitch(options?: Omit<ToggleSwitchOptions, 'path'>): IFormFieldBuilder;
|
|
546
624
|
colorBox(options?: Omit<ColorBoxOptions, 'path'>): IFormFieldBuilder;
|
|
547
625
|
customWidget<T>(type: string, options?: Omit<T, 'path'>): IFormFieldBuilder;
|
|
626
|
+
customWidget<T>(type: string, options?: Omit<T, 'path'> & Partial<AXPWidgetNodeExtendedProperties>): IFormFieldBuilder;
|
|
548
627
|
}
|
|
549
628
|
interface IFieldsetContainerBuilder extends IBaseContainerBuilder<IFieldsetContainerBuilder>, ILayoutContainerBuilder<IFieldsetContainerBuilder> {
|
|
550
629
|
setOptions(options: AXPFieldsetContainerOptions): IFieldsetContainerBuilder;
|
|
@@ -558,20 +637,30 @@ interface IFieldsetContainerBuilder extends IBaseContainerBuilder<IFieldsetConta
|
|
|
558
637
|
setCols(cols: number): IFieldsetContainerBuilder;
|
|
559
638
|
formField(label: string, delegate?: (field: IFormFieldBuilder) => void): IFieldsetContainerBuilder;
|
|
560
639
|
}
|
|
561
|
-
interface IDialogBuilder {
|
|
562
|
-
}
|
|
563
|
-
interface IDialogBuilder {
|
|
564
|
-
setOptions(options: AXPDialogContainerOptions): IDialogBuilder
|
|
565
|
-
setTitle(title: string): IDialogBuilder
|
|
566
|
-
setMessage(message?: string): IDialogBuilder
|
|
567
|
-
setSize(size: AXPopupSizeType): IDialogBuilder
|
|
568
|
-
setCloseButton(closeButton: boolean): IDialogBuilder
|
|
569
|
-
setContext(context: any): IDialogBuilder
|
|
570
|
-
content(delegate: (layoutBuilder: IFlexContainerBuilder) => void): IDialogBuilder
|
|
571
|
-
setActions(delegate?: (actions: IActionBuilder) => void): IDialogBuilder
|
|
572
|
-
|
|
640
|
+
interface IDialogBuilder<T = AXPDialogRef> {
|
|
641
|
+
}
|
|
642
|
+
interface IDialogBuilder<T = AXPDialogRef> {
|
|
643
|
+
setOptions(options: AXPDialogContainerOptions): IDialogBuilder<T>;
|
|
644
|
+
setTitle(title: string): IDialogBuilder<T>;
|
|
645
|
+
setMessage(message?: string): IDialogBuilder<T>;
|
|
646
|
+
setSize(size: AXPopupSizeType): IDialogBuilder<T>;
|
|
647
|
+
setCloseButton(closeButton: boolean): IDialogBuilder<T>;
|
|
648
|
+
setContext(context: any): IDialogBuilder<T>;
|
|
649
|
+
content(delegate: (layoutBuilder: IFlexContainerBuilder) => void): IDialogBuilder<T>;
|
|
650
|
+
setActions(delegate?: (actions: IActionBuilder) => void): IDialogBuilder<T>;
|
|
651
|
+
/**
|
|
652
|
+
* Handler invoked when user clicks an action. Receives AXPDialogRef (context, action, setLoading, close).
|
|
653
|
+
* If handler throws, dialog stays open for retry.
|
|
654
|
+
* If handler returns, dialog closes and show() resolves with the return value.
|
|
655
|
+
*/
|
|
656
|
+
onAction(handler: (dialogRef: AXPDialogRef) => T | Promise<T>): IDialogBuilder<T>;
|
|
657
|
+
/**
|
|
658
|
+
* Prompts for confirmation before dismiss when the dialog context is dirty (cancel, Esc, header close).
|
|
659
|
+
*/
|
|
660
|
+
confirmCloseWhenDirty(options?: boolean | AXPDialogCloseConfirmationOptions): IDialogBuilder<T>;
|
|
661
|
+
addCustomAction(action: AXPActionMenuItem): IDialogBuilder<T>;
|
|
573
662
|
build(): AXPWidgetNode;
|
|
574
|
-
show(): Promise<
|
|
663
|
+
show(): Promise<T>;
|
|
575
664
|
}
|
|
576
665
|
interface IListWidgetBuilder extends IBaseContainerBuilder<IListWidgetBuilder>, ILayoutContainerBuilder<IListWidgetBuilder>, IChildContainerBuilder<IListWidgetBuilder>, IWidgetContainerBuilder<IListWidgetBuilder> {
|
|
577
666
|
setOptions(options: AXPListWidgetOptions): IListWidgetBuilder;
|
|
@@ -647,6 +736,11 @@ declare class AXPLayoutRendererComponent implements OnInit {
|
|
|
647
736
|
*/
|
|
648
737
|
mode: _angular_core.InputSignal<AXPDynamicFormMode>;
|
|
649
738
|
protected widgetTree: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
739
|
+
/**
|
|
740
|
+
* Prefer explicit {@link AXPWidgetNode.mode} on the root node (e.g. dialog flex `mode('view')`)
|
|
741
|
+
* so nested widgets resolve view vs edit correctly; fall back to the layout `mode` input.
|
|
742
|
+
*/
|
|
743
|
+
protected effectiveRenderMode: _angular_core.Signal<"filter" | "view" | "edit" | "column" | "designer" | "print">;
|
|
650
744
|
/**
|
|
651
745
|
* Convert layout data to widget tree when inputs change
|
|
652
746
|
*/
|
|
@@ -673,7 +767,7 @@ declare class AXPLayoutRendererComponent implements OnInit {
|
|
|
673
767
|
/**
|
|
674
768
|
* Handle context change events from widget container (optimized with RxJS)
|
|
675
769
|
*/
|
|
676
|
-
protected handleContextChanged(event:
|
|
770
|
+
protected handleContextChanged(event: AXPContextChangeEvent): void;
|
|
677
771
|
/**
|
|
678
772
|
* Get the form component instance
|
|
679
773
|
*/
|
|
@@ -728,8 +822,40 @@ declare class LayoutBuilderModule {
|
|
|
728
822
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<LayoutBuilderModule>;
|
|
729
823
|
}
|
|
730
824
|
|
|
825
|
+
/**
|
|
826
|
+
* Runs after dialog options and context are prepared and **before** footer customization and popup open.
|
|
827
|
+
* Listeners may mutate {@link AXPLayoutBuilderDialogBeforeOpenPayload.context} by reference.
|
|
828
|
+
*/
|
|
829
|
+
declare const AXP_LAYOUT_BUILDER_DIALOG_BEFORE_OPEN_HOOK_KEY = "layout-builder.dialog.before-open";
|
|
830
|
+
interface AXPLayoutBuilderDialogBeforeOpenPayload {
|
|
831
|
+
context: Record<string, unknown>;
|
|
832
|
+
dialogOptions: AXPDialogContainerOptions;
|
|
833
|
+
}
|
|
834
|
+
/**
|
|
835
|
+
* Runs after builder-defined footer actions exist and **before** the dialog opens.
|
|
836
|
+
* Listeners receive the live `actions.footer.prefix` / `suffix` arrays (same references as the dialog)
|
|
837
|
+
* so they may push, splice, filter, or replace items. They may also mutate {@link AXPLayoutBuilderDialogFooterPayload.context} by reference.
|
|
838
|
+
*/
|
|
839
|
+
declare const AXP_LAYOUT_BUILDER_DIALOG_CONFIG_HOOK_KEY = "layout-builder.dialog.config";
|
|
840
|
+
/**
|
|
841
|
+
* Runs whenever the dialog layout builder context changes (debounced upstream), **after** the popup is visible.
|
|
842
|
+
* Use for side effects that depend on live context (for example values updated by widgets after render).
|
|
843
|
+
* Payload mirrors `AXPDialogRendererComponent` semantics: {@link AXPLayoutBuilderDialogContextChangedPayload.getContext},
|
|
844
|
+
* {@link AXPLayoutBuilderDialogContextChangedPayload.patchContext}, and optional loading state.
|
|
845
|
+
*/
|
|
846
|
+
declare const AXP_LAYOUT_BUILDER_DIALOG_CONTEXT_CHANGED_HOOK_KEY = "layout-builder.dialog.context-changed";
|
|
847
|
+
interface AXPLayoutBuilderDialogContextChangedPayload {
|
|
848
|
+
/** Stable id for this dialog instance; lets listeners correlate repeated emissions or async follow-up work. */
|
|
849
|
+
sessionKey: string;
|
|
850
|
+
getContext: () => Record<string, unknown>;
|
|
851
|
+
metadata: Record<string, unknown> | undefined;
|
|
852
|
+
patchContext: (partial: Record<string, unknown>) => void;
|
|
853
|
+
setLoading: (loading: boolean) => void;
|
|
854
|
+
}
|
|
855
|
+
|
|
731
856
|
declare class AXPLayoutBuilderService {
|
|
732
857
|
private popupService;
|
|
858
|
+
private readonly hookService;
|
|
733
859
|
/**
|
|
734
860
|
* Create a new layout builder
|
|
735
861
|
*/
|
|
@@ -804,18 +930,7 @@ declare class AXPLayoutConversionService {
|
|
|
804
930
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutConversionService>;
|
|
805
931
|
}
|
|
806
932
|
|
|
807
|
-
|
|
808
|
-
title: string;
|
|
809
|
-
message?: string;
|
|
810
|
-
context: any;
|
|
811
|
-
definition: AXPWidgetNode;
|
|
812
|
-
actions?: {
|
|
813
|
-
footer?: {
|
|
814
|
-
prefix?: any[];
|
|
815
|
-
suffix?: any[];
|
|
816
|
-
};
|
|
817
|
-
};
|
|
818
|
-
}
|
|
933
|
+
type DialogRendererConfig = AXPLayoutBuilderDialogConfig;
|
|
819
934
|
interface DialogRendererResult {
|
|
820
935
|
context: any;
|
|
821
936
|
action?: string;
|
|
@@ -826,35 +941,142 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
|
|
|
826
941
|
result: EventEmitter<DialogRendererResult>;
|
|
827
942
|
private widgetCoreService;
|
|
828
943
|
private expressionEvaluator;
|
|
944
|
+
private readonly commandService;
|
|
945
|
+
private readonly hookService;
|
|
946
|
+
private readonly dialogService;
|
|
947
|
+
private readonly overlayService;
|
|
948
|
+
private readonly translationService;
|
|
949
|
+
private readonly document;
|
|
950
|
+
private readonly host;
|
|
829
951
|
private dialogResult?;
|
|
952
|
+
/** Ensures `show()` resolves once when the dialog closes (footer action or header close). */
|
|
953
|
+
private callbackInvoked;
|
|
954
|
+
/** Baseline snapshot for dirty detection (captured once after init settles). */
|
|
955
|
+
private dirtyBaseline?;
|
|
956
|
+
/** True after the post-init baseline snapshot has been captured. */
|
|
957
|
+
private dirtyBaselineCaptured;
|
|
958
|
+
private dirtyBaselineIdleTimer?;
|
|
959
|
+
/** Callback payload applied when a dismiss is allowed in {@link onClosing}. */
|
|
960
|
+
private pendingDismissResolvePayload?;
|
|
961
|
+
/** Skips dirty confirmation on the next {@link onClosing} (successful submit / programmatic close). */
|
|
962
|
+
private skipNextOnClosingDirtyCheck;
|
|
963
|
+
/** Prevents concurrent dismiss paths from opening multiple unsaved-changes confirms. */
|
|
964
|
+
private dismissConfirmPromise?;
|
|
965
|
+
private dirtyBaselineFallbackTimer?;
|
|
966
|
+
private readonly destroyRef;
|
|
830
967
|
context: _angular_core.WritableSignal<any>;
|
|
831
|
-
callBack: (
|
|
968
|
+
callBack: (result: unknown) => void;
|
|
832
969
|
data: any;
|
|
833
970
|
private isDialogLoading;
|
|
834
971
|
footerPrefix: _angular_core.WritableSignal<AXPWidgetCoreElementAction[]>;
|
|
835
972
|
footerSuffix: _angular_core.WritableSignal<AXPWidgetCoreElementAction[]>;
|
|
973
|
+
/**
|
|
974
|
+
* Correlate layout context snapshots for distributed hooks (`layout-builder.dialog.context-changed`).
|
|
975
|
+
*/
|
|
976
|
+
private readonly contextChangedHooksSessionKey;
|
|
977
|
+
/**
|
|
978
|
+
* Capture-phase footer shortcuts — runs before widget editors (select, date, text) that stop keydown bubbling.
|
|
979
|
+
*/
|
|
980
|
+
private readonly onDialogShortcutCapture;
|
|
836
981
|
ngOnInit(): void;
|
|
982
|
+
/**
|
|
983
|
+
* Popup shell hook — handles header **X** and **Esc** (when `closeButton` is enabled).
|
|
984
|
+
* This is the only place that prompts for unsaved changes.
|
|
985
|
+
*/
|
|
986
|
+
onClosing(e: AXComponentClosing): Promise<void>;
|
|
987
|
+
/**
|
|
988
|
+
* Footer cancel and other in-app dismiss actions. Routes through `super.close()` so the
|
|
989
|
+
* popup shell invokes {@link onClosing} exactly once (same path as **X** / **Esc**).
|
|
990
|
+
*/
|
|
991
|
+
private requestDismiss;
|
|
992
|
+
/** Invokes `show()` callback with the pending payload or a default cancel {@link AXPDialogRef}. */
|
|
993
|
+
private completeDismissResolve;
|
|
994
|
+
private getWidgetContextStore;
|
|
995
|
+
private scheduleDirtyBaselineCapture;
|
|
996
|
+
/**
|
|
997
|
+
* Captures a dialog-local baseline once after widget init/normalization goes idle.
|
|
998
|
+
*/
|
|
999
|
+
private captureDirtyBaselineIfNeeded;
|
|
837
1000
|
private layoutRenderer;
|
|
838
1001
|
private debounceTimer?;
|
|
839
1002
|
handleContextChanged(event: any): void;
|
|
840
1003
|
handleContextInitiated(event: any): void;
|
|
1004
|
+
private invokeLayoutContextChangedHooks;
|
|
841
1005
|
footerPrefixActions(): AXPWidgetCoreElementAction[];
|
|
842
1006
|
footerSuffixActions(): AXPWidgetCoreElementAction[];
|
|
843
1007
|
isFormLoading(): boolean;
|
|
844
1008
|
isSubmitting(): boolean;
|
|
845
1009
|
executeAction(action: AXPWidgetCoreElementAction): Promise<void>;
|
|
1010
|
+
private isDialogDirty;
|
|
1011
|
+
private confirmDismissIfDirty;
|
|
1012
|
+
private promptUnsavedChangesConfirm;
|
|
1013
|
+
/** Whether the layout form should be validated before running this footer command. */
|
|
1014
|
+
private shouldValidateBeforeAction;
|
|
1015
|
+
/** True when a footer handler or command result asks to leave the dialog open (`keepDialogOpen` on the result or `result.data`). */
|
|
1016
|
+
private shouldKeepDialogOpenAfterCommandResult;
|
|
1017
|
+
/** Resolves the dialog `show()` promise exactly once. */
|
|
1018
|
+
private resolveDialog;
|
|
1019
|
+
private createDialogRef;
|
|
1020
|
+
private closeWithOptionalSkipValidate;
|
|
1021
|
+
/** Resolves footer/widget action command to a string (e.g. `cancel`, `submit`, `widget:...`). */
|
|
1022
|
+
private resolveActionCommandName;
|
|
846
1023
|
private parseWidgetCommand;
|
|
847
|
-
private
|
|
848
|
-
close(result?: DialogRendererResult
|
|
1024
|
+
private invokeWidget;
|
|
1025
|
+
close(result?: DialogRendererResult, options?: {
|
|
1026
|
+
skipDirtyConfirm?: boolean;
|
|
1027
|
+
}): Promise<void>;
|
|
849
1028
|
private aggregateAndEvaluateActions;
|
|
850
1029
|
private collectWidgetActions;
|
|
851
1030
|
private collectDialogActionsFromConfig;
|
|
852
1031
|
private evaluatePredicates;
|
|
853
1032
|
private evalBool;
|
|
1033
|
+
/** Resolves footer action title when it contains {{ ... }} (e.g. wizard labels from dialog context). */
|
|
1034
|
+
private evalActionTitle;
|
|
854
1035
|
private resolveApi;
|
|
855
1036
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDialogRendererComponent, never>;
|
|
856
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDialogRendererComponent, "axp-dialog-renderer", never, {
|
|
1037
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDialogRendererComponent, "axp-dialog-renderer", never, {}, { "result": "result"; }, never, never, true, never>;
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
/** Registration key for {@link AXPPreviewWidgetFieldCommand}; lives alone so `LayoutBuilderModule` can reference it without static-importing the command implementation. */
|
|
1041
|
+
declare const AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY = "Widget:Preview";
|
|
1042
|
+
|
|
1043
|
+
/** See `AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY` in `preview-widget-field.command.key.ts`. */
|
|
1044
|
+
interface AXPPreviewWidgetFieldCommandInput {
|
|
1045
|
+
/** Widget node to render (same shape as `widget-field-configurator` model). */
|
|
1046
|
+
widget?: AXPWidgetNode;
|
|
1047
|
+
/**
|
|
1048
|
+
* Alternate property name for the widget node (matches metadata definition `interface` field).
|
|
1049
|
+
*/
|
|
1050
|
+
interface?: AXPWidgetNode | string;
|
|
1051
|
+
fieldName?: string;
|
|
1052
|
+
fieldTitle?: AXPMultiLanguageString;
|
|
1053
|
+
name?: string;
|
|
1054
|
+
title?: AXPMultiLanguageString;
|
|
1055
|
+
}
|
|
1056
|
+
type AXPPreviewWidgetFieldInvocation = AXPPreviewWidgetFieldCommandInput & {
|
|
1057
|
+
__context__?: {
|
|
1058
|
+
data?: Record<string, unknown>;
|
|
1059
|
+
options?: Record<string, unknown>;
|
|
1060
|
+
};
|
|
1061
|
+
};
|
|
1062
|
+
/**
|
|
1063
|
+
* Opens a dialog that previews a widget configuration (same behavior as the preview button on
|
|
1064
|
+
* `axp-widget-field-configurator`). Invoked from that component and from entity list actions.
|
|
1065
|
+
*/
|
|
1066
|
+
declare class AXPPreviewWidgetFieldCommand implements AXPCommand<AXPPreviewWidgetFieldCommandInput, void> {
|
|
1067
|
+
private readonly formBuilderService;
|
|
1068
|
+
private readonly widgetRegistry;
|
|
1069
|
+
private readonly translationService;
|
|
1070
|
+
private readonly crudService;
|
|
1071
|
+
execute(input: AXPPreviewWidgetFieldInvocation): Promise<AXPExecuteCommandResult<void>>;
|
|
1072
|
+
private mergeInvocation;
|
|
1073
|
+
private normalizeWidget;
|
|
1074
|
+
private resolveFieldTitleLabel;
|
|
1075
|
+
private isCancelDialogOutcome;
|
|
1076
|
+
private resolveWidgetDisplayTitle;
|
|
1077
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPreviewWidgetFieldCommand, never>;
|
|
1078
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPreviewWidgetFieldCommand>;
|
|
857
1079
|
}
|
|
858
1080
|
|
|
859
|
-
export { AXPDialogRendererComponent, AXPLayoutBuilderService, AXPLayoutConversionService, AXPLayoutRendererComponent, LayoutBuilderModule };
|
|
860
|
-
export type { AXPDialogContainerOptions, AXPDialogRef, AXPDynamicFormDefinition, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLook, AXPDynamicFormMode, AXPFieldsetContainerOptions, AXPFlexContainerOptions, AXPFormFieldOptions, AXPGridContainerOptions, AXPListWidgetColumn, AXPListWidgetOptions, AXPListWidgetRowCommand, AXPPageContainerOptions, AXPPanelContainerOptions, AXPStepDefinition, AXPStepWizardContainerOptions, AXPStepWizardDefinition, AXPStepWizardGuardPayload, AXPStepWizardStatus, AXPTabsetContainerOptions, AXPWidgetConfiguration, 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 };
|
|
1081
|
+
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, DEFAULT_CANCEL_DIALOG_ACTION_SHORTCUTS, DEFAULT_SUBMIT_DIALOG_ACTION_SHORTCUTS, LayoutBuilderModule, createDismissedDialogRef };
|
|
1082
|
+
export type { AXPDialogActionMenuItem, AXPDialogActionOptions, AXPDialogActionShortcut, AXPDialogCloseConfirmationOptions, 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 };
|