@acorex/platform 21.0.0-next.5 → 21.0.0-next.51

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 (124) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +281 -23
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs +163 -0
  4. package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-common.mjs +1047 -263
  6. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-core.mjs +1138 -510
  8. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-domain.mjs +557 -826
  10. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-builder.mjs +804 -186
  12. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs +121 -0
  14. package/fesm2022/acorex-platform-layout-components-binding-expression-editor-popup.component-CXEdvDTf.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-layout-components.mjs +6208 -2344
  16. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-designer.mjs +456 -204
  18. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-entity.mjs +18632 -10286
  20. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-views.mjs +538 -168
  22. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs +720 -456
  24. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  25. package/fesm2022/{acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs → acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs} +10 -10
  26. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-Dy7jF-oD.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs +103 -0
  28. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
  29. package/fesm2022/{acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs → acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs} +6 -7
  30. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-C_EPAvCU.mjs.map +1 -0
  31. package/fesm2022/{acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs → acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs} +12 -12
  32. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-D10yO28c.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs +116 -0
  34. package/fesm2022/acorex-platform-layout-widgets-repeater-widget-column.component-BGO75IMz.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs} +6 -6
  36. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-DmzNTYiS.mjs.map +1 -0
  37. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs} +5 -5
  38. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-BNG_588B.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs → acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs} +6 -6
  40. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Vo4fWHtX.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-layout-widgets.mjs +8728 -4269
  42. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-native.mjs +8 -7
  44. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  45. package/fesm2022/acorex-platform-runtime.mjs +391 -166
  46. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  47. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs +160 -0
  48. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
  49. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs +120 -0
  50. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +19 -26
  52. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
  53. package/fesm2022/{acorex-platform-themes-default-error-401.component-cfREo88K.mjs → acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs} +4 -4
  54. package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +1 -0
  55. package/fesm2022/{acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs → acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs} +4 -4
  56. package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +1 -0
  57. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs +19 -0
  58. package/fesm2022/acorex-platform-themes-default-error-offline.component-DR6G8gPC.mjs.map +1 -0
  59. package/fesm2022/acorex-platform-themes-default.mjs +1836 -67
  60. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  61. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs → acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs} +6 -6
  62. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-CqkWJYdv.mjs.map +1 -0
  63. package/fesm2022/{acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs → acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs} +6 -6
  64. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-BOTuLdWN.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs} +24 -25
  66. package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +1 -0
  67. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
  68. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
  69. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs +86 -0
  70. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-themes-shared.mjs +674 -573
  72. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  73. package/fesm2022/acorex-platform-workflow.mjs +1715 -535
  74. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  75. package/fesm2022/acorex-platform.mjs.map +1 -1
  76. package/package.json +37 -37
  77. package/{auth/index.d.ts → types/acorex-platform-auth.d.ts} +241 -4
  78. package/{common/index.d.ts → types/acorex-platform-common.d.ts} +598 -80
  79. package/{core/index.d.ts → types/acorex-platform-core.d.ts} +595 -132
  80. package/{domain/index.d.ts → types/acorex-platform-domain.d.ts} +744 -412
  81. package/{layout/builder/index.d.ts → types/acorex-platform-layout-builder.d.ts} +193 -48
  82. package/types/acorex-platform-layout-components.d.ts +2979 -0
  83. package/{layout/designer/index.d.ts → types/acorex-platform-layout-designer.d.ts} +96 -18
  84. package/{layout/entity/index.d.ts → types/acorex-platform-layout-entity.d.ts} +1601 -261
  85. package/{layout/views/index.d.ts → types/acorex-platform-layout-views.d.ts} +116 -55
  86. package/{layout/widget-core/index.d.ts → types/acorex-platform-layout-widget-core.d.ts} +272 -124
  87. package/{layout/widgets/index.d.ts → types/acorex-platform-layout-widgets.d.ts} +1055 -157
  88. package/{native/index.d.ts → types/acorex-platform-native.d.ts} +0 -7
  89. package/types/acorex-platform-runtime.d.ts +571 -0
  90. package/{themes/default/index.d.ts → types/acorex-platform-themes-default.d.ts} +122 -5
  91. package/{themes/shared/index.d.ts → types/acorex-platform-themes-shared.d.ts} +1 -1
  92. package/types/acorex-platform-workflow.d.ts +1884 -0
  93. package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs +0 -71
  94. package/fesm2022/acorex-platform-common-common-settings.provider-zhqNP3xb.mjs.map +0 -1
  95. package/fesm2022/acorex-platform-layout-widgets-button-widget-designer.component-C3VoBb_b.mjs.map +0 -1
  96. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs +0 -135
  97. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
  98. package/fesm2022/acorex-platform-layout-widgets-image-preview.popup-V31OpYah.mjs.map +0 -1
  99. package/fesm2022/acorex-platform-layout-widgets-page-widget-designer.component-BtZMBxYp.mjs.map +0 -1
  100. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
  101. package/fesm2022/acorex-platform-layout-widgets-tabular-data-view-popup.component-y8vjUiVs.mjs.map +0 -1
  102. package/fesm2022/acorex-platform-layout-widgets-text-block-widget-designer.component-Df1BFkSa.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs +0 -157
  104. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
  105. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs +0 -1542
  106. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
  108. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
  109. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
  110. package/fesm2022/acorex-platform-themes-default-error-401.component-cfREo88K.mjs.map +0 -1
  111. package/fesm2022/acorex-platform-themes-default-error-404.component-CdCV5ZoA.mjs.map +0 -1
  112. package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs +0 -19
  113. package/fesm2022/acorex-platform-themes-default-error-offline.component-E7SzBcAt.mjs.map +0 -1
  114. package/fesm2022/acorex-platform-themes-shared-icon-chooser-column.component-C0EpfU2k.mjs.map +0 -1
  115. package/fesm2022/acorex-platform-themes-shared-icon-chooser-view.component-9W52W6Nu.mjs.map +0 -1
  116. package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
  117. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs +0 -65
  118. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-DTnfRy5f.mjs.map +0 -1
  119. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs +0 -64
  120. package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-DY0JtT1v.mjs.map +0 -1
  121. package/layout/components/index.d.ts +0 -1669
  122. package/runtime/index.d.ts +0 -307
  123. package/workflow/index.d.ts +0 -1808
  124. /package/{index.d.ts → types/acorex-platform.d.ts} +0 -0
@@ -1,7 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Type, InjectionToken, OnInit, ElementRef, EventEmitter, OnChanges, Renderer2, SimpleChanges, ViewContainerRef, OnDestroy, Injector, PipeTransform, Provider } from '@angular/core';
3
- import { AXStyleColorType, AXDataSource, AXDataSourceSortOption, AXDataSourceFilterOption, AXDataSourceQuery, AXDataSourceCallbackResult } from '@acorex/cdk/common';
2
+ import { Type, InjectionToken, OnInit, ViewContainerRef, ModuleWithProviders, ElementRef, EventEmitter, OnChanges, Renderer2, SimpleChanges, OnDestroy, Injector, PipeTransform, Provider } from '@angular/core';
3
+ import { AXStyleColorType, AXDataSource, AXDataSourceSortOption, AXDataSourceFilterOption, AXStyleLookType, AXDataSourceQuery, AXDataSourceCallbackResult } from '@acorex/cdk/common';
4
+ import { AXMultiLanguageString } from '@acorex/core/translation';
4
5
  import * as _ngrx_signals from '@ngrx/signals';
