@sapui5/sap.fe.core 1.121.2 → 1.123.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime.js +2 -2
  4. package/src/sap/fe/core/ActionRuntime.ts +1 -2
  5. package/src/sap/fe/core/CommonUtils.js +14 -171
  6. package/src/sap/fe/core/CommonUtils.ts +15 -221
  7. package/src/sap/fe/core/PageController.js +13 -1
  8. package/src/sap/fe/core/PageController.ts +16 -0
  9. package/src/sap/fe/core/TemplateComponent.js +6 -1
  10. package/src/sap/fe/core/TemplateComponent.ts +8 -0
  11. package/src/sap/fe/core/UIProvider.js +23 -0
  12. package/src/sap/fe/core/UIProvider.ts +38 -0
  13. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +97 -43
  14. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +120 -50
  15. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +6 -3
  16. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +12 -18
  17. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +2 -2
  18. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +1 -1
  19. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +1 -1
  20. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -3
  21. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +1 -0
  23. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +42 -1
  24. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +40 -0
  25. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +5 -2
  26. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +5 -3
  27. package/src/sap/fe/core/controllerextensions/EditFlow.js +151 -60
  28. package/src/sap/fe/core/controllerextensions/EditFlow.ts +165 -68
  29. package/src/sap/fe/core/controllerextensions/HookSupport.js +32 -14
  30. package/src/sap/fe/core/controllerextensions/HookSupport.ts +35 -14
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +5 -17
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +0 -12
  33. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +6 -6
  34. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +15 -10
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +108 -287
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +117 -309
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +2 -2
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +6 -2
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +1 -1
  41. package/src/sap/fe/core/controllerextensions/PageReady.js +6 -6
  42. package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -4
  43. package/src/sap/fe/core/controllerextensions/Paginator.js +17 -110
  44. package/src/sap/fe/core/controllerextensions/Paginator.ts +13 -130
  45. package/src/sap/fe/core/controllerextensions/Placeholder.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Placeholder.ts +1 -2
  47. package/src/sap/fe/core/controllerextensions/Recommendations.js +36 -31
  48. package/src/sap/fe/core/controllerextensions/Recommendations.ts +32 -37
  49. package/src/sap/fe/core/controllerextensions/Share.js +7 -7
  50. package/src/sap/fe/core/controllerextensions/Share.ts +6 -6
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +52 -6
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -4
  53. package/src/sap/fe/core/controllerextensions/ViewState.js +32 -46
  54. package/src/sap/fe/core/controllerextensions/ViewState.ts +24 -31
  55. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +42 -31
  56. package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +6 -0
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +168 -276
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +182 -310
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +3 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +2 -2
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +4 -3
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +3 -2
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +74 -52
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +95 -55
  65. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +3 -17
  66. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +10 -23
  67. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.js +3 -3
  68. package/src/sap/fe/core/controllerextensions/recommendations/Telemetry.ts +2 -2
  69. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.js +225 -0
  70. package/src/sap/fe/core/controllerextensions/routing/ContextPathHelper.ts +241 -0
  71. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +69 -48
  72. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +56 -33
  73. package/src/sap/fe/core/controls/FormElementWrapper.js +8 -11
  74. package/src/sap/fe/core/controls/FormElementWrapper.ts +9 -0
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +6 -14
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +12 -23
  77. package/src/sap/fe/core/converters/ConverterContext.js +17 -9
  78. package/src/sap/fe/core/converters/ConverterContext.ts +55 -41
  79. package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  80. package/src/sap/fe/core/converters/ManifestSettings.ts +19 -5
  81. package/src/sap/fe/core/converters/ManifestWrapper.js +14 -4
  82. package/src/sap/fe/core/converters/ManifestWrapper.ts +21 -10
  83. package/src/sap/fe/core/converters/MetaModelConverter.js +402 -383
  84. package/src/sap/fe/core/converters/MetaModelConverter.ts +538 -338
  85. package/src/sap/fe/core/converters/TemplateConverter.js +4 -2
  86. package/src/sap/fe/core/converters/TemplateConverter.ts +18 -13
  87. package/src/sap/fe/core/converters/annotations/DataField.js +30 -28
  88. package/src/sap/fe/core/converters/annotations/DataField.ts +58 -35
  89. package/src/sap/fe/core/converters/common/AnnotationConverter.js +24 -23
  90. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -4
  91. package/src/sap/fe/core/converters/controls/Common/Action.ts +34 -28
  92. package/src/sap/fe/core/converters/controls/Common/Chart.js +37 -33
  93. package/src/sap/fe/core/converters/controls/Common/Chart.ts +64 -46
  94. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -4
  95. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +31 -15
  96. package/src/sap/fe/core/converters/controls/Common/Form.js +6 -4
  97. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -11
  98. package/src/sap/fe/core/converters/controls/Common/KPI.js +5 -3
  99. package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -11
  100. package/src/sap/fe/core/converters/controls/Common/Table.js +197 -101
  101. package/src/sap/fe/core/converters/controls/Common/Table.ts +393 -182
  102. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +4 -5
  103. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +38 -27
  104. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +41 -11
  105. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +112 -45
  106. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +7 -7
  107. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +18 -12
  108. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
  109. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +5 -4
  110. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
  111. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +19 -9
  112. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +64 -63
  113. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +109 -100
  114. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -11
  115. package/src/sap/fe/core/converters/helpers/Aggregation.ts +35 -30
  116. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -1
  117. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +12 -9
  118. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +1 -1
  119. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +1 -1
  120. package/src/sap/fe/core/converters/helpers/ID.js +1 -1
  121. package/src/sap/fe/core/converters/helpers/ID.ts +6 -6
  122. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +3 -3
  123. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +11 -6
  124. package/src/sap/fe/core/converters/helpers/Key.js +2 -2
  125. package/src/sap/fe/core/converters/helpers/Key.ts +4 -4
  126. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
  127. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -2
  128. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +21 -19
  129. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +43 -31
  130. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  131. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +16 -12
  132. package/src/sap/fe/core/converters/templates/ListReportConverter.js +8 -3
  133. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +41 -21
  134. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +5 -3
  135. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +24 -19
  136. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -2
  137. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +2 -1
  138. package/src/sap/fe/core/filter/DraftEditState.fragment.xml +1 -1
  139. package/src/sap/fe/core/formatters/CollaborationFormatter.js +4 -6
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +5 -4
  141. package/src/sap/fe/core/formatters/FPMFormatter.js +5 -13
  142. package/src/sap/fe/core/formatters/FPMFormatter.ts +11 -10
  143. package/src/sap/fe/core/formatters/FiscalFormat.js +1 -1
  144. package/src/sap/fe/core/formatters/FiscalFormat.ts +1 -1
  145. package/src/sap/fe/core/formatters/KPIFormatter.js +4 -7
  146. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -3
  147. package/src/sap/fe/core/formatters/StandardFormatter.js +4 -7
  148. package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
  149. package/src/sap/fe/core/formatters/ValueFormatter.js +35 -6
  150. package/src/sap/fe/core/formatters/ValueFormatter.ts +31 -3
  151. package/src/sap/fe/core/fpm/manifest.json +1 -1
  152. package/src/sap/fe/core/helpers/AppStartupHelper.js +54 -33
  153. package/src/sap/fe/core/helpers/AppStartupHelper.ts +62 -41
  154. package/src/sap/fe/core/helpers/BindingToolkit.js +17 -3
  155. package/src/sap/fe/core/helpers/BindingToolkit.ts +28 -6
  156. package/src/sap/fe/core/helpers/ClassSupport.js +32 -13
  157. package/src/sap/fe/core/helpers/ClassSupport.ts +35 -15
  158. package/src/sap/fe/core/helpers/DeleteHelper.js +71 -61
  159. package/src/sap/fe/core/helpers/DeleteHelper.ts +125 -103
  160. package/src/sap/fe/core/helpers/DraftEditState.js +5 -3
  161. package/src/sap/fe/core/helpers/DraftEditState.ts +3 -1
  162. package/src/sap/fe/core/helpers/FPMHelper.js +43 -46
  163. package/src/sap/fe/core/helpers/FPMHelper.ts +50 -56
  164. package/src/sap/fe/core/helpers/MetaModelFunction.js +77 -53
  165. package/src/sap/fe/core/helpers/MetaModelFunction.ts +78 -57
  166. package/src/sap/fe/core/helpers/ModelHelper.js +10 -4
  167. package/src/sap/fe/core/helpers/ModelHelper.ts +12 -6
  168. package/src/sap/fe/core/helpers/PasteHelper.js +194 -7
  169. package/src/sap/fe/core/helpers/PasteHelper.ts +265 -13
  170. package/src/sap/fe/core/helpers/PromiseKeeper.js +66 -0
  171. package/src/sap/fe/core/helpers/PromiseKeeper.ts +56 -0
  172. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +30 -19
  173. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +34 -22
  174. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  175. package/src/sap/fe/core/helpers/StableIdHelper.ts +7 -2
  176. package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +26 -52
  177. package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +37 -63
  178. package/src/sap/fe/core/helpers/TitleHelper.js +1 -1
  179. package/src/sap/fe/core/helpers/TitleHelper.ts +17 -14
  180. package/src/sap/fe/core/helpers/TypeGuards.js +27 -3
  181. package/src/sap/fe/core/helpers/TypeGuards.ts +37 -7
  182. package/src/sap/fe/core/jsx-runtime/jsx-xml.js +48 -8
  183. package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +40 -9
  184. package/src/sap/fe/core/library.js +1 -1
  185. package/src/sap/fe/core/messagebundle.properties +5 -2
  186. package/src/sap/fe/core/messagebundle_da.properties +1 -1
  187. package/src/sap/fe/core/messagebundle_en.properties +267 -2
  188. package/src/sap/fe/core/messagebundle_sl.properties +1 -1
  189. package/src/sap/fe/core/operationsHelper.js +2 -1
  190. package/src/sap/fe/core/operationsHelper.ts +1 -0
  191. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +3 -3
  192. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +2 -2
  193. package/src/sap/fe/core/services/NavigationServiceFactory.js +2 -2
  194. package/src/sap/fe/core/services/NavigationServiceFactory.ts +3 -2
  195. package/src/sap/fe/core/services/RoutingServiceFactory.js +27 -14
  196. package/src/sap/fe/core/services/RoutingServiceFactory.ts +27 -14
  197. package/src/sap/fe/core/services/ShellServicesFactory.js +49 -12
  198. package/src/sap/fe/core/services/ShellServicesFactory.ts +62 -13
  199. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +156 -82
  200. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +218 -100
  201. package/src/sap/fe/core/services/TelemetryServiceFactory.js +3 -3
  202. package/src/sap/fe/core/services/TelemetryServiceFactory.ts +6 -6
  203. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +3 -2
  204. package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
  205. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +1 -1
  206. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +2 -2
  207. package/src/sap/fe/core/services/view/TemplatingErrorPage.view.xml +1 -1
  208. package/src/sap/fe/core/templating/CommonFormatters.js +6 -3
  209. package/src/sap/fe/core/templating/CommonFormatters.ts +13 -12
  210. package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
  211. package/src/sap/fe/core/templating/CriticalityFormatters.ts +37 -14
  212. package/src/sap/fe/core/templating/DataFieldFormatters.js +12 -11
  213. package/src/sap/fe/core/templating/DataFieldFormatters.ts +35 -24
  214. package/src/sap/fe/core/templating/DataModelPathHelper.js +22 -18
  215. package/src/sap/fe/core/templating/DataModelPathHelper.ts +61 -51
  216. package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
  217. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +8 -3
  218. package/src/sap/fe/core/templating/EntityTypeHelper.js +1 -1
  219. package/src/sap/fe/core/templating/EntityTypeHelper.ts +1 -1
  220. package/src/sap/fe/core/templating/FieldControlHelper.js +3 -3
  221. package/src/sap/fe/core/templating/FieldControlHelper.ts +27 -8
  222. package/src/sap/fe/core/templating/FilterHelper.js +13 -10
  223. package/src/sap/fe/core/templating/FilterHelper.ts +80 -46
  224. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  225. package/src/sap/fe/core/templating/FilterTemplating.ts +2 -2
  226. package/src/sap/fe/core/templating/PropertyFormatters.js +6 -8
  227. package/src/sap/fe/core/templating/PropertyFormatters.ts +11 -11
  228. package/src/sap/fe/core/templating/PropertyHelper.js +3 -3
  229. package/src/sap/fe/core/templating/PropertyHelper.ts +4 -4
  230. package/src/sap/fe/core/templating/SemanticObjectHelper.js +157 -13
  231. package/src/sap/fe/core/templating/SemanticObjectHelper.ts +182 -16
  232. package/src/sap/fe/core/templating/UIFormatters.js +23 -22
  233. package/src/sap/fe/core/templating/UIFormatters.ts +94 -66
  234. package/src/sap/fe/core/type/DateTimeWithTimezone.js +1 -1
  235. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -2
  236. package/src/sap/fe/core/type/EDM.js +1 -1
  237. package/src/sap/fe/core/type/EDM.ts +2 -2
  238. package/src/sap/fe/core/type/Email.js +1 -1
  239. package/src/sap/fe/core/type/Email.ts +1 -1
  240. package/src/sap/fe/core/type/FiscalDate.js +2 -2
  241. package/src/sap/fe/core/type/FiscalDate.ts +2 -2
