@acorex/platform 21.0.0-next.65 → 21.0.0-next.67

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 (50) hide show
  1. package/fesm2022/acorex-platform-common.mjs +94 -18
  2. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-core.mjs +42 -1
  4. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-layout-builder.mjs +29 -7
  6. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-layout-components.mjs +282 -108
  8. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-designer.mjs +1 -1
  10. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-entity-attachments-page.component-BaTS183I.mjs +383 -0
  12. package/fesm2022/acorex-platform-layout-entity-attachments-page.component-BaTS183I.mjs.map +1 -0
  13. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs → acorex-platform-layout-entity-file-list-popup.component-_yrP5SQe.mjs} +15 -18
  14. package/fesm2022/acorex-platform-layout-entity-file-list-popup.component-_yrP5SQe.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-entity.mjs +3339 -301
  16. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-views.mjs +0 -1
  18. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-widget-core.mjs +1377 -4
  20. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-widgets.mjs +9214 -11991
  22. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  23. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs → acorex-platform-themes-default-entity-master-create-view.component-CWLfNqV0.mjs} +3 -3
  24. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-CWLfNqV0.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs → acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs} +3 -3
  26. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-C7cT82K2.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs → acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs} +4 -4
  28. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-Br9p5aXT.mjs.map} +1 -1
  29. package/fesm2022/acorex-platform-themes-default.mjs +685 -287
  30. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  31. package/fesm2022/{acorex-platform-themes-shared-settings.provider-BgXYCFia.mjs → acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs} +29 -2
  32. package/fesm2022/acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-themes-shared.mjs +94 -24
  34. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  35. package/fesm2022/acorex-platform-workflow.mjs +176 -26
  36. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  37. package/package.json +1 -1
  38. package/types/acorex-platform-common.d.ts +73 -9
  39. package/types/acorex-platform-core.d.ts +63 -2
  40. package/types/acorex-platform-layout-builder.d.ts +7 -1
  41. package/types/acorex-platform-layout-components.d.ts +162 -36
  42. package/types/acorex-platform-layout-entity.d.ts +704 -14
  43. package/types/acorex-platform-layout-views.d.ts +28 -0
  44. package/types/acorex-platform-layout-widget-core.d.ts +156 -3
  45. package/types/acorex-platform-layout-widgets.d.ts +29 -393
  46. package/types/acorex-platform-themes-default.d.ts +137 -30
  47. package/types/acorex-platform-themes-shared.d.ts +23 -1
  48. package/types/acorex-platform-workflow.d.ts +89 -4
  49. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +0 -1
  50. package/fesm2022/acorex-platform-themes-shared-settings.provider-BgXYCFia.mjs.map +0 -1
@@ -1,24 +1,24 @@
1
1
  import * as _acorex_platform_core from '@acorex/platform/core';
2
- import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPMultiLanguageString, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPContextChangeEvent } from '@acorex/platform/core';
2
+ import { AXPExecuteCommandResult, AXPMetaData, AXPDataSourceDefinitionProvider, AXPDataSourceDefinition, AXPGridLayoutOptions, AXPMultiLanguageString, AXPBreadcrumbItem, AXPFilterQuery, AXPFilterDefinition, AXPExecuteCommand, AXPQueryRequest, AXPPagedListResult, AXPUserReference, AXPCategoryEntity as AXPCategoryEntity$1, AXPEntityOp, AXPMiddlewareErrorResponse, AXHighlightService, AXPExpression, AXPFileListItem, AXPColumnQuery, AXPSortDefinition, AXPDeviceService, AXPBroadcastEventService, AXPActionMenuItem, AXPContextChangeEvent } from '@acorex/platform/core';
3
3
  import { AXPCommand, AXPQueryExecutor, AXPCommandService, AXPQuery } from '@acorex/platform/runtime';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { ElementRef, InjectionToken, Injector, Type, EnvironmentProviders, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
6
6
  import { AXPopoverComponent } from '@acorex/components/popover';
7
- import * as i3 from '@acorex/platform/layout/widget-core';
8
- import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetRendererDirective } from '@acorex/platform/layout/widget-core';
9
- import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorAllowCreate, AXPCategoryTreeDataSource } from '@acorex/platform/layout/components';
7
+ import * as i4 from '@acorex/platform/layout/widget-core';
8
+ import { AXPWidgetNode, AXPWidgetColumnNode, AXPWidgetCoreService, AXPColumnWidgetComponent, AXPValueWidgetComponent, AXPWidgetConfig, AXPWidgetCoreElementAPI, AXPWidgetRendererDirective } from '@acorex/platform/layout/widget-core';
9
+ import { AXPPreloadFiltersApplyEvent, AXPColumnItemListItem, AXPDataSelectorRowActionsHandler, AXPCategoryTreeDataSource, AXPDataSelectorAllowCreate } from '@acorex/platform/layout/components';
10
10
  import { AXPPageLayoutBaseComponent } from '@acorex/platform/layout/views';
11
11
  import { AXStyleColorType, AXDataSource, AXDataSourceFilterOption, AXDataSourceSortOption, AXValueChangedEvent, AXClickEvent, AXFocusEvent, AXHtmlEvent } from '@acorex/cdk/common';
12
12
  import * as _acorex_platform_common from '@acorex/platform/common';
13
- import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPRelatedEntity, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPEntityPage, AXPQueryFilter } from '@acorex/platform/common';
13
+ import { AXPEntityCommandScope, AXPEntity, AXPEntityAction, AXPEntityProperty, AXPEntityTableColumn, AXPCardField, AXPRelatedEntity, AXPEntitySectionView, AXPEntityPropertyCreateView, AXPEntityPropertyLayoutConfig, AXPQueryView, AXPEntityMasterListLayoutType, AXPEntityMasterListDisplayMode, AXPEntityMasterListLayoutOption, AXPEntityPropertyView, AXPCategoryEntity, AXPEntityPropertyGroup, AXPEntityMasterCreateLayoutView, AXPEntityMasterUpdateLayoutView, AXPEntityMasterSingleLayoutView, AXPEntityMasterListView, AXPEntityDetailListView, AXPEntityPage, AXPQueryFilter, AXCFileUploaderCapabilities, AXCFileUploaderAction } from '@acorex/platform/common';
14
14
  import * as i1 from '@angular/router';
15
15
  import { ResolveFn } from '@angular/router';
16
16
  import * as rxjs from 'rxjs';
17
17
  import { Subject } from 'rxjs';