6
+ import * as _acorex_platform_core from '@acorex/platform/core';
5
7
  import { Observable } from 'rxjs';
6
8
  import { NavigationExtras } from '@angular/router';
7
9
 
@@ -899,7 +901,7 @@ declare function getActionButton(actionType: string): {
899
901
  interface AXPColumnQuery {
900
902
  name: string;
901
903
  title: string;
902
- visible: boolean;
904
+ visible: boolean | string;
903
905
  }
904
906
 
905
907
  type AXPPartialNested<T> = {
@@ -907,6 +909,28 @@ type AXPPartialNested<T> = {
907
909
  };
908
910
  declare function getNestedKeys(obj: any, prefix?: string): string[];
909
911
  type AXPExpression = string;
912
+ /**
913
+ * Plain or rich text that may be localized: a single string or a map of locale code to string.
914
+ * Use when multi-language editing stores `Record<locale, string>` instead of one string.
915
+ *
916
+ * @example Single value (one locale or shared text)
917
+ * `"<p>Pick one</p>"`
918
+ *
919
+ * @example Per-locale map (e.g. after multi-language editor save)
920
+ * `{ "en-US": "<p>Pick one</p>", "fa-IR": "<p>یکی را انتخاب کنید</p>" }`
921
+ */
922
+ type AXPMultiLanguageString = AXMultiLanguageString;
923
+ /**
924
+ * Shared category descriptor for widgets, query catalog tooling, and other definition groupings.
925
+ */
926
+ interface AXPDefinitionCategory {
927
+ name: string;
928
+ title: AXPMultiLanguageString;
929
+ order: number;
930
+ icon?: string;
931
+ }
932
+ /** Normalizes definition categories to an array for iteration and serialization. */
933
+ declare function normalizeDefinitionCategories(categories?: AXPDefinitionCategory | AXPDefinitionCategory[]): AXPDefinitionCategory[];
910
934
  type AXPMetaData = Record<string, any>;
911
935
  type AXPOptionsData<T extends Record<string, unknown> = Record<string, any>> = T;
912
936
  interface AXPValueUnit {
@@ -943,8 +967,10 @@ interface AXPContent {
943
967
  content: string;
944
968
  contentType: AXPContentType;
945
969
  }
970
+ type AXPMaybePromise<T = unknown> = T | Promise<T>;
946
971
 
947
972
  type AXPDataSource = string | AXDataSource | any[];
973
+ type AXPDataType = 'string' | 'number' | 'boolean' | 'date' | 'object' | 'array' | 'blob';
948
974
  interface AXPPagedListResult<T = any> {
949
975
  items: T[];
950
976
  total: number;
@@ -958,31 +984,142 @@ interface AXPQueryRequest {
958
984
  [key: string]: string;
959
985
  };
960
986
  }
961
- type AXPDataType = 'string' | 'number' | 'object' | 'boolean' | 'array';
987
+ /**
988
+ * Category Entity - Base interface for hierarchical category structures
989
+ *
990
+ * This interface provides a standardized data model for category entities across the platform.
991
+ * All category entities (e.g., ReportCategory, ActivityCategory, WorkflowCategory) extend this interface
992
+ * to ensure consistency in data structure and field names.
993
+ *
994
+ * @template TKey - The type of the identifier key (default: string)
995
+ *
996
+ * @example
997
+ * ```typescript
998
+ * const category: AXPCategoryEntity = {
999
+ * id: 'cat-001',
1000
+ * title: 'Electronics',
1001
+ * description: 'Electronic products',
1002
+ * parentId: undefined, // Root category
1003
+ * childrenCount: 2, // Has 2 direct child categories
1004
+ * itemsCount: 5, // Has 5 items directly in this category
1005
+ * totalChildrenCount: 6, // Total of 6 nested categories (including grandchildren)
1006
+ * totalItemsCount: 23 // Total of 23 items in entire category tree
1007
+ * };
1008
+ * ```
1009
+ */
962
1010
  interface AXPCategoryEntity<TKey = string> {
1011
+ /** Unique identifier for the category */
963
1012
  id: TKey;
964
- title: string;
965
- description?: string;
1013
+ /** Display name of the category (required) */
1014
+ title: AXPMultiLanguageString;
1015
+ /** Optional description of the category */
1016
+ description?: AXPMultiLanguageString;
1017
+ /** Parent category ID (undefined for root categories) */
966
1018
  parentId?: TKey;
1019
+ /**
1020
+ * Count of direct child categories only (not recursive)
1021
+ *
1022
+ * Used by UI components to determine if a category has children and should show an expand icon.
1023
+ * This enables efficient lazy loading - components can check this property without querying the API.
1024
+ *
1025
+ * @example
1026
+ * - Category with 2 direct children: `childrenCount: 2`
1027
+ * - Leaf category (no children): `childrenCount: 0`
1028
+ *
1029
+ * @remarks
1030
+ * - Always set to `0` for leaf categories
1031
+ * - Does not include grandchildren or nested descendants
1032
+ * - Automatically maintained by middleware for category entities
1033
+ */
967
1034
  childrenCount: number;
1035
+ /**
1036
+ * Count of items directly assigned to this category (not recursive)
1037
+ *
1038
+ * Represents the number of items (e.g., reports, activities, workflows) that are directly
1039
+ * assigned to this category. Does not include items from child categories.
1040
+ *
1041
+ * Useful for:
1042
+ * - Displaying item counts per category in UI (e.g., "5 reports" badge)
1043
+ * - Optimizing queries (skip API call if itemsCount === 0)
1044
+ * - Showing category statistics
1045
+ *
1046
+ * @example
1047
+ * - Category with 5 reports directly assigned: `itemsCount: 5`
1048
+ * - Category with no direct items: `itemsCount: 0` or `undefined`
1049
+ *
1050
+ * @remarks
1051
+ * - Does not include items from child categories
1052
+ * - Can be calculated dynamically or stored
1053
+ * - Optional - may be undefined if not needed
1054
+ */
968
1055
  itemsCount?: number;
969
- totalChildren?: number;
970
- totalItems?: number;
1056
+ /**
1057
+ * Recursive count of all nested child categories (includes all descendants)
1058
+ *
1059
+ * Represents the total number of categories in the entire subtree starting from this category.
1060
+ * Includes children, grandchildren, and all nested descendants.
1061
+ *
1062
+ * Useful for:
1063
+ * - Analytics and summary displays
1064
+ * - Showing complete category tree scope
1065
+ * - Performance metrics
1066
+ *
1067
+ * @example
1068
+ * Root category with:
1069
+ * - 2 direct children
1070
+ * - Each child has 2 children (4 grandchildren)
1071
+ * Result: `totalChildrenCount: 6` (2 + 4)
1072
+ *
1073
+ * @remarks
1074
+ * - Optional - typically used for analytics
1075
+ * - Includes all nested levels (recursive)
1076
+ * - Can be expensive to calculate for large trees
1077
+ */
1078
+ totalChildrenCount?: number;
1079
+ /**
1080
+ * Recursive count of all items in this category and all descendants
1081
+ *
1082
+ * Represents the total number of items (e.g., reports, activities, workflows) in the entire
1083
+ * category tree, including items from this category and all nested child categories.
1084
+ *
1085
+ * Useful for:
1086
+ * - Analytics and summary displays
1087
+ * - Showing complete scope of a category branch
1088
+ * - Dashboard statistics
1089
+ *
1090
+ * @example
1091
+ * Category with:
1092
+ * - 5 items directly assigned
1093
+ * - 1 child category with 3 items
1094
+ * Result: `totalItemsCount: 8` (5 + 3)
1095
+ *
1096
+ * @remarks
1097
+ * - Optional - typically used for analytics
1098
+ * - Includes items from all nested categories (recursive)
1099
+ * - Can be expensive to calculate for large trees
1100
+ */
1101
+ totalItemsCount?: number;
971
1102
  }
972
1103
  interface AXPCategoryEntityWithItems<T> extends AXPCategoryEntity {
973
1104
  items: T[];
974
1105
  children?: AXPCategoryEntityWithItems<T>[];
975
1106
  }
1107
+ /**
1108
+ * Denormalized category row on entities and DTOs (id + localized display title).
1109
+ * Use for `categories` arrays expanded from {@link AXPCategoryEntity} assignments.
1110
+ */
1111
+ interface AXPCategoryListItem<TKey extends string = string> {
1112
+ id: TKey;
1113
+ title: AXPMultiLanguageString;
1114
+ }
976
1115
  interface AXPCategorizedEntity {
977
1116
  categoryIds: string[];
978
1117
  }
979
1118
  interface AXPCategorizedEntityDto {
980
1119
  categoryIds: string[];
981
- categories: {
982
- id: string;
983
- title: string;
984
- }[];
1120
+ categories: AXPCategoryListItem[];
985
1121
  }
1122
+ type AXPEntityOp = 'initial' | 'create' | 'update' | 'delete' | 'getOne' | 'getAll' | 'query' | 'count' | 'queryAll' | 'getMany' | 'exists' | 'upsertOne' | 'aggregate';
986
1123
 
987
1124
  type AXPWidgetTrigger = {
988
1125
  event: string;
@@ -1002,8 +1139,25 @@ interface AXPFileListItem {
1002
1139
  size?: number;
1003
1140
  status: AXPFileStatus;
1004
1141
  source?: AXPFileSource;
1142
+ meta?: AXPMetaData;
1143
+ /**
1144
+ * When true, the item cannot be renamed, removed, or reverted from the UI.
1145
+ * Independent of widget `options.readonly` (widget-level disables all edits); use this for per-row locks from the server.
1146
+ */
1147
+ readOnly?: boolean;
1148
+ title?: string;
1149
+ description?: string;
1005
1150
  }
1006
1151
 
1152
+ /**
1153
+ * Filter toolbar trigger entries (same shape as entity `schema.interface.triggers`).
1154
+ * Declared on `AXPFilterDefinition` and populated when building list filter definitions.
1155
+ */
1156
+ interface AXPFilterTriggerDefinition {
1157
+ event: string;
1158
+ action: string;
1159
+ disabled?: boolean;
1160
+ }
1007
1161
  interface AXPFilterClause extends AXDataSourceFilterOption {
1008
1162
  id?: string;
1009
1163
  order?: number;
@@ -1020,8 +1174,19 @@ interface AXPFilterDefinition extends AXPFilterClause {
1020
1174
  filterType: {
1021
1175
  advance: boolean;
1022
1176
  inline: boolean;
1177
+ preload?: {
1178
+ enabled?: boolean;
1179
+ required?: boolean;
1180
+ };
1023
1181
  };
1024
1182
  hidden?: boolean;
1183
+ /**
1184
+ * When true, the filter is not selectable. When a string, it is evaluated as an expression (e.g. `{{ ... }}`)
1185
+ * using the current filters context.
1186
+ */
1187
+ disabled?: boolean | string;
1188
+ /** Expression-driven triggers (events/actions); same semantics as entity `schema.interface.triggers`. */
1189
+ triggers?: AXPFilterTriggerDefinition[];
1025
1190
  }
1026
1191
  interface AXPFilterQuery extends Pick<AXPFilterDefinition, 'field' | 'value' | 'operator' | 'logic' | 'hidden'> {
1027
1192
  filters?: AXPFilterQuery[];
@@ -1030,10 +1195,11 @@ interface AXPFilterQuery extends Pick<AXPFilterDefinition, 'field' | 'value' | '
1030
1195
 
1031
1196
  type AXPActionMenuItem = {
1032
1197
  name?: string;
1033
- title: string;
1198
+ title: AXPMultiLanguageString;
1034
1199
  icon?: string;
1035
1200
  iconOnly?: boolean;
1036
1201
  color?: string;
1202
+ look?: AXStyleLookType;
1037
1203
  break?: boolean;
1038
1204
  items?: AXPActionMenuItem[];
1039
1205
  command?: AXPExecuteCommand;
@@ -1042,11 +1208,11 @@ type AXPActionMenuItem = {
1042
1208
  policy?: string;
1043
1209
  };
1044
1210
  type AXPBackButton = {
1045
- title: string;
1211
+ title: AXPMultiLanguageString;
1046
1212
  };
1047
1213
  type AXPBreadcrumbItem = {
1048
1214
  name?: string;
1049
- title: string;
1215
+ title: AXPMultiLanguageString;
1050
1216
  icon?: string;
1051
1217
  command?: AXPExecuteCommand;
1052
1218
  };
@@ -1055,10 +1221,16 @@ type AXPBadge = {
1055
1221
  description?: string;
1056
1222
  color?: 'primary' | 'success' | 'warning' | 'danger';
1057
1223
  };
1224
+ type AXPPageStatus = {
1225
+ definitionKey: string;
1226
+ value: string;
1227
+ dataPath?: string;
1228
+ readonly?: boolean;
1229
+ };
1058
1230
  interface AXPCommandMessage {
1059
1231
  type?: 'info' | 'success' | 'warning' | 'error';
1060
1232
  code?: string;
1061
- text: string;
1233
+ text: AXPMultiLanguageString;
1062
1234
  details?: unknown;
1063
1235
  }
1064
1236
  type AXPExecuteCommand = {
@@ -1080,7 +1252,7 @@ interface AXPQueryFetchResult<T = any> {
1080
1252
  };
1081
1253
  message?: {
1082
1254
  code?: string;
1083
- text?: string;
1255
+ text?: AXPMultiLanguageString;
1084
1256
  details?: any;
1085
1257
  };
1086
1258
  }
@@ -1093,7 +1265,7 @@ type AXPNavigateActionOptions = {
1093
1265
  };
1094
1266
  modal: {
1095
1267
  component: Type<any>;
1096
- title: string;
1268
+ title: AXPMultiLanguageString;
1097
1269
  options?: any;
1098
1270
  };
1099
1271
  };
@@ -1145,25 +1317,6 @@ declare class AXPIconLogoConfig implements AXPLogoConfig {
1145
1317
  constructor(icon: string, color?: string | undefined);
1146
1318
  }
1147
1319
 
1148
- type AXPPlatformScopeKey = 'C' | 'G' | 'P' | 'T' | 'U';
1149
- declare enum AXPPlatformScope {
1150
- Environment = "C",
1151
- Global = "G",
1152
- Platform = "P",
1153
- Tenant = "T",
1154
- User = "U"
1155
- }
1156
- declare function resolvePlatformScopeKey(name: string): AXPPlatformScopeKey;
1157
- declare function resolvePlatformScopeName(scope: AXPPlatformScopeKey): string;
1158
-
1159
- interface AXPSortDefinition {
1160
- name: string;
1161
- title: string;
1162
- dir?: 'asc' | 'desc';
1163
- }
1164
- interface AXPSortQuery extends Pick<AXPSortDefinition, 'name' | 'dir'> {
1165
- }
1166
-
1167
1320
  type AXPValidationRule = {
1168
1321
  rule: string;
1169
1322
  message?: string;
@@ -1200,6 +1353,52 @@ interface AXPReqexValidationRule extends AXPValidationRule {
1200
1353
  }
1201
1354
  type AXPStringValidationRules = (AXPRequiredValidationRule | AXPMinLengthValidationRule | AXPMaxLengthValidationRule | AXPEqualValidationRule<string> | AXPReqexValidationRule)[];
1202
1355
 
1356
+ interface AXPPropertyGroup {
1357
+ name: string;
1358
+ title: AXPMultiLanguageString;
1359
+ icon?: string;
1360
+ description?: AXPMultiLanguageString;
1361
+ order?: number;
1362
+ }
1363
+ interface AXPPropertyInterface {
1364
+ type: string;
1365
+ options: AXPOptionsData;
1366
+ triggers?: AXPWidgetTriggers;
1367
+ }
1368
+ /**
1369
+ * Platform property bag (entity fields, workflow inputs, etc.).
1370
+ *
1371
+ * For property viewer rows, use `mapAXPPropertyToWidgetProperty` from `@acorex/platform/layout/widget-core`
1372
+ * (keeps `platform/core` free of a dependency on `layout/widget-core`).
1373
+ */
1374
+ interface AXPProperty {
1375
+ name: string;
1376
+ title: AXPMultiLanguageString;
1377
+ description?: AXPMultiLanguageString;
1378
+ dataType: AXPDataType;
1379
+ validations?: AXPValidationRules;
1380
+ group?: AXPPropertyGroup | string;
1381
+ order?: number;
1382
+ interface: AXPPropertyInterface;
1383
+ }
1384
+
1385
+ type AXPPlatformScopeKey = 'P' | 'T' | 'U';
1386
+ declare enum AXPPlatformScope {
1387
+ Platform = "P",
1388
+ Tenant = "T",
1389
+ User = "U"
1390
+ }
1391
+ declare function resolvePlatformScopeKey(name: string): AXPPlatformScopeKey;
1392
+ declare function resolvePlatformScopeName(scope: AXPPlatformScopeKey): string;
1393
+
1394
+ interface AXPSortDefinition {
1395
+ name: string;
1396
+ title: string;
1397
+ dir?: 'asc' | 'desc';
1398
+ }
1399
+ interface AXPSortQuery extends Pick<AXPSortDefinition, 'name' | 'dir'> {
1400
+ }
1401
+
1203
1402
  interface AXPViewQuery {
1204
1403
  name: string;
1205
1404
  fixed: boolean;
@@ -1319,6 +1518,18 @@ interface AXPMiddlewareErrorResponse {
1319
1518
  interface AXPActivityLogChange {
1320
1519
  type: AXPSystemActionType;
1321
1520
  description: string;
1521
+ /** I18n key for field label. When set with actionKey, used for translated display. */
1522
+ fieldKey?: string;
1523
+ /** Params for fieldKey translation (e.g. for unknown-field with {{name}}). */
1524
+ fieldKeyParams?: Record<string, string>;
1525
+ /** I18n key for action (e.g. @activity-log:changes.replaced). When set with fieldKey, overrides description. */
1526
+ actionKey?: string;
1527
+ oldValue?: unknown;
1528
+ newValue?: unknown;
1529
+ /** Short human-readable summary for Change History (e.g. "Updated from 'X' to 'Y'"). Used when layout is present. */
1530
+ summary?: string;
1531
+ /** Custom layout (AXPWidgetNode) for Change History. When set, rendered via AXPLayoutRenderer instead of default fieldKey/actionKey text. */
1532
+ layout?: unknown;
1322
1533
  }
1323
1534
  interface AXPActivityLog {
1324
1535
  id: string;
@@ -1472,6 +1683,173 @@ declare class AXPDefaultColorPalettesProvider extends AXPColorPaletteProvider {
1472
1683
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPDefaultColorPalettesProvider>;
1473
1684
  }
1474
1685
 
1686
+ /**
1687
+ * Column width value can be a number (converted to pixels) or a string with any CSS unit
1688
+ * @example 150 (becomes '150px'), '300px', '50%', '2rem', '20ch'
1689
+ */
1690
+ type ColumnWidthValue = string | number;
1691
+ /**
1692
+ * Matcher for column name - can be exact string match or RegExp pattern
1693
+ * @example 'title', /^user/, /.*name$/i
1694
+ */
1695
+ type ColumnNameMatcher = string | RegExp;
1696
+ /**
1697
+ * Matcher for widget type - can be exact string match or RegExp pattern (case-insensitive)
1698
+ * @example 'text-box', /^date/, /.*editor$/i
1699
+ */
1700
+ type WidgetTypeMatcher = string | RegExp;
1701
+ /**
1702
+ * Defines a single width matching rule
1703
+ */
1704
+ interface AXPColumnWidthMatcher {
1705
+ /**
1706
+ * Match by column name (exact string or RegExp pattern)
1707
+ * Takes precedence over widgetType matching
1708
+ * @example 'title', /^user/, /.*name$/i
1709
+ */
1710
+ name?: ColumnNameMatcher;
1711
+ /**
1712
+ * Match by widget type (exact string or RegExp pattern, case-insensitive)
1713
+ * Used as fallback when name doesn't match
1714
+ * @example 'text-box', /^date/, /.*editor$/i
1715
+ */
1716
+ widgetType?: WidgetTypeMatcher;
1717
+ /**
1718
+ * Width value to apply if this matcher matches
1719
+ * Numbers are converted to pixels (e.g., 150 -> '150px')
1720
+ * Strings can include any CSS unit (e.g., '300px', '50%', '2rem')
1721
+ */
1722
+ width: ColumnWidthValue;
1723
+ /**
1724
+ * Priority for this matcher within the provider (higher = more specific, applied first)
1725
+ * Default: 0
1726
+ */
1727
+ priority?: number;
1728
+ }
1729
+ /**
1730
+ * Provider configuration for column width rules
1731
+ */
1732
+ interface AXPColumnWidthProvider {
1733
+ /**
1734
+ * Array of matchers to evaluate
1735
+ * Evaluated in priority order (highest first), then by match type (name before widgetType)
1736
+ */
1737
+ matchers: AXPColumnWidthMatcher[];
1738
+ /**
1739
+ * Priority for this provider relative to other providers (higher = applied first)
1740
+ * Default: 100
1741
+ */
1742
+ priority?: number;
1743
+ }
1744
+ /**
1745
+ * Generic column interface for width resolution
1746
+ * Works with any column type that has these properties
1747
+ */
1748
+ interface IColumnWithWidth {
1749
+ /**
1750
+ * Column name
1751
+ */
1752
+ name: string;
1753
+ /**
1754
+ * Current width (if already set)
1755
+ */
1756
+ width?: string;
1757
+ /**
1758
+ * Widget type information (optional)
1759
+ */
1760
+ widget?: {
1761
+ type: string;
1762
+ };
1763
+ /**
1764
+ * Additional options that might contain width
1765
+ */
1766
+ options?: {
1767
+ width?: string;
1768
+ };
1769
+ /**
1770
+ * For entity columns - showAs configuration
1771
+ */
1772
+ showAs?: {
1773
+ type: string;
1774
+ };
1775
+ }
1776
+
1777
+ /**
1778
+ * Service for resolving column widths based on registered providers
1779
+ * Supports matching by column name (priority) and widget type (fallback)
1780
+ * Uses multi-provider pattern for extensibility
1781
+ */
1782
+ declare class AXPColumnWidthService {
1783
+ private readonly providers;
1784
+ /**
1785
+ * Resolve width for a column based on registered providers
1786
+ * Only returns a width if column doesn't already have one set
1787
+ *
1788
+ * @param column Column to resolve width for
1789
+ * @returns Resolved width string (normalized) or undefined if no match or column already has width
1790
+ */
1791
+ resolveWidth(column: IColumnWithWidth): string | undefined;
1792
+ /**
1793
+ * Apply resolved width to a column (mutates the column)
1794
+ * Only applies if column doesn't already have a width
1795
+ *
1796
+ * @param column Column to apply width to
1797
+ * @returns true if width was applied, false if column already had width or no match found
1798
+ */
1799
+ applyWidth(column: IColumnWithWidth): boolean;
1800
+ /**
1801
+ * Collect all matchers from all providers, sorted by provider priority and matcher priority
1802
+ */
1803
+ private collectMatchers;
1804
+ /**
1805
+ * Find first matching matcher by column name
1806
+ * Name matches take precedence over widget type matches
1807
+ */
1808
+ private findNameMatch;
1809
+ /**
1810
+ * Find first matching matcher by widget type (case-insensitive)
1811
+ */
1812
+ private findWidgetTypeMatch;
1813
+ /**
1814
+ * Normalize width value to string format
1815
+ * Numbers are converted to pixels (e.g., 150 -> '150px')
1816
+ * Strings are preserved as-is (supports any CSS unit)
1817
+ */
1818
+ private normalizeWidth;
1819
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPColumnWidthService, never>;
1820
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPColumnWidthService>;
1821
+ }
1822
+
1823
+ /**
1824
+ * Injection token for column width providers
1825
+ * Use this to register multiple column width providers with multi: true
1826
+ *
1827
+ * @example
1828
+ * ```typescript
1829
+ * providers: [
1830
+ * {
1831
+ * provide: AXP_COLUMN_WIDTH_PROVIDER,
1832
+ * useValue: {
1833
+ * matchers: [
1834
+ * { name: 'title', width: '300px', priority: 10 },
1835
+ * { widgetType: /text-box/i, width: '200px' }
1836
+ * ],
1837
+ * priority: 150
1838
+ * },
1839
+ * multi: true
1840
+ * }
1841
+ * ]
1842
+ * ```
1843
+ */
1844
+ declare const AXP_COLUMN_WIDTH_PROVIDER: InjectionToken<AXPColumnWidthProvider[]>;
1845
+
1846
+ /**
1847
+ * Default column width configuration
1848
+ * Migrated from DEFAULT_COLUMN_WIDTHS in column-width.middleware.ts
1849
+ * Provides sensible defaults for common column names
1850
+ */
1851
+ declare const defaultColumnWidthProvider: AXPColumnWidthProvider;
1852
+
1475
1853
  type AXPContextState = 'initiated' | 'restored' | 'changed' | 'patch';
1476
1854
  type AXPContextData = {
1477
1855
  [key: string]: any;
@@ -1499,10 +1877,11 @@ declare const AXPContextStore: i0.Type<{
1499
1877
  previous: i0.Signal<{}>;
1500
1878
  changeEvent: i0.Signal<AXPContextChangeEvent>;
1501
1879
  update: (path: string, value: any) => void;
1502
- patch: (context: {}) => void;
1880
+ patch: (context: Record<string, any>, skipDirtyTracking?: boolean) => void;
1503
1881
  reset: () => void;
1504
1882
  set: (initialData: any) => void;
1505
1883
  getValue: (path: string) => any;
1884
+ hasValue: (path: string) => boolean;
1506
1885
  } & _ngrx_signals.StateSource<{
1507
1886
  data: AXPContextData;
1508
1887
  state: AXPContextState;
@@ -1511,6 +1890,93 @@ declare const AXPContextStore: i0.Type<{
1511
1890
  lastChange: AXPContextChangeEvent;
1512
1891
  }>>;
1513
1892
 
1893
+ interface AXPComponentSlotConfig {
1894
+ name: string;
1895
+ priority?: number;
1896
+ component?: Type<any>;
1897
+ condition?: ((context?: AXPContextData) => boolean | Promise<boolean>) | string;
1898
+ features?: string[];
1899
+ loadComponent?: () => Type<any> | Promise<Type<any>>;
1900
+ options?: AXPOptionsData | (() => AXPOptionsData) | (() => Promise<AXPOptionsData>);
1901
+ }
1902
+ interface AXPComponentSlotModuleConfigs {
1903
+ [slotName: string]: AXPComponentSlotConfig[];
1904
+ }
1905
+ declare abstract class AXPComponentSlot {
1906
+ host: any;
1907
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPComponentSlot, never>;
1908
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXPComponentSlot, never, never, {}, {}, never, never, true, never>;
1909
+ }
1910
+
1911
+ declare class AXPComponentSlotDirective implements OnInit {
1912
+ name: i0.InputSignal<string>;
1913
+ host: i0.InputSignal<any>;
1914
+ context: i0.InputSignal<any>;
1915
+ private elementRef;
1916
+ private registryService;
1917
+ private injector;
1918
+ private evaluator;
1919
+ viewContainerRef: ViewContainerRef;
1920
+ contextStore: {
1921
+ data: i0.Signal<AXPContextData>;
1922
+ state: i0.Signal<_acorex_platform_core.AXPContextState>;
1923
+ initialSnapshot: i0.Signal<{}>;
1924
+ previousSnapshot: i0.Signal<{}>;
1925
+ lastChange: _ngrx_signals.DeepSignal<_acorex_platform_core.AXPContextChangeEvent>;
1926
+ isChanged: i0.Signal<boolean>;
1927
+ isReset: i0.Signal<boolean>;
1928
+ isInitiated: i0.Signal<boolean>;
1929
+ isEmpty: i0.Signal<boolean>;
1930
+ isDirty: i0.Signal<boolean>;
1931
+ snapshot: i0.Signal<AXPContextData>;
1932
+ initial: i0.Signal<{}>;
1933
+ previous: i0.Signal<{}>;
1934
+ changeEvent: i0.Signal<_acorex_platform_core.AXPContextChangeEvent>;
1935
+ update: (path: string, value: any) => void;
1936
+ patch: (context: Record<string, any>, skipDirtyTracking?: boolean) => void;
1937
+ reset: () => void;
1938
+ set: (initialData: any) => void;
1939
+ getValue: (path: string) => any;
1940
+ hasValue: (path: string) => boolean;
1941
+ } & _ngrx_signals.StateSource<{
1942
+ data: AXPContextData;
1943
+ state: _acorex_platform_core.AXPContextState;
1944
+ initialSnapshot: {};
1945
+ previousSnapshot: {};
1946
+ lastChange: _acorex_platform_core.AXPContextChangeEvent;
1947
+ }>;
1948
+ isEmpty: i0.Signal<boolean>;
1949
+ private _viewCount;
1950
+ private componentRefs;
1951
+ private placeholderRefs;
1952
+ constructor();
1953
+ ngOnInit(): Promise<void>;
1954
+ loadComponents(): Promise<void>;
1955
+ private evaluateCondition;
1956
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPComponentSlotDirective, never>;
1957
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXPComponentSlotDirective, "axp-component-slot", ["slot"], { "name": { "alias": "name"; "required": true; "isSignal": true; }; "host": { "alias": "host"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; }, {}, never, never, false, never>;
1958
+ }
1959
+
1960
+ declare class AXPComponentSlotRegistryService {
1961
+ private registry;
1962
+ register(slotName: string, config: AXPComponentSlotConfig): void;
1963
+ get(slotName: string): AXPComponentSlotConfig[];
1964
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPComponentSlotRegistryService, never>;
1965
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPComponentSlotRegistryService>;
1966
+ }
1967
+
1968
+ declare class AXPComponentSlotModule {
1969
+ static forRoot(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule>;
1970
+ static forChild(configs?: AXPComponentSlotModuleConfigs): ModuleWithProviders<AXPComponentSlotModule>;
1971
+ /**
1972
+ * @ignore
1973
+ */
1974
+ constructor(instances: any[]);
1975
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPComponentSlotModule, [{ optional: true; }]>;
1976
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXPComponentSlotModule, [typeof AXPComponentSlotDirective], never, [typeof AXPComponentSlotDirective]>;
1977
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXPComponentSlotModule>;
1978
+ }
1979
+
1514
1980
  declare class AXPDataGenerator {
1515
1981
  static uuid(): string;
1516
1982
  static number(max: number): number;
@@ -1554,6 +2020,11 @@ interface AXPDataSourceDataFieldDefinition {
1554
2020
  type: string;
1555
2021
  options?: AXPOptionsData;
1556
2022
  }
2023
+ type AXPLazyDataSource<T = unknown> = AXPMaybePromise<AXDataSource<T>>;
2024
+ type AXPDataSourceArray<T = unknown> = AXPMaybePromise<Array<T>>;
2025
+ type AXPDataSourceValue<T = unknown> = AXPMaybePromise<T>;
2026
+ type AXPDataSourceType<T = any> = AXPLazyDataSource<T> | AXPDataSourceArray<T> | AXPDataSourceValue<T>;
2027
+ type AXPDataSourceSample<T = any> = AXPDataSourceArray<T> | AXPDataSourceValue<T>;
1557
2028
  interface AXPDataSourceDefinition<T = any> {
1558
2029
  name: string;
1559
2030
  title: string;
@@ -1567,9 +2038,9 @@ interface AXPDataSourceDefinition<T = any> {
1567
2038
  };
1568
2039
  columns: AXPDataSourceDataFieldDefinition[];
1569
2040
  filters: AXPFilterDefinition[];
1570
- samples?: any[];
2041
+ samples?: AXPDataSourceSample<T>;
1571
2042
  visible?: boolean;
1572
- source: () => AXDataSource<T> | Promise<AXDataSource<T>>;
2043
+ source: () => AXPDataSourceType<T>;
1573
2044
  }
1574
2045
  interface AXPDataSourceDefinitionProvider {
1575
2046
  items(): Promise<AXPDataSourceDefinition[]>;
@@ -1578,11 +2049,29 @@ declare const AXP_DATASOURCE_DEFINITION_PROVIDER: InjectionToken<AXPDataSourceDe
1578
2049
  declare class AXPDataSourceDefinitionProviderService implements AXPDataSourceDefinitionProvider {
1579
2050
  private providers;
1580
2051
  items(): Promise<AXPDataSourceDefinition[]>;
1581
- get(name: string): Promise<AXPDataSourceDefinition | undefined>;
2052
+ get<T = any>(name: string): Promise<AXPDataSourceDefinition<T> | undefined>;
1582
2053
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPDataSourceDefinitionProviderService, never>;
1583
2054
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPDataSourceDefinitionProviderService>;
1584
2055
  }
1585
2056
 
2057
+ declare class AXPContentCheckerDirective {
2058
+ viewContainerRef: ViewContainerRef;
2059
+ elementRef: ElementRef<HTMLDivElement>;
2060
+ isEmpty: i0.Signal<boolean>;
2061
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPContentCheckerDirective, never>;
2062
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXPContentCheckerDirective, "[axp-content-checker]", ["checker"], {}, {}, never, never, true, never>;
2063
+ }
2064
+
2065
+ declare class AXPDblClickDirective {
2066
+ onDblClick: EventEmitter<Event>;
2067
+ private lastTap;
2068
+ private readonly doubleTapThreshold;
2069
+ handleOnDblClick(event: Event): void;
2070
+ onTouchEnd(event: TouchEvent): void;
2071
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPDblClickDirective, never>;
2072
+ static ɵdir: i0.ɵɵDirectiveDeclaration<AXPDblClickDirective, "[onDblClick]", never, {}, { "onDblClick": "onDblClick"; }, never, never, true, never>;
2073
+ }
2074
+
1586
2075
  declare class AXPElementDataDirective implements OnInit {
1587
2076
  private elementRef;
1588
2077
  data: i0.InputSignal<any>;
@@ -1602,16 +2091,6 @@ declare class AXPElementDataDirective implements OnInit {
1602
2091
  static ɵdir: i0.ɵɵDirectiveDeclaration<AXPElementDataDirective, "[axp-data]", never, { "data": { "alias": "axp-data"; "required": false; "isSignal": true; }; "path": { "alias": "axp-data-path"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1603
2092
  }
1604
2093
 
1605
- declare class AXPDblClickDirective {
1606
- onDblClick: EventEmitter<Event>;
1607
- private lastTap;
1608
- private readonly doubleTapThreshold;
1609
- handleOnDblClick(event: Event): void;
1610
- onTouchEnd(event: TouchEvent): void;
1611
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPDblClickDirective, never>;
1612
- static ɵdir: i0.ɵɵDirectiveDeclaration<AXPDblClickDirective, "[onDblClick]", never, {}, { "onDblClick": "onDblClick"; }, never, never, true, never>;
1613
- }
1614
-
1615
2094
  declare class AXPGridLayoutDirective implements OnChanges {
1616
2095
  private el;
1617
2096
  private renderer;
@@ -1625,77 +2104,6 @@ declare class AXPGridLayoutDirective implements OnChanges {
1625
2104
  static ɵdir: i0.ɵɵDirectiveDeclaration<AXPGridLayoutDirective, "[axp-grid-layout]", never, { "options": { "alias": "axp-grid-layout"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1626
2105
  }
1627
2106
 
1628
- declare class AXPContentCheckerDirective {
1629
- viewContainerRef: ViewContainerRef;
1630
- elementRef: ElementRef<HTMLDivElement>;
1631
- isEmpty: i0.Signal<boolean>;
1632
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPContentCheckerDirective, never>;
1633
- static ɵdir: i0.ɵɵDirectiveDeclaration<AXPContentCheckerDirective, "[axp-content-checker]", ["checker"], {}, {}, never, never, true, never>;
1634
- }
1635
-
1636
- /**
1637
- * Fullscreen directive that provides CSS-based fullscreen functionality
1638
- * Usage: <element axFullscreen #fullscreen="axFullscreen"></element>
1639
- * Then: fullscreen.toggle() or fullscreen.enter() or fullscreen.exit()
1640
- */
1641
- declare class AXFullscreenDirective implements OnDestroy {
1642
- private elementRef;
1643
- /**
1644
- * Current fullscreen state
1645
- */
1646
- private readonly isFullscreenState;
1647
- /**
1648
- * Original element styles to restore
1649
- */
1650
- private originalStyles;
1651
- /**
1652
- * Original parent element reference
1653
- */
1654
- private originalParent;
1655
- /**
1656
- * Fullscreen container element
1657
- */
1658
- private fullscreenContainer;
1659
- /**
1660
- * Fullscreen change event
1661
- */
1662
- readonly fullscreenChange: i0.OutputEmitterRef<boolean>;
1663
- private readonly destroyRef;
1664
- private readonly renderer;
1665
- constructor(elementRef: ElementRef<HTMLElement>);
1666
- /**
1667
- * Toggle fullscreen state
1668
- */
1669
- toggle(): Promise<void>;
1670
- /**
1671
- * Enter fullscreen mode using CSS
1672
- */
1673
- enter(): Promise<void>;
1674
- /**
1675
- * Exit fullscreen mode
1676
- */
1677
- exit(): Promise<void>;
1678
- /**
1679
- * Check if currently in fullscreen mode
1680
- */
1681
- isFullscreen(): boolean;
1682
- /**
1683
- * Store original element styles
1684
- */
1685
- private storeOriginalStyles;
1686
- /**
1687
- * Restore original element styles
1688
- */
1689
- private restoreOriginalStyles;
1690
- /**
1691
- * Convert camelCase to kebab-case for CSS properties
1692
- */
1693
- private camelToKebabCase;
1694
- ngOnDestroy(): void;
1695
- static ɵfac: i0.ɵɵFactoryDeclaration<AXFullscreenDirective, never>;
1696
- static ɵdir: i0.ɵɵDirectiveDeclaration<AXFullscreenDirective, "[axFullscreen]", ["axFullscreen"], {}, { "fullscreenChange": "fullscreenChange"; }, never, never, true, never>;
1697
- }
1698
-
1699
2107
  type AXPDistributedEventListenerProviderToken<T> = AXPDistributedEventListenerProvider<T> | Promise<AXPDistributedEventListenerProvider<T>>;
1700
2108
  declare const AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER: InjectionToken<AXPDistributedEventListenerProviderToken<any>[]>;
1701
2109
  interface AXPDistributedEventListenerProvider<TInput = any, TOutput = void> {
@@ -1822,7 +2230,7 @@ declare class AXPExpressionEvaluatorScopeProviderContext {
1822
2230
  type AXPExpressionEvaluatorScopeProviders = AXPExpressionEvaluatorScopeProvider[] | (() => AXPExpressionEvaluatorScopeProvider[]);
1823
2231
  declare const AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER: InjectionToken<AXPExpressionEvaluatorScopeProviders>;
1824
2232
  declare class AXPExpressionEvaluatorScopeProviderService {
1825
- private providers;
2233
+ private readonly injector;
1826
2234
  private cache;
1827
2235
  private load;
1828
2236
  getScopesAsync(): Promise<AXPExpressionEvaluatorScope>;
@@ -1965,6 +2373,18 @@ interface AXPFeatureDefinition extends AXPModuleFeatureDefinition {
1965
2373
  key: string;
1966
2374
  }
1967
2375
 
2376
+ /**
2377
+ * Registered module manifests for select widgets via dataSource name {@link MODULE_MANIFESTS_DATASOURCE_NAME}.
2378
+ */
2379
+ declare const MODULE_MANIFESTS_DATASOURCE_NAME = "platform-module-manifests";
2380
+ /**
2381
+ * Data source definition for module names/titles from {@link AXPModuleManifestRegistry}.
2382
+ */
2383
+ declare class AXPModuleManifestsDataSourceDefinition implements AXPDataSourceDefinitionProvider {
2384
+ private readonly manifestRegistry;
2385
+ items(): Promise<AXPDataSourceDefinition[]>;
2386
+ }
2387
+
1968
2388
  /**
1969
2389
  * Registry service for module manifests.
1970
2390
  * Collects and manages all registered module manifests.
@@ -2132,6 +2552,21 @@ declare const AXP_SESSION_SERVICE: InjectionToken<AXPISessionService>;
2132
2552
  */
2133
2553
  declare const AXP_MODULE_MANIFEST_PROVIDER: InjectionToken<AXPModuleManifest[]>;
2134
2554
 
2555
+ /**
2556
+ * Locale-aware comparison of {@link AXPMultiLanguageString} values (plain string, `@scope:key`, or locale map).
2557
+ * Resolves each side with {@link resolveMultiLanguageString} for `locale`, then compares with `String#localeCompare`.
2558
+ */
2559
+ declare function compareMultiLanguageStrings(a: AXPMultiLanguageString | null | undefined, b: AXPMultiLanguageString | null | undefined, locale: string, collatorOptions?: Intl.CollatorOptions): number;
2560
+ /**
2561
+ * Stable sort copy: orders items by resolved string for `getValue(item)` using the active `locale`.
2562
+ */
2563
+ declare function sortByMultiLanguageString<T>(items: readonly T[], getValue: (item: T) => AXPMultiLanguageString | null | undefined, locale: string, collatorOptions?: Intl.CollatorOptions): T[];
2564
+ /**
2565
+ * True when the resolved value contains `query` (case-insensitive) for `locale`.
2566
+ * Useful for search/filter flows over {@link AXPMultiLanguageString}.
2567
+ */
2568
+ declare function searchInMultiLanguageString(value: AXPMultiLanguageString | null | undefined, query: string, locale: string): boolean;
2569
+
2135
2570
  /**
2136
2571
  * Represents a tag with text, color, and metadata
2137
2572
  */
@@ -2417,26 +2852,54 @@ declare function createProviderWithInjectionContext<T>(loader: () => Promise<new
2417
2852
  *
2418
2853
  * @param token - The injection token to provide
2419
2854
  * @param loader - Function that returns a promise resolving to the provider class
2420
- * @param multi - Whether the provider is multi-provider (defaults to true)
2855
+ * @param multi - Optional. Whether the provider is a multi-provider (array of values). Defaults to `true`. Pass `false` for a single provider.
2421
2856
  * @returns Provider configuration object
2422
2857
  *
2423
2858
  * @example
2424
2859
  * ```typescript
2425
- * providers: [
2426
- * provideLazyProvider(
2427
- * AXP_SETTING_DEFINITION_PROVIDER,
2428
- * () => import('./settings.provider').then(m => m.AXMSettingProvider)
2429
- * )
2430
- * ]
2860
+ * // Multi-provider (default)
2861
+ * provideLazyProvider(
2862
+ * AXP_DATASOURCE_DEFINITION_PROVIDER,
2863
+ * () => import('./datasource.provider').then(m => m.AXMDataSourceProvider)
2864
+ * )
2865
+ *
2866
+ * // Single provider
2867
+ * provideLazyProvider(
2868
+ * SOME_TOKEN,
2869
+ * () => import('./my.provider').then(m => m.MyProvider),
2870
+ * false
2871
+ * )
2431
2872
  * ```
2432
2873
  */
2433
2874
  declare function provideLazyProvider<TProvider>(token: InjectionToken<any>, loader: () => Promise<new () => TProvider>, multi?: boolean): Provider;
2434
2875
 
2876
+ /**
2877
+ * If `raw` is a plain non-array object with a `value` property, returns `value`; otherwise returns `raw`.
2878
+ */
2879
+ declare function unwrapValueProperty(raw: unknown): unknown;
2880
+ /**
2881
+ * Coerces to a trimmed string. Plain objects may carry `{ value }` from setting widgets or `{ id }` from select payloads using `valueField: 'id'`.
2882
+ */
2883
+ declare function coerceUnknownToTrimmedString(raw: unknown): string;
2884
+ /**
2885
+ * Coerces to boolean: direct booleans pass through; wrapped `{ value: true | 'true' }` is respected; otherwise false.
2886
+ */
2887
+ declare function coerceUnknownToBoolean(raw: unknown): boolean;
2888
+ /** Parses a finite number after optional `{ value }` unwrap; non-finite or empty string yields NaN. */
2889
+ declare function coerceUnknownToFiniteNumber(raw: unknown): number;
2890
+ /** Parses a Date after optional `{ value }` unwrap; invalid input yields Invalid Date. */
2891
+ declare function coerceUnknownToDate(raw: unknown): Date;
2892
+
2435
2893
  declare function extractTextFromHtml(value: string): string;
2894
+ /**
2895
+ * True when the string likely contains HTML markup (e.g. `<p>`, `<ul>`), as opposed to plain text.
2896
+ * Used to choose innerHTML vs text interpolation for multilingual fields.
2897
+ */
2898
+ declare function containsHtmlMarkup(value: string | null | undefined): boolean;
2436
2899
  /**
2437
2900
  * Generate kebab-case group name from title
2438
2901
  */
2439
2902
  declare function generateKebabCase(title: string): string;
2440
2903
 
2441
- export { AXFullscreenDirective, AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPComponentLogoConfig, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, createProviderWithInjectionContext, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, setSmart };
2442
- export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPColorPalette, AXPColorPaletteFilterOptions, AXPColumnQuery, AXPCommandMessage, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextState, AXPDataSource, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataType, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFeatureDefinition, AXPFeatureDefinitionProvider, AXPFeatureName, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPISessionService, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPModuleFeatureDefinition, AXPModuleFeatureDefinitionWithKey, AXPModuleManifest, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPTag, AXPTagFilterOptions, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers };
2904
+ export { AXHighlightService, AXPActivityLogProvider, AXPActivityLogService, AXPAppStartUpProvider, AXPAppStartUpService, AXPBroadcastEventService, AXPColorPaletteProvider, AXPColorPaletteService, AXPColumnWidthService, AXPComponentLogoConfig, AXPComponentSlot, AXPComponentSlotDirective, AXPComponentSlotModule, AXPComponentSlotRegistryService, AXPContentCheckerDirective, AXPContextChangeEvent, AXPContextStore, AXPCountdownPipe, AXPDataGenerator, AXPDataSourceDefinitionProviderService, AXPDblClickDirective, AXPDefaultColorPalettesProvider, AXPDeviceService, AXPDeviceType, AXPDistributedEventListenerService, AXPElementDataDirective, AXPExportTemplateToken, AXPExpressionEvaluatorScopeProviderContext, AXPExpressionEvaluatorScopeProviderService, AXPExpressionEvaluatorService, AXPFeatureDefinitionProviderContext, AXPGridLayoutDirective, AXPHookService, AXPIconLogoConfig, AXPImageUrlLogoConfig, AXPModuleManifestModule, AXPModuleManifestRegistry, AXPModuleManifestsDataSourceDefinition, AXPPlatformScope, AXPScreenSize, AXPSystemActionType, AXPSystemActions, AXPTagProvider, AXPTagService, AXP_ACTIVITY_LOG_PROVIDER, AXP_COLOR_PALETTE_PROVIDER, AXP_COLUMN_WIDTH_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_EXPRESSION_EVALUATOR_SCOPE_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_SESSION_SERVICE, AXP_TAG_PROVIDER, MODULE_MANIFESTS_DATASOURCE_NAME, applyFilterArray, applyPagination, applyQueryArray, applySortArray, applySystemActionDefault, cleanDeep, coerceUnknownToBoolean, coerceUnknownToDate, coerceUnknownToFiniteNumber, coerceUnknownToTrimmedString, compareMultiLanguageStrings, containsHtmlMarkup, createProviderWithInjectionContext, defaultColumnWidthProvider, extractNestedFieldsWildcard, extractTextFromHtml, extractValue, generateKebabCase, getActionButton, getChangedPaths, getDetailedChanges, getEnumValues, getNestedKeys, getSmart, getSystemActions, normalizeDefinitionCategories, objectKeyValueTransforms, provideLazyProvider, resolveActionLook, resolvePlatformScopeKey, resolvePlatformScopeName, searchInMultiLanguageString, setSmart, sortByMultiLanguageString, unwrapValueProperty };
2905
+ export type { AXPActionMenuItem, AXPActivityLog, AXPActivityLogChange, AXPApplicationUserReference, AXPBackButton, AXPBadge, AXPBreadcrumbItem, AXPCategorizedEntity, AXPCategorizedEntityDto, AXPCategoryEntity, AXPCategoryEntityWithItems, AXPCategoryListItem, AXPColorPalette, AXPColorPaletteFilterOptions, AXPColumnQuery, AXPColumnWidthMatcher, AXPColumnWidthProvider, AXPCommandMessage, AXPComponentSlotConfig, AXPComponentSlotModuleConfigs, AXPContent, AXPContentDirection, AXPContentType, AXPContextData, AXPContextState, AXPDataSource, AXPDataSourceArray, AXPDataSourceDataFieldDefinition, AXPDataSourceDefinition, AXPDataSourceDefinitionProvider, AXPDataSourceSample, AXPDataSourceType, AXPDataSourceValue, AXPDataType, AXPDefinitionCategory, AXPDistributedEventListenerProvider, AXPDistributedEventListenerProviderToken, AXPEntityOp, AXPEntityReference, AXPEqualValidationRule, AXPExecuteCommand, AXPExecuteCommandResult, AXPExportCsvOptions, AXPExportExcelOptions, AXPExportOptions, AXPExportPdfOptions, AXPExportPrintOptions, AXPExpression, AXPExpressionEvaluatorScope, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviders, AXPFeatureDefinition, AXPFeatureDefinitionProvider, AXPFeatureName, AXPFileListItem, AXPFileSource, AXPFileStatus, AXPFilterClause, AXPFilterDefinition, AXPFilterQuery, AXPFilterTriggerDefinition, AXPFlowDirection, AXPGridLayoutOptions, AXPGridPlacement, AXPISessionService, AXPLazyDataSource, AXPLogoConfig, AXPMaxLengthValidationRule, AXPMaybePromise, AXPMetaData, AXPMiddlewareErrorResponse, AXPMinLengthValidationRule, AXPModuleFeatureDefinition, AXPModuleFeatureDefinitionWithKey, AXPModuleManifest, AXPMultiLanguageString, AXPNavigateActionCommand, AXPNavigateActionOptions, AXPOptionsData, AXPPageStatus, AXPPagedListResult, AXPPartialNested, AXPPlatformScopeKey, AXPProperty, AXPPropertyGroup, AXPPropertyInterface, AXPQueryFetchResult, AXPQueryRequest, AXPReqexValidationRule, AXPRequiredValidationRule, AXPSortDefinition, AXPSortQuery, AXPStartUpTask, AXPStringValidationRules, AXPSystemAction, AXPTag, AXPTagFilterOptions, AXPUserReference, AXPValidationRule, AXPValidationRules, AXPValueTransformerFunction, AXPValueTransformerFunctions, AXPValueUnit, AXPValueUnits, AXPViewBlockDefinition, AXPViewDefinition, AXPViewFieldDefinition, AXPViewQuery, AXPWidgetTrigger, AXPWidgetTriggers, ColumnNameMatcher, ColumnWidthValue, IColumnWithWidth, WidgetTypeMatcher };