@sapui5/sap.fe.core 1.141.2 → 1.142.1

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 (207) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +4 -1
  3. package/src/sap/fe/core/ActionRuntime.js +48 -23
  4. package/src/sap/fe/core/ActionRuntime.ts +61 -35
  5. package/src/sap/fe/core/AppComponent.js +76 -6
  6. package/src/sap/fe/core/AppComponent.ts +94 -8
  7. package/src/sap/fe/core/AppStateHandler.js +9 -8
  8. package/src/sap/fe/core/AppStateHandler.ts +13 -9
  9. package/src/sap/fe/core/BaseController.js +8 -5
  10. package/src/sap/fe/core/BaseController.ts +6 -1
  11. package/src/sap/fe/core/CommonUtils.js +4 -123
  12. package/src/sap/fe/core/CommonUtils.ts +3 -172
  13. package/src/sap/fe/core/ExtensionAPI.js +3 -10
  14. package/src/sap/fe/core/ExtensionAPI.ts +2 -14
  15. package/src/sap/fe/core/PageController.js +64 -43
  16. package/src/sap/fe/core/PageController.ts +62 -47
  17. package/src/sap/fe/core/TemplateComponent.js +20 -1
  18. package/src/sap/fe/core/TemplateComponent.ts +24 -2
  19. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
  20. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
  21. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
  23. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
  24. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
  25. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +4 -1
  26. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -0
  27. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
  28. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
  29. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -39
  30. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +91 -54
  31. package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -3
  32. package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -3
  33. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
  34. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +8 -9
  41. package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
  44. package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
  45. package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
  47. package/src/sap/fe/core/controllerextensions/Routing.js +9 -5
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +7 -7
  49. package/src/sap/fe/core/controllerextensions/Share.js +5 -5
  50. package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
  53. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
  54. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
  55. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
  56. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +33 -11
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +45 -14
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +7 -7
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +6 -5
  65. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  66. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
  69. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +10 -6
  70. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -5
  71. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +11 -9
  72. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +22 -9
  73. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
  74. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +31 -2
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +34 -1
  77. package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
  78. package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
  79. package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
  80. package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
  81. package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
  82. package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
  83. package/src/sap/fe/core/converters/common/AnnotationConverter.js +88 -35
  84. package/src/sap/fe/core/converters/controls/Common/Action.js +57 -20
  85. package/src/sap/fe/core/converters/controls/Common/Action.ts +71 -21
  86. package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
  87. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
  88. package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
  89. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
  90. package/src/sap/fe/core/converters/controls/Common/Table.js +89 -57
  91. package/src/sap/fe/core/converters/controls/Common/Table.ts +110 -56
  92. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
  93. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
  94. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
  95. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +172 -78
  96. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
  98. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
  100. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
  101. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
  102. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
  103. package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
  104. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
  105. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
  106. package/src/sap/fe/core/converters/helpers/ID.js +3 -1
  107. package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
  108. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
  109. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
  110. package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
  111. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
  112. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
  113. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
  114. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
  115. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
  116. package/src/sap/fe/core/formatters/FPMFormatter.js +2 -2
  117. package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
  118. package/src/sap/fe/core/fpm/Component.js +8 -1
  119. package/src/sap/fe/core/fpm/Component.ts +8 -0
  120. package/src/sap/fe/core/fpm/manifest.json +1 -1
  121. package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
  122. package/src/sap/fe/core/helpers/AppStartupHelper.ts +91 -32
  123. package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
  124. package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
  125. package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
  126. package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
  127. package/src/sap/fe/core/helpers/ModelHelper.js +48 -9
  128. package/src/sap/fe/core/helpers/ModelHelper.ts +55 -10
  129. package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
  130. package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
  131. package/src/sap/fe/core/helpers/WebSocket.js +6 -7
  132. package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
  133. package/src/sap/fe/core/library.js +30 -3
  134. package/src/sap/fe/core/library.ts +28 -1
  135. package/src/sap/fe/core/messagebundle.properties +8 -1
  136. package/src/sap/fe/core/messagebundle_ar.properties +7 -0
  137. package/src/sap/fe/core/messagebundle_bg.properties +10 -3
  138. package/src/sap/fe/core/messagebundle_ca.properties +7 -0
  139. package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
  140. package/src/sap/fe/core/messagebundle_cs.properties +7 -0
  141. package/src/sap/fe/core/messagebundle_cy.properties +8 -1
  142. package/src/sap/fe/core/messagebundle_da.properties +7 -0
  143. package/src/sap/fe/core/messagebundle_de.properties +7 -0
  144. package/src/sap/fe/core/messagebundle_el.properties +7 -0
  145. package/src/sap/fe/core/messagebundle_en.properties +8 -1
  146. package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
  147. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +5 -0
  148. package/src/sap/fe/core/messagebundle_es.properties +8 -1
  149. package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
  150. package/src/sap/fe/core/messagebundle_et.properties +7 -0
  151. package/src/sap/fe/core/messagebundle_fi.properties +7 -0
  152. package/src/sap/fe/core/messagebundle_fr.properties +16 -9
  153. package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
  154. package/src/sap/fe/core/messagebundle_hi.properties +8 -1
  155. package/src/sap/fe/core/messagebundle_hr.properties +7 -0
  156. package/src/sap/fe/core/messagebundle_hu.properties +7 -0
  157. package/src/sap/fe/core/messagebundle_id.properties +7 -0
  158. package/src/sap/fe/core/messagebundle_it.properties +7 -0
  159. package/src/sap/fe/core/messagebundle_iw.properties +7 -0
  160. package/src/sap/fe/core/messagebundle_ja.properties +8 -1
  161. package/src/sap/fe/core/messagebundle_kk.properties +7 -0
  162. package/src/sap/fe/core/messagebundle_ko.properties +7 -0
  163. package/src/sap/fe/core/messagebundle_lt.properties +7 -0
  164. package/src/sap/fe/core/messagebundle_lv.properties +7 -0
  165. package/src/sap/fe/core/messagebundle_mk.properties +7 -0
  166. package/src/sap/fe/core/messagebundle_ms.properties +7 -0
  167. package/src/sap/fe/core/messagebundle_nl.properties +7 -0
  168. package/src/sap/fe/core/messagebundle_no.properties +7 -0
  169. package/src/sap/fe/core/messagebundle_pl.properties +7 -0
  170. package/src/sap/fe/core/messagebundle_pt.properties +7 -0
  171. package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
  172. package/src/sap/fe/core/messagebundle_ro.properties +7 -0
  173. package/src/sap/fe/core/messagebundle_ru.properties +7 -0
  174. package/src/sap/fe/core/messagebundle_sh.properties +7 -0
  175. package/src/sap/fe/core/messagebundle_sk.properties +7 -0
  176. package/src/sap/fe/core/messagebundle_sl.properties +7 -0
  177. package/src/sap/fe/core/messagebundle_sr.properties +7 -0
  178. package/src/sap/fe/core/messagebundle_sv.properties +7 -0
  179. package/src/sap/fe/core/messagebundle_th.properties +7 -0
  180. package/src/sap/fe/core/messagebundle_tr.properties +7 -0
  181. package/src/sap/fe/core/messagebundle_uk.properties +7 -0
  182. package/src/sap/fe/core/messagebundle_vi.properties +7 -0
  183. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
  184. package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
  185. package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
  186. package/src/sap/fe/core/rootView/Fcl.controller.ts +28 -6
  187. package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
  188. package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
  189. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
  190. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
  191. package/src/sap/fe/core/services/RoutingServiceFactory.js +16 -7
  192. package/src/sap/fe/core/services/RoutingServiceFactory.ts +23 -10
  193. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
  194. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
  195. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +62 -6
  196. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +74 -11
  197. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
  198. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
  199. package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
  200. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
  201. package/src/sap/fe/core/templating/UIFormatters.js +17 -2
  202. package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
  203. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
  204. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
  205. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
  206. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
  207. package/ui5.yaml +2 -0
