@acorex/platform 20.3.0-next.14 → 20.3.0-next.16

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 (84) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +19 -19
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-common.mjs +99 -99
  4. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-core.mjs +42 -42
  6. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-domain.mjs +16 -16
  8. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-builder.mjs +1690 -1030
  10. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-components.mjs +2189 -1567
  12. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-designer.mjs +73 -73
  14. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  15. package/fesm2022/{acorex-platform-layout-entity-create-entity.command-CuueLekJ.mjs → acorex-platform-layout-entity-create-entity.command-CFBqiwfy.mjs} +4 -4
  16. package/fesm2022/{acorex-platform-layout-entity-create-entity.command-CuueLekJ.mjs.map → acorex-platform-layout-entity-create-entity.command-CFBqiwfy.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-layout-entity.mjs +160 -161
  18. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-views.mjs +15 -15
  20. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-widget-core.mjs +163 -74
  22. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  23. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C82aG5Rf.mjs → acorex-platform-layout-widgets-button-widget-designer.component-BzsfTNs2.mjs} +4 -4
  24. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C82aG5Rf.mjs.map → acorex-platform-layout-widgets-button-widget-designer.component-BzsfTNs2.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-CMmz70I8.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-Dvk76-2W.mjs} +4 -4
  26. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-CMmz70I8.mjs.map → acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-Dvk76-2W.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-DDOyf7NG.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-BYLaipWi.mjs} +4 -4
  28. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-DDOyf7NG.mjs.map → acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-BYLaipWi.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-flsveRJc.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-DcSllNik.mjs} +4 -4
  30. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-flsveRJc.mjs.map → acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-DcSllNik.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-values-widget-view.component-CFXLM9Ls.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-view.component-BT-U4BiA.mjs} +4 -4
  32. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-values-widget-view.component-CFXLM9Ls.mjs.map → acorex-platform-layout-widgets-extra-properties-values-widget-view.component-BT-U4BiA.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-widget-edit.component-1Wd5IUpo.mjs → acorex-platform-layout-widgets-extra-properties-widget-edit.component-Il7jnRBg.mjs} +4 -4
  34. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-widget-edit.component-1Wd5IUpo.mjs.map → acorex-platform-layout-widgets-extra-properties-widget-edit.component-Il7jnRBg.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-widget-view.component-WLyXXg19.mjs → acorex-platform-layout-widgets-extra-properties-widget-view.component-CBEPu7Fl.mjs} +4 -4
  36. package/fesm2022/{acorex-platform-layout-widgets-extra-properties-widget-view.component-WLyXXg19.mjs.map → acorex-platform-layout-widgets-extra-properties-widget-view.component-CBEPu7Fl.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-DxTXIO_k.mjs → acorex-platform-layout-widgets-file-list-popup.component-BPzn8lr3.mjs} +5 -5
  38. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-BPzn8lr3.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-44YSAqDc.mjs → acorex-platform-layout-widgets-page-widget-designer.component-C_JrGoXy.mjs} +4 -4
  40. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-44YSAqDc.mjs.map → acorex-platform-layout-widgets-page-widget-designer.component-C_JrGoXy.mjs.map} +1 -1
  41. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Dat0cqWe.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-C6DaBt_N.mjs} +4 -4
  42. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Dat0cqWe.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component-C6DaBt_N.mjs.map} +1 -1
  43. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-CtJBzqq_.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-Bth3jI9T.mjs} +4 -4
  44. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-CtJBzqq_.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-Bth3jI9T.mjs.map} +1 -1
  45. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Djpj1fNO.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-CUHptbP4.mjs} +4 -4
  46. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Djpj1fNO.mjs.map → acorex-platform-layout-widgets-text-block-widget-designer.component-CUHptbP4.mjs.map} +1 -1
  47. package/fesm2022/acorex-platform-layout-widgets.mjs +697 -664
  48. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  49. package/fesm2022/acorex-platform-native.mjs +7 -7
  50. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  51. package/fesm2022/acorex-platform-runtime.mjs +40 -40
  52. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  53. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-oOA674Jd.mjs → acorex-platform-themes-default-entity-master-create-view.component-eGzN6g2Y.mjs} +4 -4
  54. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-oOA674Jd.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-eGzN6g2Y.mjs.map} +1 -1
  55. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-Bk4p9oHD.mjs → acorex-platform-themes-default-entity-master-list-view.component-DjNvH3OA.mjs} +10 -10
  56. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-Bk4p9oHD.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-DjNvH3OA.mjs.map} +1 -1
  57. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-CrDQOCpB.mjs → acorex-platform-themes-default-entity-master-modify-view.component-HJyalvcu.mjs} +4 -4
  58. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-CrDQOCpB.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-HJyalvcu.mjs.map} +1 -1
  59. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CT-1gX4H.mjs → acorex-platform-themes-default-entity-master-single-view.component-e7m70Wls.mjs} +7 -7
  60. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CT-1gX4H.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-e7m70Wls.mjs.map} +1 -1
  61. package/fesm2022/{acorex-platform-themes-default-error-401.component-CHJFmJ2W.mjs → acorex-platform-themes-default-error-401.component-CoBaQFTn.mjs} +4 -4
  62. package/fesm2022/{acorex-platform-themes-default-error-401.component-CHJFmJ2W.mjs.map → acorex-platform-themes-default-error-401.component-CoBaQFTn.mjs.map} +1 -1
  63. package/fesm2022/{acorex-platform-themes-default-error-404.component-Db8KkVIF.mjs → acorex-platform-themes-default-error-404.component-BLlVOsS2.mjs} +4 -4
  64. package/fesm2022/{acorex-platform-themes-default-error-404.component-Db8KkVIF.mjs.map → acorex-platform-themes-default-error-404.component-BLlVOsS2.mjs.map} +1 -1
  65. package/fesm2022/{acorex-platform-themes-default-error-offline.component-DH39Viy-.mjs → acorex-platform-themes-default-error-offline.component-CybYQI9F.mjs} +4 -4
  66. package/fesm2022/{acorex-platform-themes-default-error-offline.component-DH39Viy-.mjs.map → acorex-platform-themes-default-error-offline.component-CybYQI9F.mjs.map} +1 -1
  67. package/fesm2022/acorex-platform-themes-default.mjs +39 -39
  68. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  69. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-mFBYGE0_.mjs → acorex-platform-themes-shared-icon-chooser-view.component-ReKSoVeN.mjs} +4 -4
  70. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-mFBYGE0_.mjs.map → acorex-platform-themes-shared-icon-chooser-view.component-ReKSoVeN.mjs.map} +1 -1
  71. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-viyyova6.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-B2HDyY2z.mjs} +4 -4
  72. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-viyyova6.mjs.map → acorex-platform-themes-shared-theme-color-chooser-column.component-B2HDyY2z.mjs.map} +1 -1
  73. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-BrUtKTXd.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-CeZxa49U.mjs} +4 -4
  74. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-BrUtKTXd.mjs.map → acorex-platform-themes-shared-theme-color-chooser-view.component-CeZxa49U.mjs.map} +1 -1
  75. package/fesm2022/acorex-platform-themes-shared.mjs +42 -42
  76. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  77. package/fesm2022/acorex-platform-workflow.mjs +25 -25
  78. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  79. package/layout/builder/index.d.ts +458 -237
  80. package/layout/components/index.d.ts +130 -42
  81. package/layout/widget-core/index.d.ts +8 -1
  82. package/layout/widgets/index.d.ts +80 -2
  83. package/package.json +6 -6
  84. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-DxTXIO_k.mjs.map +0 -1
