@sapui5/sap.fe.macros 1.141.1 → 1.142.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 (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +4 -10
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
  5. package/src/sap/fe/macros/Chart.js +34 -23
  6. package/src/sap/fe/macros/Chart.tsx +25 -11
  7. package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
  8. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
  9. package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
  10. package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
  11. package/src/sap/fe/macros/CommonHelper.js +14 -24
  12. package/src/sap/fe/macros/CommonHelper.ts +18 -25
  13. package/src/sap/fe/macros/Field.js +30 -13
  14. package/src/sap/fe/macros/Field.ts +60 -30
  15. package/src/sap/fe/macros/FooterContent.js +5 -2
  16. package/src/sap/fe/macros/FooterContent.tsx +6 -3
  17. package/src/sap/fe/macros/KPITag.js +1 -1
  18. package/src/sap/fe/macros/KPITag.tsx +3 -1
  19. package/src/sap/fe/macros/MacroAPI.js +3 -2
  20. package/src/sap/fe/macros/MacroAPI.ts +2 -2
  21. package/src/sap/fe/macros/MessageButton.js +3 -2
  22. package/src/sap/fe/macros/MessageButton.tsx +5 -2
  23. package/src/sap/fe/macros/MicroChart.js +10 -6
  24. package/src/sap/fe/macros/MicroChart.tsx +8 -2
  25. package/src/sap/fe/macros/MultiValueField.js +22 -36
  26. package/src/sap/fe/macros/MultiValueField.tsx +34 -66
  27. package/src/sap/fe/macros/RichTextEditor.js +3 -4
  28. package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
  29. package/src/sap/fe/macros/Status.js +35 -8
  30. package/src/sap/fe/macros/Status.tsx +23 -2
  31. package/src/sap/fe/macros/ValueHelp.js +5 -2
  32. package/src/sap/fe/macros/ValueHelp.tsx +5 -0
  33. package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
  34. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
  35. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
  36. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
  37. package/src/sap/fe/macros/chart/Action.js +25 -2
  38. package/src/sap/fe/macros/chart/Action.ts +13 -0
  39. package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
  40. package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
  41. package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
  42. package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
  43. package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
  44. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
  45. package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
  46. package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
  47. package/src/sap/fe/macros/controls/FilterBar.js +39 -3
  48. package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
  49. package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
  50. package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
  51. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  52. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  53. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
  54. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
  55. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
  56. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
  57. package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
  58. package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
  59. package/src/sap/fe/macros/field/FieldHelper.js +4 -3
  60. package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
  61. package/src/sap/fe/macros/field/FieldRuntime.js +38 -8
  62. package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
  63. package/src/sap/fe/macros/field/FieldRuntimeHelper.js +3 -34
  64. package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
  65. package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
  66. package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
  67. package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
  68. package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
  69. package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
  70. package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
  71. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
  72. package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
  73. package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
  74. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
  75. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
  76. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
  77. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
  78. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  79. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
  80. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
  81. package/src/sap/fe/macros/form/Form.block.js +27 -2
  82. package/src/sap/fe/macros/form/Form.block.ts +31 -11
  83. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
  84. package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
  85. package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
  86. package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
  87. package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
  88. package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
  89. package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
  90. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
  91. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
  92. package/src/sap/fe/macros/insights/InsightsService.js +3 -2
  93. package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
  94. package/src/sap/fe/macros/internal/DataPoint.js +7 -8
  95. package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
  96. package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
  97. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
  98. package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
  99. package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
  100. package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
  101. package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
  102. package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
  103. package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
  104. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
  105. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
  106. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
  107. package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
  108. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
  109. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
  110. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
  111. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
  112. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
  113. package/src/sap/fe/macros/library.js +3 -3
  114. package/src/sap/fe/macros/library.ts +2 -0
  115. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
  116. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
  117. package/src/sap/fe/macros/messagebundle.properties +7 -5
  118. package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
  119. package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
  120. package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
  121. package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
  122. package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
  123. package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
  124. package/src/sap/fe/macros/messagebundle_da.properties +12 -3
  125. package/src/sap/fe/macros/messagebundle_de.properties +16 -7
  126. package/src/sap/fe/macros/messagebundle_el.properties +13 -4
  127. package/src/sap/fe/macros/messagebundle_en.properties +13 -4
  128. package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
  129. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
  130. package/src/sap/fe/macros/messagebundle_es.properties +12 -3
  131. package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
  132. package/src/sap/fe/macros/messagebundle_et.properties +12 -3
  133. package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
  134. package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
  135. package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
  136. package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
  137. package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
  138. package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
  139. package/src/sap/fe/macros/messagebundle_id.properties +18 -9
  140. package/src/sap/fe/macros/messagebundle_it.properties +12 -3
  141. package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
  142. package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
  143. package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
  144. package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
  145. package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
  146. package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
  147. package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
  148. package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
  149. package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
  150. package/src/sap/fe/macros/messagebundle_no.properties +12 -3
  151. package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
  152. package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
  153. package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
  154. package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
  155. package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
  156. package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
  157. package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
  158. package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
  159. package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
  160. package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
  161. package/src/sap/fe/macros/messagebundle_th.properties +11 -2
  162. package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
  163. package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
  164. package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
  165. package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
  166. package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
  167. package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
  168. package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
  169. package/src/sap/fe/macros/table/Action.js +15 -2
  170. package/src/sap/fe/macros/table/Action.ts +11 -1
  171. package/src/sap/fe/macros/table/ActionGroup.js +15 -2
  172. package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
  173. package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
  174. package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
  175. package/src/sap/fe/macros/table/ActionOverride.js +14 -2
  176. package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
  177. package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
  178. package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
  179. package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
  180. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
  181. package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
  182. package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
  183. package/src/sap/fe/macros/table/Table.block.js +70 -29
  184. package/src/sap/fe/macros/table/Table.block.tsx +65 -12
  185. package/src/sap/fe/macros/table/TableAPI.js +169 -131
  186. package/src/sap/fe/macros/table/TableAPI.ts +58 -28
  187. package/src/sap/fe/macros/table/TableDefinition.js +19 -2
  188. package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
  189. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
  190. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
  191. package/src/sap/fe/macros/table/TableHelper.js +5 -2
  192. package/src/sap/fe/macros/table/TableHelper.ts +5 -2
  193. package/src/sap/fe/macros/table/TableRuntime.js +2 -2
  194. package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
  195. package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
  196. package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
  197. package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
  198. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
  199. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
  200. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
  201. package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
  202. package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
  203. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
  204. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
  205. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
  206. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
  207. package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
  208. package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
  209. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
  210. package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
  211. package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
  212. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
  213. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
  214. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
  215. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
  216. package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
  217. package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
@@ -1,6 +1,7 @@
1
1
  import type { ConvertedMetadata, EntitySet, NavigationProperty } from "@sap-ux/vocabularies-types";
2
2
  import type {
3
3
  Chart,
4
+ ConnectedFields,
4
5
  DataField,
5
6
  DataFieldForAction,
6
7
  DataFieldForAnnotation,
@@ -47,7 +48,8 @@ import type {
47
48
  CustomBasedTableColumn
48
49
  } from "sap/fe/core/converters/controls/Common/table/Columns";
49
50
  import { StandardActionKeys, type StandardAction } from "sap/fe/core/converters/controls/Common/table/StandardActions";
50
- import { UI, singletonPathVisitor } from "sap/fe/core/helpers/BindingHelper";
51
+ import { getConnectedFieldsData } from "sap/fe/core/converters/helpers/DataFieldHelper";
52
+ import { Entity, UI, singletonPathVisitor } from "sap/fe/core/helpers/BindingHelper";
51
53
  import ModelHelper from "sap/fe/core/helpers/ModelHelper";
52
54
  import { generate } from "sap/fe/core/helpers/StableIdHelper";
53
55
  import { isAnnotationOfTerm, isAnnotationOfType, isSingleton } from "sap/fe/core/helpers/TypeGuards";
@@ -80,6 +82,7 @@ import MenuItem from "sap/m/MenuItem";
80
82
  import ObjectStatus from "sap/m/ObjectStatus";
81
83
  import SegmentedButton from "sap/m/SegmentedButton";
82
84
  import SegmentedButtonItem from "sap/m/SegmentedButtonItem";
85
+ import Text from "sap/m/Text";
83
86
  import VBox from "sap/m/VBox";
84
87
  import { ObjectMarkerVisibility } from "sap/m/library";
85
88
  import CellSelector from "sap/m/plugins/CellSelector";
@@ -180,6 +183,7 @@ function getDataStateIndicator(handlerProvider: TableEventHandlerProvider): Data
180
183
  return (
181
184
  <DataStateIndicator
182
185
  filter={handlerProvider.dataStateIndicatorFilter}
186
+ enabled={compileExpression(not(equal(pathInModel("enableTableDataStateIndicator", "pageInternal"), false)))}
183
187
  enableFiltering={true}
184
188
  dataStateChange={handlerProvider.dataStateChange}
185
189
  />
@@ -921,6 +925,7 @@ export function getComputedColumn(
921
925
  <DraftIndicator
922
926
  draftIndicatorType={ObjectMarkerVisibility.IconOnly}
923
927
  contextPath={collection.getPath()}
928
+ visible={or(not(Entity.IsActive), Entity.HasDraft)}
924
929
  usedInTable={true}
925
930
  usedInAnalyticalTable={enableAnalytics}
926
931
  />
@@ -1163,7 +1168,8 @@ export function getMacroFieldTemplate(
1163
1168
  ariaLabelledBy: string | undefined,
1164
1169
  showEmptyIndicator: boolean | undefined,
1165
1170
  className: string | undefined,
1166
- handlerProvider: TableEventHandlerProvider
1171
+ handlerProvider: TableEventHandlerProvider,
1172
+ isConnectedField = false
1167
1173
  ): string {
1168
1174
  const dataFieldObject = dataFieldContext.getObject();
1169
1175
  let columnEditMode: string | undefined;
@@ -1200,7 +1206,7 @@ export function getMacroFieldTemplate(
1200
1206
  ignoreNavigationAvailable: enableAnalytics ?? false,
1201
1207
  isAnalytics: enableAnalytics,
1202
1208
  forInlineCreationRows: creationMode?.name === "InlineCreationRows",
1203
- isCurrencyOrUnitAligned: true,
1209
+ isCurrencyOrUnitAligned: isConnectedField ? false : true,
1204
1210
  compactSemanticKey: isCompactType === undefined ? undefined : `${isCompactType}`,
1205
1211
  dateTimeStyle: getDefaultDateTimeStyle(dataFieldContext),
1206
1212
  isAnalyticalAggregatedRow: tableDefinition.control.analyticalConfiguration?.aggregationOnLeafLevel,
@@ -1212,13 +1218,14 @@ export function getMacroFieldTemplate(
1212
1218
  editMode={columnEditMode}
1213
1219
  contextPath={collection.getPath()}
1214
1220
  metaPath={dataFieldContext.getPath()}
1215
- textAlign={textAlign}
1221
+ textAlign={isConnectedField ? "Left" : textAlign}
1216
1222
  wrap={tableType === "ResponsiveTable"}
1217
1223
  class={className}
1218
1224
  liveChange={handlerProvider.fieldLiveChange}
1219
- ariaLabelledBy={ariaLabelledBy ? [ariaLabelledBy] : undefined}
1225
+ ariaLabelledBy={ariaLabelledBy ? ariaLabelledBy.split(" ") : undefined}
1220
1226
  navigateAfterAction={column.isNavigable}
1221
1227
  showErrorObjectStatus={column.formatOptions?.showErrorObjectStatus as unknown as boolean}
1228
+ disableStrictHandling={column.disableStrictHandling}
1222
1229
  >
1223
1230
  {{
1224
1231
  formatOptions: <FieldFormatOptions {...formatOptions} />
@@ -1323,7 +1330,7 @@ function getColumnContentTemplate(
1323
1330
  const dataFieldCollectionContext = dataFieldContext
1324
1331
  .getModel()
1325
1332
  .createBindingContext(dataFieldContext.getPath() + "/Target/$AnnotationPath/Data");
1326
- const fieldGroupColectionLength = fieldGroup.Data.length - 1;
1333
+ const fieldGroupCollectionLength = fieldGroup.Data.length - 1;
1327
1334
 
1328
1335
  const items = fieldGroup.Data.map((fieldGroupDataField: DataFieldAbstractTypes, fieldGroupDataFieldIdx: number) => {
1329
1336
  const fieldGroupDataFieldContext = dataFieldCollectionContext
@@ -1371,7 +1378,7 @@ function getColumnContentTemplate(
1371
1378
  true,
1372
1379
  TableHelper.getMarginClass(
1373
1380
  fieldGroupDataFieldContext.getObject("Target/$AnnotationPath/Visualization/$EnumMember"),
1374
- fieldGroupDataFieldIdx === fieldGroupColectionLength
1381
+ fieldGroupDataFieldIdx === fieldGroupCollectionLength
1375
1382
  ),
1376
1383
  handlerProvider
1377
1384
  )
@@ -1397,7 +1404,7 @@ function getColumnContentTemplate(
1397
1404
  false,
1398
1405
  TableHelper.getMarginClass(
1399
1406
  fieldGroupDataFieldContext.getObject("Target/$AnnotationPath/Visualization/$EnumMember"),
1400
- fieldGroupDataFieldIdx === fieldGroupColectionLength
1407
+ fieldGroupDataFieldIdx === fieldGroupCollectionLength
1401
1408
  ),
1402
1409
  handlerProvider
1403
1410
  );
@@ -1417,7 +1424,7 @@ function getColumnContentTemplate(
1417
1424
  <VBox
1418
1425
  visible={TableHelper.getVBoxVisibility(
1419
1426
  dataFieldCollectionContext.getObject(),
1420
- column.FieldGroupHiddenExpressions,
1427
+ column.collectionFieldsHiddenExpression,
1421
1428
  dataFieldContext.getObject()
1422
1429
  )}
1423
1430
  >
@@ -1426,6 +1433,115 @@ function getColumnContentTemplate(
1426
1433
  }}
1427
1434
  </VBox>
1428
1435
  );
1436
+ } else if (
1437
+ isAnnotationOfType<DataFieldForAnnotation>(dataField, UIAnnotationTypes.DataFieldForAnnotation) &&
1438
+ isAnnotationOfTerm<ConnectedFields>(dataField.Target.$target, UIAnnotationTerms.ConnectedFields)
1439
+ ) {
1440
+ const connectedFields: ConnectedFields = dataField.Target.$target;
1441
+ const connectedFieldsContext = dataFieldContext
1442
+ .getModel()
1443
+ .createBindingContext(dataFieldContext.getPath() + "/Target/$AnnotationPath/Data");
1444
+ const fieldsDelimiter = CommonHelper.getDelimiter(connectedFields.Template as string);
1445
+ const connectedFieldsData = getConnectedFieldsData(connectedFields);
1446
+ const items = connectedFieldsData.map((connectedFieldsElement: DataFieldAbstractTypes, connectedFieldsElementIdx: number) => {
1447
+ const connectedFieldsElementContext = dataFieldContext
1448
+ .getModel()
1449
+ .createBindingContext(`${connectedFieldsContext.getPath()}/${(connectedFieldsElement as DataField)?.Value?.path}`);
1450
+ const fieldTemplate = getMacroFieldTemplate(
1451
+ tableId,
1452
+ tableDefinition,
1453
+ column,
1454
+ connectedFieldsElementContext,
1455
+ collection,
1456
+ enableAnalytics,
1457
+ tableType,
1458
+ isTableReadOnly,
1459
+ creationMode,
1460
+ undefined,
1461
+ isCompactType,
1462
+ "Left",
1463
+ `${TableHelper.getColumnStableId(tableId, dataFieldOP)}`,
1464
+ false,
1465
+ undefined,
1466
+ handlerProvider,
1467
+ true
1468
+ );
1469
+
1470
+ if (connectedFieldsElementIdx < connectedFieldsData.length - 1) {
1471
+ if (tableType === "ResponsiveTable") {
1472
+ return [
1473
+ fieldTemplate,
1474
+ /*Use ObjectStatus in ResponsiveTable: its line box matches cell height,
1475
+ so the delimiter is vertically centered in both display & edit modes.*/
1476
+ <ObjectStatus
1477
+ // NBSP on both sides to keep spacing
1478
+ text={`\u00A0${fieldsDelimiter}\u00A0`}
1479
+ state="None"
1480
+ >
1481
+ {{
1482
+ // Prevent the delimiter from being squeezed to zero width on tight layouts.
1483
+ layoutData: <FlexItemData shrinkFactor={0} />
1484
+ }}
1485
+ </ObjectStatus>
1486
+ ];
1487
+ }
1488
+
1489
+ // Grid/Tree tables: Text works fine here (keeps baseline behavior in display, centers in edit).
1490
+ return [
1491
+ fieldTemplate,
1492
+ <Text
1493
+ // NBSP on both sides to keep spacing
1494
+ text={`\u00A0${fieldsDelimiter}\u00A0`}
1495
+ //single line
1496
+ wrapping="false"
1497
+ // actually render the NBSPs
1498
+ renderWhitespace="true"
1499
+ >
1500
+ {{
1501
+ // Avoid squeeze-to-dot effect when space is tight.
1502
+ layoutData: <FlexItemData shrinkFactor={0} />
1503
+ }}
1504
+ </Text>
1505
+ ];
1506
+ } else {
1507
+ return [fieldTemplate];
1508
+ }
1509
+ });
1510
+
1511
+ /* Inner container alignment:
1512
+ - ResponsiveTable: always center (better visual consistency)
1513
+ - Grid/Tree: baseline in display, center in edit (mix of Text/Input heights)*/
1514
+ const innerHBox = (
1515
+ <HBox
1516
+ wrap="NoWrap"
1517
+ alignItems={
1518
+ tableType === "ResponsiveTable"
1519
+ ? "Center"
1520
+ : compileExpression(ifElse(UI.IsEditable, constant("Center"), constant("Baseline")))
1521
+ }
1522
+ >
1523
+ {{
1524
+ items: items
1525
+ }}
1526
+ </HBox>
1527
+ );
1528
+
1529
+ // Outer wrapper: render a real box, take the row height, and center vertically.
1530
+ // This guarantees vertical centering of the whole connected-fields block within the cell.
1531
+ template = (
1532
+ <HBox
1533
+ wrap="NoWrap"
1534
+ renderType="Div"
1535
+ fitContainer={true}
1536
+ alignItems="Center"
1537
+ visible={column.collectionFieldsHiddenExpression}
1538
+ justifyContent={column.horizontalAlign}
1539
+ >
1540
+ {{
1541
+ items: [innerHBox]
1542
+ }}
1543
+ </HBox>
1544
+ );
1429
1545
  } else {
1430
1546
  template = getMacroFieldTemplate(
1431
1547
  tableId,
@@ -1499,6 +1615,7 @@ export function getColumnTemplate(
1499
1615
  const enableAutoColumnWidth = tableProperties.enableAutoColumnWidth ?? tableProperties.tableDefinition.control.enableAutoColumnWidth;
1500
1616
  const widthIncludingColumnHeader = tableProperties.tableDefinition.control.widthIncludingColumnHeader;
1501
1617
  const tableType = tableProperties.tableDefinition.control.type;
1618
+ const isConnectedField = dataFieldObject.Target?.$AnnotationPath?.includes(UIAnnotationTerms.ConnectedFields);
1502
1619
 
1503
1620
  return (
1504
1621
  <Column
@@ -1538,7 +1655,11 @@ export function getColumnTemplate(
1538
1655
  header={column.label || column.name}
1539
1656
  propertyKey={column.name}
1540
1657
  hAlign={column.horizontalAlign || FieldHelper.getColumnAlignment(dataFieldObject, { collection: collection })}
1541
- headerVisible={TableHelper.setHeaderLabelVisibility(dataFieldObject, dataFieldContext.getObject("Target/$AnnotationPath/Data"))}
1658
+ headerVisible={
1659
+ isConnectedField
1660
+ ? true
1661
+ : TableHelper.setHeaderLabelVisibility(dataFieldObject, dataFieldContext.getObject("Target/$AnnotationPath/Data"))
1662
+ }
1542
1663
  tooltip={column.tooltip}
1543
1664
  required={tableProperties.readOnly ? undefined : column.required}
1544
1665
  >
@@ -0,0 +1,59 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/macros/controls/BuildingBlockObjectProperty"], function (ClassSupport, BuildingBlockObjectProperty) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
9
+ var _exports = {};
10
+ var property = ClassSupport.property;
11
+ var defineUI5Class = ClassSupport.defineUI5Class;
12
+ function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
13
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
14
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
15
+ function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
16
+ function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
17
+ /**
18
+ * Configuration of toolbar separators to be used inside the table toolbar
19
+ * @public
20
+ */
21
+ let OverflowGroup = (_dec = defineUI5Class("sap.fe.macros.table.OverflowGroup"), _dec2 = property({
22
+ type: "int",
23
+ required: true
24
+ }), _dec3 = property({
25
+ type: "boolean"
26
+ }), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlockObjectP) {
27
+ function OverflowGroup(settings) {
28
+ var _this;
29
+ _this = _BuildingBlockObjectP.call(this, settings) || this;
30
+ /**
31
+ * Defines the group of the toolbar separator in the overflow toolbar.
32
+ * @public
33
+ */
34
+ _initializerDefineProperty(_this, "overflowGroup", _descriptor, _this);
35
+ /**
36
+ * Defines if a toolbar separator should be displayed.
37
+ * @public
38
+ */
39
+ _initializerDefineProperty(_this, "showSeparator", _descriptor2, _this);
40
+ return _this;
41
+ }
42
+ _exports = OverflowGroup;
43
+ _inheritsLoose(OverflowGroup, _BuildingBlockObjectP);
44
+ return OverflowGroup;
45
+ }(BuildingBlockObjectProperty), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "overflowGroup", [_dec2], {
46
+ configurable: true,
47
+ enumerable: true,
48
+ writable: true,
49
+ initializer: null
50
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "showSeparator", [_dec3], {
51
+ configurable: true,
52
+ enumerable: true,
53
+ writable: true,
54
+ initializer: null
55
+ }), _class2)) || _class);
56
+ _exports = OverflowGroup;
57
+ return _exports;
58
+ }, false);
59
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPdmVyZmxvd0dyb3VwIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJyZXF1aXJlZCIsIl9kZWMzIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrT2JqZWN0UCIsInNldHRpbmdzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJCdWlsZGluZ0Jsb2NrT2JqZWN0UHJvcGVydHkiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwicHJvdG90eXBlIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk92ZXJmbG93R3JvdXBzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja09iamVjdFByb3BlcnR5IGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0J1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eVwiO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb2YgdG9vbGJhciBzZXBhcmF0b3JzIHRvIGJlIHVzZWQgaW5zaWRlIHRoZSB0YWJsZSB0b29sYmFyXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MudGFibGUuT3ZlcmZsb3dHcm91cFwiKVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3ZlcmZsb3dHcm91cCBleHRlbmRzIEJ1aWxkaW5nQmxvY2tPYmplY3RQcm9wZXJ0eSB7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBncm91cCBvZiB0aGUgdG9vbGJhciBzZXBhcmF0b3IgaW4gdGhlIG92ZXJmbG93IHRvb2xiYXIuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiaW50XCIsIHJlcXVpcmVkOiB0cnVlIH0pXG5cdG92ZXJmbG93R3JvdXAhOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaWYgYSB0b29sYmFyIHNlcGFyYXRvciBzaG91bGQgYmUgZGlzcGxheWVkLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93U2VwYXJhdG9yPzogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5nczogUHJvcGVydGllc09mPE92ZXJmbG93R3JvdXA+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7RUFHQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSxhQUFhLElBQUFDLElBQUEsR0FEakNDLGNBQWMsQ0FBQyxtQ0FBbUMsQ0FBQyxFQUFBQyxLQUFBLEdBTWxEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLEtBQUs7SUFBRUMsUUFBUSxFQUFFO0VBQUssQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FPekNILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBTyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLHFCQUFBO0lBRzlCLFNBQUFWLGNBQVlXLFFBQXFDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ2xEQSxLQUFBLEdBQUFGLHFCQUFBLENBQUFHLElBQUEsT0FBTUYsUUFBUSxDQUFDO01BZmhCO0FBQ0Q7QUFDQTtBQUNBO01BSENHLDBCQUFBLENBQUFGLEtBQUEsbUJBQUFHLFdBQUEsRUFBQUgsS0FBQTtNQU9BO0FBQ0Q7QUFDQTtBQUNBO01BSENFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUFJLFlBQUEsRUFBQUosS0FBQTtNQUFBLE9BQUFBLEtBQUE7SUFTQTtJQUFDSyxRQUFBLEdBQUFqQixhQUFBO0lBQUFrQixjQUFBLENBQUFsQixhQUFBLEVBQUFVLHFCQUFBO0lBQUEsT0FBQVYsYUFBQTtFQUFBLEVBakJ5Q21CLDJCQUEyQixHQUFBSixXQUFBLEdBQUFLLHlCQUFBLENBQUFYLE9BQUEsQ0FBQVksU0FBQSxvQkFBQWxCLEtBQUE7SUFBQW1CLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBVCxZQUFBLEdBQUFJLHlCQUFBLENBQUFYLE9BQUEsQ0FBQVksU0FBQSxvQkFBQWQsS0FBQTtJQUFBZSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWhCLE9BQUEsTUFBQUQsTUFBQTtFQUFBUyxRQUFBLEdBQUFqQixhQUFBO0VBQUEsT0FBQWlCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,27 @@
1
+ import { defineUI5Class, property, type PropertiesOf } from "sap/fe/base/ClassSupport";
2
+ import BuildingBlockObjectProperty from "sap/fe/macros/controls/BuildingBlockObjectProperty";
3
+
4
+ /**
5
+ * Configuration of toolbar separators to be used inside the table toolbar
6
+ * @public
7
+ */
8
+ @defineUI5Class("sap.fe.macros.table.OverflowGroup")
9
+ export default class OverflowGroup extends BuildingBlockObjectProperty {
10
+ /**
11
+ * Defines the group of the toolbar separator in the overflow toolbar.
12
+ * @public
13
+ */
14
+ @property({ type: "int", required: true })
15
+ overflowGroup!: number;
16
+
17
+ /**
18
+ * Defines if a toolbar separator should be displayed.
19
+ * @public
20
+ */
21
+ @property({ type: "boolean" })
22
+ showSeparator?: boolean;
23
+
24
+ constructor(settings: PropertiesOf<OverflowGroup>) {
25
+ super(settings);
26
+ }
27
+ }