@@ -11,9 +11,11 @@ import type {
11
11
  DataFieldTypes,
12
12
  DataPoint,
13
13
  DataPointType,
14
+ DataPointTypeTypes,
14
15
  FieldGroup
15
16
  } from "@sap-ux/vocabularies-types/vocabularies/UI";
16
17
  import { UIAnnotationTypes, VisualizationType } from "@sap-ux/vocabularies-types/vocabularies/UI";
18
+ import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
17
19
  import type { ColumnExportSettings, TableType } from "sap/fe/core/converters/controls/Common/Table";
18
20
  import { isAnnotationOfType, isPathAnnotationExpression, isProperty } from "sap/fe/core/helpers/TypeGuards";
19
21
  import { getDisplayMode } from "sap/fe/core/templating/DisplayModeFormatter";
@@ -26,14 +28,14 @@ import {
26
28
  hasStaticPercentUnit
27
29
  } from "sap/fe/core/templating/PropertyHelper";
28
30
  import { enhanceDataModelPath, getContextRelativeTargetObjectPath, type DataModelObjectPath } from "../../templating/DataModelPathHelper";
31
+ import type { DisplayMode } from "../../templating/UIFormatters";
29
32
  import type ConverterContext from "../ConverterContext";
30
33
  import { isReferencePropertyStaticallyHidden } from "../helpers/DataFieldHelper";
