@acorex/platform 20.2.4-next.9 → 20.3.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,20 @@
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, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPViewQuery } from '@acorex/platform/core';
4
+ import { AXPActivityLog, AXPSystemActionType, AXPColumnQuery, AXPContextData, AXPOptionsData, AXPActionMenuItem, AXPExecuteCommand, AXPFilterDefinition, AXPFilterQuery, AXPSortDefinition, AXPSortQuery, AXPMetaData, AXPViewQuery } from '@acorex/platform/core';
5
5
  import { AXPMenuItem } from '@acorex/platform/common';
6
6
  import { AXValueChangedEvent, AXHtmlEvent, AXEvent } from '@acorex/cdk/common';
7
7
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
8
8
  import { AXPWidgetNode, AXPLayoutContextChangeEvent, AXPWidgetProperty, AXPWidgetConfig } from '@acorex/platform/layout/builder';
9
9
  import * as _ngrx_signals from '@ngrx/signals';
10
+ import { AXPopupSizeType, AXPopupService } from '@acorex/components/popup';
11
+ import { AXBasePageComponent } from '@acorex/components/page';
10
12
  import { AXFormComponent } from '@acorex/components/form';
11
13
  import { AXPopoverComponent } from '@acorex/components/popover';
12
14
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
13
15
  import { AXCalendarService } from '@acorex/core/date-time';
14
16
  import { AXTranslationService } from '@acorex/core/translation';
15
17
  import { Observable } from 'rxjs';
16
- import { AXPopupService } from '@acorex/components/popup';
17
18
  import { AXTabsComponent, AXTabStripChangedEvent } from '@acorex/components/tabs';
18
19
 
