@acorex/platform 20.8.5 → 21.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +121 -27
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-common-common-settings.provider-41RhWqb4.mjs → acorex-platform-common-common-settings.provider-G9XcXXOG.mjs} +4 -4
  4. package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +669 -268
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +333 -140
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +557 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +539 -110
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/{acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs → acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs} +15 -15
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CWV4XD36.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +3285 -1035
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +488 -284
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +15955 -11978
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +410 -170
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +548 -474
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs → acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs} +11 -11
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-fLjWiSFE.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs → acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs} +22 -77
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-3oRAKxTo.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs → acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs} +8 -9
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-CazpERbX.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs → acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs} +17 -17
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BQ4G6aYf.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs +116 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-DWuWxUF_.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs} +25 -19
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-fV94u3t2.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs} +9 -9
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DyuvQhgN.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs} +7 -7
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-EJMMdpIs.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +6396 -4058
  42. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-native.mjs +8 -7
  44. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-runtime.mjs +328 -166
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CkptOSO3.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-DXC2qtvK.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs → acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs} +16 -23
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DYyunzKZ.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs +31 -0
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C5lQECDP.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs +25 -0
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-D5wBXAB-.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-AhDiY3DI.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1687 -69
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs → acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs} +8 -8
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-QL2-ZUVg.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs} +8 -8
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BXydqPt_.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
  66. package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs +88 -0
  68. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-Cb9iY6k9.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs +80 -0
  70. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-KP4-BND5.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-themes-shared.mjs +572 -465
  72. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  73. package/fesm2022/acorex-platform-workflow.mjs +276 -98
  74. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  75. package/fesm2022/acorex-platform.mjs.map +1 -1
  76. package/package.json +33 -33
  77. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +14 -2
  78. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +261 -24
  79. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +163 -42
  80. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
  81. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +137 -38
  82. package/{layout/components/index.d.ts → types/acorex-platform-layout-components.d.ts} +808 -131
  83. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
  84. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +686 -61
  85. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +80 -47
  86. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +274 -197
  87. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +583 -104
  88. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  89. package/types/acorex-platform-runtime.d.ts +565 -0
  90. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +105 -4
  91. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +14 -5
  92. package/{workflow/index.d.ts → types/acorex-platform-workflow.d.ts} +96 -81
  93. package/fesm2022/acorex-platform-common-common-settings.provider-41RhWqb4.mjs.map +0 -1
  94. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CSxCnzwU.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-CPBzE96V.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-Dtv6U3df.mjs.map +0 -1
  97. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-QxJfswhK.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-CVdssZBD.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs +0 -111
  100. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BCxE0RTB.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DVaZN9QN.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-DPGHgXa6.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CdiNW691.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs +0 -160
  105. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-D4hU2SCE.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs +0 -1610
  107. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CLDoygoI.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs +0 -120
  109. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BVTklnzs.mjs.map +0 -1
  110. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-rGsMVAZj.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs +0 -31
  112. package/fesm2022/acorex-platform-themes-default-error-401.component-53VB-PS_.mjs.map +0 -1
  113. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs +0 -25
  114. package/fesm2022/acorex-platform-themes-default-error-404.component-DVF9soT5.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs +0 -19
  116. package/fesm2022/acorex-platform-themes-default-error-offline.component-CwNNHzZn.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-TJ9PWHMY.mjs.map +0 -1
  118. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BHcKkIx0.mjs.map +0 -1
  119. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  120. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs +0 -65
  121. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BUPs84MI.mjs.map +0 -1
  122. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs +0 -64
  123. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BotknoHn.mjs.map +0 -1
  124. package/runtime/index.d.ts +0 -307
  125. /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, AXPWidgetCoreContextChangeEvent, AXPWidgetContainerComponent, AXPWidgetCoreElementAction } from '@acorex/platform/layout/widget-core';