31
34
 
32
35
  export type ComplexPropertyInfo = {
33
- properties: Record<string, Property>;
36
+ properties: Record<string, { annotationProperty: Property; displayModeOfPropertyUsedAsDescription?: DisplayMode }>;
34
37
  additionalProperties: Record<string, Property>;
35
38
  exportSettings: ColumnExportSettings;
36
- textOnlyPropertiesFromTextAnnotation: string[];
37
39
  };
38
40
 
39
41
  /**
@@ -54,7 +56,9 @@ export function isDataFieldForActionAbstract(dataField: DataFieldAbstractTypes):
54
56
  * @param dataField DataField to be evaluated
55
57
  * @returns Validates that dataField is a DataFieldForAnnotation
56
58
  */
57
- export function isDataFieldForAnnotation(dataField: DataFieldAbstractTypes | undefined): dataField is DataFieldForAnnotation {
59
+ export function isDataFieldForAnnotation(
60
+ dataField: DataFieldAbstractTypes | DataPointTypeTypes | undefined
61
+ ): dataField is DataFieldForAnnotation {
58
62
  return dataField?.$Type === UIAnnotationTypes.DataFieldForAnnotation;
59
63
  }
60
64
 
@@ -123,7 +127,9 @@ export function hasDataPointTarget(dataFieldForAnnotation: DataFieldForAnnotatio
123
127
  * @param dataModelObjectPath DataModelObjectPath
124
128
  * @returns `Dialog` | `None` if a dialog is needed
125
129
  */
126
- export function isDataModelObjectPathForActionWithDialog(dataModelObjectPath: DataModelObjectPath) {
130
+ export function isDataModelObjectPathForActionWithDialog(
131
+ dataModelObjectPath: DataModelObjectPath<DataFieldAbstractTypes>
132
+ ): "Dialog" | "None" {
127
133
  const target = dataModelObjectPath.targetObject;
128
134
  return isActionWithDialog(isDataFieldForAction(target) ? target : undefined);
129
135
  }
@@ -211,7 +217,10 @@ export const isAProgressTypeFromDataPoint = function (property: Property | DataF
211
217
  return ((property as DataFieldForAnnotation).Target?.$target as DataPointType)?.Visualization === "UI.VisualizationType/Progress";
212
218
  };
213
219
 
214
- export function getSemanticObjectPath(converterContext: ConverterContext, object: DataFieldAbstractTypes | Property): string | undefined {
220
+ export function getSemanticObjectPath(
221
+ converterContext: ConverterContext<PageContextPathTarget>,
222
+ object: DataFieldAbstractTypes | Property
223
+ ): string | undefined {
215
224
  if (typeof object === "object") {
216
225
  if (isDataFieldTypes(object) && object.Value?.$target) {
217
226
  const property = object.Value?.$target;
@@ -280,11 +289,20 @@ function _collectAdditionalPropertiesForAnalyticalTable(
280
289
  * @param relatedProperties
281
290
  * @param key The property path
282
291
  * @param value The properties object containing value property, description property...
292
+ * @param displayModeOfPropertyUsedAsDescription The display mode if the property is referenced as description on text arrangement
283
293
  * @returns Index at which the property is available
284
294
  */
285
- function _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties: ComplexPropertyInfo, key: string, value: Property): number {
295
+ function _setRelatedPropertiesAndGetIndex(
296
+ relatedProperties: ComplexPropertyInfo,
297
+ key: string,
298
+ value: Property,
299
+ displayModeOfPropertyUsedAsDescription?: DisplayMode
300
+ ): number {
286
301
  if (!relatedProperties.properties.hasOwnProperty(key)) {
287
- relatedProperties.properties[key] = value;
302
+ relatedProperties.properties[key] = { annotationProperty: value };
303
+ if (displayModeOfPropertyUsedAsDescription) {
304
+ relatedProperties.properties[key].displayModeOfPropertyUsedAsDescription = displayModeOfPropertyUsedAsDescription;
305
+ }
288
306
  }
289
307
  return Object.keys(relatedProperties.properties).indexOf(key);
290
308
  }
@@ -323,8 +341,7 @@ export function collectRelatedProperties(
323
341
  relatedProperties: ComplexPropertyInfo = {
324
342
  properties: {},
325
343
  additionalProperties: {},
326
- exportSettings: {},
327
- textOnlyPropertiesFromTextAnnotation: []
344
+ exportSettings: {}
328
345
  },
329
346
  addUnitInTemplate = false,
330
347
  isAnnotatedAsHidden = false
@@ -334,7 +351,7 @@ export function collectRelatedProperties(
334
351
  let currencyOrUoMIndex: number;
335
352
  if (isAnnotatedAsHidden) {
336
353
  // Collect underlying property
337
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
354
+ valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
338
355
  _appendTemplate(relatedProperties, `{${valueIndex}}`);
339
356
  return relatedProperties;
340
357
  }
@@ -346,8 +363,8 @@ export function collectRelatedProperties(
346
363
 
347
364
  // get the DataModelObjectPath for the column
348
365
  const dataModelObjectPath = converterContext.getConverterContextFor(converterContext.getContextPath()).getDataModelObjectPath();
349
- const propertyDataModelObjectPath = enhanceDataModelPath(dataModelObjectPath, path);
350
- const textPropertyDataModelObjectPath = enhanceDataModelPath(propertyDataModelObjectPath, textPropertyPath);
366
+ const propertyDataModelObjectPath = enhanceDataModelPath<Property>(dataModelObjectPath, path);
367
+ const textPropertyDataModelObjectPath = enhanceDataModelPath<Property>(propertyDataModelObjectPath, textPropertyPath);
351
368
  const textRelativePath = getContextRelativeTargetObjectPath(textPropertyDataModelObjectPath);
352
369
 
353
370
  if (relatedProperties.exportSettings?.template) {
@@ -361,43 +378,50 @@ export function collectRelatedProperties(
361
378
  const displayMode = getDisplayMode(property, propertyDataModelObjectPath);
362
379
  let descriptionIndex: number;
363
380
  switch (displayMode) {
364
- case "Value":
365
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
366
- _appendTemplate(relatedProperties, `{${valueIndex}}`);
367
- break;
368
-
369
381
  case "Description":
370
- descriptionIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, textRelativePath, textProperty);
382
+ descriptionIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, textRelativePath, textProperty, "Description");
371
383
  _appendTemplate(relatedProperties, `{${descriptionIndex}}`);
372
- relatedProperties.textOnlyPropertiesFromTextAnnotation.push(textRelativePath);
373
384
  break;
374
385
 
375
386
  case "ValueDescription":
376
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
377
- descriptionIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, textRelativePath, textProperty);
387
+ valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
388
+ descriptionIndex = _setRelatedPropertiesAndGetIndex(
389
+ relatedProperties,
390
+ textRelativePath,
391
+ textProperty,
392
+ "ValueDescription"
393
+ );
378
394
  _appendTemplate(relatedProperties, `{${valueIndex}} ({${descriptionIndex}})`);
379
395
  break;
380
396
 
381
397
  case "DescriptionValue":
382
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
383
- descriptionIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, textRelativePath, textProperty);
398
+ valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
399
+ descriptionIndex = _setRelatedPropertiesAndGetIndex(
400
+ relatedProperties,
401
+ textRelativePath,
402
+ textProperty,
403
+ "DescriptionValue"
404
+ );
384
405
  _appendTemplate(relatedProperties, `{${descriptionIndex}} ({${valueIndex}})`);
385
406
  break;
386
- // no default
407
+ default:
408
+ valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
409
+ _appendTemplate(relatedProperties, `{${valueIndex}}`);
410
+ break;
387
411
  }
388
412
  } else {
389
413
  // Check for field containing Currency Or Unit Properties or Timezone
390
414
  const currencyProperty = getAssociatedCurrencyProperty(property);
391
415
  const unitProperty = getAssociatedUnitProperty(property);
392
- const currencyOrUoMProperty = currencyProperty || unitProperty;
416
+ const currencyOrUoMProperty = currencyProperty ?? unitProperty;
393
417
  const currencyOrUnitAnnotation: PathAnnotationExpression<string> =
394
418
  property?.annotations?.Measures?.ISOCurrency || property?.annotations?.Measures?.Unit;
395
419
  const timezoneProperty = getAssociatedTimezoneProperty(property);
396
420
  const timezoneAnnotation = property?.annotations?.Common?.Timezone;
397
421
 
398
422
  if (currencyOrUoMProperty) {
399
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
400
- currencyOrUoMIndex = _setPropertyInRelatedPropertiesAndGetIndex(
423
+ valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
424
+ currencyOrUoMIndex = _setRelatedPropertiesAndGetIndex(
401
425
  relatedProperties,
402
426
  navigationPathPrefix + currencyOrUnitAnnotation.path,
403
427
  currencyOrUnitAnnotation.$target!
@@ -420,7 +444,7 @@ export function collectRelatedProperties(
420
444
  } else if (property.$Type === CommunicationAnnotationTypes.ContactType) {
421
445
  const contactProperty = property.fn?.$target;
422
446
  const contactPropertyPath = property.fn?.path;
423
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(
447
+ valueIndex = _setRelatedPropertiesAndGetIndex(
424
448
  relatedProperties,
425
449
  navigationPathPrefix ? navigationPathPrefix + contactPropertyPath : contactPropertyPath,
426
450
  contactProperty
@@ -428,7 +452,7 @@ export function collectRelatedProperties(
428
452
  _appendTemplate(relatedProperties, `{${valueIndex}}`);
429
453
  } else if (!ignoreSelf) {
430
454
  // Collect underlying property
431
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
455
+ valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
432
456
  _appendTemplate(relatedProperties, `{${valueIndex}}`);
433
457
  if (currencyOrUnitAnnotation) {
434
458
  relatedProperties.exportSettings.unit = `${currencyOrUnitAnnotation}`; // Hard-coded currency/unit
@@ -445,7 +469,7 @@ export function collectRelatedProperties(
445
469
  if (Object.keys(relatedProperties.additionalProperties).length > 0 && Object.keys(relatedProperties.properties).length === 0) {
446
470
  // Collect underlying property if not collected already.
447
471
  // This is to ensure that additionalProperties are made available only to complex property infos.
448
- valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
472
+ valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
449
473
  _appendTemplate(relatedProperties, `{${valueIndex}}`);
450
474
  }
451
475
  }
@@ -482,7 +506,7 @@ function collectDataPointProperties(property: PrimitiveType, relatedProperties:
482
506
  const navigationPathPrefix = _getNavigationPathPrefix(path);
483
507
  // DataPoint use-case using DataFieldDefault.
484
508
  const dataPointDefaultProperty = property.annotations?.UI?.DataFieldDefault;
485
- const valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(
509
+ const valueIndex = _setRelatedPropertiesAndGetIndex(
486
510
  relatedProperties,
487
511
  navigationPathPrefix ? navigationPathPrefix + path : path,
488
512
  dataPointDefaultProperty ? property : dataPointProperty
@@ -495,7 +519,7 @@ function collectDataPointProperties(property: PrimitiveType, relatedProperties:
495
519
  if (isPathAnnotationExpression(targetValue)) {
496
520
  if (targetValue.$target) {
497
521
  //in case it's a dynamic targetValue
498
- const dataPointIndex = _setPropertyInRelatedPropertiesAndGetIndex(
522
+ const dataPointIndex = _setRelatedPropertiesAndGetIndex(
499
523
  relatedProperties,
500
524
  navigationPathPrefix ? navigationPathPrefix + targetValue.$target.name : targetValue.$target.name,
501
525
  targetValue.$target
@@ -528,9 +552,9 @@ function collectTimezoneProperties(
528
552
  ): void {
529
553
  const timezoneAnnotation = property.annotations.Common.Timezone;
530
554
  const navigationPathPrefix = _getNavigationPathPrefix(path);
531
- const valueIndex = _setPropertyInRelatedPropertiesAndGetIndex(relatedProperties, path, property);
555
+ const valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
532
556
 
533
- const timezoneOrUoMIndex = _setPropertyInRelatedPropertiesAndGetIndex(
557
+ const timezoneOrUoMIndex = _setRelatedPropertiesAndGetIndex(
534
558
  relatedProperties,
535
559
  navigationPathPrefix + timezoneAnnotation.path,
536
560
  timezoneAnnotation.$target
@@ -560,7 +584,6 @@ export function collectRelatedPropertiesRecursively(
560
584
  relatedProperties: ComplexPropertyInfo = {
561
585
  properties: {},
562
586
  additionalProperties: {},
563
- textOnlyPropertiesFromTextAnnotation: [],
564
587
  exportSettings: {}
565
588
  },
566
589
  isEmbedded = false