@acorex/platform 20.3.0-next.7 → 20.3.0-next.9

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 (62) hide show
  1. package/common/index.d.ts +0 -2
  2. package/core/index.d.ts +386 -47
  3. package/fesm2022/acorex-platform-common.mjs +5 -10
  4. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-core.mjs +427 -125
  6. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-builder.mjs +422 -26
  8. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-components.mjs +1843 -111
  10. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-designer.mjs +19 -12
  12. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-entity.mjs +463 -510
  14. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-views.mjs +23 -15
  16. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  17. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-BXbkGGei.mjs → acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs} +3 -3
  18. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Ct-ri59W.mjs.map +1 -0
  19. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-gQIK6PIx.mjs → acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs} +9 -9
  20. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-7BB4LdjK.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs +101 -0
  22. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BDJR088o.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-themes-default.mjs +8 -8
  24. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-KpZWpnOJ.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs} +21 -11
  26. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BgEh06Tn.mjs.map +1 -0
  27. package/fesm2022/{acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs → acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs} +2 -2
  28. package/fesm2022/acorex-platform-themes-shared-settings.provider-CLUKU4y0.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-column.component-BvOiVCgt.mjs → acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs} +20 -5
  30. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-AeOQxjbS.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-BW0rfkjk.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs} +20 -5
  32. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DEVzRd6-.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-themes-shared.mjs +205 -38
  34. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  35. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-C-4bWr9G.mjs → acorex-platform-widgets-checkbox-widget-view.component-KYCQ2qTJ.mjs} +51 -35
  36. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-KYCQ2qTJ.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-rW2RD35f.mjs → acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs} +3 -3
  38. package/fesm2022/acorex-platform-widgets-file-list-popup.component-Cmtq2bBV.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-DNvnQ4Mc.mjs → acorex-platform-widgets-page-widget-designer.component-D8ivmxzT.mjs} +2 -2
  40. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-D8ivmxzT.mjs.map +1 -0
  41. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-CPVRbE8B.mjs → acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs} +8 -8
  42. package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CMqq_iOj.mjs.map +1 -0
  43. package/fesm2022/acorex-platform-widgets.mjs +4590 -5073
  44. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  45. package/layout/builder/index.d.ts +62 -8
  46. package/layout/components/index.d.ts +780 -54
  47. package/layout/designer/index.d.ts +4 -2
  48. package/layout/entity/index.d.ts +53 -10
  49. package/package.json +9 -9
  50. package/widgets/index.d.ts +1441 -433
  51. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-BXbkGGei.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-gQIK6PIx.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Bp1JLsj1.mjs +0 -101
  54. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Bp1JLsj1.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-KpZWpnOJ.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-BvOiVCgt.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BW0rfkjk.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-C-4bWr9G.mjs.map +0 -1
  60. package/fesm2022/acorex-platform-widgets-file-list-popup.component-rW2RD35f.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-widgets-page-widget-designer.component-DNvnQ4Mc.mjs.map +0 -1
  62. package/fesm2022/acorex-platform-widgets-tabular-data-edit-popup.component-CPVRbE8B.mjs.map +0 -1
@@ -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, AXPActionMenuItem, AXPExecuteCommand, AXPValidationRules, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
5
5
  import { AXPMenuItem } from '@acorex/platform/common';