19
20
  declare class AXPActivityLogComponent {
@@ -356,7 +357,14 @@ declare class AXPComponentSlotModule {
356
357
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPComponentSlotModule>;
357
358
  }
358
359
 
359
- type AXPDynamicFormLayoutStyle = 'normal' | 'compact' | 'vertical' | 'horizontal';
360
+ /**
361
+ * Form appearance and density styling
362
+ */
363
+ type AXPDynamicFormLook = 'normal' | 'compact' | 'borderless';
364
+ /**
365
+ * Form layout direction and flow
366
+ */
367
+ type AXPDynamicFormDirection = 'vertical' | 'horizontal' | 'grid';
360
368
  interface AXPDynamicFormFieldDefinition {
361
369
  path: string;
362
370
  title?: string;
@@ -392,6 +400,93 @@ interface AXPDynamicFormLayoutConfig {
392
400
  };
393
401
  }
394
402
 
403
+ interface AXPDynamicDialogConfig {
404
+ title: string;
405
+ message?: string;
406
+ formDefinition: AXPDynamicFormDefinition;
407
+ context: any;
408
+ layoutConfig?: AXPDynamicFormLayoutConfig;
409
+ size?: AXPopupSizeType;
410
+ actions?: {
411
+ footer?: {
412
+ prefix?: AXPActionMenuItem[];
413
+ suffix?: AXPActionMenuItem[];
414
+ };
415
+ };
416
+ }
417
+ interface AXPDynamicDialogResult {
418
+ context: any;
419
+ action?: string;
420
+ }
421
+
422
+ declare class AXPDynamicDialogComponent extends AXBasePageComponent {
423
+ config: AXPDynamicDialogConfig;
424
+ private readonly dynamicForm;
425
+ isSubmitting: _angular_core.WritableSignal<boolean>;
426
+ private previousContext;
427
+ private formData;
428
+ /**
429
+ * Form context for widget container
430
+ */
431
+ protected formContext: _angular_core.Signal<Record<string, any>>;
432
+ protected defaultLayout: () => {
433
+ positions: {
434
+ default: {
435
+ colSpan: number;
436
+ };
437
+ md: {
438
+ colSpan: number;
439
+ };
440
+ lg: {
441
+ colSpan: number;
442
+ };
443
+ xl: {
444
+ colSpan: number;
445
+ };
446
+ xxl: {
447
+ colSpan: number;
448
+ };
449
+ };
450
+ };
451
+ /**
452
+ * Footer actions for dynamic button system
453
+ */
454
+ protected footerPrefixActions: _angular_core.Signal<AXPActionMenuItem[]>;
455
+ protected footerSuffixActions: _angular_core.Signal<AXPActionMenuItem[]>;
456
+ protected hasFooterActions: _angular_core.Signal<boolean>;
457
+ protected hasVisibleFooterPrefixActions: _angular_core.Signal<boolean>;
458
+ protected hasVisibleFooterSuffixActions: _angular_core.Signal<boolean>;
459
+ ngOnInit(): void;
460
+ protected handleContextInitiated(context: any): void;
461
+ protected handleContextChanged(context: any): void;
462
+ /**
463
+ * Execute a dynamic action
464
+ */
465
+ protected executeAction(action: AXPActionMenuItem): Promise<void>;
466
+ /**
467
+ * Execute a command
468
+ */
469
+ protected executeCommand(command: AXPExecuteCommand): Promise<void>;
470
+ /**
471
+ * Check if form is valid
472
+ */
473
+ protected isFormValid(): Promise<boolean>;
474
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicDialogComponent, never>;
475
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicDialogComponent, "axp-dynamic-dialog", never, { "config": { "alias": "config"; "required": true; }; }, {}, never, never, true, never>;
476
+ }
477
+
478
+ declare class AXPDynamicDialogService {
479
+ private readonly popupService;
480
+ /**
481
+ * Show a dynamic dialog with the given configuration
482
+ * @param config Dialog configuration including fields, validation, and UI options
483
+ * @returns Promise resolving to dialog result with form values and cancellation status
484
+ */
485
+ showDialog(config: AXPDynamicDialogConfig): Promise<AXPDynamicDialogResult>;
486
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicDialogService, never>;
487
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPDynamicDialogService>;
488
+ }
489
+
395
490
  declare class AXPDynamicFormComponent implements OnInit {
396
491
  #private;
397
492
  /**
@@ -403,9 +498,13 @@ declare class AXPDynamicFormComponent implements OnInit {
403
498
  */
404
499
  context: _angular_core.InputSignal<any>;
405
500
  /**
406
- * Layout style for the form (normal, compact, vertical, horizontal)
501
+ * Form appearance and density styling (normal, compact, spacious)
407
502
  */
408
- layoutStyle: _angular_core.InputSignal<AXPDynamicFormLayoutStyle>;
503
+ layoutLook: _angular_core.InputSignal<AXPDynamicFormLook>;
504
+ /**
505
+ * Form layout direction and flow (vertical, horizontal, grid)
506
+ */
507
+ layoutDirection: _angular_core.InputSignal<AXPDynamicFormDirection>;
409
508
  /**
410
509
  * Custom layout configuration for form fields
411
510
  */
@@ -433,7 +532,7 @@ declare class AXPDynamicFormComponent implements OnInit {
433
532
  */
434
533
  protected computedLayout: _angular_core.Signal<AXPDynamicFormLayoutConfig>;
435
534
  /**
436
- * Host classes based on layout style
535
+ * Host classes based on layout look and direction
437
536
  */
438
537
  protected hostClasses: _angular_core.Signal<string>;
439
538
  ngOnInit(): void;
@@ -441,6 +540,7 @@ declare class AXPDynamicFormComponent implements OnInit {
441
540
  * Handle context change events from widget container
442
541
  */
443
542
  protected handleContextChanged(event: AXPLayoutContextChangeEvent): void;
543
+ protected isRequired(param: AXPDynamicFormFieldDefinition): boolean;
444
544
  /**
445
545
  * Get the form component instance
446
546
  */
@@ -458,7 +558,7 @@ declare class AXPDynamicFormComponent implements OnInit {
458
558
  */
459
559
  validate(): Promise<boolean>;
460
560
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPDynamicFormComponent, never>;
461
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPDynamicFormComponent, "axp-dynamic-form", never, { "formDefinition": { "alias": "formDefinition"; "required": true; "isSignal": true; }; "context": { "alias": "context"; "required": true; "isSignal": true; }; "layoutStyle": { "alias": "layoutStyle"; "required": false; "isSignal": true; }; "layoutConfig": { "alias": "layoutConfig"; "required": false; "isSignal": true; }; }, { "contextChange": "contextChange"; "contextInitiated": "contextInitiated"; "validityChange": "validityChange"; }, never, never, true, never>;
561
+ 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>;
462
562
  }
463
563
 
464
564
  /**
@@ -640,6 +740,56 @@ declare class AXPQuerySortsComponent {
640
740
  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>;
641
741
  }
642
742
 
743
+ interface AXPTemplateViewerConfig {
744
+ template: AXPWidgetNode | string;
745
+ title?: string;
746
+ size?: AXPopupSizeType;
747
+ context?: any;
748
+ metadata?: AXPMetaData;
749
+ readOnly?: boolean;
750
+ showActions?: boolean;
751
+ }
752
+ interface AXPTemplateViewerResult {
753
+ context: any;
754
+ cancelled: boolean;
755
+ metadata?: AXPMetaData;
756
+ }
757
+
758
+ declare class AXPTemplateViewerComponent extends AXBasePageComponent {
759
+ set config(value: AXPTemplateViewerConfig | undefined);
760
+ get config(): AXPTemplateViewerConfig | undefined;
761
+ protected context: any;
762
+ protected readonly document: _angular_core.WritableSignal<AXPWidgetNode>;
763
+ protected readonly currentPageIndex: _angular_core.WritableSignal<number>;
764
+ protected readonly _config: _angular_core.WritableSignal<AXPTemplateViewerConfig | undefined>;
765
+ protected readonly currentPage: _angular_core.Signal<AXPWidgetNode>;
766
+ protected ngOnInit(): Promise<void>;
767
+ private loadTemplate;
768
+ protected handleContextChanged(e: AXPLayoutContextChangeEvent): void;
769
+ protected handleSubmit(form: AXFormComponent): Promise<void>;
770
+ protected handleCancel(): void;
771
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTemplateViewerComponent, never>;
772
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPTemplateViewerComponent, "axp-template-viewer", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
773
+ }
774
+
775
+ declare class AXPTemplateViewerService {
776
+ private readonly popupService;
777
+ /**
778
+ * Show a template viewer dialog with the given configuration
779
+ * @param config Template viewer configuration including template, title, and UI options
780
+ * @returns Promise resolving to viewer result with form values and cancellation status
781
+ */
782
+ showTemplate(config: AXPTemplateViewerConfig): Promise<AXPTemplateViewerResult>;
783
+ /**
784
+ * Show a template viewer in read-only mode
785
+ * @param config Template viewer configuration
786
+ * @returns Promise resolving to viewer result
787
+ */
788
+ showTemplateReadOnly(config: Omit<AXPTemplateViewerConfig, 'readOnly' | 'showActions'>): Promise<AXPTemplateViewerResult>;
789
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPTemplateViewerService, never>;
790
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPTemplateViewerService>;
791
+ }
792
+
643
793
  type AXPUserAvatarSize = 'small' | 'medium' | 'large';
644
794
  type AXPUserAvatarStatus = 'online' | 'offline';
645
795
  type AXPUserAvatarData = {
@@ -848,5 +998,5 @@ declare class AXPWidgetPropertyViewerComponent {
848
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>;
849
999
  }
850
1000
 
851
- export { AXPActivityLogComponent, AXPCompareViewComponent, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPDynamicFormComponent, AXPExtraPropertiesComponent, AXPExtraPropertiesSchemaComponent, AXPExtraPropertiesValuesComponent, AXPMenuBadgeHelper, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, 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 };
852
- export type { AXPCompareViewField, AXPCompareViewInputs, AXPCompareViewMode, AXPCompareViewObject, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPDynamicFormDefinition, AXPDynamicFormFieldDefinition, AXPDynamicFormGroupDefinition, AXPDynamicFormLayoutConfig, AXPDynamicFormLayoutStyle, AXPExtraPropertyItem, AXPExtraPropertySchemaItem, AXPExtraPropertyType, AXPUserAvatarData, AXPUserAvatarProvider, AXPUserAvatarSize, AXPUserAvatarStatus, AXPWidgetItemClickEvent, AXPWidgetItemData, AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyTab };
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 };
@@ -12,6 +12,7 @@ import * as rxjs from 'rxjs';
12
12
  import { Subject } from 'rxjs';
13
13
  import * as i2 from '@acorex/platform/workflow';
14
14
  import { AXPWorkflowAction, AXPWorkflowContext, AXPWorkflow } from '@acorex/platform/workflow';
15
+ import { AXPCommand } from '@acorex/platform/runtime';
15
16
 
16
17
  interface AXPDataSeeder {
17
18
  seed(): Promise<void>;
@@ -901,6 +902,31 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
901
902
  }
902
903
  declare const AXPShowListViewWorkflow: AXPWorkflow;
903
904
 
905
+ interface AXPOpenEntityDetailsCommandInput {
906
+ entity: string;
907
+ data: {
908
+ id: string;
909
+ };
910
+ }
911
+ interface AXPOpenEntityDetailsCommandResult {
912
+ success: boolean;
913
+ }
914
+ /**
915
+ * Generic command to open entity details view
916
+ * Can be used by any entity to navigate to its detail page
917
+ */
918
+ declare class AXPOpenEntityDetailsCommand implements AXPCommand<AXPOpenEntityDetailsCommandInput, AXPOpenEntityDetailsCommandResult> {
919
+ private readonly navigation;
920
+ private readonly sessionService;
921
+ /**
922
+ * Execute the command to navigate to entity details
923
+ * @param input - Command input containing entity and data information
924
+ */
925
+ execute(input: AXPOpenEntityDetailsCommandInput): Promise<AXPOpenEntityDetailsCommandResult>;
926
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPOpenEntityDetailsCommand, never>;
927
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPOpenEntityDetailsCommand>;
928
+ }
929
+
904
930
  declare function entityMasterCreateAction(): AXPEntityAction;
905
931
  declare function entityMasterBulkDeleteAction(): AXPEntityAction;
906
932
  declare function entityMasterViewAction(): AXPEntityAction;
@@ -956,5 +982,5 @@ declare const createColumnWidthMiddlewareProvider: (widths: ColumnWidthConfig, e
956
982
  */
957
983
  declare const columnWidthMiddlewareProvider: AXPEntityModifierProvider;
958
984
 
959
- export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, DEFAULT_COLUMN_WIDTHS, actionExists, columnWidthMiddlewareFactory, columnWidthMiddlewareProvider, createColumnWidthMiddlewareProvider, createModifierContext, detectEntityChanges, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware };
960
- export type { AXPAuditable, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOp, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, ColumnWidthConfig };
985
+ export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntityApplyUpdatesAction, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXP_DATA_SEEDER_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER, AXP_ENTITY_MODIFIER, AXP_ENTITY_STORAGE_BACKEND, AXP_ENTITY_STORAGE_MIDDLEWARE, DEFAULT_COLUMN_WIDTHS, actionExists, columnWidthMiddlewareFactory, columnWidthMiddlewareProvider, createColumnWidthMiddlewareProvider, createModifierContext, detectEntityChanges, ensureListActions, entityDetailsCreateActions, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware };
986
+ export type { AXPAuditable, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityListItemDto, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOp, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPOpenEntityDetailsCommandInput, AXPOpenEntityDetailsCommandResult, ColumnWidthConfig };
@@ -6,7 +6,7 @@ import { AXClickEvent } from '@acorex/cdk/common';
6
6
  import * as i1 from '@acorex/cdk/drawer';
7
7
  import { AXDrawerItemDirective } from '@acorex/cdk/drawer';
8
8
  import * as _acorex_platform_core from '@acorex/platform/core';
9
- import { AXPActionMenuItem, AXPBreadcrumbItem, AXPBadge, AXPBackButton, AXPExecuteCommand, AXPExecuteCommandResult, AXPExpressionEvaluatorScope } from '@acorex/platform/core';
9
+ import { AXPActionMenuItem, AXPBreadcrumbItem, AXPBadge, AXPBackButton, AXPExecuteCommand, AXPExecuteCommandResult, AXPExpressionEvaluatorScope, AXPBroadcastEventService } from '@acorex/platform/core';
10
10
  import { AXPWorkflowService } from '@acorex/platform/workflow';
11
11
  import { AXPCommandService, AXPPolicyEngineService } from '@acorex/platform/runtime';
12
12
  import { AXToastService } from '@acorex/components/toast';
@@ -19,6 +19,7 @@ import * as _acorex_platform_layout_builder from '@acorex/platform/layout/builde
19
19
  import { AXPWidgetNode, AXPPageStatus, AXPWidgetContainerComponent, AXPLayoutContextChangeEvent } from '@acorex/platform/layout/builder';
20
20
  import { AXFormComponent } from '@acorex/components/form';
21
21
  import * as _acorex_platform_layout_views from '@acorex/platform/layout/views';
22
+ import { Router, ActivatedRoute } from '@angular/router';
22
23
 
23
24
  declare abstract class AXPPageLayoutBase {
24
25
  abstract primaryMenuItems: Signal<AXPActionMenuItem[]>;
@@ -461,9 +462,10 @@ interface AXPLayoutDetailsViewAdapter {
461
462
  icon?: string;
462
463
  actions?: AXPLayoutDetailsViewAction[];
463
464
  breadcrumbs?: AXPBreadcrumbItem[];
465
+ pages: AXPLayoutDetailsViewPage[];
464
466
  execute?: (command: AXPExecuteCommand, context: {}) => Promise<AXPExecuteCommandResult>;
465
467
  load?: (params?: Record<string, any>) => Promise<AXPExecuteCommandResult>;
466
- pages: AXPLayoutDetailsViewPage[];
468
+ exitUrl?: string;
467
469
  }
468
470
 
469
471
  declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
@@ -495,7 +497,7 @@ declare const AXPLayoutDetailsViewViewModel: _angular_core.Type<{
495
497
  tab: AXPLayoutDetailsViewTabItem;
496
498
  }[]>;
497
499
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
498
- loadPage: (pageId?: string) => Promise<void>;
500
+ loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
499
501
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
500
502
  updateContext: (context: any) => void;
501
503
  updatePageSelectedRows: (rows: any[]) => void;
@@ -572,7 +574,7 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
572
574
  tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
573
575
  }[]>;
574
576
  loadAdapter: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
575
- loadPage: (pageId?: string) => Promise<void>;
577
+ loadPage: (pageId?: string, forceRefresh?: boolean) => Promise<void>;
576
578
  load: (adapter: AXPLayoutDetailsViewAdapter) => Promise<void>;
577
579
  updateContext: (context: any) => void;
578
580
  updatePageSelectedRows: (rows: any[]) => void;
@@ -616,7 +618,11 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
616
618
  tab: _acorex_platform_layout_views.AXPLayoutDetailsViewTabItem;
617
619
  }>>;
618
620
  }>;