@@ -1,13 +1,148 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit } from '@angular/core';
2
+ import { OnInit, EventEmitter } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
- import { AXPWidgetRenderMode, AXPWidgetNode } from '@acorex/platform/layout/widget-core';
5
- import { AXPGridLayoutOptions } from '@acorex/platform/core';
4
+ import { AXPWidgetNode, AXPWidgetCoreContextChangeEvent, AXPWidgetContainerComponent, AXPWidgetRenderMode } from '@acorex/platform/layout/widget-core';
5
+ import { AXFormComponent } from '@acorex/components/form';
6
+ import { AXPDynamicFormDefinition, AXPDynamicFormLook, AXPDynamicFormMode, AXPDialogRef } from '@acorex/platform/layout/components';
7
+ import { AXValidationSummary } from '@acorex/core/validation';
8
+ import { AXDataSource } from '@acorex/cdk/common';
9
+ import { AXPopupSizeType } from '@acorex/components/popup';
10
+ import { AXPExpression, AXPGridLayoutOptions, AXPValidationRules, AXPActionMenuItem, AXPOptionsData } from '@acorex/platform/core';
11
+ import { AXBasePageComponent } from '@acorex/components/page';
6
12
 
7
- type AXPLayoutMode = AXPWidgetRenderMode;
8
- type AXPLayoutDirection = 'horizontal' | 'vertical';
9
- type AXPLayoutLook = 'normal' | 'borderless' | 'outlined';
10
- interface TextBoxOptions {
13
+ declare class AXPLayoutRendererComponent implements OnInit {
14
+ #private;
15
+ private evaluatorService;
16
+ private conversionService;
17
+ /**
18
+ * Tracks the latest scheduled evaluation to ensure last-write-wins for async evaluate
19
+ */
20
+ private evaluationRunId;
21
+ /**
22
+ * RxJS subjects for context management
23
+ */
24
+ private contextUpdateSubject;
25
+ private contextChangeSubject;
26
+ /**
27
+ * Cache for expression evaluation results
28
+ */
29
+ private expressionCache;
30
+ /**
31
+ * Cache for widget tree comparisons
32
+ */
33
+ private widgetTreeCache;
34
+ /**
35
+ * Last layout hash for change detection
36
+ */
37
+ private lastLayoutHash;
38
+ /**
39
+ * Form definition containing groups and fields OR widget tree
40
+ */
41
+ layout: i0.InputSignal<AXPWidgetNode | AXPDynamicFormDefinition>;
42
+ /**
43
+ * Form context/model data
44
+ */
45
+ context: i0.ModelSignal<any>;
46
+ /**
47
+ * Form appearance and density styling (normal, compact, spacious)
48
+ */
49
+ look: i0.InputSignal<AXPDynamicFormLook>;
50
+ /**
51
+ * Default form mode. Can be overridden by section/group and field.
52
+ */
53
+ mode: i0.InputSignal<AXPDynamicFormMode>;
54
+ protected widgetTree: i0.WritableSignal<AXPWidgetNode | null>;
55
+ /**
56
+ * Convert and evaluate data when inputs change (optimized with RxJS)
57
+ */
58
+ conversionEffect: i0.EffectRef;
59
+ protected expressionEvaluator(expression: any, context: any): Promise<any>;
60
+ /**
61
+ * Emitted when context change is initiated
62
+ */
63
+ contextInitiated: i0.OutputEmitterRef<any>;
64
+ /**
65
+ * Emitted when form becomes valid/invalid
66
+ */
67
+ validityChange: i0.OutputEmitterRef<boolean>;
68
+ private form;
69
+ private container;
70
+ /**
71
+ * Internal context signal for reactivity
72
+ */
73
+ protected internalContext: i0.WritableSignal<any>;
74
+ ngOnInit(): void;
75
+ /**
76
+ * Handle context change events from widget container (optimized with RxJS)
77
+ */
78
+ protected handleContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
79
+ /**
80
+ * Get the form component instance
81
+ */
82
+ getForm(): AXFormComponent | undefined;
83
+ /**
84
+ * Get the widget container component instance
85
+ */
86
+ getContainer(): AXPWidgetContainerComponent | undefined;
87
+ /**
88
+ * Get current form context
89
+ */
90
+ getContext(): any;
91
+ /**
92
+ * Update form context programmatically
93
+ */
94
+ updateContext(context: any): void;
95
+ /**
96
+ * Get the current widget tree
97
+ */
98
+ getWidgetTree(): AXPWidgetNode | null;
99
+ /**
100
+ * Validate the form
101
+ */
102
+ validate(): Promise<AXValidationSummary>;
103
+ /**
104
+ * Setup RxJS streams for context management
105
+ */
106
+ private setupContextStreams;
107
+ /**
108
+ * Type guard to check if the input is a form definition
109
+ */
110
+ private isFormDefinition;
111
+ /**
112
+ * Generate layout hash for change detection (short hash)
113
+ */
114
+ private generateLayoutHash;
115
+ /**
116
+ * Generate cache key for expression evaluation (short hash)
117
+ */
118
+ private generateCacheKey;
119
+ /**
120
+ * Generate a simple hash for context change detection
121
+ */
122
+ private generateContextHash;
123
+ /**
124
+ * Simple hash function for generating short keys
125
+ */
126
+ private simpleHash;
127
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPLayoutRendererComponent, never>;
128
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPLayoutRendererComponent, "axp-layout-renderer", never, { "layout": { "alias": "layout"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "context": "contextChange"; "contextInitiated": "contextInitiated"; "validityChange": "validityChange"; }, never, never, true, never>;
129
+ }
130
+
131
+ declare class LayoutBuilderModule {
132
+ static ɵfac: i0.ɵɵFactoryDeclaration<LayoutBuilderModule, never>;
133
+ static ɵmod: i0.ɵɵNgModuleDeclaration<LayoutBuilderModule, never, [typeof i1.CommonModule, typeof AXPLayoutRendererComponent], [typeof AXPLayoutRendererComponent]>;
134
+ static ɵinj: i0.ɵɵInjectorDeclaration<LayoutBuilderModule>;
135
+ }
136
+
137
+ interface LayoutWidgetOptions {
138
+ name?: string;
139
+ }
140
+ interface ValueWidgetOptions extends LayoutWidgetOptions {
141
+ path: string;
142
+ defaultValue?: any;
143
+ validations?: AXPValidationRules;
144
+ }
145
+ interface TextBoxOptions extends ValueWidgetOptions {
11
146
  placeholder?: string;
12
147
  maxLength?: number;
13
148
  minLength?: number;
@@ -15,23 +150,24 @@ interface TextBoxOptions {
15
150
  suffix?: string;
16
151
  clearButton?: boolean;
17
152
  }
18
- interface NumberBoxOptions {
153
+ interface NumberBoxOptions extends ValueWidgetOptions {
19
154
  min?: number;
20
155
  max?: number;
21
156
  step?: number;
22
157
  placeholder?: string;
23
158
  format?: string;
24
159
  }
25
- interface SelectBoxOptions {
26
- items: any[] | (() => any[]) | (() => Promise<any[]>);
160
+ interface SelectBoxOptions extends ValueWidgetOptions {
161
+ dataSource: any[] | (() => any[]) | (() => Promise<any[]>) | AXDataSource<any>;
27
162
  valueField?: string;
28
163
  textField?: string;
29
164
  placeholder?: string;
30
165
  multiple?: boolean;
31
166
  searchable?: boolean;
32
167
  clearButton?: boolean;
168
+ allowSearch?: boolean;
33
169
  }
34
- interface DateTimeBoxOptions {
170
+ interface DateTimeBoxOptions extends ValueWidgetOptions {
35
171
  type?: 'date' | 'time' | 'datetime';
36
172
  format?: string;
37
173
  min?: Date | string;
@@ -39,24 +175,24 @@ interface DateTimeBoxOptions {
39
175
  placeholder?: string;
40
176
  clearButton?: boolean;
41
177
  }
42
- interface ToggleSwitchOptions {
178
+ interface ToggleSwitchOptions extends ValueWidgetOptions {
43
179
  label?: string;
44
180
  trueText?: string;
45
181
  falseText?: string;
46
182
  }
47
- interface LargeTextBoxOptions {
183
+ interface LargeTextBoxOptions extends ValueWidgetOptions {
48
184
  rows?: number;
49
185
  maxLength?: number;
50
186
  minLength?: number;
51
187
  placeholder?: string;
52
188
  resizable?: boolean;
53
189
  }
54
- interface ColorBoxOptions {
190
+ interface ColorBoxOptions extends ValueWidgetOptions {
55
191
  format?: 'hex' | 'rgb' | 'hsl';
56
192
  showAlpha?: boolean;
57
193
  showPalette?: boolean;
58
194
  }
59
- interface AXPFlexContainerOptions {
195
+ interface AXPFlexContainerOptions extends LayoutWidgetOptions {
60
196
  flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
61
197
  flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
62
198
  justifyContent?: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
@@ -84,7 +220,7 @@ interface AXPFlexContainerOptions {
84
220
  minHeight?: string;
85
221
  maxHeight?: string;
86
222
  }
87
- interface AXPGridContainerOptions {
223
+ interface AXPGridContainerOptions extends LayoutWidgetOptions {
88
224
  grid?: {
89
225
  default?: {
90
226
  columns?: number;
@@ -117,7 +253,7 @@ interface AXPGridContainerOptions {
117
253
  minHeight?: string;
118
254
  maxHeight?: string;
119
255
  }
120
- interface AXPPanelContainerOptions {
256
+ interface AXPPanelContainerOptions extends LayoutWidgetOptions {
121
257
  caption?: string;
122
258
  icon?: string;
123
259
  look?: 'solid' | 'fill' | 'outline' | 'flat' | 'none';
@@ -125,7 +261,7 @@ interface AXPPanelContainerOptions {
125
261
  showHeader?: boolean;
126
262
  collapsed?: boolean;
127
263
  }
128
- interface AXPPageContainerOptions {
264
+ interface AXPPageContainerOptions extends LayoutWidgetOptions {
129
265
  backgroundColor?: string;
130
266
  theme?: {
131
267
  id: string;
@@ -134,216 +270,198 @@ interface AXPPageContainerOptions {
134
270
  hasFooter?: boolean;
135
271
  direction?: string;
136
272
  }
137
- interface AXPTabsetContainerOptions {
273
+ interface AXPTabsetContainerOptions extends LayoutWidgetOptions {
138
274
  look?: 'with-line' | 'with-line-color' | 'pills' | 'pills-color';
139
275
  orientation?: 'vertical' | 'horizontal';
140
276
  activeIndex?: number;
141
277
  }
142
- interface RichTextOptions {
278
+ interface AXPFieldsetContainerOptions extends LayoutWidgetOptions {
279
+ title?: string;
280
+ description?: string;
281
+ icon?: string;
282
+ collapsible?: boolean;
283
+ isOpen?: boolean;
284
+ look?: 'fieldset' | 'card' | 'group';
285
+ disabled?: boolean;
286
+ showHeader?: boolean;
287
+ cols?: number;
288
+ }
289
+ interface AXPFormFieldOptions extends LayoutWidgetOptions {
290
+ label?: string;
291
+ showLabel?: boolean;
292
+ }
293
+ interface AXPDialogContainerOptions extends LayoutWidgetOptions {
294
+ title?: string;
295
+ message?: string;
296
+ size?: AXPopupSizeType;
297
+ closeButton?: boolean;
298
+ context?: any;
299
+ }
300
+ interface RichTextOptions extends ValueWidgetOptions {
143
301
  placeholder?: string;
144
302
  toolbar?: string[];
145
303
  readonly?: boolean;
146
304
  }
147
- interface PasswordBoxOptions {
305
+ interface PasswordBoxOptions extends ValueWidgetOptions {
148
306
  placeholder?: string;
149
307
  revealToggle?: boolean;
150
308
  maxLength?: number;
151
309
  }
152
- interface LookupBoxOptions {
310
+ interface LookupBoxOptions extends ValueWidgetOptions {
153
311
  dataSource?: any[] | (() => any[]) | (() => Promise<any[]>);
154
312
  valueField?: string;
155
313
  textField?: string;
156
314
  searchable?: boolean;
315
+ entity?: string;
316
+ look?: string;
317
+ columns?: any[];
318
+ expose?: any[];
319
+ multiple?: boolean;
320
+ allowClear?: boolean;
157
321
  }
158
- interface SelectionListOptions {
159
- items: any[] | (() => any[]) | (() => Promise<any[]>);
322
+ interface SelectionListOptions extends ValueWidgetOptions {
323
+ dataSource: any[] | (() => any[]) | (() => Promise<any[]>) | AXDataSource<any>;
160
324
  valueField?: string;
161
325
  textField?: string;
162
326
  multiple?: boolean;
163
327
  searchable?: boolean;
328
+ placeholder?: string;
164
329
  }
165
- interface AXPWidgetConfiguration {
166
- type: string;
167
- options?: any;
330
+ interface AXPListWidgetColumn {
331
+ name: string;
332
+ title?: string;
333
+ visible?: boolean;
334
+ width?: string;
335
+ widget?: {
336
+ type: string;
337
+ path?: string;
338
+ options?: any;
339
+ };
168
340
  }
169
- interface AXPLayoutNodeDefinition {
170
- id?: string;
171
- name?: string;
172
- widget?: AXPWidgetConfiguration;
173
- children?: AXPLayoutNodeDefinition[];
174
- layout?: AXPGridLayoutOptions;
175
- mode?: AXPLayoutMode;
176
- order?: number | string;
177
- visible?: boolean | string;
341
+ interface AXPListWidgetRowCommand {
342
+ title?: string;
343
+ icon?: string;
344
+ color?: string;
178
345
  disabled?: boolean | string;
179
- readonly?: boolean | string;
346
+ hidden?: boolean | string;
347
+ command?: any;
348
+ }
349
+ interface AXPListWidgetOptions extends LayoutWidgetOptions {
350
+ dataSource?: any[] | AXDataSource;
351
+ columns?: AXPListWidgetColumn[];
352
+ onRowClick?: (row: any) => void;
353
+ onRowDoubleClick?: (row: any) => void;
354
+ onSelectionChange?: (selectedRows: any[]) => void;
355
+ onRowCommand?: (command: any, selectedRows: any[]) => void;
356
+ paging?: boolean;
357
+ showHeader?: boolean;
358
+ showFooter?: boolean;
359
+ fixHeader?: boolean;
360
+ fixFooter?: boolean;
361
+ fetchDataMode?: 'auto' | 'manual';
362
+ parentField?: string;
363
+ minHeight?: string | number;
364
+ showIndex?: boolean;
365
+ allowSelection?: boolean;
366
+ primaryCommands?: any[];
367
+ secondaryCommands?: AXPListWidgetRowCommand[];
368
+ loading?: {
369
+ enabled?: boolean;
370
+ animation?: boolean;
371
+ };
180
372
  }
181
- interface AXPLayoutDefinition {
182
- nodes: AXPLayoutNodeDefinition[];
183
- mode?: AXPLayoutMode;
184
- direction?: AXPLayoutDirection;
185
- look?: AXPLayoutLook;
186
- layoutConfig?: AXPGridLayoutOptions;
187
- }
188
- interface LayoutBuilderState {
189
- nodes: AXPLayoutNodeDefinition[];
190
- mode: AXPLayoutMode;
191
- direction: AXPLayoutDirection;
192
- look: AXPLayoutLook;
193
- layoutConfig: AXPGridLayoutOptions;
194
- }
195
- interface WidgetBuilderState {
196
- id?: string;
197
- name?: string;
198
- type: 'widget';
199
- widget?: AXPWidgetConfiguration;
200
- children?: AXPLayoutNodeDefinition[];
201
- layout?: AXPGridLayoutOptions;
202
- mode?: AXPLayoutMode;
203
- order?: number | string;
204
- visible?: boolean | string;
373
+ interface InheritanceContext {
374
+ mode?: AXPWidgetRenderMode;
205
375
  disabled?: boolean | string;
206
376
  readonly?: boolean | string;
377
+ direction?: 'rtl' | 'ltr';
378
+ visible?: boolean | string;
379
+ }
380
+ interface InheritedProperties {
381
+ mode: AXPWidgetRenderMode;
382
+ disabled: boolean | string | undefined;
383
+ readonly: boolean | string | undefined;
384
+ direction: 'rtl' | 'ltr' | undefined;
385
+ visible: boolean | string | undefined;
386
+ }
387
+ interface AXPWidgetConfiguration {
388
+ type: string;
389
+ options?: AXPOptionsData;
390
+ }
391
+ type LayoutBuilderState = AXPWidgetNode;
392
+ type WidgetBuilderState = Omit<AXPWidgetNode, 'children'> & {
393
+ layout?: AXPGridLayoutOptions;
394
+ };
395
+ type FormFieldBuilderState = AXPWidgetNode & {
396
+ layout?: AXPGridLayoutOptions;
397
+ };
398
+ type DialogBuilderState = AXPWidgetNode & {
399
+ layout?: AXPGridLayoutOptions;
400
+ dialogOptions?: AXPDialogContainerOptions;
401
+ actions?: {
402
+ footer?: {
403
+ prefix?: AXPActionMenuItem[];
404
+ suffix?: AXPActionMenuItem[];
405
+ };
406
+ };
407
+ };
408
+ interface IActionBuilder {
409
+ cancel(text?: string): IActionBuilder;
410
+ submit(text?: string): IActionBuilder;
411
+ custom(action: AXPActionMenuItem): IActionBuilder;
207
412
  }
208
413
  interface ILayoutBuilder {
209
- widget(name?: string, delegate?: (widget: IWidgetBuilder) => void): ILayoutBuilder;
210
414
  grid(delegate: (container: IGridContainerBuilder) => void): ILayoutBuilder;
211
415
  flex(delegate: (container: IFlexContainerBuilder) => void): ILayoutBuilder;
212
416
  panel(delegate: (container: IPanelContainerBuilder) => void): ILayoutBuilder;
213
417
  page(delegate: (container: IPageContainerBuilder) => void): ILayoutBuilder;
214
418
  tabset(delegate: (container: ITabsetContainerBuilder) => void): ILayoutBuilder;
215
- textBox(options?: TextBoxOptions): ILayoutBuilder;
216
- largeTextBox(options?: LargeTextBoxOptions): ILayoutBuilder;
217
- richText(options?: RichTextOptions): ILayoutBuilder;
218
- passwordBox(options?: PasswordBoxOptions): ILayoutBuilder;
219
- numberBox(options?: NumberBoxOptions): ILayoutBuilder;
220
- selectBox(options: SelectBoxOptions): ILayoutBuilder;
221
- lookupBox(options: LookupBoxOptions): ILayoutBuilder;
222
- selectionList(options: SelectionListOptions): ILayoutBuilder;
223
- dateTimeBox(options?: DateTimeBoxOptions): ILayoutBuilder;
224
- toggleSwitch(options?: ToggleSwitchOptions): ILayoutBuilder;
225
- colorBox(options?: ColorBoxOptions): ILayoutBuilder;
226
- customWidget(type: string, options?: any): ILayoutBuilder;
227
- layout(config: Partial<AXPGridLayoutOptions>): ILayoutBuilder;
228
- mode(mode: AXPLayoutMode): ILayoutBuilder;
229
- direction(direction: AXPLayoutDirection): ILayoutBuilder;
230
- look(look: AXPLayoutLook): ILayoutBuilder;
231
- build(): AXPLayoutDefinition;
232
- render(): AXPWidgetNode;
233
- }
234
- interface LayoutDefinition {
235
- zones: {
236
- [zoneId: string]: ZoneConfig;
237
- };
238
- styles?: {
239
- [key: string]: any;
240
- };
241
- responsive?: ResponsiveConfig;
242
- }
243
- interface ZoneConfig {
244
- layout?: LayoutTypeConfig;
245
- styles?: {
246
- [key: string]: any;
247
- };
248
- containers?: {
249
- [containerId: string]: ContainerConfig;
250
- };
251
- order?: number;
252
- }
253
- interface ContainerConfig {
254
- layout?: LayoutTypeConfig;
255
- styles?: {
256
- [key: string]: any;
257
- };
258
- }
259
- interface LayoutTypeConfig {
260
- type?: 'flex' | 'grid' | 'block';
261
- flexDirection?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
262
- justifyContent?: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
263
- alignItems?: 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch';
264
- gap?: string;
265
- grid?: {
266
- columns?: number;
267
- rows?: number;
268
- gap?: string;
269
- };
270
- }
271
- interface LayoutNode {
272
- id: string;
273
- type: string;
274
- zone: string;
275
- container?: string;
276
- path?: string;
277
- options?: any;
278
- formula?: string;
279
- triggers?: any[];
280
- defaultValue?: any;
281
- mode?: AXPLayoutMode;
282
- layout?: NodeLayoutConfig;
283
- }
284
- interface NodeLayoutConfig {
285
- width?: string;
286
- height?: string;
287
- order?: number;
288
- flex?: string;
289
- gridArea?: string;
290
- }
291
- interface ResponsiveConfig {
292
- breakpoints?: {
293
- mobile?: number;
294
- tablet?: number;
295
- desktop?: number;
296
- };
297
- }
298
- interface LayoutRenderContext {
299
- data?: any;
300
- variables?: {
301
- [key: string]: any;
302
- };
303
- functions?: {
304
- [key: string]: Function;
305
- };
419
+ fieldset(delegate: (container: IFieldsetContainerBuilder) => void): ILayoutBuilder;
420
+ dialog(delegate: (container: IDialogBuilder) => void): IDialogBuilder;
421
+ build(): AXPWidgetNode;
306
422
  }
307
423
  interface IWidgetBuilder {
308
- id(id: string): IWidgetBuilder;
424
+ name(name: string): IWidgetBuilder;
425
+ path(path: string): IWidgetBuilder;
426
+ type(type: string): IWidgetBuilder;
427
+ options(options: AXPOptionsData): IWidgetBuilder;
309
428
  layout(config: Partial<AXPGridLayoutOptions>): IWidgetBuilder;
310
429
  layout(colSpan: number): IWidgetBuilder;
311
- mode(mode: AXPLayoutMode): IWidgetBuilder;
312
- order(value: number | string): IWidgetBuilder;
430
+ mode(mode: AXPWidgetRenderMode): IWidgetBuilder;
313
431
  visible(condition: boolean | string): IWidgetBuilder;
314
432
  disabled(condition: boolean | string): IWidgetBuilder;
315
433
  readonly(condition: boolean | string): IWidgetBuilder;
316
- grid(delegate: (container: IGridContainerBuilder) => void): IWidgetBuilder;
317
- flex(delegate: (container: IFlexContainerBuilder) => void): IWidgetBuilder;
318
- panel(delegate: (container: IPanelContainerBuilder) => void): IWidgetBuilder;
319
- page(delegate: (container: IPageContainerBuilder) => void): IWidgetBuilder;
320
- tabset(delegate: (container: ITabsetContainerBuilder) => void): IWidgetBuilder;
321
- widget(name?: string, delegate?: (widget: IWidgetBuilder) => void): IWidgetBuilder;
322
- textBox(options?: TextBoxOptions): IWidgetBuilder;
323
- largeTextBox(options?: LargeTextBoxOptions): IWidgetBuilder;
324
- richText(options?: RichTextOptions): IWidgetBuilder;
325
- passwordBox(options?: PasswordBoxOptions): IWidgetBuilder;
326
- numberBox(options?: NumberBoxOptions): IWidgetBuilder;
327
- selectBox(options: SelectBoxOptions): IWidgetBuilder;
328
- lookupBox(options: LookupBoxOptions): IWidgetBuilder;
329
- selectionList(options: SelectionListOptions): IWidgetBuilder;
330
- dateTimeBox(options?: DateTimeBoxOptions): IWidgetBuilder;
331
- toggleSwitch(options?: ToggleSwitchOptions): IWidgetBuilder;
332
- colorBox(options?: ColorBoxOptions): IWidgetBuilder;
333
- customWidget<T>(type: string, options?: T): IWidgetBuilder;
334
- build(): AXPLayoutNodeDefinition;
434
+ direction(direction: 'rtl' | 'ltr'): IWidgetBuilder;
435
+ withInheritanceContext(context: InheritanceContext): IWidgetBuilder;
436
+ getInheritanceContext(): InheritanceContext;
437
+ build(): AXPWidgetNode;
335
438
  }
336
439
  interface IBaseContainerBuilder<TContainer = any> {
337
- id(id: string): TContainer;
440
+ name(name: string): TContainer;
441
+ path(path: string): TContainer;
442
+ mode(mode: AXPWidgetRenderMode): TContainer;
443
+ visible(condition: boolean | AXPExpression): TContainer;
444
+ disabled(condition: boolean | AXPExpression): TContainer;
445
+ readonly(condition: boolean | AXPExpression): TContainer;
446
+ direction(direction: 'rtl' | 'ltr'): TContainer;
447
+ withInheritanceContext(context: InheritanceContext): TContainer;
448
+ getInheritanceContext(): InheritanceContext;
449
+ build(): AXPWidgetNode;
450
+ }
451
+ interface ILayoutContainerBuilder<TContainer = any> {
338
452
  layout(config: Partial<AXPGridLayoutOptions>): TContainer;
339
453
  layout(colSpan: number): TContainer;
340
- mode(mode: AXPLayoutMode): TContainer;
341
- order(value: number | string): TContainer;
342
- visible(condition: boolean | string): TContainer;
343
- disabled(condition: boolean | string): TContainer;
344
- readonly(condition: boolean | string): TContainer;
345
- addContainer<T extends IBaseContainerBuilder>(name?: string, delegate?: (container: T) => void): TContainer;
346
- addWidget(name?: string, delegate?: (widget: IWidgetBuilder) => void): TContainer;
454
+ }
455
+ interface IChildContainerBuilder<TContainer = any> {
456
+ grid(delegate: (container: IGridContainerBuilder) => void): TContainer;
457
+ flex(delegate: (container: IFlexContainerBuilder) => void): TContainer;
458
+ panel(delegate: (container: IPanelContainerBuilder) => void): TContainer;
459
+ page(delegate: (container: IPageContainerBuilder) => void): TContainer;
460
+ tabset(delegate: (container: ITabsetContainerBuilder) => void): TContainer;
461
+ fieldset(delegate: (container: IFieldsetContainerBuilder) => void): TContainer;
462
+ formField(label: string, delegate?: (field: IFormFieldBuilder) => void): TContainer;
463
+ }
464
+ interface IWidgetContainerBuilder<TContainer = any> {
347
465
  textBox(options?: TextBoxOptions): TContainer;
348
466
  largeTextBox(options?: LargeTextBoxOptions): TContainer;
349
467
  richText(options?: RichTextOptions): TContainer;
@@ -355,13 +473,13 @@ interface IBaseContainerBuilder<TContainer = any> {
355
473
  dateTimeBox(options?: DateTimeBoxOptions): TContainer;
356
474
  toggleSwitch(options?: ToggleSwitchOptions): TContainer;
357
475
  colorBox(options?: ColorBoxOptions): TContainer;
476
+ list(delegate: (container: IListWidgetBuilder) => void): TContainer;
358
477
  customWidget<T>(type: string, options?: T): TContainer;
359
- build(): AXPLayoutNodeDefinition;
360
478
  }
361
- interface IFlexContainerBuilder extends IBaseContainerBuilder<IFlexContainerBuilder> {
479
+ interface IFlexContainerBuilder extends IBaseContainerBuilder<IFlexContainerBuilder>, ILayoutContainerBuilder<IFlexContainerBuilder>, IChildContainerBuilder<IFlexContainerBuilder>, IWidgetContainerBuilder<IFlexContainerBuilder> {
362
480
  setOptions(options: AXPFlexContainerOptions): IFlexContainerBuilder;
363
- setFlexDirection(direction: 'row' | 'column' | 'row-reverse' | 'column-reverse'): IFlexContainerBuilder;
364
- setFlexWrap(wrap: 'nowrap' | 'wrap' | 'wrap-reverse'): IFlexContainerBuilder;
481
+ setDirection(direction: 'row' | 'column' | 'row-reverse' | 'column-reverse'): IFlexContainerBuilder;
482
+ setWrap(wrap: 'nowrap' | 'wrap' | 'wrap-reverse'): IFlexContainerBuilder;
365
483
  setJustifyContent(justify: 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'): IFlexContainerBuilder;
366
484
  setAlignItems(align: 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'): IFlexContainerBuilder;
367
485
  setGap(gap: string): IFlexContainerBuilder;
@@ -369,7 +487,7 @@ interface IFlexContainerBuilder extends IBaseContainerBuilder<IFlexContainerBuil
369
487
  setPadding(padding: string): IFlexContainerBuilder;
370
488
  setMargin(margin: string): IFlexContainerBuilder;
371
489
  }
372
- interface IGridContainerBuilder extends IBaseContainerBuilder<IGridContainerBuilder> {
490
+ interface IGridContainerBuilder extends IBaseContainerBuilder<IGridContainerBuilder>, ILayoutContainerBuilder<IGridContainerBuilder>, IChildContainerBuilder<IGridContainerBuilder>, IWidgetContainerBuilder<IGridContainerBuilder> {
373
491
  setOptions(options: AXPGridContainerOptions): IGridContainerBuilder;
374
492
  setColumns(columns: number): IGridContainerBuilder;
375
493
  setRows(rows: number): IGridContainerBuilder;
@@ -381,7 +499,7 @@ interface IGridContainerBuilder extends IBaseContainerBuilder<IGridContainerBuil
381
499
  setPadding(padding: string): IGridContainerBuilder;
382
500
  setMargin(margin: string): IGridContainerBuilder;
383
501
  }
384
- interface IPanelContainerBuilder extends IBaseContainerBuilder<IPanelContainerBuilder> {
502
+ interface IPanelContainerBuilder extends IBaseContainerBuilder<IPanelContainerBuilder>, ILayoutContainerBuilder<IPanelContainerBuilder>, IChildContainerBuilder<IPanelContainerBuilder>, IWidgetContainerBuilder<IPanelContainerBuilder> {
385
503
  setOptions(options: AXPPanelContainerOptions): IPanelContainerBuilder;
386
504
  setCaption(caption: string): IPanelContainerBuilder;
387
505
  setIcon(icon: string): IPanelContainerBuilder;
@@ -389,7 +507,7 @@ interface IPanelContainerBuilder extends IBaseContainerBuilder<IPanelContainerBu
389
507
  setShowHeader(show: boolean): IPanelContainerBuilder;
390
508
  setCollapsed(collapsed: boolean): IPanelContainerBuilder;
391
509
  }
392
- interface IPageContainerBuilder extends IBaseContainerBuilder<IPageContainerBuilder> {
510
+ interface IPageContainerBuilder extends IBaseContainerBuilder<IPageContainerBuilder>, ILayoutContainerBuilder<IPageContainerBuilder>, IChildContainerBuilder<IPageContainerBuilder>, IWidgetContainerBuilder<IPageContainerBuilder> {
393
511
  setOptions(options: AXPPageContainerOptions): IPageContainerBuilder;
394
512
  setBackgroundColor(color: string): IPageContainerBuilder;
395
513
  setTheme(theme: {
@@ -397,89 +515,192 @@ interface IPageContainerBuilder extends IBaseContainerBuilder<IPageContainerBuil
397
515
  }): IPageContainerBuilder;
398
516
  setHasHeader(hasHeader: boolean): IPageContainerBuilder;
399
517
  setHasFooter(hasFooter: boolean): IPageContainerBuilder;
400
- setDirection(direction: string): IPageContainerBuilder;
518
+ setDirection(direction: 'rtl' | 'ltr'): IPageContainerBuilder;
401
519
  }
402
- interface ITabsetContainerBuilder extends IBaseContainerBuilder<ITabsetContainerBuilder> {
520
+ interface ITabsetContainerBuilder extends IBaseContainerBuilder<ITabsetContainerBuilder>, ILayoutContainerBuilder<ITabsetContainerBuilder>, IChildContainerBuilder<ITabsetContainerBuilder>, IWidgetContainerBuilder<ITabsetContainerBuilder> {
403
521
  setOptions(options: AXPTabsetContainerOptions): ITabsetContainerBuilder;
404
522
  setLook(look: 'with-line' | 'with-line-color' | 'pills' | 'pills-color'): ITabsetContainerBuilder;
405
523
  setOrientation(orientation: 'vertical' | 'horizontal'): ITabsetContainerBuilder;
406
524
  setActiveIndex(index: number): ITabsetContainerBuilder;
407
525
  }
408
-
409
- declare class AXPLayoutRendererComponent implements OnInit {
410
- builder?: AXPLayoutDefinition;
411
- renderedNode: AXPWidgetNode;
412
- ngOnInit(): void;
413
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPLayoutRendererComponent, never>;
414
- static ɵcmp: i0.ɵɵComponentDeclaration<AXPLayoutRendererComponent, "axp-layout-renderer", never, { "builder": { "alias": "builder"; "required": false; }; }, {}, never, never, true, never>;
415
- }
416
-
417
- declare class LayoutBuilderModule {
418
- static ɵfac: i0.ɵɵFactoryDeclaration<LayoutBuilderModule, never>;
419
- static ɵmod: i0.ɵɵNgModuleDeclaration<LayoutBuilderModule, never, [typeof i1.CommonModule, typeof AXPLayoutRendererComponent], [typeof AXPLayoutRendererComponent]>;
420
- static ɵinj: i0.ɵɵInjectorDeclaration<LayoutBuilderModule>;
526
+ interface IFormFieldBuilder extends IBaseContainerBuilder<IFormFieldBuilder>, ILayoutContainerBuilder<IFormFieldBuilder> {
527
+ setOptions(options: AXPFormFieldOptions): IFormFieldBuilder;
528
+ setLabel(label: string): IFormFieldBuilder;
529
+ setShowLabel(showLabel: boolean): IFormFieldBuilder;
530
+ textBox(options?: Omit<TextBoxOptions, 'path'>): IFormFieldBuilder;
531
+ largeTextBox(options?: Omit<LargeTextBoxOptions, 'path'>): IFormFieldBuilder;
532
+ richText(options?: Omit<RichTextOptions, 'path'>): IFormFieldBuilder;
533
+ passwordBox(options?: Omit<PasswordBoxOptions, 'path'>): IFormFieldBuilder;
534
+ numberBox(options?: Omit<NumberBoxOptions, 'path'>): IFormFieldBuilder;
535
+ selectBox(options: Omit<SelectBoxOptions, 'path'>): IFormFieldBuilder;
536
+ lookupBox(options: Omit<LookupBoxOptions, 'path'>): IFormFieldBuilder;
537
+ selectionList(options: Omit<SelectionListOptions, 'path'>): IFormFieldBuilder;
538
+ dateTimeBox(options?: Omit<DateTimeBoxOptions, 'path'>): IFormFieldBuilder;
539
+ toggleSwitch(options?: Omit<ToggleSwitchOptions, 'path'>): IFormFieldBuilder;
540
+ colorBox(options?: Omit<ColorBoxOptions, 'path'>): IFormFieldBuilder;
541
+ customWidget<T>(type: string, options?: Omit<T, 'path'>): IFormFieldBuilder;
542
+ }
543
+ interface IFieldsetContainerBuilder extends IBaseContainerBuilder<IFieldsetContainerBuilder>, ILayoutContainerBuilder<IFieldsetContainerBuilder> {
544
+ setOptions(options: AXPFieldsetContainerOptions): IFieldsetContainerBuilder;
545
+ setTitle(title: string): IFieldsetContainerBuilder;
546
+ setDescription(description: string): IFieldsetContainerBuilder;
547
+ setIcon(icon: string): IFieldsetContainerBuilder;
548
+ setCollapsible(collapsible: boolean): IFieldsetContainerBuilder;
549
+ setIsOpen(isOpen: boolean): IFieldsetContainerBuilder;
550
+ setLook(look: 'fieldset' | 'card' | 'group'): IFieldsetContainerBuilder;
551
+ setShowHeader(showHeader: boolean): IFieldsetContainerBuilder;
552
+ setCols(cols: number): IFieldsetContainerBuilder;
553
+ formField(label: string, delegate?: (field: IFormFieldBuilder) => void): IFieldsetContainerBuilder;
554
+ }
555
+ interface IDialogBuilder {
556
+ setOptions(options: AXPDialogContainerOptions): IDialogBuilder;
557
+ setTitle(title: string): IDialogBuilder;
558
+ setMessage(message?: string): IDialogBuilder;
559
+ setSize(size: AXPopupSizeType): IDialogBuilder;
560
+ setCloseButton(closeButton: boolean): IDialogBuilder;
561
+ setContext(context: any): IDialogBuilder;
562
+ content(delegate: (layoutBuilder: IFlexContainerBuilder) => void): IDialogBuilder;
563
+ setActions(delegate?: (actions: IActionBuilder) => void): IDialogBuilder;
564
+ show(): Promise<AXPDialogRef>;
565
+ }
566
+ interface IListWidgetBuilder extends IBaseContainerBuilder<IListWidgetBuilder>, ILayoutContainerBuilder<IListWidgetBuilder>, IChildContainerBuilder<IListWidgetBuilder>, IWidgetContainerBuilder<IListWidgetBuilder> {
567
+ setOptions(options: AXPListWidgetOptions): IListWidgetBuilder;
568
+ setDataSource(dataSource: any[] | AXDataSource): IListWidgetBuilder;
569
+ setColumns(columns: AXPListWidgetColumn[]): IListWidgetBuilder;
570
+ setOnRowClick(handler: (row: any) => void): IListWidgetBuilder;
571
+ setOnRowDoubleClick(handler: (row: any) => void): IListWidgetBuilder;
572
+ setOnSelectionChange(handler: (selectedRows: any[]) => void): IListWidgetBuilder;
573
+ setOnRowCommand(handler: (command: any, selectedRows: any[]) => void): IListWidgetBuilder;
574
+ setPaging(paging: boolean): IListWidgetBuilder;
575
+ setShowHeader(show: boolean): IListWidgetBuilder;
576
+ setShowFooter(show: boolean): IListWidgetBuilder;
577
+ setFixHeader(fix: boolean): IListWidgetBuilder;
578
+ setFixFooter(fix: boolean): IListWidgetBuilder;
579
+ setFetchDataMode(mode: 'auto' | 'manual'): IListWidgetBuilder;
580
+ setParentField(field: string): IListWidgetBuilder;
581
+ setMinHeight(height: string | number): IListWidgetBuilder;
582
+ setShowIndex(show: boolean): IListWidgetBuilder;
583
+ setAllowSelection(allow: boolean): IListWidgetBuilder;
584
+ setPrimaryCommands(commands: any[]): IListWidgetBuilder;
585
+ setSecondaryCommands(commands: AXPListWidgetRowCommand[]): IListWidgetBuilder;
586
+ setLoading(loading: {
587
+ enabled?: boolean;
588
+ animation?: boolean;
589
+ }): IListWidgetBuilder;
421
590
  }
422
591
 
423
592
  declare class AXPLayoutBuilderService {
593
+ private popupService;
424
594
  /**
425
595
  * Create a new layout builder
426
596
  */
427
597
  create(): ILayoutBuilder;
598
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPLayoutBuilderService, never>;
599
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPLayoutBuilderService>;
600
+ }
601
+
602
+ declare class AXPLayoutConversionService {
603
+ private widgetTreeCache;
604
+ private formDefinitionCache;
428
605
  /**
429
- * Convert Layout Builder definition to Layout Renderer format
430
- * با processing و cleaning options
606
+ * Convert AXPDynamicFormDefinition to AXPWidgetNode tree structure
607
+ * Groups become Fieldset Layouts with Form Field widgets as children
608
+ * Fields become Form Field widgets with Editor widgets as children
431
609
  */
432
- convertToLayoutRenderer(definition: AXPLayoutDefinition): {
433
- layoutDefinition: LayoutDefinition;
434
- layoutNodes: LayoutNode[];
435
- };
610
+ convertFormDefinition(formDefinition: AXPDynamicFormDefinition): AXPWidgetNode;
436
611
  /**
437
- * Convert grid layout options to CSS styles
612
+ * Convert AXPWidgetNode tree back to AXPDynamicFormDefinition
613
+ * Parses Fieldset Layouts back to Groups
614
+ * Parses Form Field widgets back to Fields
438
615
  */
439
- private convertGridLayoutToStyles;
616
+ convertWidgetTreeToFormDefinition(widgetTree: AXPWidgetNode): AXPDynamicFormDefinition;
440
617
  /**
441
- * Convert grid layout to node layout configuration
618
+ * Validate that a widget tree represents a valid dynamic form structure
442
619
  */
443
- private convertToNodeLayout;
620
+ validateFormWidgetTree(widgetTree: AXPWidgetNode): boolean;
444
621
  /**
445
- * Process widget options based on actual widget configurations
622
+ * Clear all caches
446
623
  */
447
- private processWidgetOptions;
624
+ clearCaches(): void;
448
625
  /**
449
- * Process text-block-layout content
626
+ * Get cache statistics
450
627
  */
451
- private processTextBlockContent;
628
+ getCacheStats(): {
629
+ widgetTreeCacheSize: number;
630
+ formDefinitionCacheSize: number;
631
+ };
452
632
  /**
453
- * Process grid-layout options
633
+ * Convert a single group to Fieldset widget structure
454
634
  */
455
- private processGridOptions;
635
+ private createGroupAsFieldsetWidget;
456
636
  /**
457
- * Process spacing options
637
+ * Convert fields to Form Field widgets
458
638
  */
459
- private processSpacingOptions;
639
+ private createFieldWidgets;
460
640
  /**
461
- * Process border options
641
+ * Convert a single field to Form Field widget with editor as child
462
642
  */
463
- private processBorderOptions;
643
+ private createFormFieldWidget;
464
644
  /**
465
- * Process flex-layout options
645
+ * Extract group information from Fieldset Layout widget
466
646
  */
467
- private processFlexOptions;
647
+ private extractGroupFromFieldset;
468
648
  /**
469
- * Process panel-layout options
649
+ * Extract field information from Form Field widget
470
650
  */
471
- private processPanelOptions;
651
+ private extractFieldFromFormWidget;
472
652
  /**
473
- * Process tag content
653
+ * Create cache key for form definition
474
654
  */
475
- private processTagContent;
655
+ private createFormDefinitionCacheKey;
476
656
  /**
477
- * Process generic content
657
+ * Create cache key for widget tree
478
658
  */
479
- private processGenericContent;
480
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPLayoutBuilderService, never>;
481
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPLayoutBuilderService>;
659
+ private createWidgetTreeCacheKey;
660
+ /**
661
+ * Create a simple hash from a string
662
+ */
663
+ private createSimpleHash;
664
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPLayoutConversionService, never>;
665
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPLayoutConversionService>;
666
+ }
667
+
668
+ interface DialogRendererConfig {
669
+ title: string;
670
+ message?: string;
671
+ context: any;
672
+ definition: AXPWidgetNode;
673
+ actions?: {
674
+ footer?: {
675
+ prefix?: any[];
676
+ suffix?: any[];
677
+ };
678
+ };
679
+ }
680
+ interface DialogRendererResult {
681
+ context: any;
682
+ action?: string;
683
+ }
684
+ declare class AXPDialogRendererComponent extends AXBasePageComponent implements OnInit {
685
+ config: DialogRendererConfig;
686
+ result: EventEmitter<DialogRendererResult>;
687
+ private dialogResult?;
688
+ context: i0.WritableSignal<any>;
689
+ callBack: (dialogRef: AXPDialogRef) => void;
690
+ data: any;
691
+ private isDialogLoading;
692
+ ngOnInit(): void;
693
+ handleContextChanged(event: any): void;
694
+ handleContextInitiated(event: any): void;
695
+ visibleFooterPrefixActions(): any[];
696
+ visibleFooterSuffixActions(): any[];
697
+ isFormLoading(): boolean;
698
+ isSubmitting(): boolean;
699
+ executeAction(action: any): Promise<void>;
700
+ close(result?: DialogRendererResult): void;
701
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDialogRendererComponent, never>;
702
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXPDialogRendererComponent, "axp-dialog-renderer", never, { "config": { "alias": "config"; "required": false; }; }, { "result": "result"; }, never, never, true, never>;
482
703
  }
483
704
 
484
- export { AXPLayoutBuilderService, AXPLayoutRendererComponent, LayoutBuilderModule };
485
- export type { AXPFlexContainerOptions, AXPGridContainerOptions, AXPLayoutDefinition, AXPLayoutDirection, AXPLayoutLook, AXPLayoutMode, AXPLayoutNodeDefinition, AXPPageContainerOptions, AXPPanelContainerOptions, AXPTabsetContainerOptions, AXPWidgetConfiguration, ColorBoxOptions, ContainerConfig, DateTimeBoxOptions, IBaseContainerBuilder, IFlexContainerBuilder, IGridContainerBuilder, ILayoutBuilder, IPageContainerBuilder, IPanelContainerBuilder, ITabsetContainerBuilder, IWidgetBuilder, LargeTextBoxOptions, LayoutBuilderState, LayoutDefinition, LayoutNode, LayoutRenderContext, LayoutTypeConfig, LookupBoxOptions, NodeLayoutConfig, NumberBoxOptions, PasswordBoxOptions, ResponsiveConfig, RichTextOptions, SelectBoxOptions, SelectionListOptions, TextBoxOptions, ToggleSwitchOptions, WidgetBuilderState, ZoneConfig };
705
+ export { AXPDialogRendererComponent, AXPLayoutBuilderService, AXPLayoutConversionService, AXPLayoutRendererComponent, LayoutBuilderModule };
706
+ export type { AXPDialogContainerOptions, AXPFieldsetContainerOptions, AXPFlexContainerOptions, AXPFormFieldOptions, AXPGridContainerOptions, AXPListWidgetColumn, AXPListWidgetOptions, AXPListWidgetRowCommand, AXPPageContainerOptions, AXPPanelContainerOptions, AXPTabsetContainerOptions, AXPWidgetConfiguration, ColorBoxOptions, DateTimeBoxOptions, DialogBuilderState, DialogRendererConfig, DialogRendererResult, FormFieldBuilderState, IActionBuilder, IBaseContainerBuilder, IChildContainerBuilder, IDialogBuilder, IFieldsetContainerBuilder, IFlexContainerBuilder, IFormFieldBuilder, IGridContainerBuilder, ILayoutBuilder, ILayoutContainerBuilder, IListWidgetBuilder, IPageContainerBuilder, IPanelContainerBuilder, ITabsetContainerBuilder, IWidgetBuilder, IWidgetContainerBuilder, InheritanceContext, InheritedProperties, LargeTextBoxOptions, LayoutBuilderState, LayoutWidgetOptions, LookupBoxOptions, NumberBoxOptions, PasswordBoxOptions, RichTextOptions, SelectBoxOptions, SelectionListOptions, TextBoxOptions, ToggleSwitchOptions, ValueWidgetOptions, WidgetBuilderState };