6
- import { AXValueChangedEvent, AXHtmlEvent, AXEvent } from '@acorex/cdk/common';
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
11
  import { AXPWidgetNode, AXPLayoutContextChangeEvent, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/builder';
9
12
  import * as _ngrx_signals from '@ngrx/signals';
10
- import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
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 { AXTranslationService } from '@acorex/core/translation';
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,6 +440,105 @@ 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
+ categoryFilter?: {
461
+ enabled: boolean;
462
+ title: string;
463
+ dataSource: AXPCategoryTreeDataSource;
464
+ filterField: string;
465
+ filterOperator?: 'equal' | 'contains' | 'in';
466
+ width?: string;
467
+ };
468
+ }
469
+ declare class AXPDataSelectorComponent extends AXBasePageComponent {
470
+ protected config: _angular_core.WritableSignal<AXPDataSelectorConfig>;
471
+ protected searchTerm: string;
472
+ protected filter: AXDataSourceFilterOption;
473
+ protected grid: _angular_core.Signal<AXDataTableComponent | undefined>;
474
+ protected initialSelectedItems: any[];
475
+ protected selectedItems: _angular_core.WritableSignal<any[]>;
476
+ protected activeCategoryFilter: _angular_core.WritableSignal<{
477
+ node: AXPCategoryEntity;
478
+ filterValue: any;
479
+ } | null>;
480
+ protected allowSelect: _angular_core.Signal<boolean>;
481
+ protected hasSearch: _angular_core.Signal<boolean | undefined>;
482
+ protected searchPlaceholder: _angular_core.Signal<string>;
483
+ protected categoryTreeConfig: _angular_core.Signal<{
484
+ textField: string;
485
+ valueField: string;
486
+ showCheckbox: boolean;
487
+ searchable: boolean;
488
+ searchPlaceholder: string;
489
+ emptyStateTitle: string;
490
+ emptyStateDescription: string;
491
+ emptyStateIcon: string;
492
+ }>;
493
+ protected categoryTreeActions: _angular_core.Signal<{
494
+ canCreate: boolean;
495
+ canUpdate: boolean;
496
+ canDelete: boolean;
497
+ canCreateChild: boolean;
498
+ }>;
499
+ protected ngOnInit(): void;
500
+ protected ngAfterViewInit(): void;
501
+ protected handleRowDbClick(e: AXDataTableRowDbClick): void;
502
+ protected handleRowClick(e: AXDataTableRowClick): void;
503
+ protected handleSelectedRowsChange(rows: unknown[]): Promise<void>;
504
+ protected handleChangeSearchValue(e: AXValueChangedEvent): void;
505
+ protected handleCreateNewClick(): Promise<void>;
506
+ protected handleCloseClick(): void;
507
+ protected handleSelectClick(): void;
508
+ protected handleExpandRow(row: any): Promise<void>;
509
+ protected handleCategoryFilterClick(node: AXPCategoryEntity): void;
510
+ protected clearCategoryFilter(): void;
511
+ private applySearchFilter;
512
+ private applyFilterAndSort;
513
+ private applyCategoryFilter;
514
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorComponent, never>;
515
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDataSelectorComponent, "axp-data-selector", never, {}, {}, never, never, true, never>;
516
+ }
517
+
518
+ declare class AXPDataSelectorService {
519
+ private readonly popupService;
520
+ /**
521
+ * Open data selector popup
522
+ */
523
+ open(config: AXPDataSelectorConfig): Promise<{
524
+ items: any[];
525
+ } | null>;
526
+ /**
527
+ * Open data selector with category filter
528
+ */
529
+ openWithCategoryFilter(config: Omit<AXPDataSelectorConfig, 'categoryFilter'>, categoryFilterConfig: {
530
+ title: string;
531
+ dataSource: AXPCategoryTreeDataSource;
532
+ filterField: string;
533
+ filterOperator?: 'equal' | 'contains' | 'in';
534
+ width?: string;
535
+ }): Promise<{
536
+ items: any[];
537
+ } | null>;
538
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDataSelectorService, never>;
539
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDataSelectorService>;
540
+ }
541
+
360
542
  /**
361
543
  * Form appearance and density styling
362
544
  */
@@ -370,6 +552,18 @@ interface AXPDynamicFormFieldDefinition {
370
552
  title?: string;
371
553
  description?: string;
372
554
  widget: AXPWidgetNode;
555
+ /**
556
+ * Optional per-parameter layout override. Takes precedence over form layoutConfig.
557
+ * - number: colSpan for all breakpoints
558
+ * - object: colSpan per breakpoint
559
+ */
560
+ layout?: number | {
561
+ default?: number;
562
+ md?: number;
563
+ lg?: number;
564
+ xl?: number;
565
+ xxl?: number;
566
+ };
373
567
  }
374
568
  interface AXPDynamicFormGroupDefinition {
375
569
  name: string;
@@ -400,13 +594,219 @@ interface AXPDynamicFormLayoutConfig {
400
594
  };
401
595
  }
402
596
 