6
+ import { AXPWidgetNode, AXPWidgetRenderMode, AXPWidgetContainerComponent, AXPWidgetCoreElementAction } from '@acorex/platform/layout/widget-core';
7
+ import { AXPMetaData, AXPGridLayoutOptions, AXPActionMenuItem, AXPMultiLanguageString, AXPExpression, AXPValidationRules, AXPOptionsData, AXPContextChangeEvent, AXPExecuteCommandResult } from '@acorex/platform/core';
7
8
  import { AXDataSource } from '@acorex/cdk/common';
8
9
  import { AXPopupSizeType } from '@acorex/components/popup';
9
10
  import { AXStepWizardLook } from '@acorex/components/step-wizard';
10
- import { AXPGridLayoutOptions, AXPExpression, AXPValidationRules, AXPOptionsData, AXPActionMenuItem } 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?: string;
33
+ title?: AXPMultiLanguageString;
33
34
  badge?: string;
34
- description?: string;
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?: string;
45
- description?: string;
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?: string;
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?: string;
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?: string;
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?: string;
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?: string;
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,36 @@ 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
+ message?: string;
274
+ context: Record<string, unknown>;
275
+ definition: AXPWidgetNode;
276
+ metadata?: AXPMetaData;
277
+ actions: NonNullable<DialogBuilderState['actions']>;
278
+ onAction?: (dialogRef: AXPDialogRef) => unknown | Promise<unknown>;
243
279
  }
244
280
  interface RichTextOptions extends ValueWidgetOptions {
245
- placeholder?: string;
281
+ placeholder?: AXPMultiLanguageString;
246
282
  toolbar?: string[];
247
283
  readonly?: boolean;
284
+ /** Max height (px) for scrollable full preview when `showFullContent` is true. */
285
+ height?: number;
286
+ /** When true, view mode renders full HTML in a scrollable area instead of a truncated snippet. */
287
+ showFullContent?: boolean;
248
288
  }
249
289
  interface PasswordBoxOptions extends ValueWidgetOptions {
250
- placeholder?: string;
290
+ placeholder?: AXPMultiLanguageString;
251
291
  revealToggle?: boolean;
252
292
  maxLength?: number;
253
293
  }
@@ -269,7 +309,7 @@ interface SelectionListOptions extends ValueWidgetOptions {
269
309
  textField?: string;
270
310
  multiple?: boolean;
271
311
  searchable?: boolean;
272
- placeholder?: string;
312
+ placeholder?: AXPMultiLanguageString;
273
313
  }