18
18
  export { AXPEntityDefinitionCrudService, AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex/platform/domain';
19
- import * as i2 from '@acorex/platform/workflow';
19
+ import * as i3 from '@acorex/platform/workflow';
20
20
  import { AXPWorkflowService, AXPWorkflow, AXPWorkflowAction, AXPWorkflowContext } from '@acorex/platform/workflow';
21
- import * as i4 from '@acorex/platform/layout/builder';
21
+ import * as i5 from '@acorex/platform/layout/builder';
22
22
  import { IActionBuilder, AXPDialogRef, IFormFieldBuilder } from '@acorex/platform/layout/builder';
23
23
  import { AXPSessionService } from '@acorex/platform/auth';
24
24
  import { AXTreeViewNode, AXTreeViewComponent, AXTreeViewNodeSelectEvent } from '@acorex/components/tree-view';
@@ -28,6 +28,8 @@ import { AXFormatService } from '@acorex/core/format';
28
28
  import { AXTagBoxComponent } from '@acorex/components/tag-box';
29
29
  import * as _acorex_core_translation from '@acorex/core/translation';
30
30
  import { AXTranslationService } from '@acorex/core/translation';
31
+ import * as _acorex_platform_layout_entity from '@acorex/platform/layout/entity';
32
+ import { AXFileService } from '@acorex/core/file';
31
33
  import { AXPProviderSelectWidgetEditBase, AXPDataListWidgetComponentOptions } from '@acorex/platform/layout/widgets';
32
34
 
33
35
  declare class AXPCreateEntityCommand implements AXPCommand<any, any> {
@@ -314,6 +316,22 @@ declare class AXPEntityListViewColumnViewModel {
314
316
  width: '';
315
317
  node: _angular_core.Signal<AXPWidgetColumnNode>;
316
318
  }
319
+ declare class AXPEntityListViewCardFieldViewModel {
320
+ readonly property: AXPEntityProperty;
321
+ readonly field: AXPCardField;
322
+ constructor(property: AXPEntityProperty, field: AXPCardField);
323
+ name: string;
324
+ title: string;
325
+ visible: string | boolean;
326
+ layout: _acorex_platform_common.AXPEntityPropertyLayoutConfig | undefined;
327
+ display: string;
328
+ isBadgeDisplay: boolean;
329
+ badgeColor: string | undefined;
330
+ isStatusWidget: boolean;
331
+ node: _angular_core.Signal<AXPWidgetColumnNode>;
332
+ /** Readonly column node for status fields shown as header badges. */
333
+ headerBadgeNode: _angular_core.Signal<AXPWidgetColumnNode>;
334
+ }
317
335
 
318
336
  declare class AXPEntityDetailListViewModel {
319
337
  private injector;
@@ -498,6 +516,17 @@ interface AXPEntityMasterListViewSortPropViewModel {
498
516
  title: string;
499
517
  dir?: string;
500
518
  }
519
+ /** Built-in card list row action that toggles multi-select mode via {@link AXPEntityMasterListViewModel.selectedItems}. */
520
+ declare const AXPEntityMasterListCardSelectActionName = "axp-entity-card:select";
521
+ interface AXPEntityMasterListCardSecondaryActionItem {
522
+ name: string;
523
+ title: string;
524
+ icon?: string;
525
+ color?: string;
526
+ disabled?: boolean | string;
527
+ divided?: boolean;
528
+ isCardSelect?: boolean;
529
+ }
501
530
  declare class AXPEntityMasterListViewQueryViewModel {
502
531
  private entity;
503
532
  private section;
@@ -522,10 +551,12 @@ declare class AXPEntityMasterListViewModel {
522
551
  private readonly settings;
523
552
  private readonly widgetResolver;
524
553
  private readonly expressionEvaluator;
554
+ private readonly translation;
525
555
  private readonly commandService;
526
556
  private readonly eventService;
527
557
  private readonly queryExecutor;
528
558
  private readonly filterOperatorMiddleware;
559
+ private readonly entityDefinitionRegistry;
529
560
  private settingEntityKey;
530
561
  private readonly destroyed;
531
562
  private lastAppliedSortKey;
@@ -552,9 +583,72 @@ declare class AXPEntityMasterListViewModel {
552
583
  * if `indexCol` is omitted, visibility follows {@link AXPCommonSettings.ShowRowIndexColumn}.
553
584
  */
554
585
  showIndexColumn: _angular_core.Signal<boolean>;
586
+ /** Layouts enabled via `interfaces.master.list.layouts.*.enabled`. */
587
+ enabledListLayouts: _angular_core.Signal<AXPEntityMasterListLayoutType[]>;
588
+ /** True when the user can switch between multiple enabled layouts. */
589
+ canSwitchListLayout: _angular_core.Signal<boolean>;
590
+ /** Active list layout for the current view. */
591
+ activeListLayout: _angular_core.WritableSignal<AXPEntityMasterListLayoutType>;
592
+ tableLayout: _angular_core.Signal<{
593
+ enabled?: boolean;
594
+ columns: AXPEntityTableColumn[];
595
+ } | undefined>;
596
+ cardLayout: _angular_core.Signal<{
597
+ enabled?: boolean;
598
+ header: {
599
+ title?: string;
600
+ description?: string;
601
+ icon?: string;
602
+ };
603
+ fields: AXPCardField[];
604
+ } | undefined>;
605
+ /** Global expanded state for all card bodies in card layout. */
606
+ cardContentExpanded: _angular_core.WritableSignal<boolean>;
607
+ /** Current presentation mode (table, compact cards, or expanded cards). */
608
+ listDisplayMode: _angular_core.Signal<AXPEntityMasterListDisplayMode>;
609
+ /**
610
+ * Sets global card body visibility for card layout.
611
+ */
612
+ setCardContentExpanded(expanded: boolean): void;
613
+ /**
614
+ * Switches table vs compact/expanded card presentation.
615
+ */
616
+ setListDisplayMode(mode: AXPEntityMasterListDisplayMode): void;
617
+ /** Enabled layouts with display metadata for the title layout switcher. */
618
+ availableListLayouts: _angular_core.Signal<AXPEntityMasterListLayoutOption[]>;
619
+ /** Active layout option (for title icon and switcher selection state). */
620
+ currentListLayout: _angular_core.Signal<AXPEntityMasterListLayoutOption | null>;
621
+ private static readonly LAYOUT_META;
622
+ /**
623
+ * Switches to the given layout when it is enabled.
624
+ * Persists the choice at entity list level (shared across all views).
625
+ */
626
+ setListLayout(layout: AXPEntityMasterListLayoutType): void;
627
+ /**
628
+ * Cycles to the next enabled layout (table → card → table …).
629
+ * No-op when only one layout is enabled.
630
+ */
631
+ switchListLayout(): AXPEntityMasterListLayoutType;
632
+ private resolveActiveListLayout;
633
+ private applyListLayoutFromSettings;
555
634
  private createExpressionScope;
556
635
  private resolveCommandNameExpression;
557
636
  private resolveTitleExpression;
637
+ /**
638
+ * Resolves a card header value (title, description, icon) from a property path, expression, or literal.
639
+ * Supports multiple `{{ ... }}` segments in one string (e.g. `{{context.eval("a")}} - {{context.eval("b")}}`).
640
+ * Multi-language maps (e.g. `{ "en-US": "...", "fa-IR": "..." }`) are returned as-is for the translate pipe.
641
+ */
642
+ resolveCardHeaderValue(value: string | undefined, rowData: unknown): Promise<AXPMultiLanguageString>;
643
+ /**
644
+ * Keeps i18n payloads intact for `translate`; coerces only plain scalars to string.
645
+ */
646
+ private normalizeCardHeaderDisplayValue;
647
+ /**
648
+ * Resolves badge color for a card header field (semantic token or expression per row).
649
+ */
650
+ resolveCardBadgeColor(field: AXPEntityListViewCardFieldViewModel, rowData: unknown): Promise<AXStyleColorType>;
651
+ private resolveCardBadgeColorValue;
558
652
  private resolveTriggerName;
559
653
  setView(viewName?: string | null): Promise<void>;
560
654
  dataSource: AXDataSource<any>;
@@ -582,7 +676,7 @@ declare class AXPEntityMasterListViewModel {
582
676
  */
583
677
  updateExpandedRowId(rowId: string, expanded: boolean): void;
584
678
  handleRowExpandChange(rowData: Record<string, unknown>): void;
585
- saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'listPaging' | 'filters' | 'sorts' | 'expandedRows', data?: unknown): Promise<void>;
679
+ saveSettings(changesType: 'columnSizes' | 'columnOrders' | 'view' | 'pageSize' | 'listPaging' | 'filters' | 'sorts' | 'expandedRows' | 'listLayout' | 'cardContentExpanded', data?: unknown): Promise<void>;
586
680
  selectedItems: _angular_core.WritableSignal<any[]>;
587
681
  /**
588
682
  * Selected category from the category sidebar (left panel).
@@ -617,6 +711,10 @@ declare class AXPEntityMasterListViewModel {
617
711
  selectedScopeActionsCount: _angular_core.Signal<number>;
618
712
  primaryRowActions: _angular_core.Signal<AXPEntityCommandTriggerViewModel[]>;
619
713
  secondaryRowActions(rowData: any): Promise<AXPEntityCommandTriggerViewModel[]>;
714
+ /**
715
+ * Secondary actions for card layout rows, with the built-in Select action last (divider above it).
716
+ */
717
+ cardSecondaryRowActions(rowData: unknown): Promise<AXPEntityMasterListCardSecondaryActionItem[]>;
620
718
  filterQueries: _angular_core.WritableSignal<AXPFilterQuery[]>;
621
719
  private static readonly URL_FILTER_OPERATOR_TYPES;
622
720
  get properties(): AXPEntityProperty[];
@@ -646,6 +744,20 @@ declare class AXPEntityMasterListViewModel {
646
744
  onColumnsChanged(columns: AXPEntityListViewColumnViewModel[]): Promise<void>;
647
745
  applyViewColumns(): void;
648
746
  onColumnsOrderChanged(event: any): void;
747
+ private mergeDisplayFieldWithColumn;
748
+ private buildVirtualDisplayProperty;
749
+ private normalizeRelatedColumnNames;
750
+ private findRelatedEntityForField;
751
+ private getRegisteredEntity;
752
+ private resolveRelatedEntityProperty;
753
+ private resolveRelatedEntityColumnDataPath;
754
+ private deriveDataPathFromLookupProperty;
755
+ private resolveParentDataPathForRelatedField;
756
+ private resolveDisplayFieldProperty;
757
+ private resolveCardField;
758
+ private allAvailableCardFields;
759
+ cardFields: _angular_core.WritableSignal<AXPEntityListViewCardFieldViewModel[]>;
760
+ applyCardFields(): void;
649
761
  sortableFields: () => {
650
762
  name: string;
651
763
  title: string;
@@ -875,6 +987,7 @@ declare class AXPEntityPreloadFiltersViewModel {
875
987
  }
876
988
  declare const AXPEntityPreloadFiltersViewModelResolver: ResolveFn<Promise<AXPEntityPreloadFiltersViewModel>>;
877
989
 
990
+ type AXPEntityMasterListCardLayout = NonNullable<NonNullable<AXPEntityMasterListView['layouts']>['card']>;
878
991
  interface AXPEntityModifierContext {
879
992
  readonly entity: AXPEntity;
880
993
  plugins: {
@@ -971,6 +1084,12 @@ interface AXPEntityModifierContext {
971
1084
  list: {
972
1085
  get(): AXPEntityMasterListView | undefined;
973
1086
  update(updater: (c: AXPEntityMasterListView | undefined) => AXPEntityMasterListView): AXPEntityModifierContext;
1087
+ card: {
1088
+ get(): AXPEntityMasterListCardLayout | undefined;
1089
+ set(layout: AXPEntityMasterListCardLayout): AXPEntityModifierContext;
1090
+ update(updater: (layout: AXPEntityMasterListCardLayout | undefined) => AXPEntityMasterListCardLayout | undefined): AXPEntityModifierContext;
1091
+ remove(): AXPEntityModifierContext;
1092
+ };
974
1093
  };
975
1094
  };
976
1095
  detail: {
@@ -1501,9 +1620,67 @@ declare function getMasterInterfacePropertySortKey(interfaceRow: {
1501
1620
  layout?: AXPEntityPropertyLayoutConfig | undefined;
1502
1621
  } | undefined, indexInMasterInterfaceList: number): number;
1503
1622
 
1623
+ /** How to show attachments in entity single/create/update: as a section (default) or as a separate page. */
1624
+ type AttachmentsDisplayMode = 'section' | 'page';
1625
+ /** Component key used when display is 'page'. Register a page component with this key via AXP_PAGE_COMPONENT_PROVIDER. */
1626
+ declare const ATTACHMENTS_PAGE_COMPONENT_KEY = "entity-attachments-page";
1627
+ type AttachmentLocalizedText = string | Record<string, string>;
1628
+ type AttachmentSectionOptions = {
1629
+ order?: number;
1630
+ title?: AttachmentLocalizedText;
1631
+ };
1632
+ type AttachmentsEditDialogOptions = {
1633
+ mode?: 'manual' | 'auto';
1634
+ fields?: {
1635
+ name?: boolean;
1636
+ title?: boolean;
1637
+ description?: boolean;
1638
+ };
1639
+ };
1640
+ type AttachmentsPluginOptions = {
1641
+ field?: string;
1642
+ title?: AttachmentLocalizedText;
1643
+ display?: AttachmentsDisplayMode;
1644
+ accept?: string;
1645
+ multiple?: boolean;
1646
+ fileEditable?: boolean;
1647
+ /** When true, attachments field and list action run in read-only mode (widget option `readonly`). */
1648
+ 'readonly'?: boolean;
1649
+ /** When true (default), registers a list column for the attachments field. Set false to hide the column. */
1650
+ showListColumn?: boolean;
1651
+ /** When true (default), registers the list upload action. Set false to omit the action. */
1652
+ showListAction?: boolean;
1653
+ /** Section options when display is 'section'. */
1654
+ section?: AttachmentSectionOptions;
1655
+ /** File edit dialog options. */
1656
+ editDialog?: AttachmentsEditDialogOptions;
1657
+ plugins?: {
1658
+ name: string;
1659
+ options?: unknown;
1660
+ }[];
1661
+ /** Widget option `showBorder`. Default false for attachments (section and page). */
1662
+ showBorder?: boolean;
1663
+ /** Widget option `showAddItemButton`. Default false when display is `page`, true for section. */
1664
+ showAddItemButton?: boolean;
1665
+ };
1666
+ /**
1667
+ * Attachments plugin.
1668
+ * - Always ensures an attachments group and property; when display is 'section' (default), adds a section to single/create/update layouts.
1669
+ * - When display is 'page', adds a page to entity.pages with ATTACHMENTS_PAGE_COMPONENT_KEY; register a page component with that key via AXP_PAGE_COMPONENT_PROVIDER.
1670
+ * - List column and list upload action can be turned off with `showListColumn` / `showListAction` (both default true).
1671
+ * - Uses provided accept/multiple/fileEditable; others are fixed.
1672
+ */
1673
+ declare const attachmentsPlugin: AXPEntityActionPlugin;
1674
+
1675
+ declare class AXPAttachmentsPluginModule {
1676
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPAttachmentsPluginModule, never>;
1677
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPAttachmentsPluginModule, never, never, never>;
1678
+ static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPAttachmentsPluginModule>;
1679
+ }
1680
+
1504
1681
  declare class AXPEntityModule {
1505
1682
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityModule, never>;
1506
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof i2.AXPWorkflowModule, typeof i3.AXPWidgetCoreModule, typeof i4.LayoutBuilderModule], never>;
1683
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPEntityModule, never, [typeof i1.RouterModule, typeof AXPAttachmentsPluginModule, typeof i3.AXPWorkflowModule, typeof i4.AXPWidgetCoreModule, typeof i5.LayoutBuilderModule], never>;
1507
1684
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPEntityModule>;
1508
1685
  }
1509
1686
 
@@ -1767,6 +1944,13 @@ declare const searchResultDescriptionMiddlewareProvider: AXPEntityModifierProvid
1767
1944
  declare const defaultMultiLanguageMiddleware: AXPEntityModifier;
1768
1945
  declare const defaultMultiLanguageMiddlewareProvider: AXPEntityModifierProvider;
1769
1946
 
1947
+ /**
1948
+ * When an entity has no `interfaces.master.list.layouts.card`, creates a sensible default
1949
+ * from list columns and property names (title, description, remaining columns as card fields).
1950
+ */
1951
+ declare const defaultCardLayoutMiddleware: AXPEntityModifier;
1952
+ declare const defaultCardLayoutMiddlewareProvider: AXPEntityModifierProvider;
1953
+
1770
1954
  /**
1771
1955
  * Registers entity CRUD commands and queries for the given entity keys.
1772
1956
  * Use in app/module providers; consumes AXPEntityService from this package.
@@ -2516,6 +2700,362 @@ declare class AXPTruncatedBreadcrumbComponent implements OnDestroy {
2516
2700
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPTruncatedBreadcrumbComponent, "axp-truncated-breadcrumb", never, { "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "characterLimit": { "alias": "characterLimit"; "required": false; "isSignal": true; }; "sectionLimit": { "alias": "sectionLimit"; "required": false; "isSignal": true; }; "separatorIcon": { "alias": "separatorIcon"; "required": false; "isSignal": true; }; "ellipsisIcon": { "alias": "ellipsisIcon"; "required": false; "isSignal": true; }; "eyeIcon": { "alias": "eyeIcon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2517
2701
  }
2518
2702
 
2703
+ declare class AXPEditFileUploaderCommand implements AXPCommand<{
2704
+ file: AXPFileListItem;
2705
+ plugins?: {
2706
+ name: string;
2707
+ options?: unknown;
2708
+ }[];
2709
+ excludePlugins?: string[];
2710
+ enableTitleDescription?: boolean;
2711
+ isNewFile?: boolean;
2712
+ }, AXPFileListItem> {
2713
+ private readonly layoutBuilder;
2714
+ private readonly translationService;
2715
+ private readonly hooks;
2716
+ execute(input: {
2717
+ file: AXPFileListItem;
2718
+ plugins?: {
2719
+ name: string;
2720
+ options?: unknown;
2721
+ }[];
2722
+ excludePlugins?: string[];
2723
+ enableTitleDescription?: boolean;
2724
+ isNewFile?: boolean;
2725
+ }): Promise<AXPExecuteCommandResult<AXPFileListItem>>;
2726
+ private showEditDialog;
2727
+ /**
2728
+ * Build form fields from hook items (old format parameters)
2729
+ */
2730
+ private buildFormFields;
2731
+ /**
2732
+ * Build groups/containers from hook groups (old format groups)
2733
+ */
2734
+ private buildGroups;
2735
+ /**
2736
+ * Apply widget configuration to field based on widget type
2737
+ */
2738
+ private applyWidget;
2739
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEditFileUploaderCommand, never>;
2740
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEditFileUploaderCommand>;
2741
+ }
2742
+
2743
+ declare class AXPFileListComponent implements OnInit, OnDestroy {
2744
+ private fileTypeService;
2745
+ private fileStorageService;
2746
+ private commandExecutor;
2747
+ private hooks;
2748
+ isLoading: _angular_core.WritableSignal<boolean>;
2749
+ private fileTypes;
2750
+ onRemove: _angular_core.OutputEmitterRef<AXPFileListItem>;
2751
+ onRevert: _angular_core.OutputEmitterRef<AXPFileListItem>;
2752
+ onRename: _angular_core.OutputEmitterRef<AXPFileListItem>;
2753
+ readonly: _angular_core.InputSignal<boolean>;
2754
+ fileEditable: _angular_core.InputSignal<boolean>;
2755
+ /** When true, edit dialog shows name, title and description fields. Default false. */
2756
+ enableTitleDescription: _angular_core.InputSignal<boolean>;
2757
+ multiple: _angular_core.InputSignal<boolean>;
2758
+ files: _angular_core.InputSignal<AXPFileListItem[]>;
2759
+ plugins: _angular_core.InputSignal<{
2760
+ name: string;
2761
+ options?: unknown;
2762
+ }[] | undefined>;
2763
+ excludePlugins: _angular_core.InputSignal<string[] | undefined>;
2764
+ capabilities: _angular_core.InputSignal<AXCFileUploaderCapabilities | undefined>;
2765
+ /**
2766
+ * All files should be displayed, even those with `deleted` status.
2767
+ * The template will handle the visual differences based on the status.
2768
+ */
2769
+ displayFiles: _angular_core.Signal<AXPFileListItem[]>;
2770
+ private fileIdToActions;
2771
+ private globalActions;
2772
+ private filesChangeEffect;
2773
+ private getDefaultActions;
2774
+ /** True when the widget is readonly or this file row is locked (`readOnly`). */
2775
+ isItemInteractionLocked(file: AXPFileListItem): boolean;
2776
+ actionsFor(file: AXPFileListItem, index: number): any[];
2777
+ private loadActionsFor;
2778
+ ngOnInit(): Promise<void>;
2779
+ private loadGlobalActions;
2780
+ protected getFileInfo(fileName: string): {
2781
+ icon: string;
2782
+ type: string;
2783
+ };
2784
+ handleFileDownload(event: AXClickEvent, file: AXPFileListItem): Promise<void>;
2785
+ handleFileRemove(event: AXClickEvent, file: AXPFileListItem): Promise<void>;
2786
+ /**
2787
+ * Handle revert action – emit the file so parent components can update the status.
2788
+ */
2789
+ handleFileRevert(event: AXClickEvent, file: AXPFileListItem): void;
2790
+ /**
2791
+ * Handle file edit action – open rename popup
2792
+ */
2793
+ handleFileEdit(event: any, file: AXPFileListItem): Promise<void>;
2794
+ ngOnDestroy(): void;
2795
+ runAction(action: any): Promise<void>;
2796
+ protected getActionColor(action: any): string;
2797
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileListComponent, never>;
2798
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileListComponent, "axp-file-list", never, { "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "fileEditable": { "alias": "fileEditable"; "required": false; "isSignal": true; }; "enableTitleDescription": { "alias": "enableTitleDescription"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "files": { "alias": "files"; "required": false; "isSignal": true; }; "plugins": { "alias": "plugins"; "required": false; "isSignal": true; }; "excludePlugins": { "alias": "excludePlugins"; "required": false; "isSignal": true; }; "capabilities": { "alias": "capabilities"; "required": false; "isSignal": true; }; }, { "onRemove": "onRemove"; "onRevert": "onRevert"; "onRename": "onRename"; }, never, never, true, never>;
2799
+ }
2800
+
2801
+ /** Stable fingerprint for one file row; ignores Blob binary content. */
2802
+ declare function fingerprintAttachmentItem(item: unknown): string;
2803
+ /** Order-independent fingerprint for attachment lists. */
2804
+ declare function fingerprintAttachments(value: unknown): string;
2805
+ /** True when lists represent the same attachments regardless of blob vs fileId shape. */
2806
+ declare function attachmentsSemanticallyEqual(a: unknown, b: unknown): boolean;
2807
+ /** Attachment rows that remain after a successful save (drops soft-deleted rows). */
2808
+ declare function committedAttachments(value: unknown): AXPFileListItem[];
2809
+ /**
2810
+ * Post-save attachment list: drops soft-deleted rows and promotes pending `attached` rows to `uploaded`
2811
+ * so deferred-save pages get the same delete/revert behavior as after a full reload.
2812
+ */
2813
+ declare function persistedAttachments(value: unknown): AXPFileListItem[];
2814
+
2815
+ interface AXPFileUploaderEntityFilesScope {
2816
+ name: string;
2817
+ id: string;
2818
+ field: string;
2819
+ }
2820
+ declare function isFileListItem(value: unknown): value is AXPFileListItem;
2821
+ /** Whether a list-row value represents one attachment (file item, id reference, or fileId source). */
2822
+ declare function isAttachmentListEntry(value: unknown): boolean;
2823
+ declare function attachmentFieldCount(fieldValue: unknown): number;
2824
+ declare function normalizeEntityFieldToFileList(fieldValue: unknown): AXPFileListItem[];
2825
+ declare function resolveFileUploaderEntityScope(options: Record<string, unknown>, rowData: Record<string, unknown> | undefined, fieldFallback?: string): AXPFileUploaderEntityFilesScope | undefined;
2826
+
2827
+ interface AXPFileUploaderLoadFilesInput extends AXPFileUploaderEntityFilesScope {
2828
+ }
2829
+ interface AXPFileUploaderLoadFilesResult {
2830
+ files: AXPFileListItem[];
2831
+ /** Count including file-id references, not only hydrated AXPFileListItem rows. */
2832
+ count: number;
2833
+ }
2834
+ declare class AXPFileUploaderLoadFilesQuery implements AXPQuery<AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult> {
2835
+ private readonly injector;
2836
+ fetch(input: AXPFileUploaderLoadFilesInput): Promise<AXPFileUploaderLoadFilesResult>;
2837
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderLoadFilesQuery, never>;
2838
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderLoadFilesQuery>;
2839
+ }
2840
+
2841
+ interface AXPFileUploaderSaveFilesInput extends AXPFileUploaderEntityFilesScope {
2842
+ files: AXPFileListItem[];
2843
+ }
2844
+ interface AXPFileUploaderSaveFilesResult {
2845
+ entityData: Record<string, unknown>;
2846
+ }
2847
+ declare class AXPFileUploaderSaveFilesCommand implements AXPCommand<AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult> {
2848
+ private readonly injector;
2849
+ execute(input: AXPFileUploaderSaveFilesInput): Promise<AXPExecuteCommandResult<AXPFileUploaderSaveFilesResult>>;
2850
+ }
2851
+
2852
+ /** Serializable upload action exposed via widget `api().getUploadActions()`. */
2853
+ interface AXPFileUploaderUploadActionDescriptor {
2854
+ plugin: string;
2855
+ text?: string;
2856
+ textKey?: string;
2857
+ icon?: string;
2858
+ }
2859
+ type AXPFileUploaderEditDialogMode = 'manual' | 'auto';
2860
+ interface AXPFileUploaderEditDialogFieldOptions {
2861
+ name?: boolean;
2862
+ title?: boolean;
2863
+ description?: boolean;
2864
+ }
2865
+ interface AXPFileUploaderEditDialogOptions {
2866
+ mode?: AXPFileUploaderEditDialogMode;
2867
+ fields?: AXPFileUploaderEditDialogFieldOptions;
2868
+ }
2869
+ declare function resolveFileUploaderEditDialog(options?: Record<string, unknown>): AXPFileUploaderEditDialogOptions | undefined;
2870
+ declare function isFileUploaderEditDialogAuto(editDialog?: AXPFileUploaderEditDialogOptions): boolean;
2871
+ declare function hasFileUploaderTitleOrDescriptionFields(editDialog?: AXPFileUploaderEditDialogOptions): boolean;
2872
+
2873
+ declare class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent<AXPFileListItem[]> {
2874
+ protected fileCount: _angular_core.WritableSignal<number>;
2875
+ private loadRequestId;
2876
+ private fileService;
2877
+ private queryExecutor;
2878
+ constructor();
2879
+ openFileList(): Promise<void>;
2880
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetColumnComponent, never>;
2881
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetColumnComponent, "axp-file-uploader-widget-column", never, { "rawValue": { "alias": "rawValue"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; }, {}, never, never, true, never>;
2882
+ }
2883
+
2884
+ declare class AXPFileUploaderWidgetEditComponent extends AXPValueWidgetComponent<AXPFileListItem[] | undefined> {
2885
+ protected readonly fileService: AXFileService;
2886
+ private readonly hooks;
2887
+ private readonly fileActionsService;
2888
+ private readonly commandExecutor;
2889
+ private readonly dirtyChangeSubject;
2890
+ private readonly uploadActionsChangeSubject;
2891
+ private readonly savedSnapshot;
2892
+ private readonly baselineFingerprint;
2893
+ private readonly baselinePendingReconcile;
2894
+ private readonly isDirtySignal;
2895
+ private skipDirtyEvaluation;
2896
+ /** Status before soft-delete; used for restore when baseline was not synced (section layout). */
2897
+ private readonly statusBeforeDelete;
2898
+ private readonly autoBaselineSynced;
2899
+ /** Sync baseline from context when not wired by a deferred-save page (section layout). */
2900
+ private readonly baselineInitEffect;
2901
+ protected multiple: _angular_core.Signal<boolean>;
2902
+ private readonly acceptOverride;
2903
+ protected accept: _angular_core.Signal<string>;
2904
+ protected plugins: _angular_core.Signal<{
2905
+ name: string;
2906
+ options?: unknown;
2907
+ }[]>;
2908
+ protected pluginNames: _angular_core.Signal<string[]>;
2909
+ protected excludePlugins: _angular_core.Signal<string[]>;
2910
+ protected fileEditable: _angular_core.Signal<boolean>;
2911
+ protected editDialog: _angular_core.Signal<_acorex_platform_layout_entity.AXPFileUploaderEditDialogOptions | undefined>;
2912
+ protected enableTitleDescription: _angular_core.Signal<boolean>;
2913
+ /** When mode is `auto`, show the edit dialog after each file select. */
2914
+ protected showEditDialogAfterSelect: _angular_core.Signal<boolean>;
2915
+ protected readonly: _angular_core.Signal<boolean>;
2916
+ protected showBorder: _angular_core.Signal<boolean>;
2917
+ protected showAddItemButton: _angular_core.Signal<boolean>;
2918
+ protected maxFileSize: _angular_core.Signal<number>;
2919
+ protected isDragOver: _angular_core.WritableSignal<boolean>;
2920
+ private readonly innerActions;
2921
+ protected readonly fileActions: _angular_core.Signal<AXCFileUploaderAction[]>;
2922
+ ngOnInit(): void;
2923
+ setValue(value: AXPFileListItem[] | null | undefined): void;
2924
+ /** Align dirty baseline with persisted attachments (call when record loads or after discard remount). */
2925
+ syncBaseline(saved: AXPFileListItem[] | undefined): void;
2926
+ /** Mark current list as saved; clears dirty and drops soft-deleted rows from the UI. */
2927
+ markSaved(): void;
2928
+ /** Revert widget value to last saved baseline. */
2929
+ discardToBaseline(): void;
2930
+ api(): AXPWidgetCoreElementAPI;
2931
+ /** Current upload actions for host pages (always read via api; list may change after plugins load). */
2932
+ getUploadActionDescriptors(): AXPFileUploaderUploadActionDescriptor[];
2933
+ runUploadActionByPlugin(plugin: string): Promise<void>;
2934
+ private notifyUploadActionsChanged;
2935
+ private evaluateDirty;
2936
+ private setDirty;
2937
+ private loadActions;
2938
+ private configureFromHooks;
2939
+ /**
2940
+ * Process files from various sources (file picker, drag-drop, etc.)
2941
+ * When showEditDialogAfterSelect is true, the edit dialog (with plugin hooks) is shown per file before adding; otherwise files are added and user can edit via Edit button.
2942
+ */
2943
+ private processFiles;
2944
+ /**
2945
+ * Show edit dialog per file and add only those submitted. Used when showEditDialogAfterSelect is true (both from zone and from dropdown actions).
2946
+ */
2947
+ private addFilesWithEditDialogAsync;
2948
+ protected files: _angular_core.Signal<AXPFileListItem[]>;
2949
+ handleFileRemove(file: AXPFileListItem): void;
2950
+ removeFile(file: AXPFileListItem): void;
2951
+ /**
2952
+ * Revert a deleted file back to its pre-delete status.
2953
+ */
2954
+ handleFileRevert(file: AXPFileListItem): void;
2955
+ private resolveRestoredStatus;
2956
+ /**
2957
+ * Handle file rename action. Persists name/title/description to file storage immediately when edited
2958
+ * so they are saved even if the entity payload does not carry these fields.
2959
+ */
2960
+ handleFileRename(file: AXPFileListItem): void;
2961
+ clear(): void;
2962
+ protected readonly capabilities: AXCFileUploaderCapabilities;
2963
+ onFileChange(event: {
2964
+ event: Event;
2965
+ files: File[];
2966
+ }): void;
2967
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetEditComponent, never>;
2968
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetEditComponent, "axp-file-uploader-widget-edit", never, {}, {}, never, never, true, never>;
2969
+ }
2970
+
2971
+ declare class AXPFileUploaderWidgetViewComponent extends AXPValueWidgetComponent<AXPFileListItem[]> {
2972
+ protected files: _angular_core.Signal<AXPFileListItem[]>;
2973
+ private get __class();
2974
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetViewComponent, never>;
2975
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPFileUploaderWidgetViewComponent, "axp-file-uploader-widget-view", never, {}, {}, never, never, true, never>;
2976
+ }
2977
+
2978
+ declare const AXPFileUploaderWidget: AXPWidgetConfig;
2979
+ interface AXPFileUploaderWidgetDesignerOptions {
2980
+ multiple?: boolean;
2981
+ accept?: string;
2982
+ plugins?: {
2983
+ name: string;
2984
+ options?: unknown;
2985
+ }[];
2986
+ excludePlugins?: string[];
2987
+ readonly?: boolean;
2988
+ fileEditable?: boolean;
2989
+ maxFileSize?: number;
2990
+ enableTitleDescription?: boolean;
2991
+ showEditDialogAfterSelect?: boolean;
2992
+ showBorder?: boolean;
2993
+ showAddItemButton?: boolean;
2994
+ }
2995
+ interface AXPFileUploaderWidgetViewOptions {
2996
+ }
2997
+ interface AXPFileUploaderWidgetEditOptions {
2998
+ multiple?: boolean;
2999
+ accept?: string;
3000
+ plugins?: {
3001
+ name: string;
3002
+ options?: unknown;
3003
+ }[];
3004
+ excludePlugins?: string[];
3005
+ readonly?: boolean;
3006
+ fileEditable?: boolean;
3007
+ maxFileSize?: number;
3008
+ enableTitleDescription?: boolean;
3009
+ showEditDialogAfterSelect?: boolean;
3010
+ showBorder?: boolean;
3011
+ showAddItemButton?: boolean;
3012
+ }
3013
+ interface AXPFileUploaderWidgetColumnOptions {
3014
+ }
3015
+ interface AXPFileUploaderWidgetPrintOptions {
3016
+ }
3017
+ interface AXPFileUploaderWidgetOptions {
3018
+ designer: AXPFileUploaderWidgetDesignerOptions;
3019
+ view: AXPFileUploaderWidgetViewOptions;
3020
+ edit: AXPFileUploaderWidgetEditOptions;
3021
+ print: AXPFileUploaderWidgetPrintOptions;
3022
+ column: AXPFileUploaderWidgetColumnOptions;
3023
+ }
3024
+ declare module '@acorex/platform/layout/widget-core' {
3025
+ interface AXPWidgetTypesMap {
3026
+ attachments: 'attachments';
3027
+ }
3028
+ }
3029
+
3030
+ interface AXPFileUploaderShowFileListEntityContext extends AXPFileUploaderEntityFilesScope {
3031
+ }
3032
+ interface AXPFileUploaderShowFileListOptions {
3033
+ /** When set, files are loaded and saved via FileUploader:LoadFiles / FileUploader:SaveFiles. */
3034
+ entity?: AXPFileUploaderShowFileListEntityContext;
3035
+ /** Direct files (e.g. grid column preview); skips load/save commands. */
3036
+ files?: AXPFileListItem[];
3037
+ readonly?: boolean;
3038
+ multiple?: boolean;
3039
+ accept?: string;
3040
+ fileEditable?: boolean;
3041
+ maxFileSize?: number;
3042
+ showAddItemButton?: boolean;
3043
+ plugins?: {
3044
+ name: string;
3045
+ options?: unknown;
3046
+ }[];
3047
+ editDialog?: AXPFileUploaderEditDialogOptions;
3048
+ }
3049
+ declare class AXPFileUploaderWidgetService {
3050
+ private popupService;
3051
+ private translate;
3052
+ private commandExecutor;
3053
+ private queryExecutor;
3054
+ showFileList(options?: AXPFileUploaderShowFileListOptions): Promise<AXPFileListItem[] | undefined>;
3055
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPFileUploaderWidgetService, never>;
3056
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPFileUploaderWidgetService>;
3057
+ }
3058
+
2519
3059
  declare const AXPEntityDefinitionProviderWidget: AXPWidgetConfig;
2520
3060
  declare module '@acorex/platform/layout/widget-core' {
2521
3061
  interface AXPWidgetTypesMap {
@@ -2802,6 +3342,18 @@ interface AXPLookupDisplayOptions {
2802
3342
  textField?: string;
2803
3343
  isMultiLanguage?: (value: unknown) => boolean;
2804
3344
  }
3345
+ /** Column list: entity detail popover when clicking a lookup value. */
3346
+ interface AXPLookupPopoverOptions {
3347
+ /** When `false`, lookup values are not clickable and the detail popover does not open. Default `true`. */
3348
+ enabled?: boolean;
3349
+ }
3350
+ /** Row actions to show in the lookup data selector popup (subset of entity list actions). */
3351
+ interface AXPLookupSelectorRowActionsConfig {
3352
+ /** Primary icon buttons (e.g. preview). Match full command name or suffix such as `:Preview`. */
3353
+ primary?: string[];
3354
+ /** Secondary actions in the row dropdown menu. */
3355
+ secondary?: string[];
3356
+ }
2805
3357
  interface AXPLookupWidgetOptions {
2806
3358
  disabled?: boolean | AXPExpression;
2807
3359
  readonly?: boolean | AXPExpression;
@@ -2810,8 +3362,12 @@ interface AXPLookupWidgetOptions {
2810
3362
  look?: AXPLookupWidgetLookType;
2811
3363
  allowClear?: boolean;
2812
3364
  displayFormat?: string;
3365
+ /** Column list: entity detail popover behavior. */
3366
+ popover?: AXPLookupPopoverOptions;
2813
3367
  /** Column list: lazy resolve and summary behavior. */
2814
3368
  columnResolve?: AXPLookupColumnResolveOptions;
3369
+ /** Lookup selector popup: entity row actions to display. */
3370
+ selectorRowActions?: AXPLookupSelectorRowActionsConfig;
2815
3371
  }
2816
3372
 
2817
3373
  /**
@@ -2860,10 +3416,101 @@ declare class AXPLookupWidgetViewComponent extends AXPValueWidgetComponent<any>
2860
3416
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPLookupWidgetViewComponent, "axp-lookup-widget-view", never, {}, {}, never, never, true, never>;
2861
3417
  }
2862
3418
 
3419
+ /**
3420
+ * Selects which entity list row actions appear in the data selector.
3421
+ * Match by full command name, action `name`, trigger name, or command suffix (e.g. `:Preview`).
3422
+ */
3423
+ interface AXPEntityDataSelectorRowActionsConfig {
3424
+ primary?: string[];
3425
+ secondary?: string[];
3426
+ }
3427
+ declare class AXPEntityDataSelectorRowActionsService {
3428
+ private readonly expressionEvaluator;
3429
+ private readonly workflow;
3430
+ private readonly commandService;
3431
+ /**
3432
+ * Build a row-actions handler for {@link AXPDataSelectorComponent} from entity list actions.
3433
+ */
3434
+ createHandler(entity: AXPEntity, config: AXPEntityDataSelectorRowActionsConfig): AXPDataSelectorRowActionsHandler | undefined;
3435
+ private buildIndividualActions;
3436
+ private filterActions;
3437
+ private matchesActionFilter;
3438
+ private getCommandNameFromTrigger;
3439
+ private flattenActions;
3440
+ private toRowCommandItems;
3441
+ private evaluateActionsForRow;
3442
+ private createExpressionScope;
3443
+ private resolveTriggerName;
3444
+ private resolveCommandNameExpression;
3445
+ private resolveTitleExpression;
3446
+ private executeCommand;
3447
+ private evaluateActionOptions;
3448
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPEntityDataSelectorRowActionsService, never>;
3449
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPEntityDataSelectorRowActionsService>;
3450
+ }
3451
+
3452
+ interface AXPEntityDataSelectorSelectionOptions {
3453
+ multiple?: boolean;
3454
+ selectedItemIds?: string[] | number[];
3455
+ /** Allow confirming with no selection (clears the lookup value). Default: true. */
3456
+ allowUnselect?: boolean;
3457
+ }
3458
+ interface AXPEntityDataSelectorGridOptions {
3459
+ columns?: string[];
3460
+ pageSize?: number;
3461
+ }
3462
+ interface AXPEntityDataSelectorFilterOptions {
3463
+ value?: AXDataSourceFilterOption | null;
3464
+ parent?: AXDataSourceFilterOption | null;
3465
+ }
3466
+ interface AXPEntityDataSelectorSearchOptions {
3467
+ fields?: string[];
3468
+ initial?: string;
3469
+ }
3470
+ interface AXPEntityDataSelectorSortOptions {
3471
+ fields?: {
3472
+ name: string;
3473
+ dir: 'asc' | 'desc';
3474
+ }[];
3475
+ }
3476
+ interface AXPEntityDataSelectorCategoryFilterOptions {
3477
+ field: string;
3478
+ operator?: 'equal' | 'contains' | 'in';
3479
+ }
3480
+ interface AXPEntityDataSelectorCategoryOptions {
3481
+ /** When false, category sidebar is hidden. Default: true (auto-detect from entity plugin). */
3482
+ enabled?: boolean;
3483
+ title?: string;
3484
+ width?: string;
3485
+ filter?: AXPEntityDataSelectorCategoryFilterOptions;
3486
+ dataSource?: AXPCategoryTreeDataSource;
3487
+ }
3488
+ interface AXPEntityDataSelectorCreateOptions {
3489
+ mode?: AXPDataSelectorAllowCreate;
3490
+ }
3491
+ /** Nested options for {@link AXPEntityDataSelectorService.open}. */
3492
+ interface AXPEntityDataSelectorOpenOptions {
3493
+ entity: AXPEntity;
3494
+ title: string;
3495
+ selection?: AXPEntityDataSelectorSelectionOptions;
3496
+ grid?: AXPEntityDataSelectorGridOptions;
3497
+ filter?: AXPEntityDataSelectorFilterOptions;
3498
+ search?: AXPEntityDataSelectorSearchOptions;
3499
+ sort?: AXPEntityDataSelectorSortOptions;
3500
+ category?: AXPEntityDataSelectorCategoryOptions;
3501
+ create?: AXPEntityDataSelectorCreateOptions;
3502
+ /** Entity list row actions to expose in the selector grid (matched by command name). */
3503
+ rowActions?: AXPEntityDataSelectorRowActionsConfig;
3504
+ }
3505
+ /**
3506
+ * @deprecated Use {@link AXPEntityDataSelectorOpenOptions}. Will be removed in a future release.
3507
+ */
2863
3508
  interface AXPEntityDataSelectorOptions {
2864
3509
  entity: AXPEntity;
2865
3510
  title: string;
2866
3511
  allowMultiple?: boolean;
3512
+ /** Allow confirming with no selection (clears the lookup value). Default: true. */
3513
+ allowUnselect?: boolean;
2867
3514
  filters?: AXDataSourceFilterOption | null;
2868
3515
  parentFilters?: AXDataSourceFilterOption | null;
2869
3516
  columns?: string[];
@@ -2883,20 +3530,39 @@ interface AXPEntityDataSelectorOptions {
2883
3530
  width?: string;
2884
3531
  };
2885
3532
  showCategoryFilter?: boolean;
3533
+ rowActions?: AXPEntityDataSelectorRowActionsConfig;
2886
3534
  }
3535
+ type AXPEntityDataSelectorOpenInput = AXPEntityDataSelectorOpenOptions | AXPEntityDataSelectorOptions;
2887
3536
  interface AXPEntityDataSelectorResult {
2888
3537
  items: any[];
2889
3538
  }
3539
+ /**
3540
+ * Returns true when flat (legacy) option fields are present on the input object.
3541
+ */
3542
+ declare function isLegacyEntityDataSelectorOptions(options: AXPEntityDataSelectorOpenInput): options is AXPEntityDataSelectorOptions;
3543
+ /**
3544
+ * Maps deprecated flat options to {@link AXPEntityDataSelectorOpenOptions}.
3545
+ */
3546
+ declare function mapLegacyEntityDataSelectorOptions(legacy: AXPEntityDataSelectorOptions): AXPEntityDataSelectorOpenOptions;
3547
+ /**
3548
+ * Normalizes legacy flat or nested options to {@link AXPEntityDataSelectorOpenOptions}.
3549
+ * When both shapes are mixed, nested groups take precedence over mapped legacy values.
3550
+ */
3551
+ declare function normalizeEntityDataSelectorOptions(options: AXPEntityDataSelectorOpenInput): AXPEntityDataSelectorOpenOptions;
2890
3552
  declare class AXPEntityDataSelectorService {
2891
3553
  private readonly dataSelectorService;
2892
3554
  private readonly filterOperatorMiddleware;
2893
3555
  private readonly widgetResolver;
2894
3556
  private readonly entityResolver;
2895
3557
  private readonly commandService;
3558
+ private readonly categoryTreeService;
3559
+ private readonly translationService;
3560
+ private readonly rowActionsService;
2896
3561
  /**
2897
- * Open entity data selector popup
3562
+ * Open entity data selector popup.
3563
+ * Accepts nested {@link AXPEntityDataSelectorOpenOptions} or deprecated flat {@link AXPEntityDataSelectorOptions}.
2898
3564
  */
2899
- open(options: AXPEntityDataSelectorOptions): Promise<AXPEntityDataSelectorResult | null>;
3565
+ open(options: AXPEntityDataSelectorOpenInput): Promise<AXPEntityDataSelectorResult | null>;
2900
3566
  /**
2901
3567
  * Execute Entity:Create and return created item.
2902
3568
  * Used by lookup widget and data selector for inline create.
@@ -2907,6 +3573,10 @@ declare class AXPEntityDataSelectorService {
2907
3573
  * Call this when receiving items from any source (create, API, selector).
2908
3574
  */
2909
3575
  normalizeItemContactArrays(item: any): any;
3576
+ /**
3577
+ * Apply category sidebar config from normalized options or entity plugin auto-detection.
3578
+ */
3579
+ private applyCategoryFilter;
2910
3580
  /**
2911
3581
  * Create data selector configuration from entity options
2912
3582
  */
@@ -2938,9 +3608,26 @@ declare class AXPEntityDataSelectorService {
2938
3608
  */
2939
3609
  private normalizeContactArrays;
2940
3610
  /**
2941
- * Create category tree data source from category entity key
3611
+ * Create category tree data source from category entity key.
3612
+ * Uses the same {@link AXPCategoryTreeService} as the entity master list category sidebar.
2942
3613
  */
2943
3614
  private createCategoryTreeDataSource;
3615
+ /**
3616
+ * Build category tree data source callbacks backed by shared category tree service.
3617
+ */
3618
+ private buildCategoryTreeDataSource;
3619
+ /**
3620
+ * Map a category entity row to {@link AXPCategoryEntity} for the reusable category tree component.
3621
+ */
3622
+ private mapCategoryItemToEntity;
3623
+ /**
3624
+ * Map a lazy-loaded tree node to {@link AXPCategoryEntity}.
3625
+ */
3626
+ private mapCategoryTreeNodeToEntity;
3627
+ /**
3628
+ * Resolve category display text, including multi-language titles.
3629
+ */
3630
+ private resolveCategoryText;
2944
3631
  /**
2945
3632
  * Merge custom and parent filters into data source query
2946
3633
  */
@@ -2985,9 +3672,11 @@ declare class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent<any>
2985
3672
  protected placeholder: _angular_core.Signal<string>;
2986
3673
  protected filterMode: _angular_core.Signal<boolean>;
2987
3674
  protected multiple: _angular_core.Signal<boolean>;
3675
+ protected allowUnselect: _angular_core.Signal<boolean>;
2988
3676
  protected look: _angular_core.Signal<AXPLookupWidgetLookType>;
2989
3677
  protected displayField: _angular_core.Signal<string>;
2990
3678
  protected allowCreate: _angular_core.Signal<"none" | "full" | "quick">;
3679
+ protected selectorRowActions: _angular_core.Signal<AXPLookupSelectorRowActionsConfig | undefined>;
2991
3680
  protected valueField: _angular_core.Signal<string>;
2992
3681
  protected displayFormat: _angular_core.Signal<string | undefined>;
2993
3682
  protected conditions?: AXPQueryFilter[];
@@ -3048,6 +3737,7 @@ declare class AXPLookupWidgetColumnComponent extends AXPColumnWidgetComponent<an
3048
3737
  protected columnResolve: _angular_core.Signal<AXPLookupColumnResolveOptions | undefined>;
3049
3738
  protected resolveStrategy: _angular_core.Signal<AXPLookupColumnResolveStrategy>;
3050
3739
  protected isHydratedStrategy: _angular_core.Signal<boolean>;
3740
+ protected detailPopoverEnabled: _angular_core.Signal<boolean>;
3051
3741
  protected isMorePopoverOpen: _angular_core.WritableSignal<boolean>;
3052
3742
  protected selectedItemIndex: _angular_core.WritableSignal<number>;
3053
3743
  protected resolvedPopoverItems: _angular_core.WritableSignal<any[]>;
@@ -3745,5 +4435,5 @@ declare class AXPShowListViewAction extends AXPWorkflowAction {
3745
4435
  }
3746
4436
  declare const AXPShowListViewWorkflow: AXPWorkflow;
3747
4437
 
3748
- export { AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, 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, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, buildAXPRecordWorkflowInfo, canPersistEntityListState, cloneLayoutArrays, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, formatLookupItemDisplay, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, isAXPMiddlewareAbortError, isCategoryEntity, isCategoryFilter, isUnresolvedLookupDisplayTemplate, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mergeForeignKeyFieldIntoCreateActions, normalizeEntityListPersistenceMode, normalizeListPaging, normalizeLookupDisplayTemplate, provideEntity, resolveEntityPluginDetailPageOrder, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
3749
- export type { AXPAuditEvent, AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayOptions, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRecordWorkflowInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowListViewCondition, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };
4438
+ export { ATTACHMENTS_PAGE_COMPONENT_KEY, AXMEntityCrudService, AXMEntityCrudServiceImpl, AXPCategoryTreeService, AXPCreateEntityCommand, AXPCreateEntityWorkflow, AXPDataSeederService, AXPDeleteEntityWorkflow, AXPEditFileUploaderCommand, AXPEntitiesListDataSourceDefinition, AXPEntityApplyUpdatesAction, AXPEntityCategoryTreeSelectorComponent, AXPEntityCategoryWidget, AXPEntityCategoryWidgetColumnComponent, AXPEntityCategoryWidgetEditComponent, AXPEntityCategoryWidgetViewComponent, AXPEntityCommandTriggerViewModel, AXPEntityCreateEvent, AXPEntityCreatePopupAction, AXPEntityCreateSubmittedAction, AXPEntityCreateViewElementViewModel, AXPEntityCreateViewModelFactory, AXPEntityCreateViewSectionViewModel, AXPEntityDataProvider, AXPEntityDataProviderImpl, AXPEntityDataSelectorRowActionsService, AXPEntityDataSelectorService, AXPEntityDefinitionProviderWidget, AXPEntityDefinitionProviderWidgetEditComponent, AXPEntityDefinitionRegistryService, AXPEntityDeletedEvent, AXPEntityDetailListViewModel, AXPEntityDetailPopoverComponent, AXPEntityDetailPopoverService, AXPEntityDetailViewModelFactory, AXPEntityDetailViewModelResolver, AXPEntityEventDispatcherService, AXPEntityEventsKeys, AXPEntityFormBuilderService, AXPEntityListPersistenceModeDefault, AXPEntityListTableService, AXPEntityListToolbarService, AXPEntityListViewCardFieldViewModel, AXPEntityListViewColumnViewModel, AXPEntityListViewModelFactory, AXPEntityListViewModelResolver, AXPEntityListWidget, AXPEntityListWidgetViewComponent, AXPEntityMasterCreateViewModel, AXPEntityMasterListCardSelectActionName, AXPEntityMasterListViewModel, AXPEntityMasterListViewQueryViewModel, AXPEntityMasterSingleElementViewModel, AXPEntityMasterSingleViewGroupViewModel, AXPEntityMasterSingleViewModel, AXPEntityMasterUpdateElementViewModel, AXPEntityMasterUpdateViewModel, AXPEntityMasterUpdateViewModelFactory, AXPEntityMiddleware, AXPEntityModifyConfirmedAction, AXPEntityModifyEvent, AXPEntityModifySectionPopupAction, AXPEntityModule, AXPEntityPerformDeleteAction, AXPEntityPreloadFiltersContainerComponent, AXPEntityPreloadFiltersViewModel, AXPEntityPreloadFiltersViewModelResolver, AXPEntityResolver, AXPEntityService, AXPEntityStorageService, AXPEntityUpdateViewSectionViewModel, AXPFileListComponent, AXPFileUploaderLoadFilesQuery, AXPFileUploaderSaveFilesCommand, AXPFileUploaderWidget, AXPFileUploaderWidgetColumnComponent, AXPFileUploaderWidgetEditComponent, AXPFileUploaderWidgetService, AXPFileUploaderWidgetViewComponent, AXPGetEntityDetailsQuery, AXPLayoutOrderingConfigService, AXPLookupWidget, AXPLookupWidgetColumnComponent, AXPLookupWidgetEditComponent, AXPLookupWidgetViewComponent, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXPModifyEntitySectionWorkflow, AXPMultiSourceDefinitionProviderContext, AXPMultiSourceDefinitionProviderService, AXPMultiSourceFederatedSearchService, AXPMultiSourceSelectorComponent, AXPMultiSourceSelectorService, AXPMultiSourceSelectorWidget, AXPMultiSourceSelectorWidgetColumnComponent, AXPMultiSourceSelectorWidgetEditComponent, AXPMultiSourceSelectorWidgetViewComponent, AXPMultiSourceType, AXPOpenEntityDetailsCommand, AXPQuickEntityModifyPopupAction, AXPQuickModifyEntityWorkflow, AXPRelatedColumnEnrichmentService, AXPRelatedColumnMetadataResolver, AXPSelectorStructureWidget, AXPSelectorStructureWidgetColumnComponent, AXPSelectorStructureWidgetEditComponent, AXPSelectorStructureWidgetViewComponent, AXPShowDetailViewAction, AXPShowDetailsViewWorkflow, AXPShowListViewAction, AXPShowListViewWorkflow, AXPTruncatedBreadcrumbComponent, AXPUpdateEntityCommand, AXPViewEntityDetailsCommand, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY, 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, AXP_MULTI_SOURCE_DEFINITION_PROVIDER, AXP_RECORD_WORKFLOW_INFO_CORRELATION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_DEFINITION_ID_FIELD, AXP_RECORD_WORKFLOW_INFO_INSTANCE_ID_FIELD, DEFAULT_COLUMN_ORDER, DEFAULT_PAIR_SPAN_RULES, DEFAULT_PROPERTY_ORDER, DEFAULT_SECTION_ORDER, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY, EntityBuilder, EntityDataAccessor, actionExists, applyDataSourcePagingWithoutLoad, attachmentFieldCount, attachmentsPlugin, attachmentsSemanticallyEqual, axpCreateEntityAiToolInputDefaults, axpCreateEntityCommandDefinition, buildAXPRecordWorkflowInfo, canPersistEntityListState, cloneLayoutArrays, collectEntityQuickSearchFieldPaths, collectNestedCreateHiddenProperties, collectNestedFieldPathsFromEntityColumns, collectQuickSearchPathsFromSingleEntityDefinition, columnOrderingMiddleware, columnOrderingMiddlewareProvider, columnWidthMiddleware, columnWidthMiddlewareProvider, committedAttachments, computeEntityAggregates, createColumnOrderingMiddlewareProvider, createLayoutOrderingMiddlewareProvider, createModifierContext, defaultCardLayoutMiddleware, defaultCardLayoutMiddlewareProvider, defaultMultiLanguageMiddleware, defaultMultiLanguageMiddlewareProvider, detectEntityChanges, ensureLayoutPropertyView, ensureLayoutSection, ensureListActions, entityDetailsCreateActions, entityDetailsCreateActionsDeferredParent, entityDetailsCrudActions, entityDetailsEditAction, entityDetailsNewEditAction, entityDetailsReferenceCondition, entityDetailsReferenceCreateActions, entityDetailsSimpleCondition, entityMasterBulkDeleteAction, entityMasterCreateAction, entityMasterCrudActions, entityMasterDeleteAction, entityMasterEditAction, entityMasterRecordActions, entityMasterViewAction, entityOverrideDetailsViewAction, eventDispatchMiddleware, filterSortEntityRows, findEntityListRowDataInTree, fingerprintAttachmentItem, fingerprintAttachments, formatLookupItemDisplay, getDataSourcePageIndex, getEntityListRowId, getMasterInterfacePropertySortKey, getRecordWorkflowCorrelationId, getRecordWorkflowInstanceId, hasFileUploaderTitleOrDescriptionFields, isAXPMiddlewareAbortError, isAttachmentListEntry, isCategoryEntity, isCategoryFilter, isFileListItem, isFileUploaderEditDialogAuto, isLegacyEntityDataSelectorOptions, isUnresolvedLookupDisplayTemplate, layoutOrderingMiddlewareFactory, layoutOrderingMiddlewareProvider, mapLegacyEntityDataSelectorOptions, mergeForeignKeyFieldIntoCreateActions, normalizeEntityDataSelectorOptions, normalizeEntityFieldToFileList, normalizeEntityListPersistenceMode, normalizeListPaging, normalizeLookupDisplayTemplate, persistedAttachments, provideEntity, resolveEntityPluginDetailPageOrder, resolveFileUploaderEditDialog, resolveFileUploaderEntityScope, resolveLookupDisplayField, resolveLookupDisplayTemplate, restoreEntityListExpandedRows, runEntityQuery, searchResultDescriptionMiddleware, searchResultDescriptionMiddlewareProvider, shouldLoadEntityListStateFromStorage, shouldResetEntityListStateOnRouteEntry };
4439
+ export type { AXPAuditEvent, AXPCollectEntityQuickSearchPathsResolver, AXPDataSeeder, AXPEntityActionPlugin, AXPEntityAggregateMeasure, AXPEntityAggregateOptions, AXPEntityAggregateReducerType, AXPEntityAggregateRequest, AXPEntityAggregateResult, AXPEntityCategoryWidgetOptions, AXPEntityChangeSet, AXPEntityConfigs, AXPEntityCreateDto, AXPEntityDataSelectorCategoryFilterOptions, AXPEntityDataSelectorCategoryOptions, AXPEntityDataSelectorCreateOptions, AXPEntityDataSelectorFilterOptions, AXPEntityDataSelectorGridOptions, AXPEntityDataSelectorOpenInput, AXPEntityDataSelectorOpenOptions, AXPEntityDataSelectorOptions, AXPEntityDataSelectorResult, AXPEntityDataSelectorRowActionsConfig, AXPEntityDataSelectorSearchOptions, AXPEntityDataSelectorSelectionOptions, AXPEntityDataSelectorSortOptions, AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader, AXPEntityDeleteOptions, AXPEntityDetailDto, AXPEntityDetailPopoverOptions, AXPEntityLayoutLike, AXPEntityLayoutPropertyLike, AXPEntityLayoutSectionLike, AXPEntityListEntry, AXPEntityListExpandRowRef, AXPEntityListInput, AXPEntityListItemDto, AXPEntityListPagingState, AXPEntityListPersistenceMode, AXPEntityListToolbarConvertOptions, AXPEntityMasterListCardLayout, AXPEntityMasterListCardSecondaryActionItem, AXPEntityMasterListViewSortPropViewModel, AXPEntityModel, AXPEntityModifier, AXPEntityModifierContext, AXPEntityModifierProvider, AXPEntityOutputDto, AXPEntityPreloadEntity, AXPEntityQueryAllOptions, AXPEntityQueryAllResult, AXPEntityStorageContext, AXPEntityStorageMiddleware, AXPEntityUpdateDto, AXPFileUploaderEditDialogFieldOptions, AXPFileUploaderEditDialogMode, AXPFileUploaderEditDialogOptions, AXPFileUploaderEntityFilesScope, AXPFileUploaderLoadFilesInput, AXPFileUploaderLoadFilesResult, AXPFileUploaderSaveFilesInput, AXPFileUploaderSaveFilesResult, AXPFileUploaderShowFileListEntityContext, AXPFileUploaderShowFileListOptions, AXPFileUploaderUploadActionDescriptor, AXPFileUploaderWidgetColumnOptions, AXPFileUploaderWidgetDesignerOptions, AXPFileUploaderWidgetEditOptions, AXPFileUploaderWidgetOptions, AXPFileUploaderWidgetPrintOptions, AXPFileUploaderWidgetViewOptions, AXPGetEntityDetailsQueryInput, AXPGetEntityDetailsQueryResult, AXPLookupColumnResolveOptions, AXPLookupColumnResolveStrategy, AXPLookupDisplayOptions, AXPLookupPopoverOptions, AXPLookupSelectorRowActionsConfig, AXPLookupWidgetLookType, AXPLookupWidgetOptions, AXPMultiSourceDefinition, AXPMultiSourceDefinitionProvider, AXPMultiSourceItem, AXPMultiSourceRef, AXPMultiSourceSearchResult, AXPMultiSourceSearchResultItem, AXPMultiSourceSelectorOpenConfig, AXPMultiSourceSelectorResult, AXPMultiSourceSelectorWidgetOptions, AXPMultiSourceValue, AXPOpenEntityDetailsCommandInput, AXPRecordAuditInfo, AXPRecordOwnershipInfo, AXPRecordStateInfo, AXPRecordWorkflowInfo, AXPRelatedColumnMetadata, AXPSelectorStructureFieldDef, AXPSelectorStructureIdentityDisplay, AXPSelectorStructurePresentationMode, AXPSelectorStructureSelectorMode, AXPSelectorStructureStructureMode, AXPSelectorStructureWidgetColumnOptions, AXPSelectorStructureWidgetDesignerOptions, AXPSelectorStructureWidgetEditOptions, AXPSelectorStructureWidgetOptions, AXPSelectorStructureWidgetPrintOptions, AXPSelectorStructureWidgetViewOptions, AXPShowListViewCondition, AttachmentsDisplayMode, AttachmentsPluginOptions, CategoryQueryEvent, CategoryQueryFunction, CategoryQueryResult, CategoryTreeConfig, CategoryTreeNodeData, EntityDetailPluginPageSlot, PairSpanRule, ResolveEntityPluginDetailPageOrderOptions, RunEntityQueryAdapters, SectionOrderConfig, SkipEntityComponentPageRef };