597
+ /**
598
+ * Describes a single step of the dynamic form stepper.
599
+ * Each step contains one or more groups rendered by AXPDynamicFormComponent.
600
+ */
601
+ interface AXPDynamicFormStepperStepDefinition {
602
+ /** Unique identifier for the step */
603
+ id: string;
604
+ /** Display title for the step */
605
+ title?: string;
606
+ /** Optional descriptive text for the step */
607
+ description?: string;
608
+ /** Optional icon name for the step header */
609
+ icon?: string;
610
+ /** Field groups to render in this step */
611
+ groups: AXPDynamicFormGroupDefinition[];
612
+ /** Optional layout direction override for this step's form */
613
+ formDirection?: AXPDynamicFormDirection;
614
+ /** Whether the user may skip this step (defaults to false) */
615
+ canSkip?: boolean;
616
+ /** Whether the user may navigate back from this step (defaults to true) */
617
+ canGoBack?: boolean;
618
+ /** Optional data path inside the shared context for this step's data */
619
+ dataPath?: string;
620
+ }
621
+ /**
622
+ * Root definition for the dynamic form stepper.
623
+ */
624
+ interface AXPDynamicFormStepperDefinition {
625
+ /** Ordered collection of steps */
626
+ steps: AXPDynamicFormStepperStepDefinition[];
627
+ /** Enforce sequential navigation (no jumping to future steps) */
628
+ linear?: boolean;
629
+ /** Show progress indicator above the content */
630
+ showProgress?: boolean;
631
+ /** Show step numbers in the header */
632
+ showStepNumbers?: boolean;
633
+ }
634
+
635
+ declare class AXPDynamicFormStepperComponent {
636
+ #private;
637
+ /**
638
+ * Stepper definition providing steps metadata and behavior configuration
639
+ */
640
+ definition: _angular_core.InputSignal<AXPDynamicFormStepperDefinition>;
641
+ /**
642
+ * Shared root context for all steps
643
+ */
644
+ context: _angular_core.InputSignal<any>;
645
+ /**
646
+ * Optional pass-through layout props for inner forms
647
+ */
648
+ layoutLook: _angular_core.InputSignal<AXPDynamicFormLook>;
649
+ stepperDirection: _angular_core.InputSignal<AXOrientation>;
650
+ layoutConfig: _angular_core.InputSignal<AXPDynamicFormLayoutConfig | undefined>;
651
+ /**
652
+ * Optional guard that controls advancing to the next step (async only)
653
+ */
654
+ guardNext: _angular_core.InputSignal<((e: {
655
+ index: number;
656
+ id: string;
657
+ fullContext: any;
658
+ }) => Promise<boolean>) | undefined>;
659
+ /**
660
+ * Emits when the shared root context changes
661
+ */
662
+ contextChange: _angular_core.OutputEmitterRef<any>;
663
+ /**
664
+ * Emits when the active step changes
665
+ */
666
+ stepChange: _angular_core.OutputEmitterRef<{
667
+ index: number;
668
+ id: string;
669
+ }>;
670
+ /**
671
+ * Emits after successful finish
672
+ */
673
+ finished: _angular_core.OutputEmitterRef<any>;
674
+ /**
675
+ * Emits when cancelled by API
676
+ */
677
+ cancel: _angular_core.OutputEmitterRef<void>;
678
+ /**
679
+ * Emits when navigation is blocked by validation or policy
680
+ */
681
+ navigationBlocked: _angular_core.OutputEmitterRef<{
682
+ reason: "invalid" | "linear" | "cannot-skip" | "cannot-go-back";
683
+ stepId: string;
684
+ targetIndex?: number;
685
+ }>;
686
+ /**
687
+ * Internal reactive copy of the shared context
688
+ */
689
+ private internalContext;
690
+ /**
691
+ * Active step index
692
+ */
693
+ protected currentStepIndex: _angular_core.WritableSignal<number>;
694
+ /**
695
+ * Navigation lock while async guards are pending
696
+ */
697
+ private navigationLocked;
698
+ /**
699
+ * Reference to underlying step wizard to sync visual navigation
700
+ */
701
+ private readonly wizard;
702
+ /**
703
+ * References to rendered dynamic forms (usually one active)
704
+ */
705
+ private readonly forms;
706
+ protected steps: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormStepperStepDefinition[]>;
707
+ protected stepCount: _angular_core.Signal<number>;
708
+ protected currentStep: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormStepperStepDefinition>;
709
+ protected isFirstComputed: _angular_core.Signal<boolean>;
710
+ protected isLastComputed: _angular_core.Signal<boolean>;
711
+ /**
712
+ * Non-undefined layout config for inner dynamic forms
713
+ */
714
+ protected effectiveLayoutConfig: _angular_core.Signal<AXPDynamicFormLayoutConfig>;
715
+ /**
716
+ * Returns the current step pointer
717
+ */
718
+ getCurrentStep(): {
719
+ index: number;
720
+ id: string;
721
+ };
722
+ /**
723
+ * Public helpers for templates/consumers
724
+ */
725
+ isFirst(): boolean;
726
+ isLast(): boolean;
727
+ /**
728
+ * Returns the root context
729
+ */
730
+ getContext(): any;
731
+ /**
732
+ * Replaces the root context programmatically
733
+ */
734
+ setContext(ctx: any): void;
735
+ /**
736
+ * Validates the current step.
737
+ */
738
+ validateCurrentStep(): Promise<boolean>;
739
+ /**
740
+ * Attempts to advance to the next step applying validation and guard
741
+ */
742
+ next(): Promise<void>;
743
+ /**
744
+ * Goes back to the previous step if possible
745
+ */
746
+ previous(): Promise<void>;
747
+ /**
748
+ * Navigates to a specific step by id or index
749
+ */
750
+ goTo(stepIdOrIndex: string | number): Promise<void>;
751
+ /**
752
+ * Validates all steps and emits finished when successful
753
+ */
754
+ finish(): Promise<void>;
755
+ /**
756
+ * Emits cancel event without state changes
757
+ */
758
+ cancelFlow(): void;
759
+ /**
760
+ * Handle per-step context changes and keep internal root context in sync.
761
+ */
762
+ protected onStepContextChange(stepId: string, stepContext: any): void;
763
+ /**
764
+ * Exposes reading a step slice to the template
765
+ */
766
+ readStepSlice(path?: string): {
767
+ slice: any;
768
+ exists: boolean;
769
+ };
770
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormStepperComponent, never>;
771
+ 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>;
772
+ }
773
+
403
774
  interface AXPDynamicDialogConfig {
404
775
  title: string;
405
776
  message?: string;
406
- formDefinition: AXPDynamicFormDefinition;
777
+ /**
778
+ * Legacy: If provided, dialog renders only dynamic-form.
779
+ */
780
+ formDefinition?: AXPDynamicFormDefinition;
781
+ /**
782
+ * Preferred definition: dynamic form (no steps or single step) or a multi-step stepper definition.
783
+ */
784
+ definition?: AXPDynamicFormDefinition | AXPDynamicFormStepperDefinition;
785
+ /**
786
+ * Shared context passed to the rendered control
787
+ */
407
788
  context: any;
789
+ /**
790
+ * Shared layout options applied to form/stepper unless overridden
791
+ */
408
792
  layoutConfig?: AXPDynamicFormLayoutConfig;
793
+ layoutLook?: AXPDynamicFormLook;
409
794
  size?: AXPopupSizeType;
795
+ closeButton?: boolean;
796
+ /**
797
+ * Optional stepper-only options. Ignored when rendering dynamic-form.
798
+ */
799
+ stepper?: {
800
+ guardNext?: (e: {
801
+ index: number;
802
+ id: string;
803
+ fullContext: unknown;
804
+ }) => Promise<boolean>;
805
+ stepperDirection?: AXOrientation;
806
+ };
807
+ /**
808
+ * Footer actions. In stepper mode, footer is replaced by Prev/Next/Confirm.
809
+ */
410
810
  actions?: {
411
811
  footer?: {
412
812
  prefix?: AXPActionMenuItem[];
@@ -418,17 +818,44 @@ interface AXPDynamicDialogResult {
418
818
  context: any;
419
819
  action?: string;
420
820
  }
821
+ interface AXPDialogRef {
822
+ /**
823
+ * Manually close the dialog (optional - dialog closes automatically after user interaction)
824
+ */
825
+ close(): void;
826
+ /**
827
+ * Get the form data from the dialog
828
+ */
829
+ context(): any;
830
+ /**
831
+ * Get the action that was clicked by the user
832
+ */
833
+ action(): string | undefined;
834
+ /**
835
+ * Set the loading state of the dialog
836
+ */
837
+ setLoading(loading: boolean): void;
838
+ }
421
839
 
422
840
  declare class AXPDynamicDialogComponent extends AXBasePageComponent {
423
841
  config: AXPDynamicDialogConfig;
424
842
  private readonly dynamicForm;
843
+ protected readonly stepper: _angular_core.Signal<AXPDynamicFormStepperComponent | undefined>;
425
844
  isSubmitting: _angular_core.WritableSignal<boolean>;
426
845
  private previousContext;
427
846
  private formData;
847
+ dialogResult: AXPDynamicDialogResult | null;
848
+ isSubmittingFromDialog: boolean;
849
+ data: any;
850
+ callBack: (dialogRef: AXPDialogRef) => void;
428
851
  /**
429
852
  * Form context for widget container
430
853
  */
431
854
  protected formContext: _angular_core.Signal<Record<string, any>>;
855
+ /**
856
+ * Combined loading state from both signal and dialog
857
+ */
858
+ protected isFormLoading: _angular_core.Signal<boolean>;
432
859
  protected defaultLayout: () => {
433
860
  positions: {
434
861
  default: {
@@ -448,14 +875,42 @@ declare class AXPDynamicDialogComponent extends AXBasePageComponent {
448
875
  };
449
876
  };
450
877
  };
878
+ /**
879
+ * Determine rendering mode and effective definitions
880
+ */
881
+ protected readonly hasLegacyForm: _angular_core.Signal<boolean>;
882
+ protected readonly providedDefinition: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormDefinition | _acorex_platform_layout_components.AXPDynamicFormStepperDefinition | undefined>;
883
+ protected readonly isStepperDefinition: _angular_core.Signal<boolean>;
884
+ protected readonly shouldRenderForm: _angular_core.Signal<boolean>;
885
+ protected readonly effectiveFormDefinition: _angular_core.Signal<any>;
886
+ protected readonly resolvedFormDefinition: _angular_core.Signal<any>;
887
+ protected readonly effectiveLayoutLook: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormLook>;
888
+ protected readonly effectiveLayoutConfig: _angular_core.Signal<_acorex_platform_layout_components.AXPDynamicFormLayoutConfig>;
889
+ protected readonly stepperGuardNext: _angular_core.Signal<((e: {
890
+ index: number;
891
+ id: string;
892
+ fullContext: unknown;
893
+ }) => Promise<boolean>) | undefined>;
894
+ protected readonly stepperDirection: _angular_core.Signal<_acorex_cdk_common.AXOrientation>;
895
+ protected readonly stepperDefinition: _angular_core.Signal<any>;
896
+ stepperIsFirst: _angular_core.Signal<boolean>;
897
+ stepperIsLast: _angular_core.Signal<boolean>;
898
+ /**
899
+ * Effective form direction when rendering dynamic-form (single-step or legacy form).
900
+ * If a single-step definition is provided and that step specifies formDirection, use it.
901
+ */
902
+ protected readonly effectiveFormDirection: _angular_core.Signal<AXPDynamicFormDirection>;
451
903
  /**
452
904
  * Footer actions for dynamic button system
453
905
  */
454
906
  protected footerPrefixActions: _angular_core.Signal<AXPActionMenuItem[]>;
455
907
  protected footerSuffixActions: _angular_core.Signal<AXPActionMenuItem[]>;
908
+ protected visibleFooterPrefixActions: _angular_core.Signal<AXPActionMenuItem[]>;
909
+ protected visibleFooterSuffixActions: _angular_core.Signal<AXPActionMenuItem[]>;
456
910
  protected hasFooterActions: _angular_core.Signal<boolean>;
457
- protected hasVisibleFooterPrefixActions: _angular_core.Signal<boolean>;
458
- protected hasVisibleFooterSuffixActions: _angular_core.Signal<boolean>;
911
+ /** Stepper footer: choose a single confirm action from provided suffix actions (first visible). */
912
+ protected confirmAction: _angular_core.Signal<AXPActionMenuItem | undefined>;
913
+ protected confirmActionTitle: _angular_core.Signal<string>;
459
914
  ngOnInit(): void;
460
915
  protected handleContextInitiated(context: any): void;
461
916
  protected handleContextChanged(context: any): void;
@@ -471,6 +926,9 @@ declare class AXPDynamicDialogComponent extends AXBasePageComponent {
471
926
  * Check if form is valid
472
927
  */
473
928
  protected isFormValid(): Promise<boolean>;
929
+ /** Stepper navigation handlers */
930
+ protected goPrev(): void;
931
+ protected goNext(): void;
474
932
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicDialogComponent, never>;
475
933
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicDialogComponent, "axp-dynamic-dialog", never, { "config": { "alias": "config"; "required": true; }; }, {}, never, never, true, never>;
476
934
  }
@@ -480,15 +938,24 @@ declare class AXPDynamicDialogService {
480
938
  /**
481
939
  * Show a dynamic dialog with the given configuration
482
940
  * @param config Dialog configuration including fields, validation, and UI options
483
- * @returns Promise resolving to dialog result with form values and cancellation status
941
+ * @returns Promise resolving to dialog reference for controlling the dialog
484
942
  */
485
- showDialog(config: AXPDynamicDialogConfig): Promise<AXPDynamicDialogResult>;
943
+ showDialog(config: AXPDynamicDialogConfig): Promise<AXPDialogRef>;
486
944
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicDialogService, never>;
487
945
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDynamicDialogService>;
488
946
  }
489
947
 
490
948
  declare class AXPDynamicFormComponent implements OnInit {
491
949
  #private;
950
+ private evaluatorService;
951
+ /**
952
+ * Tracks the latest scheduled evaluation to ensure last-write-wins for async evaluate
953
+ */
954
+ private evaluationRunId;
955
+ /**
956
+ * Memoization cache for resolveParamLayout to keep stable object identities
957
+ */
958
+ private layoutCache;
492
959
  /**
493
960
  * Form definition containing groups and fields
494
961
  */
@@ -509,6 +976,12 @@ declare class AXPDynamicFormComponent implements OnInit {
509
976
  * Custom layout configuration for form fields
510
977
  */
511
978
  layoutConfig: _angular_core.InputSignal<AXPDynamicFormLayoutConfig>;
979
+ protected expressionEvaluator(expression: any, context: any): Promise<any>;
980
+ protected evaluatedFormDefinition: _angular_core.WritableSignal<any>;
981
+ /**
982
+ * Evaluate definition when inputs change with last-write-wins and deep-equality guard
983
+ */
984
+ eff: _angular_core.EffectRef;
512
985
  /**
513
986
  * Emitted when form context changes
514
987
  */
@@ -531,6 +1004,10 @@ declare class AXPDynamicFormComponent implements OnInit {
531
1004
  * Computed layout configuration
532
1005
  */
533
1006
  protected computedLayout: _angular_core.Signal<AXPDynamicFormLayoutConfig>;
1007
+ /**
1008
+ * Resolve effective grid layout for a specific parameter, merging per-parameter override with form layout.
1009
+ */
1010
+ protected resolveParamLayout(param: AXPDynamicFormFieldDefinition): AXPDynamicFormLayoutConfig;
534
1011
  /**
535
1012
  * Host classes based on layout look and direction
536
1013
  */
@@ -561,6 +1038,255 @@ declare class AXPDynamicFormComponent implements OnInit {
561
1038
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormComponent, "axp-dynamic-form", never, { "formDefinition": { "alias": "formDefinition"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": true; "isSignal": true; }; "layoutLook": { "alias": "layoutLook"; "required": false; "isSignal": true; }; "layoutDirection": { "alias": "layoutDirection"; "required": false; "isSignal": true; }; "layoutConfig": { "alias": "layoutConfig"; "required": false; "isSignal": true; }; }, { "contextChange": "contextChange"; "contextInitiated": "contextInitiated"; "validityChange": "validityChange"; }, never, never, true, never>;
562
1039
  }
563
1040
 
1041
+ interface TextBoxOptions {
1042
+ placeholder?: string;
1043
+ maxLength?: number;
1044
+ minLength?: number;
1045
+ mask?: string;
1046
+ disabled?: boolean;
1047
+ readonly?: boolean;
1048
+ validations?: AXPValidationRules;
1049
+ }
1050
+ interface LargeTextBoxOptions {
1051
+ placeholder?: string;
1052
+ maxLength?: number;
1053
+ minLength?: number;
1054
+ rows?: number;
1055
+ disabled?: boolean;
1056
+ readonly?: boolean;
1057
+ validations?: AXPValidationRules;
1058
+ }
1059
+ interface RichTextOptions {
1060
+ placeholder?: string;
1061
+ toolbar?: string[];
1062
+ height?: number;
1063
+ disabled?: boolean;
1064
+ readonly?: boolean;
1065
+ validations?: AXPValidationRules;
1066
+ }
1067
+ interface SelectBoxOptions<TItem extends Record<string, unknown> = Record<string, unknown>> {
1068
+ valueField: keyof TItem & string;
1069
+ textField: keyof TItem & string;
1070
+ dataSource: TItem[];
1071
+ multiple?: boolean;
1072
+ placeholder?: string;
1073
+ disabled?: boolean;
1074
+ readonly?: boolean;
1075
+ allowSearch?: boolean;
1076
+ validations?: AXPValidationRules;
1077
+ }
1078
+ interface LookupBoxOptions {
1079
+ entity: string;
1080
+ multiple?: boolean;
1081
+ expose?: Array<{
1082
+ source: string;
1083
+ target: string;
1084
+ }>;
1085
+ placeholder?: string;
1086
+ textField?: string;
1087
+ valueField?: string;
1088
+ look?: string;
1089
+ columns?: string[];
1090
+ allowClear?: boolean;
1091
+ disabled?: boolean;
1092
+ readonly?: boolean;
1093
+ validations?: AXPValidationRules;
1094
+ }
1095
+ interface NumberBoxOptions {
1096
+ minValue?: number;
1097
+ maxValue?: number;
1098
+ step?: number;
1099
+ format?: string;
1100
+ placeholder?: string;
1101
+ disabled?: boolean;
1102
+ readonly?: boolean;
1103
+ validations?: AXPValidationRules;
1104
+ }
1105
+ interface DateTimeBoxOptions {
1106
+ format?: string;
1107
+ min?: Date;
1108
+ max?: Date;
1109
+ showTime?: boolean;
1110
+ placeholder?: string;
1111
+ disabled?: boolean;
1112
+ readonly?: boolean;
1113
+ validations?: AXPValidationRules;
1114
+ }
1115
+ interface ToggleSwitchOptions {
1116
+ onText?: string;
1117
+ offText?: string;
1118
+ validations?: AXPValidationRules;
1119
+ }
1120
+ interface PasswordBoxOptions {
1121
+ placeholder?: string;
1122
+ maxLength?: number;
1123
+ minLength?: number;
1124
+ showToggle?: boolean;
1125
+ validations?: AXPValidationRules;
1126
+ }
1127
+ interface SelectionListOptions<TItem extends Record<string, unknown> = Record<string, unknown>> {
1128
+ valueField: keyof TItem & string;
1129
+ textField: keyof TItem & string;
1130
+ dataSource: TItem[];
1131
+ multiple?: boolean;
1132
+ placeholder?: string;
1133
+ disabled?: boolean;
1134
+ readonly?: boolean;
1135
+ validations?: AXPValidationRules;
1136
+ }
1137
+ interface ColorBoxOptions {
1138
+ defaultColor?: string;
1139
+ showAlpha?: boolean;
1140
+ disabled?: boolean;
1141
+ readonly?: boolean;
1142
+ validations?: AXPValidationRules;
1143
+ }
1144
+ interface IFieldOptions {
1145
+ hidden?: string | boolean;
1146
+ readonly?: string | boolean;
1147
+ disabled?: string | boolean;
1148
+ defaultValue?: any;
1149
+ }
1150
+ interface IFieldBuilder {
1151
+ title(title: string): IFieldBuilder;
1152
+ description(description: string): IFieldBuilder;
1153
+ options(values: IFieldOptions): IFieldBuilder;
1154
+ layout(layout: AXPDynamicFormFieldDefinition['layout']): IFieldBuilder;
1155
+ textBox(options?: TextBoxOptions): IFieldBuilder;
1156
+ largeTextBox(options?: LargeTextBoxOptions): IFieldBuilder;
1157
+ richText(options?: RichTextOptions): IFieldBuilder;
1158
+ passwordBox(options?: PasswordBoxOptions): IFieldBuilder;
1159
+ selectBox(options: SelectBoxOptions): IFieldBuilder;
1160
+ lookupBox(options: LookupBoxOptions): IFieldBuilder;
1161
+ selectionList(options: SelectionListOptions): IFieldBuilder;
1162
+ numberBox(options?: NumberBoxOptions): IFieldBuilder;
1163
+ dateTimeBox(options?: DateTimeBoxOptions): IFieldBuilder;
1164
+ toggleSwitch(options?: ToggleSwitchOptions): IFieldBuilder;
1165
+ colorBox(options?: ColorBoxOptions): IFieldBuilder;
1166
+ widget(type: string, options?: unknown): IFieldBuilder;
1167
+ }
1168
+ interface IGroupBuilder {
1169
+ title(title: string): IGroupBuilder;
1170
+ description(description: string): IGroupBuilder;
1171
+ field(path: string, delegate?: (field: IFieldBuilder) => void): IGroupBuilder;
1172
+ group(name: string, delegate?: (group: IGroupBuilder) => void): IGroupBuilder;
1173
+ }
1174
+ interface IStepBuilder {
1175
+ title(title: string): IStepBuilder;
1176
+ description(description: string): IStepBuilder;
1177
+ icon(icon: string): IStepBuilder;
1178
+ direction(direction: AXPDynamicFormDirection): IStepBuilder;
1179
+ group(name: string, delegate?: (group: IGroupBuilder) => void): IStepBuilder;
1180
+ }
1181
+ interface IFormBuilder {
1182
+ group(name: string, delegate?: (group: IGroupBuilder) => void): IFormBuilder;
1183
+ layout(config: Partial<AXPDynamicFormLayoutConfig>): IFormBuilder;
1184
+ look(look: AXPDynamicFormLook): IFormBuilder;
1185
+ direction(direction: AXPDynamicFormDirection): IFormBuilder;
1186
+ build(): AXPDynamicFormDefinition;
1187
+ }
1188
+ interface IActionBuilder {
1189
+ cancel(text?: string): IActionBuilder;
1190
+ submit(text?: string): IActionBuilder;
1191
+ custom(action: AXPActionMenuItem): IActionBuilder;
1192
+ }
1193
+ interface IDialogBuilder extends IFormBuilder {
1194
+ group(name: string, delegate?: (group: IGroupBuilder) => void): IDialogBuilder;
1195
+ layout(config: Partial<AXPDynamicFormLayoutConfig>): IDialogBuilder;
1196
+ look(look: AXPDynamicFormLook): IDialogBuilder;
1197
+ direction(direction: AXPDynamicFormDirection): IDialogBuilder;
1198
+ closeButton(closeButton: boolean): IDialogBuilder;
1199
+ step(id: string, delegate?: (step: IStepBuilder) => void): IDialogBuilder;
1200
+ stepperDirection(direction: AXOrientation): IDialogBuilder;
1201
+ guardNext(guard: (e: {
1202
+ index: number;
1203
+ id: string;
1204
+ fullContext: unknown;
1205
+ }) => Promise<boolean>): IDialogBuilder;
1206
+ title(title: string): IDialogBuilder;
1207
+ message(message?: string): IDialogBuilder;
1208
+ size(size: AXPopupSizeType): IDialogBuilder;
1209
+ context(context: AXPContextData): IDialogBuilder;
1210
+ actions(delegate?: (actions: IActionBuilder) => void): IDialogBuilder;
1211
+ show(): Promise<AXPDialogRef>;
1212
+ }
1213
+ interface FormBuilderState {
1214
+ groups: AXPDynamicFormGroupDefinition[];
1215
+ layoutConfig: AXPDynamicFormLayoutConfig;
1216
+ look: AXPDynamicFormLook;
1217
+ direction: AXPDynamicFormDirection;
1218
+ }
1219
+ interface DialogBuilderState extends FormBuilderState {
1220
+ title?: string;
1221
+ message?: string;
1222
+ size?: AXPopupSizeType;
1223
+ context?: AXPContextData;
1224
+ steps: StepBuilderState[];
1225
+ stepperDirection?: AXOrientation;
1226
+ closeButton?: boolean;
1227
+ guardNext?: (e: {
1228
+ index: number;
1229
+ id: string;
1230
+ fullContext: unknown;
1231
+ }) => Promise<boolean>;
1232
+ actions?: {
1233
+ footer?: {
1234
+ prefix?: AXPActionMenuItem[];
1235
+ suffix?: AXPActionMenuItem[];
1236
+ };
1237
+ };
1238
+ }
1239
+ interface FieldBuilderState {
1240
+ path: string;
1241
+ title?: string;
1242
+ description?: string;
1243
+ defaultValue?: any;
1244
+ hidden?: string | boolean;
1245
+ readonly?: string | boolean;
1246
+ disabled?: string | boolean;
1247
+ widget?: AXPWidgetNode;
1248
+ layout?: AXPDynamicFormFieldDefinition['layout'];
1249
+ }
1250
+ interface GroupBuilderState {
1251
+ name: string;
1252
+ title?: string;
1253
+ description?: string;
1254
+ parameters: AXPDynamicFormFieldDefinition[];
1255
+ }
1256
+ interface StepBuilderState {
1257
+ id: string;
1258
+ title?: string;
1259
+ description?: string;
1260
+ icon?: string;
1261
+ formDirection?: AXPDynamicFormDirection;
1262
+ groups: AXPDynamicFormGroupDefinition[];
1263
+ }
1264
+
1265
+ declare class AXPDynamicFormBuilderService {
1266
+ private readonly dialogService;
1267
+ /**
1268
+ * Create a new form builder
1269
+ */
1270
+ form(): IFormBuilder;
1271
+ /**
1272
+ * Create a new dialog builder
1273
+ */
1274
+ dialog(): IDialogBuilder;
1275
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormBuilderService, never>;
1276
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDynamicFormBuilderService>;
1277
+ }
1278
+
1279
+ type StateMode = 'empty' | 'error' | 'loading' | 'warning' | 'info' | 'success';
1280
+ declare class AXPStateMessageComponent {
1281
+ mode: _angular_core.InputSignal<StateMode>;
1282
+ icon: _angular_core.InputSignal<string>;
1283
+ title: _angular_core.InputSignal<string>;
1284
+ description: _angular_core.InputSignal<string>;
1285
+ variant: _angular_core.InputSignal<"default" | "compact" | "minimal">;
1286
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPStateMessageComponent, never>;
1287
+ 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>;
1288
+ }
1289
+
564
1290
  /**
565
1291
  * Describes a schema-only definition for an extra property (no value).
566
1292
  */
@@ -727,6 +1453,48 @@ declare class AXPQueryFiltersComponent {
727
1453
  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
1454
  }
729
1455
 
1456
+ interface AXPWidgetPropertyTab {
1457
+ name: string;
1458
+ title: string;
1459
+ groups: {
1460
+ name: string;
1461
+ title: string;
1462
+ isCollapsed: boolean;
1463
+ props: AXPWidgetProperty[];
1464
+ }[];
1465
+ }
1466
+ interface AXPWidgetPropertiesChangedEvent {
1467
+ values: any;
1468
+ mode: 'init' | 'update';
1469
+ }
1470
+ declare class AXPWidgetPropertyViewerComponent {
1471
+ widget: _angular_core.InputSignal<AXPWidgetNode>;
1472
+ mode: _angular_core.InputSignal<"simple" | "advanced">;
1473
+ private widgetRegistryService;
1474
+ protected currentTabIndex: WritableSignal<number>;
1475
+ protected config: WritableSignal<AXPWidgetConfig<any> | null>;
1476
+ protected allPoperties: AXPWidgetProperty[];
1477
+ protected tabs: WritableSignal<AXPWidgetPropertyTab[]>;
1478
+ protected groups: _angular_core.Signal<{
1479
+ name: string;
1480
+ title: string;
1481
+ isCollapsed: boolean;
1482
+ props: AXPWidgetProperty[];
1483
+ }[]>;
1484
+ protected groupCollapsedStates: Map<string, boolean>;
1485
+ onChanged: EventEmitter<AXPWidgetPropertiesChangedEvent>;
1486
+ protected context: WritableSignal<any>;
1487
+ protected initialContext: any;
1488
+ constructor();
1489
+ update(values: any): void;
1490
+ private fillTabs;
1491
+ protected handleContextChange(e: AXPLayoutContextChangeEvent): void;
1492
+ protected handleTabChange(event: AXTabStripChangedEvent): void;
1493
+ protected handleCollapsedChange(group: string, collapsed: boolean): void;
1494
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPWidgetPropertyViewerComponent, never>;
1495
+ 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>;
1496
+ }
1497
+
730
1498
  declare class AXPQuerySortsComponent {
731
1499
  sortDefinitions: _angular_core.ModelSignal<AXPSortDefinition[]>;
732
1500
  sortQueries: _angular_core.WritableSignal<AXPSortQuery[]>;
@@ -956,47 +1724,5 @@ declare class AXPWidgetItemComponent {
956
1724
  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
1725
  }
958
1726
 
959
- interface AXPWidgetPropertyTab {
960
- name: string;
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 };
1727
+ export { AXPActivityLogComponent, AXPCategoryTreeComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDataSelectorComponent, AXPDataSelectorService, AXPDynamicDialogComponent, AXPDynamicDialogService, AXPDynamicFormBuilderService, AXPDynamicFormComponent, AXPDynamicFormStepperComponent, AXPExtraPropertiesComponent, AXPExtraPropertiesSchemaComponent, AXPExtraPropertiesValuesComponent, 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, AXP_EXTRA_PROPERTY_TYPES, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER };
1728
+ export type { AXPCategoryTreeActions, AXPCategoryTreeConfig, AXPCategoryTreeDataSource, AXPCategoryTreeEvents, AXPCategoryTreeNode, AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDataSelectorColumn, AXPDataSelectorConfig, AXPDialogRef, AXPDynamicDialogConfig, AXPDynamicDialogResult, AXPDynamicFormDefinition, AXPDynamicFormDirection, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLayoutConfig, AXPDynamicFormLook, AXPDynamicFormStepperDefinition, AXPDynamicFormStepperStepDefinition, AXPExtraPropertyItem, AXPExtraPropertySchemaItem, AXPExtraPropertyType, AXPTemplateViewerConfig, AXPTemplateViewerResult, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyTab, ColorBoxOptions, DateTimeBoxOptions, DialogBuilderState, FieldBuilderState, FormBuilderState, GroupBuilderState, IActionBuilder, IDialogBuilder, IFieldBuilder, IFieldOptions, IFormBuilder, IGroupBuilder, IStepBuilder, LargeTextBoxOptions, LookupBoxOptions, NumberBoxOptions, PasswordBoxOptions, RichTextOptions, SelectBoxOptions, SelectionListOptions, StateMode, StepBuilderState, TextBoxOptions, ToggleSwitchOptions };