@@ -2,6 +2,7 @@ import type { AnnotationTerm, Decimal, PathAnnotationExpression, PrimitiveType,
2
2
  import type { Contact } from "@sap-ux/vocabularies-types/vocabularies/Communication";
3
3
  import { CommunicationAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/Communication";
4
4
  import type {
5
+ ConnectedFields,
5
6
  DataField,
6
7
  DataFieldAbstractTypes,
7
8
  DataFieldForAction,
@@ -41,7 +42,7 @@ import {
41
42
  import { enhanceDataModelPath, getContextRelativeTargetObjectPath, type DataModelObjectPath } from "../../templating/DataModelPathHelper";
42
43
  import type { DisplayMode } from "../../templating/UIFormatters";
43
44
  import type ConverterContext from "../ConverterContext";
44
- import { isReferencePropertyStaticallyHidden } from "../helpers/DataFieldHelper";
45
+ import { getConnectedFieldsData, getConnectedFieldsSeparator, isReferencePropertyStaticallyHidden } from "../helpers/DataFieldHelper";
45
46
 
46
47
  export type ComplexPropertyInfo = {
47
48
  properties: Record<string, { annotationProperty: Property; displayModeOfPropertyUsedAsDescription?: DisplayMode }>;
@@ -124,6 +125,16 @@ export function hasFieldGroupTarget(dataFieldForAnnotation: DataFieldForAnnotati
124
125
  return isAnnotationOfType<FieldGroup>(dataFieldTarget, UIAnnotationTypes.FieldGroupType);
125
126
  }
126
127
 
128
+ /**
129
+ * Determines if the dataFieldForAnnotation points to a connectedFields annotation.
130
+ * @param dataFieldForAnnotation The dataFieldForAnnotation being processed
131
+ * @returns True if the dataFieldForAnnotation points to a connectedFields annotation.
132
+ */
133
+ export function hasConnectedFieldsTarget(dataFieldForAnnotation: DataFieldForAnnotation | ReferenceFacet): boolean {
134
+ const dataFieldTarget = dataFieldForAnnotation.Target.$target;
135
+ return isAnnotationOfType<ConnectedFields>(dataFieldTarget, UIAnnotationTypes.ConnectedFieldsType);
136
+ }
137
+
127
138
  /**
128
139
  * Determines if the dataFieldForAnnotation is a field group.
129
140
  * @param dataFieldForAnnotation The dataFieldForAnnotation being processed
@@ -374,8 +385,10 @@ export function collectRelatedProperties(
374
385
  exportSettings: {}
375
386
  },
376
387
  addUnitInTemplate = false,
377
- isAnnotatedAsHidden = false
388
+ isAnnotatedAsHidden = false,
389
+ connectedFieldsSeparator: string | undefined = undefined
378
390
  ): ComplexPropertyInfo {
391
+ const isPartOfaConnectedFields = !!connectedFieldsSeparator;
379
392
  if (path && property) {
380
393
  let valueIndex: number;
381
394
  /* EXTERNALID */
@@ -385,7 +398,12 @@ export function collectRelatedProperties(
385
398
  if (isAnnotatedAsHidden) {
386
399
  // Collect underlying property
387
400
  valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
388
- _appendTemplate(relatedProperties, `{${valueIndex}}`);
401
+ _appendTemplate(
402
+ relatedProperties,
403
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
404
+ ? `${connectedFieldsSeparator}{${valueIndex}}`
405
+ : `{${valueIndex}}`
406
+ );
389
407
  return relatedProperties;
390
408
  }
391
409
  const navigationPathPrefix = _getNavigationPathPrefix(path);
@@ -406,8 +424,11 @@ export function collectRelatedProperties(
406
424
 
407
425
  if (relatedProperties.exportSettings?.template) {
408
426
  // FieldGroup use-case. Need to add each Field in new line.
409
- _appendTemplate(relatedProperties, "\n");
410
- relatedProperties.exportSettings.wrap = true;
427
+ // ConnectedFields use-case. Need to add the separator between the Fields that stay on the same line.
428
+ _appendTemplate(relatedProperties, isPartOfaConnectedFields ? connectedFieldsSeparator : "\n");
429
+ if (!connectedFieldsSeparator) {
430
+ relatedProperties.exportSettings.wrap = true;
431
+ }
411
432
  }
412
433
 
413
434
  // The text arrangement will be considered only if the text property is groupable
@@ -420,7 +441,7 @@ export function collectRelatedProperties(
420
441
  const pathForText = externalIdPath ? externalIdPath : path;
421
442
  const propertyForText = externalIdProperty ? externalIdProperty : property;
422
443
  // Check for Text Arrangement.
423
- const displayMode = getDisplayMode(propertyForText, propertyDataModelObjectPath);
444
+ const displayMode = getDisplayMode(propertyForText, propertyDataModelObjectPath.targetEntityType);
424
445
  let descriptionIndex: number;
425
446
  switch (displayMode) {
426
447
  case "Description":
@@ -430,7 +451,12 @@ export function collectRelatedProperties(
430
451
  textProperty,
431
452
  "Description"
432
453
  );
433
- _appendTemplate(relatedProperties, `{${descriptionIndex}}`);
454
+ _appendTemplate(
455
+ relatedProperties,
456
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
457
+ ? `${connectedFieldsSeparator}{${descriptionIndex}}`
458
+ : `{${descriptionIndex}}`
459
+ );
434
460
  break;
435
461
 
436
462
  case "ValueDescription":
@@ -441,7 +467,12 @@ export function collectRelatedProperties(
441
467
  textProperty,
442
468
  "ValueDescription"
443
469
  );
444
- _appendTemplate(relatedProperties, `{${valueIndex}} ({${descriptionIndex}})`);
470
+ _appendTemplate(
471
+ relatedProperties,
472
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
473
+ ? `${connectedFieldsSeparator}{${valueIndex}} ({${descriptionIndex}})`
474
+ : `{${valueIndex}} ({${descriptionIndex}})`
475
+ );
445
476
  break;
446
477
 
447
478
  case "DescriptionValue":
@@ -452,17 +483,32 @@ export function collectRelatedProperties(
452
483
  textProperty,
453
484
  "DescriptionValue"
454
485
  );
455
- _appendTemplate(relatedProperties, `{${descriptionIndex}} ({${valueIndex}})`);
486
+ _appendTemplate(
487
+ relatedProperties,
488
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
489
+ ? `${connectedFieldsSeparator}{${descriptionIndex}} ({${valueIndex}})`
490
+ : `{${descriptionIndex}} ({${valueIndex}})`
491
+ );
456
492
  break;
457
493
  default:
458
494
  valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, pathForText, propertyForText);
459
- _appendTemplate(relatedProperties, `{${valueIndex}}`);
495
+ _appendTemplate(
496
+ relatedProperties,
497
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
498
+ ? `${connectedFieldsSeparator}{${valueIndex}}`
499
+ : `{${valueIndex}}`
500
+ );
460
501
  break;
461
502
  }
462
503
  } else {
463
504
  // Collect underlying property
464
505
  valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
465
- _appendTemplate(relatedProperties, `{${valueIndex}}`);
506
+ _appendTemplate(
507
+ relatedProperties,
508
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
509
+ ? `${connectedFieldsSeparator}{${valueIndex}}`
510
+ : `{${valueIndex}}`
511
+ );
466
512
  }
467
513
  } else {
468
514
  // Check for field containing Currency Or Unit Properties or Timezone
@@ -481,6 +527,7 @@ export function collectRelatedProperties(
481
527
  addUnitInTemplate,
482
528
  propertyDataModelObjectPath,
483
529
  currencyOrUoMProperty,
530
+ isPartOfaConnectedFields,
484
531
  currencyProperty
485
532
  );
486
533
  } else if (timezoneProperty && timezoneAnnotation?.$target) {
@@ -498,12 +545,17 @@ export function collectRelatedProperties(
498
545
  navigationPathPrefix ? navigationPathPrefix + contactPropertyPath : contactPropertyPath,
499
546
  contactProperty
500
547
  );
501
- _appendTemplate(relatedProperties, `{${valueIndex}}`);
548
+ _appendTemplate(
549
+ relatedProperties,
550
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
551
+ ? `${connectedFieldsSeparator}{${valueIndex}}`
552
+ : `{${valueIndex}}`
553
+ );
502
554
  } else if (!ignoreSelf) {
503
555
  // Collect underlying property
504
556
  valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
505
557
  _appendTemplate(relatedProperties, `{${valueIndex}}`);
506
- if (currencyOrUnitAnnotation) {
558
+ if (!isPartOfaConnectedFields && currencyOrUnitAnnotation) {
507
559
  relatedProperties.exportSettings.unit = `${currencyOrUnitAnnotation}`; // Hard-coded currency/unit
508
560
  if (property?.annotations?.Measures?.ISOCurrency) {
509
561
  relatedProperties.exportSettings.isCurrency = true;
@@ -523,7 +575,12 @@ export function collectRelatedProperties(
523
575
  // Collect underlying property if not collected already.
524
576
  // This is to ensure that additionalProperties are made available only to complex property infos.
525
577
  valueIndex = _setRelatedPropertiesAndGetIndex(relatedProperties, path, property);
526
- _appendTemplate(relatedProperties, `{${valueIndex}}`);
578
+ _appendTemplate(
579
+ relatedProperties,
580
+ isPartOfaConnectedFields && relatedProperties.exportSettings?.template
581
+ ? `${connectedFieldsSeparator}{${valueIndex}}`
582
+ : `{${valueIndex}}`
583
+ );
527
584
  }
528
585
  }
529
586
  return relatedProperties;
@@ -629,6 +686,7 @@ function collectCurrencyOrUnitProperties(
629
686
  addUnitInTemplate: boolean,
630
687
  propertyDataModelObjectPath: DataModelObjectPath<Property>,
631
688
  currencyOrUoMProperty: Property,
689
+ isPartOfaConnectedFields: boolean,
632
690
  currencyProperty?: Property
633
691
  ): void {
634
692
  const property = propertyDataModelObjectPath.targetObject;
@@ -646,10 +704,12 @@ function collectCurrencyOrUnitProperties(
646
704
  } else {
647
705
  relatedProperties.exportSettings.unitProperty = unitOrCurrencyRelativePath;
648
706
  }
649
- if (currencyProperty) {
707
+ if (currencyProperty && !isPartOfaConnectedFields) {
650
708
  relatedProperties.exportSettings.isCurrency = true;
651
709
  }
652
- relatedProperties.exportSettings.scale = property.scale;
710
+ if (!isPartOfaConnectedFields) {
711
+ relatedProperties.exportSettings.scale = property.scale;
712
+ }
653
713
  }
654
714
  }
655
715
 
@@ -672,7 +732,8 @@ export function collectRelatedPropertiesRecursively(
672
732
  additionalProperties: {},
673
733
  exportSettings: {}
674
734
  },
675
- isEmbedded = false
735
+ isEmbedded = false,
736
+ connectedFieldsSeparator: string | undefined = undefined
676
737
  ): ComplexPropertyInfo {
677
738
  let isStaticallyHidden = false;
678
739
  switch (dataField?.$Type) {
@@ -692,7 +753,8 @@ export function collectRelatedPropertiesRecursively(
692
753
  tableType,
693
754
  relatedProperties,
694
755
  isEmbedded,
695
- isStaticallyHidden
756
+ isStaticallyHidden,
757
+ connectedFieldsSeparator
696
758
  );
697
759
  const navigationPathPrefix = _getNavigationPathPrefix(property.path);
698
760
  relatedProperties = _collectAdditionalPropertiesForAnalyticalTable(
@@ -721,7 +783,19 @@ export function collectRelatedPropertiesRecursively(
721
783
  );
722
784
  });
723
785
  break;
724
-
786
+ case UIAnnotationTypes.ConnectedFieldsType:
787
+ connectedFieldsSeparator = getConnectedFieldsSeparator(dataField.Target.$target);
788
+ getConnectedFieldsData(dataField.Target.$target).forEach((innerDataField: DataFieldAbstractTypes) => {
789
+ relatedProperties = collectRelatedPropertiesRecursively(
790
+ innerDataField,
791
+ converterContext,
792
+ tableType,
793
+ relatedProperties,
794
+ true,
795
+ connectedFieldsSeparator
796
+ );
797
+ });
798
+ break;
725
799
  case UIAnnotationTypes.DataPointType:
726
800
  isStaticallyHidden = isReferencePropertyStaticallyHidden(dataField);
727
801
  relatedProperties = collectRelatedProperties(