@acorex/platform 20.3.0-next.2 → 20.3.0-next.20
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/common/index.d.ts +403 -374
- package/core/index.d.ts +563 -46
- package/fesm2022/acorex-platform-auth.mjs +19 -19
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +124 -224
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +644 -110
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +16 -16
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +1927 -1951
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +3897 -435
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +96 -89
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-BXExgI3W.mjs +52 -0
- package/fesm2022/acorex-platform-layout-entity-create-entity.command-BXExgI3W.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +1763 -1233
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +43 -33
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +2756 -0
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-C2Qn1YAW.mjs → acorex-platform-layout-widgets-button-widget-designer.component-BzsfTNs2.mjs} +6 -6
- package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-BzsfTNs2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-Dvk76-2W.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-Dvk76-2W.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs → acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-BYLaipWi.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-BYLaipWi.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-DcSllNik.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-DcSllNik.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs → acorex-platform-layout-widgets-extra-properties-values-widget-view.component-BT-U4BiA.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-BT-U4BiA.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs → acorex-platform-layout-widgets-extra-properties-widget-edit.component-Il7jnRBg.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-Il7jnRBg.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs → acorex-platform-layout-widgets-extra-properties-widget-view.component-CBEPu7Fl.mjs} +5 -5
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-CBEPu7Fl.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-file-list-popup.component-rW2RD35f.mjs → acorex-platform-layout-widgets-file-list-popup.component-BPzn8lr3.mjs} +10 -10
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-BPzn8lr3.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DNvnQ4Mc.mjs → acorex-platform-layout-widgets-page-widget-designer.component-C_JrGoXy.mjs} +8 -8
- package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-C_JrGoXy.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-CPVRbE8B.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-C6DaBt_N.mjs} +14 -14
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-C6DaBt_N.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-Dmg5DdX8.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-Bth3jI9T.mjs} +6 -5
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-Bth3jI9T.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-yADN3Xji.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-CUHptbP4.mjs} +6 -7
- package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-CUHptbP4.mjs.map +1 -0
- package/fesm2022/{acorex-platform-widgets.mjs → acorex-platform-layout-widgets.mjs} +8362 -7479
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -0
- package/fesm2022/acorex-platform-native.mjs +7 -7
- package/fesm2022/acorex-platform-native.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +40 -40
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-eGzN6g2Y.mjs +115 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-eGzN6g2Y.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-X0hLRZhX.mjs → acorex-platform-themes-default-entity-master-list-view.component-nDHfQQ3O.mjs} +34 -36
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-nDHfQQ3O.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-HJyalvcu.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-HJyalvcu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs → acorex-platform-themes-default-entity-master-single-view.component-e7m70Wls.mjs} +17 -17
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-e7m70Wls.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs → acorex-platform-themes-default-error-401.component-CoBaQFTn.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-401.component-DrO1PEOH.mjs.map → acorex-platform-themes-default-error-401.component-CoBaQFTn.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs → acorex-platform-themes-default-error-404.component-BLlVOsS2.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-404.component-DqVq0oHX.mjs.map → acorex-platform-themes-default-error-404.component-BLlVOsS2.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs → acorex-platform-themes-default-error-offline.component-CybYQI9F.mjs} +4 -4
- package/fesm2022/{acorex-platform-themes-default-error-offline.component-Bt2PTL7_.mjs.map → acorex-platform-themes-default-error-offline.component-CybYQI9F.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +45 -45
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-KpZWpnOJ.mjs → acorex-platform-themes-shared-icon-chooser-view.component-ReKSoVeN.mjs} +25 -15
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-ReKSoVeN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs → acorex-platform-themes-shared-settings.provider-DY2xFnrv.mjs} +9 -9
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DY2xFnrv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-BvOiVCgt.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-B2HDyY2z.mjs} +24 -9
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-B2HDyY2z.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-BW0rfkjk.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-CeZxa49U.mjs} +24 -9
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-CeZxa49U.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +264 -86
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +27 -39
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/layout/builder/README.md +2 -3
- package/layout/builder/index.d.ts +683 -819
- package/layout/components/index.d.ts +1141 -115
- package/layout/designer/index.d.ts +8 -6
- package/layout/entity/index.d.ts +979 -282
- package/layout/views/index.d.ts +13 -13
- package/layout/widget-core/README.md +4 -0
- package/layout/widget-core/index.d.ts +957 -0
- package/layout/widgets/README.md +4 -0
- package/{widgets → layout/widgets}/index.d.ts +1933 -770
- package/package.json +14 -10
- package/themes/shared/index.d.ts +2 -2
- package/workflow/index.d.ts +3 -173
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BXbkGGei.mjs +0 -115
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BXbkGGei.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-X0hLRZhX.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Bp1JLsj1.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Bp1JLsj1.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BExtm1JE.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-KpZWpnOJ.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BvOiVCgt.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BW0rfkjk.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-button-widget-designer.component-C2Qn1YAW.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CzEFmKWG.mjs +0 -84
- package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-CzEFmKWG.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-JC_nYunG.mjs +0 -55
- package/fesm2022/acorex-platform-widgets-checkbox-widget-designer.component-JC_nYunG.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C-4bWr9G.mjs +0 -76
- package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C-4bWr9G.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-CxgKO2VI.mjs +0 -55
- package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-CxgKO2VI.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-edit.component-D9mf08rU.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-schema-widget-view.component-D6GQ-eyr.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-edit.component-DVbIdVZ6.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-values-widget-view.component-D-aM64Hu.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-edit.component-em2-aU8E.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-extra-properties-widget-view.component-BeuIofdr.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-list-popup.component-rW2RD35f.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DHFMnkls.mjs +0 -211
- package/fesm2022/acorex-platform-widgets-file-rename-popup.component-DHFMnkls.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DNvnQ4Mc.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-Cydlpsat.mjs +0 -40
- package/fesm2022/acorex-platform-widgets-rich-text-popup.component-Cydlpsat.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CPVRbE8B.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-tabular-data-view-popup.component-Dmg5DdX8.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets-text-block-widget-designer.component-yADN3Xji.mjs.map +0 -1
- package/fesm2022/acorex-platform-widgets.mjs.map +0 -1
- package/widgets/README.md +0 -4
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Signal, InjectionToken, InputSignal, TemplateRef, ElementRef, OnInit, OnDestroy, Type, ViewContainerRef, ModuleWithProviders, WritableSignal, QueryList, EventEmitter } from '@angular/core';
|
|
3
3
|
import * as _acorex_platform_core from '@acorex/platform/core';
|
|
4
|
-
import { AXPActivityLog, AXPSystemActionType, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPActionMenuItem, AXPExecuteCommand, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
|
|
4
|
+
import { AXPActivityLog, AXPSystemActionType, AXPCategoryEntity, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPGridLayoutOptions, AXPActionMenuItem, AXPExecuteCommand, AXPValidationRules, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
|
|
5
5
|
import { AXPMenuItem } from '@acorex/platform/common';
|
|
6
|
-
import
|
|
6
|
+
import * as _acorex_cdk_common from '@acorex/cdk/common';
|
|
7
|
+
import { AXValueChangedEvent, AXClickEvent, AXDataSource, AXDataSourceFilterOption, AXOrientation, AXHtmlEvent, AXEvent } from '@acorex/cdk/common';
|
|
8
|
+
import { AXTreeViewComponent, AXTreeItemClickBaseEvent } from '@acorex/components/tree-view';
|
|
9
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
7
10
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
8
|
-
import { AXPWidgetNode,
|
|
11
|
+
import { AXPWidgetNode, AXPWidgetCoreContextChangeEvent, AXPWidgetContainerComponent, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/widget-core';
|
|
9
12
|
import * as _ngrx_signals from '@ngrx/signals';
|
|
10
|
-
import {
|
|
13
|
+
import { AXDataTableComponent, AXDataTableRowDbClick, AXDataTableRowClick } from '@acorex/components/data-table';
|
|
11
14
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
15
|
+
import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
|
|
16
|
+
import * as _acorex_platform_layout_components from '@acorex/platform/layout/components';
|
|
12
17
|
import { AXFormComponent } from '@acorex/components/form';
|
|
13
18
|
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
14
19
|
import { AXTagBoxComponent } from '@acorex/components/tag-box';
|
|
15
20
|
import { AXCalendarService } from '@acorex/core/date-time';
|
|
16
|
-
import {
|
|
21
|
+
import { AXTabStripChangedEvent, AXTabsComponent } from '@acorex/components/tabs';
|
|
17
22
|
import { Observable } from 'rxjs';
|
|
18
|
-
import { AXTabsComponent, AXTabStripChangedEvent } from '@acorex/components/tabs';
|
|
19
23
|
|
|
20
24
|
declare class AXPActivityLogComponent {
|
|
21
25
|
private readonly translateService;
|
|
@@ -203,6 +207,85 @@ declare class AXPThemeLayoutContainerComponent {
|
|
|
203
207
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPThemeLayoutContainerComponent, "axp-layout-container", never, {}, {}, never, ["*"], true, never>;
|
|
204
208
|
}
|
|
205
209
|
|
|
210
|
+
interface AXPCategoryTreeNode extends AXPCategoryEntity {
|
|
211
|
+
children?: AXPCategoryTreeNode[];
|
|
212
|
+
expand?: boolean;
|
|
213
|
+
hasChild?: boolean;
|
|
214
|
+
[key: string]: any;
|
|
215
|
+
}
|
|
216
|
+
interface AXPCategoryTreeConfig {
|
|
217
|
+
textField?: string;
|
|
218
|
+
valueField?: string;
|
|
219
|
+
expandedField?: string;
|
|
220
|
+
showCheckbox?: boolean;
|
|
221
|
+
searchable?: boolean;
|
|
222
|
+
searchPlaceholder?: string;
|
|
223
|
+
emptyStateTitle?: string;
|
|
224
|
+
emptyStateDescription?: string;
|
|
225
|
+
emptyStateIcon?: string;
|
|
226
|
+
}
|
|
227
|
+
interface AXPCategoryTreeEvents {
|
|
228
|
+
onNodeClick?: (node: AXPCategoryEntity) => void;
|
|
229
|
+
onNodeSelect?: (node: AXPCategoryEntity) => void;
|
|
230
|
+
onNodeCreate?: (parentNode?: AXPCategoryEntity) => void;
|
|
231
|
+
onNodeUpdate?: (node: AXPCategoryEntity) => void;
|
|
232
|
+
onNodeDelete?: (node: AXPCategoryEntity) => void;
|
|
233
|
+
onSearchChange?: (searchValue: string) => void;
|
|
234
|
+
onCollapseChange?: (node: AXPCategoryEntity) => void;
|
|
235
|
+
}
|
|
236
|
+
interface AXPCategoryTreeActions {
|
|
237
|
+
canCreate?: boolean;
|
|
238
|
+
canUpdate?: boolean;
|
|
239
|
+
canDelete?: boolean;
|
|
240
|
+
canCreateChild?: boolean;
|
|
241
|
+
createLabel?: string;
|
|
242
|
+
updateLabel?: string;
|
|
243
|
+
deleteLabel?: string;
|
|
244
|
+
createChildLabel?: string;
|
|
245
|
+
}
|
|
246
|
+
interface AXPCategoryTreeDataSource {
|
|
247
|
+
loadRootNodes: () => Promise<AXPCategoryEntity[]>;
|
|
248
|
+
loadChildNodes?: (parentId: string) => Promise<AXPCategoryEntity[]>;
|
|
249
|
+
searchNodes?: (searchValue: string) => Promise<AXPCategoryEntity[]>;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
declare class AXPCategoryTreeComponent {
|
|
253
|
+
protected readonly translationService: AXTranslationService;
|
|
254
|
+
dataSource: _angular_core.InputSignal<AXPCategoryTreeDataSource>;
|
|
255
|
+
config: _angular_core.InputSignal<AXPCategoryTreeConfig>;
|
|
256
|
+
actions: _angular_core.InputSignal<AXPCategoryTreeActions>;
|
|
257
|
+
events: _angular_core.InputSignal<AXPCategoryTreeEvents>;
|
|
258
|
+
nodeClick: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
259
|
+
nodeSelect: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
260
|
+
nodeCreate: _angular_core.OutputEmitterRef<AXPCategoryEntity<string> | undefined>;
|
|
261
|
+
nodeUpdate: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
262
|
+
nodeDelete: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
263
|
+
searchChange: _angular_core.OutputEmitterRef<string>;
|
|
264
|
+
collapseChange: _angular_core.OutputEmitterRef<AXPCategoryEntity<string>>;
|
|
265
|
+
tree: _angular_core.Signal<AXTreeViewComponent | undefined>;
|
|
266
|
+
isLoading: _angular_core.WritableSignal<boolean>;
|
|
267
|
+
searchValue: _angular_core.WritableSignal<string>;
|
|
268
|
+
protected treeItems: _angular_core.WritableSignal<AXPCategoryTreeNode[]>;
|
|
269
|
+
protected emptyStateTitle: _angular_core.Signal<string>;
|
|
270
|
+
protected emptyStateDescription: _angular_core.Signal<string>;
|
|
271
|
+
ngOnInit(): Promise<void>;
|
|
272
|
+
loadRootNodes(): Promise<void>;
|
|
273
|
+
loadChildNodes(parentId: string): Promise<void>;
|
|
274
|
+
searchNodes(searchValue: string): Promise<void>;
|
|
275
|
+
handleNodeClick(event: AXTreeItemClickBaseEvent): Promise<void>;
|
|
276
|
+
handleCollapseChanged(event: AXTreeItemClickBaseEvent): Promise<void>;
|
|
277
|
+
handleSearchChange(event: AXValueChangedEvent): Promise<void>;
|
|
278
|
+
handleCreateRootClick(event: AXClickEvent): Promise<void>;
|
|
279
|
+
handleCreateChildClick(node: AXPCategoryTreeNode, event: AXClickEvent): Promise<void>;
|
|
280
|
+
handleUpdateNodeClick(node: AXPCategoryTreeNode, event: AXClickEvent): Promise<void>;
|
|
281
|
+
handleDeleteNodeClick(node: AXPCategoryTreeNode, event: AXClickEvent): Promise<void>;
|
|
282
|
+
private convertEntitiesToTreeNodes;
|
|
283
|
+
private updateNodeChildren;
|
|
284
|
+
refreshTree(parentId?: string): Promise<void>;
|
|
285
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPCategoryTreeComponent, never>;
|
|
286
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPCategoryTreeComponent, "axp-category-tree", never, { "dataSource": { "alias": "dataSource"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "events": { "alias": "events"; "required": false; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "nodeSelect": "nodeSelect"; "nodeCreate": "nodeCreate"; "nodeUpdate": "nodeUpdate"; "nodeDelete": "nodeDelete"; "searchChange": "searchChange"; "collapseChange": "collapseChange"; }, never, never, true, never>;
|
|
287
|
+
}
|
|
288
|
+
|
|
206
289
|
declare class AXPQueryColumnsComponent {
|
|
207
290
|
columns: _angular_core.ModelSignal<AXPColumnQuery[]>;
|
|
208
291
|
handleVisibilityChange(e: AXValueChangedEvent<boolean>, name: string): void;
|
|
@@ -357,10 +440,115 @@ declare class AXPComponentSlotModule {
|
|
|
357
440
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPComponentSlotModule>;
|
|
358
441
|
}
|
|
359
442
|
|
|
443
|
+
interface AXPDataSelectorColumn {
|
|
444
|
+
name: string;
|
|
445
|
+
title: string;
|
|
446
|
+
visible: boolean;
|
|
447
|
+
widget: {
|
|
448
|
+
type: string;
|
|
449
|
+
options: any;
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
interface AXPDataSelectorConfig {
|
|
453
|
+
title: string;
|
|
454
|
+
dataSource: AXDataSource<any>;
|
|
455
|
+
columns: AXPDataSelectorColumn[];
|
|
456
|
+
selectionMode: 'single' | 'multiple';
|
|
457
|
+
searchFields?: string[];
|
|
458
|
+
parentField?: string;
|
|
459
|
+
allowCreate?: boolean;
|
|
460
|
+
filters?: AXDataSourceFilterOption;
|
|
461
|
+
categoryFilter?: {
|
|
462
|
+
enabled: boolean;
|
|
463
|
+
title: string;
|
|
464
|
+
dataSource: AXPCategoryTreeDataSource;
|
|
465
|
+
filterField: string;
|
|
466
|
+
filterOperator?: 'equal' | 'contains' | 'in';
|
|
467
|
+
width?: string;
|
|
468
|
+
};
|
|
469
|
+
}
|
|
470
|
+
declare class AXPDataSelectorComponent extends AXBasePageComponent {
|
|
471
|
+
protected config: _angular_core.WritableSignal<AXPDataSelectorConfig>;
|
|
472
|
+
protected searchTerm: string;
|
|
473
|
+
protected filter: AXDataSourceFilterOption;
|
|
474
|
+
protected grid: _angular_core.Signal<AXDataTableComponent | undefined>;
|
|
475
|
+
protected initialSelectedItems: any[];
|
|
476
|
+
protected selectedItems: _angular_core.WritableSignal<any[]>;
|
|
477
|
+
protected activeCategoryFilter: _angular_core.WritableSignal<{
|
|
478
|
+
node: AXPCategoryEntity;
|
|
479
|
+
filterValue: any;
|
|
480
|
+
} | null>;
|
|
481
|
+
protected allowSelect: _angular_core.Signal<boolean>;
|
|
482
|
+
protected hasSearch: _angular_core.Signal<boolean | undefined>;
|
|
483
|
+
protected searchPlaceholder: _angular_core.Signal<string>;
|
|
484
|
+
protected categoryTreeConfig: _angular_core.Signal<{
|
|
485
|
+
textField: string;
|
|
486
|
+
valueField: string;
|
|
487
|
+
showCheckbox: boolean;
|
|
488
|
+
searchable: boolean;
|
|
489
|
+
searchPlaceholder: string;
|
|
490
|
+
emptyStateTitle: string;
|
|
491
|
+
emptyStateDescription: string;
|
|
492
|
+
emptyStateIcon: string;
|
|
493
|
+
}>;
|
|
494
|
+
protected categoryTreeActions: _angular_core.Signal<{
|
|
495
|
+
canCreate: boolean;
|
|
496
|
+
canUpdate: boolean;
|
|
497
|
+
canDelete: boolean;
|
|
498
|
+
canCreateChild: boolean;
|
|
499
|
+
}>;
|
|
500
|
+
protected ngOnInit(): void;
|
|
501
|
+
protected ngAfterViewInit(): void;
|
|
502
|
+
protected handleRowDbClick(e: AXDataTableRowDbClick): void;
|
|
503
|
+
protected handleRowClick(e: AXDataTableRowClick): void;
|
|
504
|
+
protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
|
|
505
|
+
protected handleChangeSearchValue(e: AXValueChangedEvent): void;
|
|
506
|
+
protected handleCreateNewClick(): Promise<void>;
|
|
507
|
+
protected handleCloseClick(): void;
|
|
508
|
+
protected handleSelectClick(): void;
|
|
509
|
+
protected handleExpandRow(row: any): Promise<void>;
|
|
510
|
+
protected handleCategoryFilterClick(node: AXPCategoryEntity): void;
|
|
511
|
+
protected clearCategoryFilter(): void;
|
|
512
|
+
private applySearchFilter;
|
|
513
|
+
private applyFilterAndSort;
|
|
514
|
+
private applyCategoryFilter;
|
|
515
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorComponent, never>;
|
|
516
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDataSelectorComponent, "axp-data-selector", never, {}, {}, never, never, true, never>;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
declare class AXPDataSelectorService {
|
|
520
|
+
private readonly popupService;
|
|
521
|
+
private readonly expressionService;
|
|
522
|
+
/**
|
|
523
|
+
* Open data selector popup
|
|
524
|
+
*/
|
|
525
|
+
open(config: AXPDataSelectorConfig): Promise<{
|
|
526
|
+
items: any[];
|
|
527
|
+
} | null>;
|
|
528
|
+
/**
|
|
529
|
+
* Open data selector with category filter
|
|
530
|
+
*/
|
|
531
|
+
openWithCategoryFilter(config: Omit<AXPDataSelectorConfig, 'categoryFilter'>, categoryFilterConfig: {
|
|
532
|
+
title: string;
|
|
533
|
+
dataSource: AXPCategoryTreeDataSource;
|
|
534
|
+
filterField: string;
|
|
535
|
+
filterOperator?: 'equal' | 'contains' | 'in';
|
|
536
|
+
width?: string;
|
|
537
|
+
}): Promise<{
|
|
538
|
+
items: any[];
|
|
539
|
+
} | null>;
|
|
540
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorService, never>;
|
|
541
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataSelectorService>;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/**
|
|
545
|
+
* Form appearance and density styling (using fieldset widget look)
|
|
546
|
+
*/
|
|
547
|
+
type AXPDynamicFormLook = 'fieldset' | 'card' | 'group' | 'container';
|
|
360
548
|
/**
|
|
361
|
-
* Form
|
|
549
|
+
* Form rendering mode
|
|
362
550
|
*/
|
|
363
|
-
type
|
|
551
|
+
type AXPDynamicFormMode = 'view' | 'edit';
|
|
364
552
|
/**
|
|
365
553
|
* Form layout direction and flow
|
|
366
554
|
*/
|
|
@@ -370,43 +558,244 @@ interface AXPDynamicFormFieldDefinition {
|
|
|
370
558
|
title?: string;
|
|
371
559
|
description?: string;
|
|
372
560
|
widget: AXPWidgetNode;
|
|
561
|
+
/**
|
|
562
|
+
* Optional per-field rendering mode. Takes precedence over section and form modes.
|
|
563
|
+
*/
|
|
564
|
+
mode?: AXPDynamicFormMode;
|
|
565
|
+
layout?: AXPGridLayoutOptions;
|
|
373
566
|
}
|
|
374
567
|
interface AXPDynamicFormGroupDefinition {
|
|
375
568
|
name: string;
|
|
376
569
|
title?: string;
|
|
377
570
|
description?: string;
|
|
378
571
|
parameters: AXPDynamicFormFieldDefinition[];
|
|
572
|
+
/**
|
|
573
|
+
* Optional per-section rendering mode. Takes precedence over form mode and is overridden by field mode.
|
|
574
|
+
*/
|
|
575
|
+
mode?: AXPDynamicFormMode;
|
|
379
576
|
}
|
|
380
577
|
interface AXPDynamicFormDefinition {
|
|
381
578
|
groups: AXPDynamicFormGroupDefinition[];
|
|
579
|
+
/**
|
|
580
|
+
* Optional form-level rendering mode
|
|
581
|
+
*/
|
|
582
|
+
mode?: AXPDynamicFormMode;
|
|
382
583
|
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* Describes a single step of the dynamic form stepper.
|
|
587
|
+
* Each step contains one or more groups rendered by AXPDynamicFormComponent.
|
|
588
|
+
*/
|
|
589
|
+
interface AXPDynamicFormStepperStepDefinition {
|
|
590
|
+
/** Unique identifier for the step */
|
|
591
|
+
id: string;
|
|
592
|
+
/** Display title for the step */
|
|
593
|
+
title?: string;
|
|
594
|
+
/** Optional descriptive text for the step */
|
|
595
|
+
description?: string;
|
|
596
|
+
/** Optional icon name for the step header */
|
|
597
|
+
icon?: string;
|
|
598
|
+
/** Field groups to render in this step */
|
|
599
|
+
groups: AXPDynamicFormGroupDefinition[];
|
|
600
|
+
/** Optional layout direction override for this step's form */
|
|
601
|
+
formDirection?: AXPDynamicFormDirection;
|
|
602
|
+
/** Whether the user may skip this step (defaults to false) */
|
|
603
|
+
canSkip?: boolean;
|
|
604
|
+
/** Whether the user may navigate back from this step (defaults to true) */
|
|
605
|
+
canGoBack?: boolean;
|
|
606
|
+
/** Optional data path inside the shared context for this step's data */
|
|
607
|
+
dataPath?: string;
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* Root definition for the dynamic form stepper.
|
|
611
|
+
*/
|
|
612
|
+
interface AXPDynamicFormStepperDefinition {
|
|
613
|
+
/** Ordered collection of steps */
|
|
614
|
+
steps: AXPDynamicFormStepperStepDefinition[];
|
|
615
|
+
/** Enforce sequential navigation (no jumping to future steps) */
|
|
616
|
+
linear?: boolean;
|
|
617
|
+
/** Show progress indicator above the content */
|
|
618
|
+
showProgress?: boolean;
|
|
619
|
+
/** Show step numbers in the header */
|
|
620
|
+
showStepNumbers?: boolean;
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
declare class AXPDynamicFormStepperComponent {
|
|
624
|
+
#private;
|
|
625
|
+
/**
|
|
626
|
+
* Stepper definition providing steps metadata and behavior configuration
|
|
627
|
+
*/
|
|
628
|
+
definition: _angular_core.InputSignal<AXPDynamicFormStepperDefinition>;
|
|
629
|
+
/**
|
|
630
|
+
* Shared root context for all steps
|
|
631
|
+
*/
|
|
632
|
+
context: _angular_core.InputSignal<any>;
|
|
633
|
+
/**
|
|
634
|
+
* Optional pass-through layout props for inner forms
|
|
635
|
+
*/
|
|
636
|
+
layoutLook: _angular_core.InputSignal<AXPDynamicFormLook>;
|
|
637
|
+
stepperDirection: _angular_core.InputSignal<AXOrientation>;
|
|
638
|
+
layoutConfig: _angular_core.InputSignal<AXPGridLayoutOptions | undefined>;
|
|
639
|
+
/**
|
|
640
|
+
* Optional guard that controls advancing to the next step (async only)
|
|
641
|
+
*/
|
|
642
|
+
guardNext: _angular_core.InputSignal<((e: {
|
|
643
|
+
index: number;
|
|
644
|
+
id: string;
|
|
645
|
+
fullContext: any;
|
|
646
|
+
}) => Promise<boolean>) | undefined>;
|
|
647
|
+
/**
|
|
648
|
+
* Emits when the shared root context changes
|
|
649
|
+
*/
|
|
650
|
+
contextChange: _angular_core.OutputEmitterRef<any>;
|
|
651
|
+
/**
|
|
652
|
+
* Emits when the active step changes
|
|
653
|
+
*/
|
|
654
|
+
stepChange: _angular_core.OutputEmitterRef<{
|
|
655
|
+
index: number;
|
|
656
|
+
id: string;
|
|
657
|
+
}>;
|
|
658
|
+
/**
|
|
659
|
+
* Emits after successful finish
|
|
660
|
+
*/
|
|
661
|
+
finished: _angular_core.OutputEmitterRef<any>;
|
|
662
|
+
/**
|
|
663
|
+
* Emits when cancelled by API
|
|
664
|
+
*/
|
|
665
|
+
cancel: _angular_core.OutputEmitterRef<void>;
|
|
666
|
+
/**
|
|
667
|
+
* Emits when navigation is blocked by validation or policy
|
|
668
|
+
*/
|
|
669
|
+
navigationBlocked: _angular_core.OutputEmitterRef<{
|
|
670
|
+
reason: "invalid" | "linear" | "cannot-skip" | "cannot-go-back";
|
|
671
|
+
stepId: string;
|
|
672
|
+
targetIndex?: number;
|
|
673
|
+
}>;
|
|
674
|
+
/**
|
|
675
|
+
* Internal reactive copy of the shared context
|
|
676
|
+
*/
|
|
677
|
+
private internalContext;
|
|
678
|
+
/**
|
|
679
|
+
* Active step index
|
|
680
|
+
*/
|
|
681
|
+
protected currentStepIndex: _angular_core.WritableSignal<number>;
|
|
682
|
+
/**
|
|
683
|
+
* Navigation lock while async guards are pending
|
|
684
|
+
*/
|
|
685
|
+
private navigationLocked;
|
|
686
|
+
/**
|
|
687
|
+
* Reference to underlying step wizard to sync visual navigation
|
|
688
|
+
*/
|
|
689
|
+
private readonly wizard;
|
|
690
|
+
/**
|
|
691
|
+
* References to rendered dynamic forms (usually one active)
|
|
692
|
+
*/
|
|
693
|
+
private readonly forms;
|
|
694
|
+
protected steps: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormStepperStepDefinition[]>;
|
|
695
|
+
protected stepCount: _angular_core.Signal<number>;
|
|
696
|
+
protected currentStep: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormStepperStepDefinition>;
|
|
697
|
+
protected isFirstComputed: _angular_core.Signal<boolean>;
|
|
698
|
+
protected isLastComputed: _angular_core.Signal<boolean>;
|
|
699
|
+
/**
|
|
700
|
+
* Non-undefined layout config for inner dynamic forms
|
|
701
|
+
*/
|
|
702
|
+
protected effectiveLayoutConfig: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
703
|
+
/**
|
|
704
|
+
* Returns the current step pointer
|
|
705
|
+
*/
|
|
706
|
+
getCurrentStep(): {
|
|
707
|
+
index: number;
|
|
708
|
+
id: string;
|
|
709
|
+
};
|
|
710
|
+
/**
|
|
711
|
+
* Public helpers for templates/consumers
|
|
712
|
+
*/
|
|
713
|
+
isFirst(): boolean;
|
|
714
|
+
isLast(): boolean;
|
|
715
|
+
/**
|
|
716
|
+
* Returns the root context
|
|
717
|
+
*/
|
|
718
|
+
getContext(): any;
|
|
719
|
+
/**
|
|
720
|
+
* Replaces the root context programmatically
|
|
721
|
+
*/
|
|
722
|
+
setContext(ctx: any): void;
|
|
723
|
+
/**
|
|
724
|
+
* Validates the current step.
|
|
725
|
+
*/
|
|
726
|
+
validateCurrentStep(): Promise<boolean>;
|
|
727
|
+
/**
|
|
728
|
+
* Attempts to advance to the next step applying validation and guard
|
|
729
|
+
*/
|
|
730
|
+
next(): Promise<void>;
|
|
731
|
+
/**
|
|
732
|
+
* Goes back to the previous step if possible
|
|
733
|
+
*/
|
|
734
|
+
previous(): Promise<void>;
|
|
735
|
+
/**
|
|
736
|
+
* Navigates to a specific step by id or index
|
|
737
|
+
*/
|
|
738
|
+
goTo(stepIdOrIndex: string | number): Promise<void>;
|
|
739
|
+
/**
|
|
740
|
+
* Validates all steps and emits finished when successful
|
|
741
|
+
*/
|
|
742
|
+
finish(): Promise<void>;
|
|
743
|
+
/**
|
|
744
|
+
* Emits cancel event without state changes
|
|
745
|
+
*/
|
|
746
|
+
cancelFlow(): void;
|
|
747
|
+
/**
|
|
748
|
+
* Handle per-step context changes and keep internal root context in sync.
|
|
749
|
+
*/
|
|
750
|
+
protected onStepContextChange(stepId: string, stepContext: any): void;
|
|
751
|
+
/**
|
|
752
|
+
* Exposes reading a step slice to the template
|
|
753
|
+
*/
|
|
754
|
+
readStepSlice(path?: string): {
|
|
755
|
+
slice: any;
|
|
756
|
+
exists: boolean;
|
|
400
757
|
};
|
|
758
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormStepperComponent, never>;
|
|
759
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormStepperComponent, "axp-dynamic-form-stepper", never, { "definition": { "alias": "definition"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": true; "isSignal": true; }; "layoutLook": { "alias": "layoutLook"; "required": false; "isSignal": true; }; "stepperDirection": { "alias": "stepperDirection"; "required": false; "isSignal": true; }; "layoutConfig": { "alias": "layoutConfig"; "required": false; "isSignal": true; }; "guardNext": { "alias": "guardNext"; "required": false; "isSignal": true; }; }, { "contextChange": "contextChange"; "stepChange": "stepChange"; "finished": "finished"; "cancel": "cancel"; "navigationBlocked": "navigationBlocked"; }, never, never, true, never>;
|
|
401
760
|
}
|
|
402
761
|
|
|
403
762
|
interface AXPDynamicDialogConfig {
|
|
404
763
|
title: string;
|
|
405
764
|
message?: string;
|
|
406
|
-
|
|
765
|
+
/**
|
|
766
|
+
* Legacy: If provided, dialog renders only dynamic-form.
|
|
767
|
+
*/
|
|
768
|
+
formDefinition?: AXPDynamicFormDefinition;
|
|
769
|
+
/**
|
|
770
|
+
* Preferred definition: dynamic form (no steps or single step) or a multi-step stepper definition.
|
|
771
|
+
*/
|
|
772
|
+
definition?: AXPDynamicFormDefinition | AXPDynamicFormStepperDefinition;
|
|
773
|
+
/**
|
|
774
|
+
* Shared context passed to the rendered control
|
|
775
|
+
*/
|
|
407
776
|
context: any;
|
|
408
|
-
|
|
777
|
+
/**
|
|
778
|
+
* Shared layout options applied to form/stepper unless overridden
|
|
779
|
+
*/
|
|
780
|
+
layoutConfig?: AXPGridLayoutOptions;
|
|
781
|
+
layoutLook?: AXPDynamicFormLook;
|
|
782
|
+
mode?: AXPDynamicFormMode;
|
|
409
783
|
size?: AXPopupSizeType;
|
|
784
|
+
closeButton?: boolean;
|
|
785
|
+
/**
|
|
786
|
+
* Optional stepper-only options. Ignored when rendering dynamic-form.
|
|
787
|
+
*/
|
|
788
|
+
stepper?: {
|
|
789
|
+
guardNext?: (e: {
|
|
790
|
+
index: number;
|
|
791
|
+
id: string;
|
|
792
|
+
fullContext: unknown;
|
|
793
|
+
}) => Promise<boolean>;
|
|
794
|
+
stepperDirection?: AXOrientation;
|
|
795
|
+
};
|
|
796
|
+
/**
|
|
797
|
+
* Footer actions. In stepper mode, footer is replaced by Prev/Next/Confirm.
|
|
798
|
+
*/
|
|
410
799
|
actions?: {
|
|
411
800
|
footer?: {
|
|
412
801
|
prefix?: AXPActionMenuItem[];
|
|
@@ -418,44 +807,82 @@ interface AXPDynamicDialogResult {
|
|
|
418
807
|
context: any;
|
|
419
808
|
action?: string;
|
|
420
809
|
}
|
|
810
|
+
interface AXPDialogRef {
|
|
811
|
+
/**
|
|
812
|
+
* Manually close the dialog (optional - dialog closes automatically after user interaction)
|
|
813
|
+
*/
|
|
814
|
+
close(): void;
|
|
815
|
+
/**
|
|
816
|
+
* Get the form data from the dialog
|
|
817
|
+
*/
|
|
818
|
+
context(): any;
|
|
819
|
+
/**
|
|
820
|
+
* Get the action that was clicked by the user
|
|
821
|
+
*/
|
|
822
|
+
action(): string | undefined;
|
|
823
|
+
/**
|
|
824
|
+
* Set the loading state of the dialog
|
|
825
|
+
*/
|
|
826
|
+
setLoading(loading: boolean): void;
|
|
827
|
+
}
|
|
421
828
|
|
|
422
829
|
declare class AXPDynamicDialogComponent extends AXBasePageComponent {
|
|
423
830
|
config: AXPDynamicDialogConfig;
|
|
424
831
|
private readonly dynamicForm;
|
|
832
|
+
protected readonly stepper: _angular_core.Signal<AXPDynamicFormStepperComponent | undefined>;
|
|
425
833
|
isSubmitting: _angular_core.WritableSignal<boolean>;
|
|
426
834
|
private previousContext;
|
|
427
835
|
private formData;
|
|
836
|
+
dialogResult: AXPDynamicDialogResult | null;
|
|
837
|
+
isSubmittingFromDialog: boolean;
|
|
838
|
+
data: any;
|
|
839
|
+
callBack: (dialogRef: AXPDialogRef) => void;
|
|
428
840
|
/**
|
|
429
841
|
* Form context for widget container
|
|
430
842
|
*/
|
|
431
843
|
protected formContext: _angular_core.Signal<Record<string, any>>;
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
844
|
+
/**
|
|
845
|
+
* Combined loading state from both signal and dialog
|
|
846
|
+
*/
|
|
847
|
+
protected isFormLoading: _angular_core.Signal<boolean>;
|
|
848
|
+
protected defaultLayout: () => AXPGridLayoutOptions;
|
|
849
|
+
/**
|
|
850
|
+
* Determine rendering mode and effective definitions
|
|
851
|
+
*/
|
|
852
|
+
protected readonly hasLegacyForm: _angular_core.Signal<boolean>;
|
|
853
|
+
protected readonly providedDefinition: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormDefinition | _acorex_platform_layout_components.AXPDynamicFormStepperDefinition | undefined>;
|
|
854
|
+
protected readonly providedMode: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormMode>;
|
|
855
|
+
protected readonly isStepperDefinition: _angular_core.Signal<boolean>;
|
|
856
|
+
protected readonly shouldRenderForm: _angular_core.Signal<boolean>;
|
|
857
|
+
protected readonly effectiveFormDefinition: _angular_core.Signal<any>;
|
|
858
|
+
protected readonly resolvedFormDefinition: _angular_core.Signal<any>;
|
|
859
|
+
protected readonly effectiveLayoutLook: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormLook>;
|
|
860
|
+
protected readonly effectiveLayoutConfig: _angular_core.Signal<AXPGridLayoutOptions>;
|
|
861
|
+
protected readonly stepperGuardNext: _angular_core.Signal<((e: {
|
|
862
|
+
index: number;
|
|
863
|
+
id: string;
|
|
864
|
+
fullContext: unknown;
|
|
865
|
+
}) => Promise<boolean>) | undefined>;
|
|
866
|
+
protected readonly stepperDirection: _angular_core.Signal<_acorex_cdk_common.AXOrientation>;
|
|
867
|
+
protected readonly stepperDefinition: _angular_core.Signal<any>;
|
|
868
|
+
stepperIsFirst: _angular_core.Signal<boolean>;
|
|
869
|
+
stepperIsLast: _angular_core.Signal<boolean>;
|
|
870
|
+
/**
|
|
871
|
+
* Effective form direction when rendering dynamic-form (single-step or legacy form).
|
|
872
|
+
* If a single-step definition is provided and that step specifies formDirection, use it.
|
|
873
|
+
*/
|
|
874
|
+
protected readonly effectiveFormDirection: _angular_core.Signal<AXPDynamicFormDirection>;
|
|
451
875
|
/**
|
|
452
876
|
* Footer actions for dynamic button system
|
|
453
877
|
*/
|
|
454
878
|
protected footerPrefixActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
455
879
|
protected footerSuffixActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
880
|
+
protected visibleFooterPrefixActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
881
|
+
protected visibleFooterSuffixActions: _angular_core.Signal<AXPActionMenuItem[]>;
|
|
456
882
|
protected hasFooterActions: _angular_core.Signal<boolean>;
|
|
457
|
-
|
|
458
|
-
protected
|
|
883
|
+
/** Stepper footer: choose a single confirm action from provided suffix actions (first visible). */
|
|
884
|
+
protected confirmAction: _angular_core.Signal<AXPActionMenuItem | undefined>;
|
|
885
|
+
protected confirmActionTitle: _angular_core.Signal<string>;
|
|
459
886
|
ngOnInit(): void;
|
|
460
887
|
protected handleContextInitiated(context: any): void;
|
|
461
888
|
protected handleContextChanged(context: any): void;
|
|
@@ -471,6 +898,9 @@ declare class AXPDynamicDialogComponent extends AXBasePageComponent {
|
|
|
471
898
|
* Check if form is valid
|
|
472
899
|
*/
|
|
473
900
|
protected isFormValid(): Promise<boolean>;
|
|
901
|
+
/** Stepper navigation handlers */
|
|
902
|
+
protected goPrev(): void;
|
|
903
|
+
protected goNext(): void;
|
|
474
904
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicDialogComponent, never>;
|
|
475
905
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicDialogComponent, "axp-dynamic-dialog", never, { "config": { "alias": "config"; "required": true; }; }, {}, never, never, true, never>;
|
|
476
906
|
}
|
|
@@ -480,19 +910,25 @@ declare class AXPDynamicDialogService {
|
|
|
480
910
|
/**
|
|
481
911
|
* Show a dynamic dialog with the given configuration
|
|
482
912
|
* @param config Dialog configuration including fields, validation, and UI options
|
|
483
|
-
* @returns Promise resolving to dialog
|
|
913
|
+
* @returns Promise resolving to dialog reference for controlling the dialog
|
|
484
914
|
*/
|
|
485
|
-
showDialog(config: AXPDynamicDialogConfig): Promise<
|
|
915
|
+
showDialog(config: AXPDynamicDialogConfig): Promise<AXPDialogRef>;
|
|
486
916
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicDialogService, never>;
|
|
487
917
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDynamicDialogService>;
|
|
488
918
|
}
|
|
489
919
|
|
|
490
920
|
declare class AXPDynamicFormComponent implements OnInit {
|
|
491
921
|
#private;
|
|
922
|
+
private evaluatorService;
|
|
923
|
+
private formBuilderService;
|
|
924
|
+
/**
|
|
925
|
+
* Tracks the latest scheduled evaluation to ensure last-write-wins for async evaluate
|
|
926
|
+
*/
|
|
927
|
+
private evaluationRunId;
|
|
492
928
|
/**
|
|
493
|
-
* Form definition containing groups and fields
|
|
929
|
+
* Form definition containing groups and fields OR widget tree
|
|
494
930
|
*/
|
|
495
|
-
|
|
931
|
+
data: _angular_core.InputSignal<AXPWidgetNode | AXPDynamicFormDefinition>;
|
|
496
932
|
/**
|
|
497
933
|
* Form context/model data
|
|
498
934
|
*/
|
|
@@ -502,13 +938,23 @@ declare class AXPDynamicFormComponent implements OnInit {
|
|
|
502
938
|
*/
|
|
503
939
|
layoutLook: _angular_core.InputSignal<AXPDynamicFormLook>;
|
|
504
940
|
/**
|
|
505
|
-
*
|
|
941
|
+
* Default form mode. Can be overridden by section/group and field.
|
|
942
|
+
*/
|
|
943
|
+
mode: _angular_core.InputSignal<AXPDynamicFormMode>;
|
|
944
|
+
/**
|
|
945
|
+
* Convert input data to widget tree
|
|
946
|
+
*/
|
|
947
|
+
private convertToWidgetTree;
|
|
948
|
+
protected widgetTree: _angular_core.WritableSignal<AXPWidgetNode | null>;
|
|
949
|
+
/**
|
|
950
|
+
* Convert and evaluate data when inputs change
|
|
506
951
|
*/
|
|
507
|
-
|
|
952
|
+
conversionEffect: _angular_core.EffectRef;
|
|
953
|
+
protected expressionEvaluator(expression: any, context: any): Promise<any>;
|
|
508
954
|
/**
|
|
509
|
-
*
|
|
955
|
+
* Apply layout look to all fieldset widgets in the widget tree
|
|
510
956
|
*/
|
|
511
|
-
|
|
957
|
+
private applyLayoutLookToWidgetTree;
|
|
512
958
|
/**
|
|
513
959
|
* Emitted when form context changes
|
|
514
960
|
*/
|
|
@@ -528,23 +974,22 @@ declare class AXPDynamicFormComponent implements OnInit {
|
|
|
528
974
|
*/
|
|
529
975
|
protected internalContext: _angular_core.WritableSignal<any>;
|
|
530
976
|
/**
|
|
531
|
-
*
|
|
532
|
-
*/
|
|
533
|
-
protected computedLayout: _angular_core.Signal<AXPDynamicFormLayoutConfig>;
|
|
534
|
-
/**
|
|
535
|
-
* Host classes based on layout look and direction
|
|
977
|
+
* Host classes based on layout look and mode
|
|
536
978
|
*/
|
|
537
979
|
protected hostClasses: _angular_core.Signal<string>;
|
|
538
980
|
ngOnInit(): void;
|
|
539
981
|
/**
|
|
540
982
|
* Handle context change events from widget container
|
|
541
983
|
*/
|
|
542
|
-
protected handleContextChanged(event:
|
|
543
|
-
protected isRequired(param: AXPDynamicFormFieldDefinition): boolean;
|
|
984
|
+
protected handleContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
|
|
544
985
|
/**
|
|
545
986
|
* Get the form component instance
|
|
546
987
|
*/
|
|
547
988
|
getForm(): AXFormComponent | undefined;
|
|
989
|
+
/**
|
|
990
|
+
* Get the widget container component instance
|
|
991
|
+
*/
|
|
992
|
+
getContainer(): AXPWidgetContainerComponent | undefined;
|
|
548
993
|
/**
|
|
549
994
|
* Get current form context
|
|
550
995
|
*/
|
|
@@ -553,12 +998,514 @@ declare class AXPDynamicFormComponent implements OnInit {
|
|
|
553
998
|
* Update form context programmatically
|
|
554
999
|
*/
|
|
555
1000
|
updateContext(context: any): void;
|
|
1001
|
+
/**
|
|
1002
|
+
* Get the current widget tree
|
|
1003
|
+
*/
|
|
1004
|
+
getWidgetTree(): AXPWidgetNode | null;
|
|
556
1005
|
/**
|
|
557
1006
|
* Validate the form
|
|
558
1007
|
*/
|
|
559
1008
|
validate(): Promise<boolean>;
|
|
560
1009
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormComponent, never>;
|
|
561
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormComponent, "axp-dynamic-form", never, { "
|
|
1010
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormComponent, "axp-dynamic-form", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": true; "isSignal": true; }; "layoutLook": { "alias": "layoutLook"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "contextChange": "contextChange"; "contextInitiated": "contextInitiated"; "validityChange": "validityChange"; }, never, never, true, never>;
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
interface TextBoxOptions {
|
|
1014
|
+
placeholder?: string;
|
|
1015
|
+
maxLength?: number;
|
|
1016
|
+
minLength?: number;
|
|
1017
|
+
mask?: string;
|
|
1018
|
+
disabled?: boolean;
|
|
1019
|
+
readonly?: boolean;
|
|
1020
|
+
validations?: AXPValidationRules;
|
|
1021
|
+
}
|
|
1022
|
+
interface LargeTextBoxOptions {
|
|
1023
|
+
placeholder?: string;
|
|
1024
|
+
maxLength?: number;
|
|
1025
|
+
minLength?: number;
|
|
1026
|
+
rows?: number;
|
|
1027
|
+
disabled?: boolean;
|
|
1028
|
+
readonly?: boolean;
|
|
1029
|
+
validations?: AXPValidationRules;
|
|
1030
|
+
}
|
|
1031
|
+
interface RichTextOptions {
|
|
1032
|
+
placeholder?: string;
|
|
1033
|
+
toolbar?: string[];
|
|
1034
|
+
height?: number;
|
|
1035
|
+
disabled?: boolean;
|
|
1036
|
+
readonly?: boolean;
|
|
1037
|
+
validations?: AXPValidationRules;
|
|
1038
|
+
}
|
|
1039
|
+
interface SelectBoxOptions<TItem extends Record<string, unknown> = Record<string, unknown>> {
|
|
1040
|
+
valueField: keyof TItem & string;
|
|
1041
|
+
textField: keyof TItem & string;
|
|
1042
|
+
dataSource: TItem[];
|
|
1043
|
+
multiple?: boolean;
|
|
1044
|
+
placeholder?: string;
|
|
1045
|
+
disabled?: boolean;
|
|
1046
|
+
readonly?: boolean;
|
|
1047
|
+
allowSearch?: boolean;
|
|
1048
|
+
validations?: AXPValidationRules;
|
|
1049
|
+
}
|
|
1050
|
+
interface LookupBoxOptions {
|
|
1051
|
+
entity: string;
|
|
1052
|
+
multiple?: boolean;
|
|
1053
|
+
expose?: Array<{
|
|
1054
|
+
source: string;
|
|
1055
|
+
target: string;
|
|
1056
|
+
}>;
|
|
1057
|
+
placeholder?: string;
|
|
1058
|
+
textField?: string;
|
|
1059
|
+
valueField?: string;
|
|
1060
|
+
look?: string;
|
|
1061
|
+
columns?: string[];
|
|
1062
|
+
allowClear?: boolean;
|
|
1063
|
+
disabled?: boolean;
|
|
1064
|
+
readonly?: boolean;
|
|
1065
|
+
validations?: AXPValidationRules;
|
|
1066
|
+
}
|
|
1067
|
+
interface NumberBoxOptions {
|
|
1068
|
+
minValue?: number;
|
|
1069
|
+
maxValue?: number;
|
|
1070
|
+
step?: number;
|
|
1071
|
+
format?: string;
|
|
1072
|
+
placeholder?: string;
|
|
1073
|
+
disabled?: boolean;
|
|
1074
|
+
readonly?: boolean;
|
|
1075
|
+
validations?: AXPValidationRules;
|
|
1076
|
+
}
|
|
1077
|
+
interface DateTimeBoxOptions {
|
|
1078
|
+
format?: string;
|
|
1079
|
+
min?: Date;
|
|
1080
|
+
max?: Date;
|
|
1081
|
+
showTime?: boolean;
|
|
1082
|
+
placeholder?: string;
|
|
1083
|
+
disabled?: boolean;
|
|
1084
|
+
readonly?: boolean;
|
|
1085
|
+
validations?: AXPValidationRules;
|
|
1086
|
+
}
|
|
1087
|
+
interface ToggleSwitchOptions {
|
|
1088
|
+
onText?: string;
|
|
1089
|
+
offText?: string;
|
|
1090
|
+
validations?: AXPValidationRules;
|
|
1091
|
+
}
|
|
1092
|
+
interface PasswordBoxOptions {
|
|
1093
|
+
placeholder?: string;
|
|
1094
|
+
maxLength?: number;
|
|
1095
|
+
minLength?: number;
|
|
1096
|
+
showToggle?: boolean;
|
|
1097
|
+
validations?: AXPValidationRules;
|
|
1098
|
+
}
|
|
1099
|
+
interface SelectionListOptions<TItem extends Record<string, unknown> = Record<string, unknown>> {
|
|
1100
|
+
valueField: keyof TItem & string;
|
|
1101
|
+
textField: keyof TItem & string;
|
|
1102
|
+
dataSource: TItem[];
|
|
1103
|
+
multiple?: boolean;
|
|
1104
|
+
placeholder?: string;
|
|
1105
|
+
disabled?: boolean;
|
|
1106
|
+
readonly?: boolean;
|
|
1107
|
+
validations?: AXPValidationRules;
|
|
1108
|
+
}
|
|
1109
|
+
interface ColorBoxOptions {
|
|
1110
|
+
defaultColor?: string;
|
|
1111
|
+
showAlpha?: boolean;
|
|
1112
|
+
disabled?: boolean;
|
|
1113
|
+
readonly?: boolean;
|
|
1114
|
+
validations?: AXPValidationRules;
|
|
1115
|
+
}
|
|
1116
|
+
interface IFieldOptions {
|
|
1117
|
+
hidden?: string | boolean;
|
|
1118
|
+
readonly?: string | boolean;
|
|
1119
|
+
disabled?: string | boolean;
|
|
1120
|
+
defaultValue?: any;
|
|
1121
|
+
}
|
|
1122
|
+
interface IFieldBuilder {
|
|
1123
|
+
title(title: string): IFieldBuilder;
|
|
1124
|
+
description(description: string): IFieldBuilder;
|
|
1125
|
+
mode(mode: AXPDynamicFormMode): IFieldBuilder;
|
|
1126
|
+
options(values: IFieldOptions): IFieldBuilder;
|
|
1127
|
+
layout(layout: AXPGridLayoutOptions | number): IFieldBuilder;
|
|
1128
|
+
textBox(options?: TextBoxOptions): IFieldBuilder;
|
|
1129
|
+
largeTextBox(options?: LargeTextBoxOptions): IFieldBuilder;
|
|
1130
|
+
richText(options?: RichTextOptions): IFieldBuilder;
|
|
1131
|
+
passwordBox(options?: PasswordBoxOptions): IFieldBuilder;
|
|
1132
|
+
selectBox(options: SelectBoxOptions): IFieldBuilder;
|
|
1133
|
+
lookupBox(options: LookupBoxOptions): IFieldBuilder;
|
|
1134
|
+
selectionList(options: SelectionListOptions): IFieldBuilder;
|
|
1135
|
+
numberBox(options?: NumberBoxOptions): IFieldBuilder;
|
|
1136
|
+
dateTimeBox(options?: DateTimeBoxOptions): IFieldBuilder;
|
|
1137
|
+
toggleSwitch(options?: ToggleSwitchOptions): IFieldBuilder;
|
|
1138
|
+
colorBox(options?: ColorBoxOptions): IFieldBuilder;
|
|
1139
|
+
widget(type: string, options?: unknown): IFieldBuilder;
|
|
1140
|
+
}
|
|
1141
|
+
interface IGroupBuilder {
|
|
1142
|
+
title(title: string): IGroupBuilder;
|
|
1143
|
+
description(description: string): IGroupBuilder;
|
|
1144
|
+
mode(mode: AXPDynamicFormMode): IGroupBuilder;
|
|
1145
|
+
field(path: string, delegate?: (field: IFieldBuilder) => void): IGroupBuilder;
|
|
1146
|
+
group(name: string, delegate?: (group: IGroupBuilder) => void): IGroupBuilder;
|
|
1147
|
+
}
|
|
1148
|
+
interface IStepBuilder {
|
|
1149
|
+
title(title: string): IStepBuilder;
|
|
1150
|
+
description(description: string): IStepBuilder;
|
|
1151
|
+
icon(icon: string): IStepBuilder;
|
|
1152
|
+
group(name: string, delegate?: (group: IGroupBuilder) => void): IStepBuilder;
|
|
1153
|
+
}
|
|
1154
|
+
interface IFormBuilder {
|
|
1155
|
+
group(name: string, delegate?: (group: IGroupBuilder) => void): IFormBuilder;
|
|
1156
|
+
layout(config: Partial<AXPGridLayoutOptions>): IFormBuilder;
|
|
1157
|
+
look(look: AXPDynamicFormLook): IFormBuilder;
|
|
1158
|
+
mode(mode: AXPDynamicFormMode): IFormBuilder;
|
|
1159
|
+
build(): AXPDynamicFormDefinition;
|
|
1160
|
+
export(): AXPWidgetNode;
|
|
1161
|
+
import(widgetTree: AXPWidgetNode): IFormBuilder;
|
|
1162
|
+
}
|
|
1163
|
+
interface IActionBuilder {
|
|
1164
|
+
cancel(text?: string): IActionBuilder;
|
|
1165
|
+
submit(text?: string): IActionBuilder;
|
|
1166
|
+
custom(action: AXPActionMenuItem): IActionBuilder;
|
|
1167
|
+
}
|
|
1168
|
+
interface IDialogBuilder extends IFormBuilder {
|
|
1169
|
+
group(name: string, delegate?: (group: IGroupBuilder) => void): IDialogBuilder;
|
|
1170
|
+
layout(config: Partial<AXPGridLayoutOptions>): IDialogBuilder;
|
|
1171
|
+
look(look: AXPDynamicFormLook): IDialogBuilder;
|
|
1172
|
+
closeButton(closeButton: boolean): IDialogBuilder;
|
|
1173
|
+
step(id: string, delegate?: (step: IStepBuilder) => void): IDialogBuilder;
|
|
1174
|
+
stepperDirection(direction: AXOrientation): IDialogBuilder;
|
|
1175
|
+
guardNext(guard: (e: {
|
|
1176
|
+
index: number;
|
|
1177
|
+
id: string;
|
|
1178
|
+
fullContext: unknown;
|
|
1179
|
+
}) => Promise<boolean>): IDialogBuilder;
|
|
1180
|
+
title(title: string): IDialogBuilder;
|
|
1181
|
+
message(message?: string): IDialogBuilder;
|
|
1182
|
+
size(size: AXPopupSizeType): IDialogBuilder;
|
|
1183
|
+
context(context: AXPContextData): IDialogBuilder;
|
|
1184
|
+
actions(delegate?: (actions: IActionBuilder) => void): IDialogBuilder;
|
|
1185
|
+
show(): Promise<AXPDialogRef>;
|
|
1186
|
+
}
|
|
1187
|
+
interface FormBuilderState {
|
|
1188
|
+
groups: AXPDynamicFormGroupDefinition[];
|
|
1189
|
+
layoutConfig: AXPGridLayoutOptions;
|
|
1190
|
+
look: AXPDynamicFormLook;
|
|
1191
|
+
mode?: AXPDynamicFormMode;
|
|
1192
|
+
}
|
|
1193
|
+
interface DialogBuilderState extends FormBuilderState {
|
|
1194
|
+
title?: string;
|
|
1195
|
+
message?: string;
|
|
1196
|
+
size?: AXPopupSizeType;
|
|
1197
|
+
context?: AXPContextData;
|
|
1198
|
+
steps: StepBuilderState[];
|
|
1199
|
+
stepperDirection?: AXOrientation;
|
|
1200
|
+
closeButton?: boolean;
|
|
1201
|
+
guardNext?: (e: {
|
|
1202
|
+
index: number;
|
|
1203
|
+
id: string;
|
|
1204
|
+
fullContext: unknown;
|
|
1205
|
+
}) => Promise<boolean>;
|
|
1206
|
+
actions?: {
|
|
1207
|
+
footer?: {
|
|
1208
|
+
prefix?: AXPActionMenuItem[];
|
|
1209
|
+
suffix?: AXPActionMenuItem[];
|
|
1210
|
+
};
|
|
1211
|
+
};
|
|
1212
|
+
}
|
|
1213
|
+
interface FieldBuilderState {
|
|
1214
|
+
path: string;
|
|
1215
|
+
title?: string;
|
|
1216
|
+
description?: string;
|
|
1217
|
+
defaultValue?: any;
|
|
1218
|
+
hidden?: string | boolean;
|
|
1219
|
+
readonly?: string | boolean;
|
|
1220
|
+
disabled?: string | boolean;
|
|
1221
|
+
widget?: AXPWidgetNode;
|
|
1222
|
+
layout?: AXPGridLayoutOptions;
|
|
1223
|
+
mode?: AXPDynamicFormMode;
|
|
1224
|
+
}
|
|
1225
|
+
interface GroupBuilderState {
|
|
1226
|
+
name: string;
|
|
1227
|
+
title?: string;
|
|
1228
|
+
description?: string;
|
|
1229
|
+
parameters: AXPDynamicFormFieldDefinition[];
|
|
1230
|
+
mode?: AXPDynamicFormMode;
|
|
1231
|
+
}
|
|
1232
|
+
interface StepBuilderState {
|
|
1233
|
+
id: string;
|
|
1234
|
+
title?: string;
|
|
1235
|
+
description?: string;
|
|
1236
|
+
icon?: string;
|
|
1237
|
+
groups: AXPDynamicFormGroupDefinition[];
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
declare class AXPDynamicFormBuilderService {
|
|
1241
|
+
private readonly dialogService;
|
|
1242
|
+
private widgetTreeCache;
|
|
1243
|
+
private formDefinitionCache;
|
|
1244
|
+
/**
|
|
1245
|
+
* Create a new form builder
|
|
1246
|
+
*/
|
|
1247
|
+
form(): IFormBuilder;
|
|
1248
|
+
/**
|
|
1249
|
+
* Export form definition to AXPWidgetNode
|
|
1250
|
+
*/
|
|
1251
|
+
exportFormDefinition(formDefinition: AXPDynamicFormDefinition): AXPWidgetNode;
|
|
1252
|
+
/**
|
|
1253
|
+
* Import form definition from AXPWidgetNode
|
|
1254
|
+
*/
|
|
1255
|
+
importFormDefinition(widgetTree: AXPWidgetNode): AXPDynamicFormDefinition;
|
|
1256
|
+
/**
|
|
1257
|
+
* Export widget tree to AXPWidgetNode (deep clone)
|
|
1258
|
+
*/
|
|
1259
|
+
exportWidgetTree(widgetTree: AXPWidgetNode): AXPWidgetNode;
|
|
1260
|
+
/**
|
|
1261
|
+
* Import widget tree from AXPWidgetNode (with validation)
|
|
1262
|
+
*/
|
|
1263
|
+
importWidgetTree(widgetTree: AXPWidgetNode): AXPWidgetNode;
|
|
1264
|
+
/**
|
|
1265
|
+
* Create a new dialog builder
|
|
1266
|
+
*/
|
|
1267
|
+
dialog(): IDialogBuilder;
|
|
1268
|
+
/**
|
|
1269
|
+
* Convert AXPDynamicFormDefinition to AXPWidgetNode tree structure
|
|
1270
|
+
* Groups become Grid Layouts with Grid Items
|
|
1271
|
+
* Fields become Form Field widgets with Editor widgets as children
|
|
1272
|
+
*/
|
|
1273
|
+
serializeToWidgetTree(formDefinition: AXPDynamicFormDefinition): AXPWidgetNode;
|
|
1274
|
+
/**
|
|
1275
|
+
* Convert AXPWidgetNode tree back to AXPDynamicFormDefinition
|
|
1276
|
+
* Parses Grid Layouts back to Groups
|
|
1277
|
+
* Parses Form Field widgets back to Fields
|
|
1278
|
+
*/
|
|
1279
|
+
deserializeFromWidgetTree(widgetTree: AXPWidgetNode): AXPDynamicFormDefinition;
|
|
1280
|
+
/**
|
|
1281
|
+
* Validate that a widget tree represents a valid dynamic form structure
|
|
1282
|
+
*/
|
|
1283
|
+
validateFormWidgetTree(widgetTree: AXPWidgetNode): boolean;
|
|
1284
|
+
/**
|
|
1285
|
+
* Convert a single group to Fieldset widget structure
|
|
1286
|
+
*/
|
|
1287
|
+
private createGroupAsFieldsetWidget;
|
|
1288
|
+
/**
|
|
1289
|
+
* Convert fields to Form Field widgets
|
|
1290
|
+
*/
|
|
1291
|
+
private createFieldWidgets;
|
|
1292
|
+
/**
|
|
1293
|
+
* Convert a single field to Form Field widget with editor as child
|
|
1294
|
+
*/
|
|
1295
|
+
private createFormFieldWidget;
|
|
1296
|
+
/**
|
|
1297
|
+
* Extract group information from Grid Layout widget
|
|
1298
|
+
*/
|
|
1299
|
+
private extractGroupFromFieldset;
|
|
1300
|
+
/**
|
|
1301
|
+
* Extract field information from Form Field widget
|
|
1302
|
+
*/
|
|
1303
|
+
private extractFieldFromFormWidget;
|
|
1304
|
+
/**
|
|
1305
|
+
* Create cache key for form definition
|
|
1306
|
+
*/
|
|
1307
|
+
private createFormDefinitionCacheKey;
|
|
1308
|
+
/**
|
|
1309
|
+
* Create cache key for widget tree
|
|
1310
|
+
*/
|
|
1311
|
+
private createWidgetTreeCacheKey;
|
|
1312
|
+
/**
|
|
1313
|
+
* Clear all caches
|
|
1314
|
+
*/
|
|
1315
|
+
clearCaches(): void;
|
|
1316
|
+
/**
|
|
1317
|
+
* Get cache statistics
|
|
1318
|
+
*/
|
|
1319
|
+
getCacheStats(): {
|
|
1320
|
+
widgetTreeCacheSize: number;
|
|
1321
|
+
formDefinitionCacheSize: number;
|
|
1322
|
+
};
|
|
1323
|
+
/**
|
|
1324
|
+
* Create a simple hash from a string
|
|
1325
|
+
*/
|
|
1326
|
+
private createSimpleHash;
|
|
1327
|
+
/**
|
|
1328
|
+
* Validate widget tree structure recursively
|
|
1329
|
+
*/
|
|
1330
|
+
private validateWidgetTreeStructure;
|
|
1331
|
+
/**
|
|
1332
|
+
* Deep clone AXPWidgetNode
|
|
1333
|
+
*/
|
|
1334
|
+
private deepCloneWidgetNode;
|
|
1335
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormBuilderService, never>;
|
|
1336
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDynamicFormBuilderService>;
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
interface AXPDynamicFormDesignerField {
|
|
1340
|
+
id: string;
|
|
1341
|
+
name: string;
|
|
1342
|
+
title: string;
|
|
1343
|
+
description?: string;
|
|
1344
|
+
widget: AXPWidgetNode;
|
|
1345
|
+
mode?: 'view' | 'edit';
|
|
1346
|
+
layout?: AXPGridLayoutOptions;
|
|
1347
|
+
validations?: Array<{
|
|
1348
|
+
rule: string;
|
|
1349
|
+
options?: Record<string, any>;
|
|
1350
|
+
}>;
|
|
1351
|
+
}
|
|
1352
|
+
interface AXPDynamicFormDesignerGroup {
|
|
1353
|
+
id: string;
|
|
1354
|
+
name: string;
|
|
1355
|
+
title?: string;
|
|
1356
|
+
description?: string;
|
|
1357
|
+
fields: AXPDynamicFormDesignerField[];
|
|
1358
|
+
mode?: 'view' | 'edit';
|
|
1359
|
+
layout?: AXPGridLayoutOptions;
|
|
1360
|
+
}
|
|
1361
|
+
interface AXPDynamicFormDesignerState {
|
|
1362
|
+
groups: AXPDynamicFormDesignerGroup[];
|
|
1363
|
+
selectedFieldId?: string;
|
|
1364
|
+
selectedGroupId?: string;
|
|
1365
|
+
mode: 'designer' | 'preview';
|
|
1366
|
+
}
|
|
1367
|
+
/**
|
|
1368
|
+
* Convert designer field to form field definition
|
|
1369
|
+
*/
|
|
1370
|
+
declare function convertDesignerFieldToFormField(field: AXPDynamicFormDesignerField): AXPDynamicFormFieldDefinition;
|
|
1371
|
+
/**
|
|
1372
|
+
* Convert designer group to form group definition
|
|
1373
|
+
*/
|
|
1374
|
+
declare function convertDesignerGroupToFormGroup(group: AXPDynamicFormDesignerGroup): AXPDynamicFormGroupDefinition;
|
|
1375
|
+
/**
|
|
1376
|
+
* Convert designer state to form definition
|
|
1377
|
+
*/
|
|
1378
|
+
declare function convertDesignerStateToFormDefinition(state: AXPDynamicFormDesignerState): AXPDynamicFormDefinition;
|
|
1379
|
+
interface AXPFormElementWidget {
|
|
1380
|
+
name: string;
|
|
1381
|
+
title: string;
|
|
1382
|
+
icon?: string;
|
|
1383
|
+
description?: string;
|
|
1384
|
+
type: string;
|
|
1385
|
+
properties?: any[];
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
declare class AXPDynamicFormDesignerComponent {
|
|
1389
|
+
formDefinition: _angular_core.ModelSignal<AXPDynamicFormDefinition>;
|
|
1390
|
+
readonly: _angular_core.InputSignal<boolean>;
|
|
1391
|
+
private isInternalUpdate;
|
|
1392
|
+
private readonly widgetRegistry;
|
|
1393
|
+
private readonly formBuilderService;
|
|
1394
|
+
private readonly widgetPropertyViewerService;
|
|
1395
|
+
private readonly dialogService;
|
|
1396
|
+
protected selectedFieldId: _angular_core.WritableSignal<string | null>;
|
|
1397
|
+
private designerState;
|
|
1398
|
+
protected availableWidgets: _angular_core.Signal<AXPFormElementWidget[]>;
|
|
1399
|
+
protected widgetOptions: _angular_core.Signal<{
|
|
1400
|
+
value: string;
|
|
1401
|
+
text: string;
|
|
1402
|
+
}[]>;
|
|
1403
|
+
protected getAllFields: _angular_core.Signal<AXPDynamicFormDesignerField[]>;
|
|
1404
|
+
protected designerGroups: _angular_core.Signal<AXPDynamicFormDesignerGroup[]>;
|
|
1405
|
+
/**
|
|
1406
|
+
* Effect to log form definition changes
|
|
1407
|
+
*/
|
|
1408
|
+
private logFormDefinitionChanges;
|
|
1409
|
+
/**
|
|
1410
|
+
* Effect to sync form definition model to designer state
|
|
1411
|
+
*/
|
|
1412
|
+
private syncModelToDesigner;
|
|
1413
|
+
/**
|
|
1414
|
+
* Effect to sync designer state changes back to model
|
|
1415
|
+
*/
|
|
1416
|
+
private syncDesignerToModel;
|
|
1417
|
+
/**
|
|
1418
|
+
* Get the current form definition (converted from designer state)
|
|
1419
|
+
*/
|
|
1420
|
+
getFormDefinition(): AXPDynamicFormDefinition;
|
|
1421
|
+
/**
|
|
1422
|
+
* Set the form definition (converted to designer state)
|
|
1423
|
+
*/
|
|
1424
|
+
setFormDefinition(definition: AXPDynamicFormDefinition): void;
|
|
1425
|
+
/**
|
|
1426
|
+
* Add a new field to the form
|
|
1427
|
+
* @param field The field to add
|
|
1428
|
+
*/
|
|
1429
|
+
addField(field: AXPDynamicFormDesignerField): void;
|
|
1430
|
+
/**
|
|
1431
|
+
* Update an existing field
|
|
1432
|
+
* @param fieldId The ID of the field to update
|
|
1433
|
+
* @param updates The updates to apply
|
|
1434
|
+
*/
|
|
1435
|
+
updateField(fieldId: string, updates: Partial<AXPDynamicFormDesignerField>): void;
|
|
1436
|
+
/**
|
|
1437
|
+
* Remove a field from the form
|
|
1438
|
+
* @param fieldId The ID of the field to remove
|
|
1439
|
+
*/
|
|
1440
|
+
removeField(fieldId: string): void;
|
|
1441
|
+
/**
|
|
1442
|
+
* Get all available widget types
|
|
1443
|
+
*/
|
|
1444
|
+
getAvailableWidgets(): AXPFormElementWidget[];
|
|
1445
|
+
/**
|
|
1446
|
+
* Add a new group to the form
|
|
1447
|
+
* @param group The group to add
|
|
1448
|
+
*/
|
|
1449
|
+
addGroup(group: AXPDynamicFormDesignerGroup): void;
|
|
1450
|
+
/**
|
|
1451
|
+
* Remove a group from the form
|
|
1452
|
+
* @param groupName The name of the group to remove
|
|
1453
|
+
*/
|
|
1454
|
+
removeGroup(groupName: string): void;
|
|
1455
|
+
/**
|
|
1456
|
+
* Reorder groups in the form
|
|
1457
|
+
* @param fromIndex Source index
|
|
1458
|
+
* @param toIndex Target index
|
|
1459
|
+
*/
|
|
1460
|
+
reorderGroups(fromIndex: number, toIndex: number): void;
|
|
1461
|
+
/**
|
|
1462
|
+
* Update an existing group
|
|
1463
|
+
* @param groupName The name of the group to update
|
|
1464
|
+
* @param updates The updates to apply
|
|
1465
|
+
*/
|
|
1466
|
+
updateGroup(groupName: string, updates: Partial<AXPDynamicFormDesignerGroup>): void;
|
|
1467
|
+
/**
|
|
1468
|
+
* Move a field to a different group
|
|
1469
|
+
* @param fieldName The name/path of the field to move
|
|
1470
|
+
* @param targetGroupName The name of the target group
|
|
1471
|
+
*/
|
|
1472
|
+
moveFieldToGroup(fieldName: string, targetGroupName: string): void;
|
|
1473
|
+
protected handleAddGroupClick(): Promise<void>;
|
|
1474
|
+
protected handleAddFieldToGroup(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
1475
|
+
protected handleFieldEdit(field: AXPDynamicFormDesignerField): Promise<void>;
|
|
1476
|
+
protected handleFieldRemove(field: AXPDynamicFormDesignerField): void;
|
|
1477
|
+
protected handleGroupEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
1478
|
+
protected handleGroupLayoutEdit(group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
1479
|
+
protected handleGroupRemove(group: AXPDynamicFormDesignerGroup): void;
|
|
1480
|
+
/**
|
|
1481
|
+
* Handle field layout editing
|
|
1482
|
+
*/
|
|
1483
|
+
protected handleFieldLayoutEdit(field: AXPDynamicFormDesignerField, group: AXPDynamicFormDesignerGroup): Promise<void>;
|
|
1484
|
+
protected handleGroupDrop(event: CdkDragDrop<AXPDynamicFormDesignerGroup[]>): void;
|
|
1485
|
+
protected handleFieldDrop(event: CdkDragDrop<AXPDynamicFormDesignerField[]>, targetGroupName?: string): void;
|
|
1486
|
+
protected handlePreviewClick(): Promise<void>;
|
|
1487
|
+
protected deriveKey(input: string): string;
|
|
1488
|
+
protected generateId(): string;
|
|
1489
|
+
protected getWidgetIcon(widgetName: string): string;
|
|
1490
|
+
protected getWidgetTitle(widgetName: string): string;
|
|
1491
|
+
protected getWidgetNode(field: AXPDynamicFormDesignerField): AXPWidgetNode;
|
|
1492
|
+
protected deriveGroupKey(input: string): string;
|
|
1493
|
+
protected getGroupOptions(): Array<{
|
|
1494
|
+
value: string;
|
|
1495
|
+
text: string;
|
|
1496
|
+
}>;
|
|
1497
|
+
protected addFieldToGroup(field: AXPDynamicFormDesignerField, groupName: string): void;
|
|
1498
|
+
protected getAllGroupDropLists(): string[];
|
|
1499
|
+
/**
|
|
1500
|
+
* Get the grid column count for a group (always 12 columns)
|
|
1501
|
+
*/
|
|
1502
|
+
protected getGroupColumnCount(): number;
|
|
1503
|
+
/**
|
|
1504
|
+
* Get default field grid layout based on group configuration
|
|
1505
|
+
*/
|
|
1506
|
+
protected getFieldGridLayout(group: AXPDynamicFormDesignerGroup, fieldIndex?: number): AXPGridLayoutOptions;
|
|
1507
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormDesignerComponent, never>;
|
|
1508
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormDesignerComponent, "axp-dynamic-form-designer", never, { "formDefinition": { "alias": "formDefinition"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "formDefinition": "formDefinitionChange"; }, never, never, true, never>;
|
|
562
1509
|
}
|
|
563
1510
|
|
|
564
1511
|
/**
|
|
@@ -599,8 +1546,8 @@ declare const AXP_EXTRA_PROPERTY_TYPES: InjectionToken<AXPExtraPropertyType[]>;
|
|
|
599
1546
|
|
|
600
1547
|
declare class AXPExtraPropertiesComponent {
|
|
601
1548
|
items: _angular_core.InputSignal<AXPExtraPropertyItem[]>;
|
|
602
|
-
mode: _angular_core.InputSignal<"
|
|
603
|
-
protected onContextChanged(event:
|
|
1549
|
+
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
1550
|
+
protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
|
|
604
1551
|
itemsChange: _angular_core.OutputEmitterRef<AXPExtraPropertyItem[]>;
|
|
605
1552
|
private readonly providedTypes;
|
|
606
1553
|
private readonly translationService;
|
|
@@ -640,7 +1587,7 @@ declare class AXPExtraPropertiesComponent {
|
|
|
640
1587
|
|
|
641
1588
|
declare class AXPExtraPropertiesSchemaComponent {
|
|
642
1589
|
schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
|
|
643
|
-
mode: _angular_core.InputSignal<"
|
|
1590
|
+
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
644
1591
|
schemaChange: _angular_core.OutputEmitterRef<AXPExtraPropertySchemaItem[]>;
|
|
645
1592
|
private readonly providedTypes;
|
|
646
1593
|
private readonly translationService;
|
|
@@ -671,13 +1618,13 @@ declare class AXPExtraPropertiesSchemaComponent {
|
|
|
671
1618
|
declare class AXPExtraPropertiesValuesComponent {
|
|
672
1619
|
schema: _angular_core.InputSignal<AXPExtraPropertySchemaItem[]>;
|
|
673
1620
|
values: _angular_core.InputSignal<Record<string, any>>;
|
|
674
|
-
mode: _angular_core.InputSignal<"
|
|
1621
|
+
mode: _angular_core.InputSignal<"view" | "edit">;
|
|
675
1622
|
valuesChange: _angular_core.OutputEmitterRef<Record<string, any>>;
|
|
676
1623
|
isRequired: (item: AXPExtraPropertySchemaItem) => any;
|
|
677
1624
|
protected internalContext: _angular_core.WritableSignal<Record<string, any>>;
|
|
678
1625
|
private nodeCache;
|
|
679
1626
|
private lastTypeByKey;
|
|
680
|
-
protected onContextChanged(event:
|
|
1627
|
+
protected onContextChanged(event: AXPWidgetCoreContextChangeEvent): void;
|
|
681
1628
|
private readonly syncContextFromInputs;
|
|
682
1629
|
private readonly clearOnSchemaTypeChange;
|
|
683
1630
|
protected getNode(item: AXPExtraPropertySchemaItem): AXPWidgetNode;
|
|
@@ -712,7 +1659,7 @@ declare class AXPQueryFiltersComponent {
|
|
|
712
1659
|
ngOnInit(): void;
|
|
713
1660
|
handleSelectField(field: AXPFilterDefinition): void;
|
|
714
1661
|
handleFieldKeyDown(e: KeyboardEvent, field: AXPFilterDefinition): void;
|
|
715
|
-
onContextChanged(e:
|
|
1662
|
+
onContextChanged(e: AXPWidgetCoreContextChangeEvent): void;
|
|
716
1663
|
handleApplyFilter(): void;
|
|
717
1664
|
handleButtonKeyDown(e: Event): void;
|
|
718
1665
|
handleKeyDown(e: AXHtmlEvent<KeyboardEvent>): void;
|
|
@@ -727,6 +1674,116 @@ declare class AXPQueryFiltersComponent {
|
|
|
727
1674
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQueryFiltersComponent, "axp-query-filters", never, { "filtersDefinitions": { "alias": "filtersDefinitions"; "required": false; "isSignal": true; }; "initialFilters": { "alias": "initialFilters"; "required": false; "isSignal": true; }; }, { "onFiltersChanged": "onFiltersChanged"; }, never, never, true, never>;
|
|
728
1675
|
}
|
|
729
1676
|
|
|
1677
|
+
declare class AXPImageEditorPopupComponent extends AXBasePageComponent {
|
|
1678
|
+
private readonly fileStorage;
|
|
1679
|
+
image: _angular_core.InputSignal<Blob>;
|
|
1680
|
+
showHistory: _angular_core.InputSignal<boolean>;
|
|
1681
|
+
look: _angular_core.InputSignal<"solid" | "outline" | "blank">;
|
|
1682
|
+
private container;
|
|
1683
|
+
private blobUrl;
|
|
1684
|
+
protected url: _angular_core.WritableSignal<string | null>;
|
|
1685
|
+
protected context: _angular_core.WritableSignal<{
|
|
1686
|
+
image: Blob | null;
|
|
1687
|
+
}>;
|
|
1688
|
+
ngOnInit(): Promise<void>;
|
|
1689
|
+
handleValueChanged(e: any): void;
|
|
1690
|
+
handleSave(): void;
|
|
1691
|
+
handleCancel(): void;
|
|
1692
|
+
ngOnDestroy(): void;
|
|
1693
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPImageEditorPopupComponent, never>;
|
|
1694
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPImageEditorPopupComponent, "axp-image-editor-popup", never, { "image": { "alias": "image"; "required": true; "isSignal": true; }; "showHistory": { "alias": "showHistory"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1695
|
+
}
|
|
1696
|
+
|
|
1697
|
+
interface AXPImageEditorOpenOptions {
|
|
1698
|
+
title?: string;
|
|
1699
|
+
image: Blob;
|
|
1700
|
+
showHistory?: boolean;
|
|
1701
|
+
look?: 'solid' | 'outline' | 'blank';
|
|
1702
|
+
}
|
|
1703
|
+
declare class AXPImageEditorService {
|
|
1704
|
+
private readonly popupService;
|
|
1705
|
+
private readonly translate;
|
|
1706
|
+
open(options?: AXPImageEditorOpenOptions): Promise<Blob | null>;
|
|
1707
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPImageEditorService, never>;
|
|
1708
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPImageEditorService>;
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
interface AXPWidgetPropertyTab {
|
|
1712
|
+
name: string;
|
|
1713
|
+
title: string;
|
|
1714
|
+
groups: {
|
|
1715
|
+
name: string;
|
|
1716
|
+
title: string;
|
|
1717
|
+
isCollapsed: boolean;
|
|
1718
|
+
props: AXPWidgetProperty[];
|
|
1719
|
+
}[];
|
|
1720
|
+
}
|
|
1721
|
+
interface AXPWidgetPropertiesChangedEvent {
|
|
1722
|
+
values: any;
|
|
1723
|
+
mode: 'init' | 'update';
|
|
1724
|
+
}
|
|
1725
|
+
declare class AXPWidgetPropertyViewerComponent {
|
|
1726
|
+
widget: _angular_core.InputSignal<AXPWidgetNode>;
|
|
1727
|
+
mode: _angular_core.InputSignal<"simple" | "advanced">;
|
|
1728
|
+
private widgetRegistryService;
|
|
1729
|
+
protected currentTabIndex: WritableSignal<number>;
|
|
1730
|
+
protected config: WritableSignal<AXPWidgetConfig<any> | null>;
|
|
1731
|
+
protected allPoperties: AXPWidgetProperty[];
|
|
1732
|
+
protected tabs: WritableSignal<AXPWidgetPropertyTab[]>;
|
|
1733
|
+
protected groups: _angular_core.Signal<{
|
|
1734
|
+
name: string;
|
|
1735
|
+
title: string;
|
|
1736
|
+
isCollapsed: boolean;
|
|
1737
|
+
props: AXPWidgetProperty[];
|
|
1738
|
+
}[]>;
|
|
1739
|
+
protected groupCollapsedStates: Map<string, boolean>;
|
|
1740
|
+
onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
|
|
1741
|
+
protected context: WritableSignal<any>;
|
|
1742
|
+
protected initialContext: any;
|
|
1743
|
+
constructor();
|
|
1744
|
+
update(values: any): void;
|
|
1745
|
+
private fillTabs;
|
|
1746
|
+
protected handleContextChange(e: AXPWidgetCoreContextChangeEvent): void;
|
|
1747
|
+
protected handleTabChange(event: AXTabStripChangedEvent): void;
|
|
1748
|
+
protected handleCollapsedChange(group: string, collapsed: boolean): void;
|
|
1749
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
|
|
1750
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerComponent, "axp-widget-property-viewer", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "onChanged": "onChanged"; }, never, never, true, never>;
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
declare class AXPWidgetPropertyViewerPopupComponent extends AXBasePageComponent {
|
|
1754
|
+
widget: _angular_core.InputSignal<AXPWidgetNode>;
|
|
1755
|
+
mode: _angular_core.InputSignal<"simple" | "advanced">;
|
|
1756
|
+
protected currentValues: _angular_core.WritableSignal<any>;
|
|
1757
|
+
protected handlePropertyChanged(event: {
|
|
1758
|
+
values: any;
|
|
1759
|
+
mode: 'init' | 'update';
|
|
1760
|
+
}): void;
|
|
1761
|
+
protected handleCloseClick(): void;
|
|
1762
|
+
protected handleApplyClick(): void;
|
|
1763
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerPopupComponent, never>;
|
|
1764
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerPopupComponent, "axp-widget-property-viewer-popup", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
interface AXPWidgetPropertyViewerConfig {
|
|
1768
|
+
title: string;
|
|
1769
|
+
widget: AXPWidgetNode;
|
|
1770
|
+
mode?: 'simple' | 'advanced';
|
|
1771
|
+
size?: 'sm' | 'md' | 'lg' | 'full';
|
|
1772
|
+
}
|
|
1773
|
+
interface AXPWidgetPropertyViewerResult {
|
|
1774
|
+
values: any;
|
|
1775
|
+
mode: 'init' | 'update';
|
|
1776
|
+
}
|
|
1777
|
+
declare class AXPWidgetPropertyViewerService {
|
|
1778
|
+
private readonly popupService;
|
|
1779
|
+
/**
|
|
1780
|
+
* Open widget property viewer popup
|
|
1781
|
+
*/
|
|
1782
|
+
open(config: AXPWidgetPropertyViewerConfig): Promise<AXPWidgetPropertyViewerResult | null>;
|
|
1783
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerService, never>;
|
|
1784
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPWidgetPropertyViewerService>;
|
|
1785
|
+
}
|
|
1786
|
+
|
|
730
1787
|
declare class AXPQuerySortsComponent {
|
|
731
1788
|
sortDefinitions: _angular_core.ModelSignal<AXPSortDefinition[]>;
|
|
732
1789
|
sortQueries: _angular_core.WritableSignal<AXPSortQuery[]>;
|
|
@@ -740,6 +1797,17 @@ declare class AXPQuerySortsComponent {
|
|
|
740
1797
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPQuerySortsComponent, "axp-query-sorts", never, { "sortDefinitions": { "alias": "sortDefinitions"; "required": false; "isSignal": true; }; "initialSortQueries": { "alias": "initialSortQueries"; "required": false; "isSignal": true; }; }, { "sortDefinitions": "sortDefinitionsChange"; "sortQueriesChange": "sortQueriesChange"; }, never, never, true, never>;
|
|
741
1798
|
}
|
|
742
1799
|
|
|
1800
|
+
type StateMode = 'empty' | 'error' | 'loading' | 'warning' | 'info' | 'success';
|
|
1801
|
+
declare class AXPStateMessageComponent {
|
|
1802
|
+
mode: _angular_core.InputSignal<StateMode>;
|
|
1803
|
+
icon: _angular_core.InputSignal<string>;
|
|
1804
|
+
title: _angular_core.InputSignal<string>;
|
|
1805
|
+
description: _angular_core.InputSignal<string>;
|
|
1806
|
+
variant: _angular_core.InputSignal<"default" | "compact" | "minimal">;
|
|
1807
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStateMessageComponent, never>;
|
|
1808
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPStateMessageComponent, "axp-state-message", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=actions]"], true, never>;
|
|
1809
|
+
}
|
|
1810
|
+
|
|
743
1811
|
interface AXPTemplateViewerConfig {
|
|
744
1812
|
template: AXPWidgetNode | string;
|
|
745
1813
|
title?: string;
|
|
@@ -765,7 +1833,7 @@ declare class AXPTemplateViewerComponent extends AXBasePageComponent {
|
|
|
765
1833
|
protected readonly currentPage: _angular_core.Signal<AXPWidgetNode>;
|
|
766
1834
|
protected ngOnInit(): Promise<void>;
|
|
767
1835
|
private loadTemplate;
|
|
768
|
-
protected handleContextChanged(e:
|
|
1836
|
+
protected handleContextChanged(e: AXPWidgetCoreContextChangeEvent): void;
|
|
769
1837
|
protected handleSubmit(form: AXFormComponent): Promise<void>;
|
|
770
1838
|
protected handleCancel(): void;
|
|
771
1839
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTemplateViewerComponent, never>;
|
|
@@ -956,47 +2024,5 @@ declare class AXPWidgetItemComponent {
|
|
|
956
2024
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetItemComponent, "axp-widget-item", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "isSelected": { "alias": "isSelected"; "required": false; "isSignal": true; }; "showPinButton": { "alias": "showPinButton"; "required": false; "isSignal": true; }; "customClasses": { "alias": "customClasses"; "required": false; "isSignal": true; }; }, { "onWidgetClick": "onWidgetClick"; "onPinClick": "onPinClick"; }, never, never, true, never>;
|
|
957
2025
|
}
|
|
958
2026
|
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
title: string;
|
|
962
|
-
groups: {
|
|
963
|
-
name: string;
|
|
964
|
-
title: string;
|
|
965
|
-
isCollapsed: boolean;
|
|
966
|
-
props: AXPWidgetProperty[];
|
|
967
|
-
}[];
|
|
968
|
-
}
|
|
969
|
-
interface AXPWidgetPropertiesChangedEvent {
|
|
970
|
-
values: any;
|
|
971
|
-
mode: 'init' | 'update';
|
|
972
|
-
}
|
|
973
|
-
declare class AXPWidgetPropertyViewerComponent {
|
|
974
|
-
widget: _angular_core.InputSignal<AXPWidgetNode>;
|
|
975
|
-
mode: _angular_core.InputSignal<"simple" | "advanced">;
|
|
976
|
-
private widgetRegistryService;
|
|
977
|
-
protected currentTabIndex: WritableSignal<number>;
|
|
978
|
-
protected config: WritableSignal<AXPWidgetConfig<any> | null>;
|
|
979
|
-
protected allPoperties: AXPWidgetProperty[];
|
|
980
|
-
protected tabs: WritableSignal<AXPWidgetPropertyTab[]>;
|
|
981
|
-
protected groups: _angular_core.Signal<{
|
|
982
|
-
name: string;
|
|
983
|
-
title: string;
|
|
984
|
-
isCollapsed: boolean;
|
|
985
|
-
props: AXPWidgetProperty[];
|
|
986
|
-
}[]>;
|
|
987
|
-
protected groupCollapsedStates: Map<string, boolean>;
|
|
988
|
-
onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
|
|
989
|
-
protected context: WritableSignal<any>;
|
|
990
|
-
protected initialContext: any;
|
|
991
|
-
constructor();
|
|
992
|
-
update(values: any): void;
|
|
993
|
-
private fillTabs;
|
|
994
|
-
protected handleContextChange(e: AXPLayoutContextChangeEvent): void;
|
|
995
|
-
protected handleTabChange(event: AXTabStripChangedEvent): void;
|
|
996
|
-
protected handleCollapsedChange(group: string, collapsed: boolean): void;
|
|
997
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
|
|
998
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPWidgetPropertyViewerComponent, "axp-widget-property-viewer", never, { "widget": { "alias": "widget"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; }, { "onChanged": "onChanged"; }, never, never, true, never>;
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
export { AXPActivityLogComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDynamicDialogComponent, AXPDynamicDialogService, AXPDynamicFormComponent, AXPExtraPropertiesComponent, AXPExtraPropertiesSchemaComponent, AXPExtraPropertiesValuesComponent, AXPMenuBadgeHelper, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXP_EXTRA_PROPERTY_TYPES, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER };
|
|
1002
|
-
export type { AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDynamicDialogConfig, AXPDynamicDialogResult, AXPDynamicFormDefinition, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLayoutConfig, AXPDynamicFormLook, AXPExtraPropertyItem, AXPExtraPropertySchemaItem, AXPExtraPropertyType, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyTab };
|
|
2027
|
+
export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDynamicDialogComponent, AXPDynamicDialogService, AXPDynamicFormBuilderService, AXPDynamicFormComponent, AXPDynamicFormDesignerComponent, AXPDynamicFormStepperComponent, AXPExtraPropertiesComponent, AXPExtraPropertiesSchemaComponent, AXPExtraPropertiesValuesComponent, AXPImageEditorPopupComponent, AXPImageEditorService, AXPMenuBadgeHelper, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPStateMessageComponent, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXTRA_PROPERTY_TYPES, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, convertDesignerFieldToFormField, convertDesignerGroupToFormGroup, convertDesignerStateToFormDefinition };
|
|
2028
|
+
export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDialogRef, AXPDynamicDialogConfig, AXPDynamicDialogResult, AXPDynamicFormDefinition, AXPDynamicFormDesignerField, AXPDynamicFormDesignerGroup, AXPDynamicFormDesignerState, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLook, AXPDynamicFormMode, AXPDynamicFormStepperDefinition, AXPDynamicFormStepperStepDefinition, AXPExtraPropertyItem, AXPExtraPropertySchemaItem, AXPExtraPropertyType, AXPFormElementWidget, AXPImageEditorOpenOptions, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyTab, AXPWidgetPropertyViewerConfig, AXPWidgetPropertyViewerResult, ColorBoxOptions, DateTimeBoxOptions, DialogBuilderState, FieldBuilderState, FormBuilderState, GroupBuilderState, IActionBuilder, IDialogBuilder, IFieldBuilder, IFieldOptions, IFormBuilder, IGroupBuilder, IStepBuilder, LargeTextBoxOptions, LookupBoxOptions, NumberBoxOptions, PasswordBoxOptions, RichTextOptions, SelectBoxOptions, SelectionListOptions, StateMode, StepBuilderState, TextBoxOptions, ToggleSwitchOptions };
|