274
314
  interface AXPListWidgetColumn {
275
315
  name: string;
@@ -408,7 +448,9 @@ type DialogBuilderState = AXPWidgetNode & {
408
448
  interface IActionBuilder {
409
449
  cancel(text?: string): IActionBuilder;
410
450
  submit(text?: string): IActionBuilder;
411
- custom(action: AXPActionMenuItem): IActionBuilder;
451
+ custom(action: AXPActionMenuItem & {
452
+ position?: 'prefix' | 'suffix';
453
+ }): IActionBuilder;
412
454
  }
413
455
  interface ILayoutBuilder {
414
456
  grid(delegate: (container: IGridContainerBuilder) => void): ILayoutBuilder;
@@ -508,6 +550,8 @@ interface IGridContainerBuilder extends IBaseContainerBuilder<IGridContainerBuil
508
550
  setBackgroundColor(color: string): IGridContainerBuilder;
509
551
  setPadding(padding: string): IGridContainerBuilder;
510
552
  setMargin(margin: string): IGridContainerBuilder;
553
+ /** Add a grid-item-layout child with optional placement; delegate builds the fieldset content. */
554
+ item(layoutOptions: Partial<AXPGridLayoutOptions> | null | undefined, delegate: (container: IFieldsetContainerBuilder) => void): IGridContainerBuilder;
511
555
  }
512
556
  interface IPanelContainerBuilder extends IBaseContainerBuilder<IPanelContainerBuilder>, ILayoutContainerBuilder<IPanelContainerBuilder>, IChildContainerBuilder<IPanelContainerBuilder>, IWidgetContainerBuilder<IPanelContainerBuilder> {
513
557
  setOptions(options: AXPPanelContainerOptions): IPanelContainerBuilder;
@@ -659,6 +703,11 @@ declare class AXPLayoutRendererComponent implements OnInit {
659
703
  */
660
704
  mode: _angular_core.InputSignal<AXPDynamicFormMode>;
661
705
  protected widgetTree: _angular_core.WritableSignal<AXPWidgetNode | null>;
706
+ /**
707
+ * Prefer explicit {@link AXPWidgetNode.mode} on the root node (e.g. dialog flex `mode('view')`)
708
+ * so nested widgets resolve view vs edit correctly; fall back to the layout `mode` input.
709
+ */
710
+ protected effectiveRenderMode: _angular_core.Signal<"view" | "edit" | "column" | "designer" | "print" | "filter">;
662
711
  /**
663
712
  * Convert layout data to widget tree when inputs change
664
713
  */
@@ -685,7 +734,7 @@ declare class AXPLayoutRendererComponent implements OnInit {
685
734
  /**
686
735
  * Handle context change events from widget container (optimized with RxJS)
687
736
  */
688
- protected handleContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
737
+ protected handleContextChanged(event: AXPContextChangeEvent): void;
689
738
  /**
690
739
  * Get the form component instance
691
740
  */
@@ -740,8 +789,25 @@ declare class LayoutBuilderModule {
740
789
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<LayoutBuilderModule>;
741
790
  }
742
791
 
792
+ /**
793
+ * Runs after dialog options and context are prepared and **before** footer customization and popup open.
794
+ * Listeners may mutate {@link AXPLayoutBuilderDialogBeforeOpenPayload.context} by reference.
795
+ */
796
+ declare const AXP_LAYOUT_BUILDER_DIALOG_BEFORE_OPEN_HOOK_KEY = "layout-builder.dialog.before-open";
797
+ interface AXPLayoutBuilderDialogBeforeOpenPayload {
798
+ context: Record<string, unknown>;
799
+ dialogOptions: AXPDialogContainerOptions;
800
+ }
801
+ /**
802
+ * Runs after builder-defined footer actions exist and **before** the dialog opens.
803
+ * Listeners receive the live `actions.footer.prefix` / `suffix` arrays (same references as the dialog)
804
+ * so they may push, splice, filter, or replace items. They may also mutate {@link AXPLayoutBuilderDialogFooterPayload.context} by reference.
805
+ */
806
+ declare const AXP_LAYOUT_BUILDER_DIALOG_CONFIG_HOOK_KEY = "layout-builder.dialog.config";
807
+
743
808
  declare class AXPLayoutBuilderService {
744
809
  private popupService;
810
+ private readonly hookService;
745
811
  /**
746
812
  * Create a new layout builder
747
813
  */
@@ -816,23 +882,7 @@ declare class AXPLayoutConversionService {
816
882
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPLayoutConversionService>;
817
883
  }
818
884
 
819
- interface DialogRendererConfig {
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
- }
885
+ type DialogRendererConfig = AXPLayoutBuilderDialogConfig;
836
886
  interface DialogRendererResult {
837
887
  context: any;
838
888
  action?: string;
@@ -845,7 +895,7 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
845
895
  private expressionEvaluator;
846
896
  private dialogResult?;
847
897
  context: _angular_core.WritableSignal<any>;
848
- callBack: (dialogRef: AXPDialogRef) => void;
898
+ callBack: (result: unknown) => void;
849
899
  data: any;
850
900
  private isDialogLoading;
851
901
  footerPrefix: _angular_core.WritableSignal<AXPWidgetCoreElementAction[]>;
@@ -860,18 +910,67 @@ declare class AXPDialogRendererComponent extends AXBasePageComponent implements
860
910
  isFormLoading(): boolean;
861
911
  isSubmitting(): boolean;
862
912
  executeAction(action: AXPWidgetCoreElementAction): Promise<void>;
913
+ /** Whether the layout form should be validated before running this footer command. */
914
+ private shouldValidateBeforeAction;
915
+ private createDialogRef;
916
+ private closeWithOptionalSkipValidate;
917
+ /** Resolves footer/widget action command to a string (e.g. `cancel`, `submit`, `widget:...`). */
918
+ private resolveActionCommandName;
863
919
  private parseWidgetCommand;
864
- private executeWidgetApi;
920
+ private invokeWidget;
865
921
  close(result?: DialogRendererResult): Promise<void>;
866
922
  private aggregateAndEvaluateActions;
867
923
  private collectWidgetActions;
868
924
  private collectDialogActionsFromConfig;
869
925
  private evaluatePredicates;
870
926
  private evalBool;
927
+ /** Resolves footer action title when it contains {{ ... }} (e.g. wizard labels from dialog context). */
928
+ private evalActionTitle;
871
929
  private resolveApi;
872
930
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDialogRendererComponent, never>;
873
931
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDialogRendererComponent, "axp-dialog-renderer", never, {}, { "result": "result"; }, never, never, true, never>;
874
932
  }
875
933
 
876
- export { AXPDialogRendererComponent, AXPLayoutBuilderService, AXPLayoutConversionService, AXPLayoutRendererComponent, LayoutBuilderModule };
877
- 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, 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 };
934
+ /** Registration key for {@link AXPPreviewWidgetFieldCommand}; lives alone so `LayoutBuilderModule` can reference it without static-importing the command implementation. */
935
+ declare const AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY = "Widget:Preview";
936
+
937
+ /** See `AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY` in `preview-widget-field.command.key.ts`. */
938
+ interface AXPPreviewWidgetFieldCommandInput {
939
+ /** Widget node to render (same shape as `widget-field-configurator` model). */
940
+ widget?: AXPWidgetNode;
941
+ /**
942
+ * Alternate property name for the widget node (matches metadata definition `interface` field).
943
+ */
944
+ interface?: AXPWidgetNode | string;
945
+ fieldName?: string;
946
+ fieldTitle?: AXPMultiLanguageString;
947
+ name?: string;
948
+ title?: AXPMultiLanguageString;
949
+ }
950
+ type AXPPreviewWidgetFieldInvocation = AXPPreviewWidgetFieldCommandInput & {
951
+ __context__?: {
952
+ data?: Record<string, unknown>;
953
+ options?: Record<string, unknown>;
954
+ };
955
+ };
956
+ /**
957
+ * Opens a dialog that previews a widget configuration (same behavior as the preview button on
958
+ * `axp-widget-field-configurator`). Invoked from that component and from entity list actions.
959
+ */
960
+ declare class AXPPreviewWidgetFieldCommand implements AXPCommand<AXPPreviewWidgetFieldCommandInput, void> {
961
+ private readonly formBuilderService;
962
+ private readonly widgetRegistry;
963
+ private readonly translationService;
964
+ private readonly crudService;
965
+ execute(input: AXPPreviewWidgetFieldInvocation): Promise<AXPExecuteCommandResult<void>>;
966
+ private mergeInvocation;
967
+ private normalizeWidget;
968
+ private resolveFieldTitleLabel;
969
+ private isCancelDialogOutcome;
970
+ private resolveWidgetDisplayTitle;
971
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPPreviewWidgetFieldCommand, never>;
972
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPPreviewWidgetFieldCommand>;
973
+ }
974
+
975
+ export { AXPDialogRendererComponent, AXPLayoutBuilderService, AXPLayoutConversionService, AXPLayoutRendererComponent, AXPPreviewWidgetFieldCommand, AXP_LAYOUT_BUILDER_DIALOG_BEFORE_OPEN_HOOK_KEY, AXP_LAYOUT_BUILDER_DIALOG_CONFIG_HOOK_KEY, AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY, LayoutBuilderModule };
976
+ export type { AXPDialogContainerOptions, AXPDialogRef, AXPDynamicFormDefinition, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLook, AXPDynamicFormMode, AXPFieldsetContainerOptions, AXPFlexContainerOptions, AXPFormFieldHintDisplayMode, AXPFormFieldOptions, AXPGridContainerOptions, AXPLayoutBuilderDialogBeforeOpenPayload, AXPLayoutBuilderDialogConfig, 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 };