621
+ protected router: Router;
622
+ protected route: ActivatedRoute;
623
+ protected eventService: AXPBroadcastEventService;
619
624
  private onSelectionChangeSubscription?;
625
+ private readonly destroyed$;
620
626
  protected form: _angular_core.Signal<AXFormComponent | undefined>;
621
627
  protected widgetContainer: _angular_core.Signal<AXPWidgetContainerComponent | undefined>;
622
628
  protected footerPrimaryActions: _angular_core.WritableSignal<AXPActionMenuItem[]>;
@@ -625,6 +631,10 @@ declare class AXPLayoutDetailsViewComponent extends AXPPageLayoutBaseComponent i
625
631
  protected hasVisibleFooterPrimaryActions: _angular_core.Signal<boolean>;
626
632
  protected hasVisibleFooterSecondaryActions: _angular_core.Signal<boolean>;
627
633
  protected hasFooter: _angular_core.Signal<boolean>;
634
+ /**
635
+ * Append timestamp query param to trigger router to re-run guards/resolvers
636
+ */
637
+ protected refreshLayout(): Promise<void>;
628
638
  ngOnInit(): Promise<void>;
629
639
  ngAfterViewInit(): Promise<void>;
630
640
  ngOnDestroy(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/platform",
3
- "version": "20.2.4-next.9",
3
+ "version": "20.3.0-next.0",
4
4
  "peerDependencies": {
5
5
  "@acorex/styles": ">=20.0.0",
6
6
  "@acorex/core": ">=20.0.0",
@@ -42,10 +42,6 @@
42
42
  "types": "./domain/index.d.ts",
43
43
  "default": "./fesm2022/acorex-platform-domain.mjs"
44
44
  },
45
- "./native": {
46
- "types": "./native/index.d.ts",
47
- "default": "./fesm2022/acorex-platform-native.mjs"
48
- },
49
45
  "./runtime": {
50
46
  "types": "./runtime/index.d.ts",
51
47
  "default": "./fesm2022/acorex-platform-runtime.mjs"
@@ -58,6 +54,10 @@
58
54
  "types": "./workflow/index.d.ts",
59
55
  "default": "./fesm2022/acorex-platform-workflow.mjs"
60
56
  },
57
+ "./native": {
58
+ "types": "./native/index.d.ts",
59
+ "default": "./fesm2022/acorex-platform-native.mjs"
60
+ },
61
61
  "./layout/builder": {
62
62
  "types": "./layout/builder/index.d.ts",
63
63
  "default": "./fesm2022/acorex-platform-layout-builder.mjs"
@@ -269,6 +269,7 @@ interface AXPTaskStatus {
269
269
  key: string;
270
270
  index: number;
271
271
  title: string;
272
+ color?: string;
272
273
  }
273
274
  /**
274
275
  * An abstract class for a workflow task provider, which is responsible for