@sapui5/sap.fe.macros 1.139.0 → 1.141.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 (254) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Chart.js +53 -2
  4. package/src/sap/fe/macros/Chart.tsx +55 -0
  5. package/src/sap/fe/macros/CollaborativeDraftHandler.js +230 -0
  6. package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +218 -0
  7. package/src/sap/fe/macros/CommonHelper.js +59 -15
  8. package/src/sap/fe/macros/CommonHelper.ts +65 -14
  9. package/src/sap/fe/macros/ConditionalSwitch.js +174 -0
  10. package/src/sap/fe/macros/ConditionalSwitch.tsx +141 -0
  11. package/src/sap/fe/macros/ConditionalSwitchProperty.js +78 -0
  12. package/src/sap/fe/macros/ConditionalSwitchProperty.tsx +62 -0
  13. package/src/sap/fe/macros/Field.js +78 -64
  14. package/src/sap/fe/macros/Field.ts +97 -68
  15. package/src/sap/fe/macros/FooterContent.js +5 -2
  16. package/src/sap/fe/macros/FooterContent.tsx +4 -1
  17. package/src/sap/fe/macros/MacroAPI.js +9 -4
  18. package/src/sap/fe/macros/MacroAPI.ts +9 -4
  19. package/src/sap/fe/macros/MessageButton.js +1 -2
  20. package/src/sap/fe/macros/MessageButton.tsx +0 -1
  21. package/src/sap/fe/macros/MultiValueField.js +10 -7
  22. package/src/sap/fe/macros/MultiValueField.tsx +7 -3
  23. package/src/sap/fe/macros/Page.js +5 -7
  24. package/src/sap/fe/macros/Page.tsx +4 -6
  25. package/src/sap/fe/macros/Paginator.js +9 -4
  26. package/src/sap/fe/macros/Paginator.tsx +12 -3
  27. package/src/sap/fe/macros/RichTextEditor.js +3 -2
  28. package/src/sap/fe/macros/RichTextEditor.tsx +2 -1
  29. package/src/sap/fe/macros/Share.js +14 -2
  30. package/src/sap/fe/macros/Share.tsx +13 -0
  31. package/src/sap/fe/macros/Status.js +251 -0
  32. package/src/sap/fe/macros/Status.tsx +212 -0
  33. package/src/sap/fe/macros/ValueHelp.js +4 -28
  34. package/src/sap/fe/macros/ValueHelp.tsx +2 -42
  35. package/src/sap/fe/macros/ai/EasyFillDialog.js +11 -17
  36. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +11 -16
  37. package/src/sap/fe/macros/ai/EasyFilterBar.js +246 -97
  38. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +302 -106
  39. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +76 -33
  40. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +89 -40
  41. package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
  42. package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
  43. package/src/sap/fe/macros/chart/Chart.js +2 -2
  44. package/src/sap/fe/macros/chart/Chart.tsx +1 -1
  45. package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
  46. package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
  47. package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
  48. package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
  49. package/src/sap/fe/macros/chart/MdcChartTemplate.js +5 -5
  50. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +5 -5
  51. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.js +9 -2
  52. package/src/sap/fe/macros/contentSwitcher/ContentSwitcher.tsx +8 -0
  53. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.js +5 -1
  54. package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -0
  55. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +4 -2
  56. package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +3 -1
  57. package/src/sap/fe/macros/controls/FilterBar.js +14 -5
  58. package/src/sap/fe/macros/controls/FilterBar.ts +3 -0
  59. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
  60. package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
  61. package/src/sap/fe/macros/controls/RadioButtons.js +61 -38
  62. package/src/sap/fe/macros/controls/RadioButtons.tsx +39 -18
  63. package/src/sap/fe/macros/controls/Section.js +4 -3
  64. package/src/sap/fe/macros/controls/Section.ts +3 -2
  65. package/src/sap/fe/macros/controls/section/SubSection.js +63 -8
  66. package/src/sap/fe/macros/controls/section/SubSection.ts +67 -1
  67. package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
  68. package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
  69. package/src/sap/fe/macros/designtime/Designtime.helper.js +28 -1
  70. package/src/sap/fe/macros/designtime/Designtime.helper.ts +27 -0
  71. package/src/sap/fe/macros/field/Field.js +2 -2
  72. package/src/sap/fe/macros/field/Field.tsx +1 -1
  73. package/src/sap/fe/macros/field/FieldBaseDelegate.js +13 -7
  74. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +12 -8
  75. package/src/sap/fe/macros/field/FieldFormatOptions.js +25 -2
  76. package/src/sap/fe/macros/field/FieldFormatOptions.ts +13 -0
  77. package/src/sap/fe/macros/field/FieldHelper.js +2 -2
  78. package/src/sap/fe/macros/field/FieldHelper.ts +1 -4
  79. package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
  80. package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
  81. package/src/sap/fe/macros/field/FieldTemplating.js +3 -3
  82. package/src/sap/fe/macros/field/FieldTemplating.ts +4 -2
  83. package/src/sap/fe/macros/filter/FilterUtils.js +233 -5
  84. package/src/sap/fe/macros/filter/FilterUtils.ts +291 -7
  85. package/src/sap/fe/macros/filterBar/FilterBar.block.js +5 -3
  86. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +4 -2
  87. package/src/sap/fe/macros/filterBar/FilterBar.js +2 -2
  88. package/src/sap/fe/macros/filterBar/FilterBar.tsx +1 -1
  89. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +63 -27
  90. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +49 -3
  91. package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +5 -3
  92. package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
  93. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +7 -2
  94. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +6 -1
  95. package/src/sap/fe/macros/form/Form.block.js +7 -8
  96. package/src/sap/fe/macros/form/Form.block.ts +4 -6
  97. package/src/sap/fe/macros/form/Form.js +1 -4
  98. package/src/sap/fe/macros/form/Form.tsx +0 -3
  99. package/src/sap/fe/macros/form/FormContainer.block.js +555 -5
  100. package/src/sap/fe/macros/form/FormContainer.block.ts +665 -7
  101. package/src/sap/fe/macros/form/FormContainer.fragment.xml +1 -0
  102. package/src/sap/fe/macros/form/FormDelegate.js +24 -8
  103. package/src/sap/fe/macros/form/FormDelegate.ts +29 -7
  104. package/src/sap/fe/macros/form/FormHelper.js +1 -2
  105. package/src/sap/fe/macros/form/FormHelper.ts +0 -1
  106. package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
  107. package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
  108. package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
  109. package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
  110. package/src/sap/fe/macros/internal/DataPoint.js +3 -2
  111. package/src/sap/fe/macros/internal/DataPoint.tsx +10 -1
  112. package/src/sap/fe/macros/internal/FilterField.block.js +19 -5
  113. package/src/sap/fe/macros/internal/FilterField.block.ts +16 -4
  114. package/src/sap/fe/macros/internal/field/DisplayStyle.js +9 -3
  115. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +10 -2
  116. package/src/sap/fe/macros/internal/field/EditStyle.js +21 -4
  117. package/src/sap/fe/macros/internal/field/EditStyle.tsx +18 -4
  118. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +3 -2
  119. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +5 -1
  120. package/src/sap/fe/macros/internal/filterField/FilterFieldTemplate.fragment.xml +1 -0
  121. package/src/sap/fe/macros/internal/helpers/ActionHelper.js +36 -5
  122. package/src/sap/fe/macros/internal/helpers/ActionHelper.ts +34 -4
  123. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
  124. package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
  125. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
  126. package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
  127. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -1
  128. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +10 -3
  129. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +13 -2
  130. package/src/sap/fe/macros/library.js +1 -1
  131. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.js +2 -1
  132. package/src/sap/fe/macros/mdc/adapter/StateFilterToSelectionVariant.ts +1 -0
  133. package/src/sap/fe/macros/messagebundle.properties +24 -4
  134. package/src/sap/fe/macros/messagebundle_ar.properties +8 -2
  135. package/src/sap/fe/macros/messagebundle_bg.properties +8 -2
  136. package/src/sap/fe/macros/messagebundle_ca.properties +11 -5
  137. package/src/sap/fe/macros/messagebundle_cnr.properties +8 -2
  138. package/src/sap/fe/macros/messagebundle_cs.properties +7 -1
  139. package/src/sap/fe/macros/messagebundle_cy.properties +9 -3
  140. package/src/sap/fe/macros/messagebundle_da.properties +8 -2
  141. package/src/sap/fe/macros/messagebundle_de.properties +13 -7
  142. package/src/sap/fe/macros/messagebundle_el.properties +7 -1
  143. package/src/sap/fe/macros/messagebundle_en.properties +11 -5
  144. package/src/sap/fe/macros/messagebundle_en_GB.properties +9 -3
  145. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +11 -5
  146. package/src/sap/fe/macros/messagebundle_es.properties +10 -4
  147. package/src/sap/fe/macros/messagebundle_es_MX.properties +11 -5
  148. package/src/sap/fe/macros/messagebundle_et.properties +9 -3
  149. package/src/sap/fe/macros/messagebundle_fi.properties +7 -1
  150. package/src/sap/fe/macros/messagebundle_fr.properties +9 -3
  151. package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -2
  152. package/src/sap/fe/macros/messagebundle_hi.properties +8 -2
  153. package/src/sap/fe/macros/messagebundle_hr.properties +8 -2
  154. package/src/sap/fe/macros/messagebundle_hu.properties +7 -1
  155. package/src/sap/fe/macros/messagebundle_id.properties +15 -9
  156. package/src/sap/fe/macros/messagebundle_it.properties +7 -1
  157. package/src/sap/fe/macros/messagebundle_iw.properties +8 -2
  158. package/src/sap/fe/macros/messagebundle_ja.properties +13 -7
  159. package/src/sap/fe/macros/messagebundle_kk.properties +11 -5
  160. package/src/sap/fe/macros/messagebundle_ko.properties +8 -2
  161. package/src/sap/fe/macros/messagebundle_lt.properties +9 -3
  162. package/src/sap/fe/macros/messagebundle_lv.properties +8 -2
  163. package/src/sap/fe/macros/messagebundle_mk.properties +8 -2
  164. package/src/sap/fe/macros/messagebundle_ms.properties +7 -1
  165. package/src/sap/fe/macros/messagebundle_nl.properties +7 -1
  166. package/src/sap/fe/macros/messagebundle_no.properties +7 -1
  167. package/src/sap/fe/macros/messagebundle_pl.properties +8 -2
  168. package/src/sap/fe/macros/messagebundle_pt.properties +7 -1
  169. package/src/sap/fe/macros/messagebundle_pt_PT.properties +7 -1
  170. package/src/sap/fe/macros/messagebundle_ro.properties +8 -2
  171. package/src/sap/fe/macros/messagebundle_ru.properties +10 -4
  172. package/src/sap/fe/macros/messagebundle_sh.properties +8 -2
  173. package/src/sap/fe/macros/messagebundle_sk.properties +7 -1
  174. package/src/sap/fe/macros/messagebundle_sl.properties +7 -1
  175. package/src/sap/fe/macros/messagebundle_sr.properties +8 -2
  176. package/src/sap/fe/macros/messagebundle_sv.properties +7 -1
  177. package/src/sap/fe/macros/messagebundle_th.properties +8 -2
  178. package/src/sap/fe/macros/messagebundle_tr.properties +7 -1
  179. package/src/sap/fe/macros/messagebundle_uk.properties +10 -4
  180. package/src/sap/fe/macros/messagebundle_vi.properties +10 -4
  181. package/src/sap/fe/macros/messagebundle_zh_CN.properties +7 -1
  182. package/src/sap/fe/macros/messagebundle_zh_TW.properties +8 -2
  183. package/src/sap/fe/macros/messages/MessageButton.js +39 -18
  184. package/src/sap/fe/macros/messages/MessageButton.ts +42 -19
  185. package/src/sap/fe/macros/messages/MessagePopover.js +4 -2
  186. package/src/sap/fe/macros/messages/MessagePopover.ts +6 -4
  187. package/src/sap/fe/macros/microchart/MicroChart.js +2 -2
  188. package/src/sap/fe/macros/microchart/MicroChart.tsx +1 -1
  189. package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
  190. package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
  191. package/src/sap/fe/macros/microchart/MicroChartHelper.js +2 -3
  192. package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +1 -2
  193. package/src/sap/fe/macros/share/ShareAPI.js +4 -29
  194. package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
  195. package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
  196. package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
  197. package/src/sap/fe/macros/table/ActionsTemplating.js +4 -8
  198. package/src/sap/fe/macros/table/ActionsTemplating.tsx +5 -8
  199. package/src/sap/fe/macros/table/BasicSearch.js +1 -1
  200. package/src/sap/fe/macros/table/BasicSearch.ts +2 -1
  201. package/src/sap/fe/macros/table/Column.js +14 -2
  202. package/src/sap/fe/macros/table/Column.ts +7 -0
  203. package/src/sap/fe/macros/table/ColumnExportSettings.js +83 -15
  204. package/src/sap/fe/macros/table/ColumnExportSettings.ts +44 -0
  205. package/src/sap/fe/macros/table/ColumnOverride.js +14 -2
  206. package/src/sap/fe/macros/table/ColumnOverride.ts +7 -0
  207. package/src/sap/fe/macros/table/MdcTableTemplate.js +7 -5
  208. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +21 -11
  209. package/src/sap/fe/macros/table/QuickFilterSelector.js +12 -3
  210. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +15 -2
  211. package/src/sap/fe/macros/table/Table.block.js +188 -147
  212. package/src/sap/fe/macros/table/Table.block.tsx +41 -11
  213. package/src/sap/fe/macros/table/Table.js +16 -10
  214. package/src/sap/fe/macros/table/Table.tsx +16 -10
  215. package/src/sap/fe/macros/table/TableAPI.js +224 -184
  216. package/src/sap/fe/macros/table/TableAPI.ts +63 -19
  217. package/src/sap/fe/macros/table/TableEventHandlerProvider.js +6 -6
  218. package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +5 -4
  219. package/src/sap/fe/macros/table/TableHelper.js +2 -3
  220. package/src/sap/fe/macros/table/TableHelper.ts +1 -2
  221. package/src/sap/fe/macros/table/TableRuntime.js +24 -5
  222. package/src/sap/fe/macros/table/TableRuntime.ts +31 -3
  223. package/src/sap/fe/macros/table/TreeTable.js +16 -10
  224. package/src/sap/fe/macros/table/TreeTable.tsx +16 -10
  225. package/src/sap/fe/macros/table/Utils.js +8 -3
  226. package/src/sap/fe/macros/table/Utils.ts +12 -3
  227. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
  228. package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
  229. package/src/sap/fe/macros/table/delegates/TableDelegate.js +69 -34
  230. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +75 -33
  231. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
  232. package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
  233. package/src/sap/fe/macros/table/massEdit/MassEditDialog.js +10 -10
  234. package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
  235. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +14 -12
  236. package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +11 -10
  237. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +34 -4
  238. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +45 -2
  239. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +55 -12
  240. package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +71 -9
  241. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +53 -2
  242. package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +55 -0
  243. package/src/sap/fe/macros/table/mixin/TableExport.js +22 -3
  244. package/src/sap/fe/macros/table/mixin/TableExport.ts +25 -4
  245. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +5 -1
  246. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +7 -0
  247. package/src/sap/fe/macros/table/mixin/TableSharing.js +4 -2
  248. package/src/sap/fe/macros/table/mixin/TableSharing.ts +10 -1
  249. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +36 -10
  250. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +44 -9
  251. package/src/sap/fe/macros/visualfilters/VisualFilter.js +5 -4
  252. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +3 -2
  253. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +2 -3
  254. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +1 -2
@@ -0,0 +1,251 @@
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/core/buildingBlocks/BuildingBlock", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/CriticalityFormatters", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/field/FieldTemplating", "sap/m/ObjectStatus", "sap/fe/base/jsx-runtime/jsx"], function (ClassSupport, BuildingBlock, StableIdHelper, TypeGuards, CriticalityFormatters, DataModelPathHelper, FieldTemplating, MObjectStatus, _jsx) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8;
9
+ var _exports = {};
10
+ var getVisibleExpression = FieldTemplating.getVisibleExpression;
11
+ var getTextBinding = FieldTemplating.getTextBinding;
12
+ var enhanceDataModelPath = DataModelPathHelper.enhanceDataModelPath;
13
+ var buildExpressionForCriticalityIcon = CriticalityFormatters.buildExpressionForCriticalityIcon;
14
+ var buildExpressionForCriticalityColor = CriticalityFormatters.buildExpressionForCriticalityColor;
15
+ var isProperty = TypeGuards.isProperty;
16
+ var generate = StableIdHelper.generate;
17
+ var property = ClassSupport.property;
18
+ var implementInterface = ClassSupport.implementInterface;
19
+ var event = ClassSupport.event;
20
+ var defineUI5Class = ClassSupport.defineUI5Class;
21
+ 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 }); }
22
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
23
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
24
+ 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; }
25
+ function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
26
+ /**
27
+ * Building block to display a status and criticality.
28
+ * @public
29
+ * @ui5-experimental-since 1.141.0
30
+ * @since 1.141.0
31
+ */
32
+ let Status = (_dec = defineUI5Class("sap.fe.macros.Status"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
33
+ type: "string",
34
+ required: true
35
+ }), _dec4 = property({
36
+ type: "string"
37
+ }), _dec5 = property({
38
+ type: "string",
39
+ allowedValues: ["Inline", "Overlay"]
40
+ }), _dec6 = property({
41
+ type: "boolean"
42
+ }), _dec7 = property({
43
+ type: "boolean"
44
+ }), _dec8 = property({
45
+ type: "boolean"
46
+ }), _dec9 = event(), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
47
+ /**
48
+ * Internal property to store the data model path
49
+ */
50
+
51
+ /**
52
+ * Constructor for the Status building block.
53
+ * @param properties The properties object containing Status-specific settings and base control settings
54
+ * @param [others] Additional control settings that may be applied to the building block
55
+ */
56
+ function Status(properties, others) {
57
+ var _this;
58
+ _this = _BuildingBlock.call(this, properties, others) || this;
59
+ _initializerDefineProperty(_this, "__implements__sap_ui_core_IFormContent", _descriptor, _this);
60
+ /**
61
+ * Metadata path to the DataField annotation or property.
62
+ * @public
63
+ */
64
+ _initializerDefineProperty(_this, "metaPath", _descriptor2, _this);
65
+ /**
66
+ * Context path for the binding context.
67
+ * @public
68
+ */
69
+ _initializerDefineProperty(_this, "contextPath", _descriptor3, _this);
70
+ /**
71
+ * When the Status is clickable, it defines the size of the reactive area of the clickable element:
72
+ *
73
+ * - ReactiveAreaMode.Inline - The Status is displayed as part of a sentence.
74
+ * - ReactiveAreaMode.Overlay - The Status is displayed as an overlay on top of other interactive parts of the page.
75
+ * Note: It is designed to make the clickable element easier to activate and helps meet the WCAG 2.2 Target Size requirement. It is applicable only for the SAP Horizon themes. Note: The size of the reactive area is sufficiently large to help users avoid accidentally selecting (clicking or tapping) unintended UI elements. UI elements positioned over other parts of the page may need an invisible active touch area. This ensures that no elements beneath are activated accidentally when the user tries to interact with the overlay element.
76
+ * @public
77
+ */
78
+ _initializerDefineProperty(_this, "reactiveAreaMode", _descriptor4, _this);
79
+ /**
80
+ * Indicates whether the ObjectStatus should be displayed in large design mode.
81
+ * @public
82
+ */
83
+ _initializerDefineProperty(_this, "largeDesign", _descriptor5, _this);
84
+ /**
85
+ * Determines whether the background color reflects the set state of the ObjectStatus instead of the control's text.
86
+ * @public
87
+ */
88
+ _initializerDefineProperty(_this, "inverted", _descriptor6, _this);
89
+ _initializerDefineProperty(_this, "hideIcon", _descriptor7, _this);
90
+ /**
91
+ * Press event fired when the ObjectStatus is clicked.
92
+ * @param event The press event
93
+ * @public
94
+ */
95
+ _initializerDefineProperty(_this, "press", _descriptor8, _this);
96
+ return _this;
97
+ }
98
+
99
+ /**
100
+ * Handler for the onMetadataAvailable event.
101
+ */
102
+ _exports = Status;
103
+ _inheritsLoose(Status, _BuildingBlock);
104
+ var _proto = Status.prototype;
105
+ _proto.onMetadataAvailable = function onMetadataAvailable() {
106
+ this.getTemplatingObjects();
107
+ if (!this.dataModelPath && !this.valueDataModelPath) {
108
+ // there cannot be a static value and no datafield or datapoint
109
+ return;
110
+ }
111
+ if (!this.content) {
112
+ this.content = this.createContent();
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Function to get the templating objects and prepare data model paths.
118
+ */;
119
+ _proto.getTemplatingObjects = function getTemplatingObjects() {
120
+ // Try to get as DataField first, then as DataPoint, then as Property
121
+ const internalDataModelPath = this.getDataModelObjectForMetaPath(this.metaPath, this.contextPath);
122
+ const targetObject = internalDataModelPath?.targetObject;
123
+ if (!internalDataModelPath) {
124
+ return;
125
+ }
126
+ if (isProperty(targetObject)) {
127
+ if (targetObject?.annotations?.UI?.DataFieldDefault !== undefined) {
128
+ this.dataModelPath = this.getDataModelObjectForMetaPath(`${this.metaPath}@${"com.sap.vocabularies.UI.v1.DataFieldDefault"}`, this.contextPath);
129
+ }
130
+ this.valueDataModelPath = internalDataModelPath;
131
+ } else {
132
+ this.dataModelPath = internalDataModelPath;
133
+ if (this.dataModelPath?.targetObject?.Value?.path) {
134
+ this.valueDataModelPath = enhanceDataModelPath(internalDataModelPath, this.dataModelPath.targetObject.Value.path);
135
+ }
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Gets the criticality expression for the ObjectStatus.
141
+ * @returns The compiled binding expression for criticality color, or undefined if no criticality is available
142
+ */;
143
+ _proto.getCriticalityExpression = function getCriticalityExpression(specificColorMap) {
144
+ return this.dataModelPath === undefined ? undefined : buildExpressionForCriticalityColor(this.dataModelPath, this.dataModelPath, specificColorMap);
145
+ }
146
+
147
+ /**
148
+ * Gets the criticality icon expression for the ObjectStatus.
149
+ * @returns The compiled binding expression for criticality icon, or undefined if no criticality is available
150
+ */;
151
+ _proto.getCriticalityIconExpression = function getCriticalityIconExpression() {
152
+ return this.dataModelPath === undefined ? undefined : buildExpressionForCriticalityIcon(this.dataModelPath, this.dataModelPath);
153
+ }
154
+
155
+ /**
156
+ * Gets the text binding expression for the ObjectStatus.
157
+ * @returns The compiled binding expression for the ObjectStatus text content
158
+ */;
159
+ _proto.getObjectStatusTextBinding = function getObjectStatusTextBinding() {
160
+ const propertyOrDataFieldDataModelObjectPath = this.valueDataModelPath ?? this.dataModelPath;
161
+ return getTextBinding(propertyOrDataFieldDataModelObjectPath, {});
162
+ }
163
+
164
+ /**
165
+ * Creates the ObjectStatus control content.
166
+ * @returns The configured ObjectStatus control ready for rendering
167
+ */;
168
+ _proto.createContent = function createContent() {
169
+ const statusConfig = this.getAppComponent()?.getAdditionalConfiguration()?.["sap.fe.macros"]?.Status;
170
+ const dataFieldOrPropertyDataModelObjectPath = this.dataModelPath ?? this.valueDataModelPath;
171
+ const visible = getVisibleExpression(dataFieldOrPropertyDataModelObjectPath);
172
+ const criticalityExpression = this.getCriticalityExpression(statusConfig?.colorMap);
173
+ const criticalityIconExpression = this.getCriticalityIconExpression();
174
+ const textBinding = this.getObjectStatusTextBinding();
175
+ const isActive = this.hasListeners("press");
176
+ if (this.isPropertyInitial("inverted")) {
177
+ // if inverted is not set, use the default from configuration
178
+ this.inverted = statusConfig?.invertedDefaultValue === true;
179
+ }
180
+ if (this.largeDesign) {
181
+ this.hideIcon = true;
182
+ }
183
+ return _jsx(MObjectStatus, {
184
+ id: generate([this.getId(), "ObjectStatus"]),
185
+ inverted: this.inverted,
186
+ class: this.largeDesign ? "sapMObjectStatusLarge sapMObjectStatusLongText" : undefined,
187
+ state: criticalityExpression,
188
+ icon: this.hideIcon ? undefined : criticalityIconExpression,
189
+ text: textBinding,
190
+ visible: visible,
191
+ active: isActive,
192
+ reactiveAreaMode: this.reactiveAreaMode,
193
+ press: pressEvent => {
194
+ this.fireEvent("press", pressEvent);
195
+ }
196
+ });
197
+ };
198
+ return Status;
199
+ }(BuildingBlock), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_ui_core_IFormContent", [_dec2], {
200
+ configurable: true,
201
+ enumerable: true,
202
+ writable: true,
203
+ initializer: function () {
204
+ return true;
205
+ }
206
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "metaPath", [_dec3], {
207
+ configurable: true,
208
+ enumerable: true,
209
+ writable: true,
210
+ initializer: null
211
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "contextPath", [_dec4], {
212
+ configurable: true,
213
+ enumerable: true,
214
+ writable: true,
215
+ initializer: null
216
+ }), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "reactiveAreaMode", [_dec5], {
217
+ configurable: true,
218
+ enumerable: true,
219
+ writable: true,
220
+ initializer: null
221
+ }), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "largeDesign", [_dec6], {
222
+ configurable: true,
223
+ enumerable: true,
224
+ writable: true,
225
+ initializer: function () {
226
+ return false;
227
+ }
228
+ }), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "inverted", [_dec7], {
229
+ configurable: true,
230
+ enumerable: true,
231
+ writable: true,
232
+ initializer: function () {
233
+ return false;
234
+ }
235
+ }), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "hideIcon", [_dec8], {
236
+ configurable: true,
237
+ enumerable: true,
238
+ writable: true,
239
+ initializer: function () {
240
+ return false;
241
+ }
242
+ }), _descriptor8 = _applyDecoratedDescriptor(_class2.prototype, "press", [_dec9], {
243
+ configurable: true,
244
+ enumerable: true,
245
+ writable: true,
246
+ initializer: null
247
+ }), _class2)) || _class);
248
+ _exports = Status;
249
+ return _exports;
250
+ }, false);
251
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0dXMiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwicmVxdWlyZWQiLCJfZGVjNCIsIl9kZWM1IiwiYWxsb3dlZFZhbHVlcyIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiZXZlbnQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJwcm9wZXJ0aWVzIiwib3RoZXJzIiwiX3RoaXMiLCJjYWxsIiwiX2luaXRpYWxpemVyRGVmaW5lUHJvcGVydHkiLCJfZGVzY3JpcHRvciIsIl9kZXNjcmlwdG9yMiIsIl9kZXNjcmlwdG9yMyIsIl9kZXNjcmlwdG9yNCIsIl9kZXNjcmlwdG9yNSIsIl9kZXNjcmlwdG9yNiIsIl9kZXNjcmlwdG9yNyIsIl9kZXNjcmlwdG9yOCIsIl9leHBvcnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbk1ldGFkYXRhQXZhaWxhYmxlIiwiZ2V0VGVtcGxhdGluZ09iamVjdHMiLCJkYXRhTW9kZWxQYXRoIiwidmFsdWVEYXRhTW9kZWxQYXRoIiwiY29udGVudCIsImNyZWF0ZUNvbnRlbnQiLCJpbnRlcm5hbERhdGFNb2RlbFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsIm1ldGFQYXRoIiwiY29udGV4dFBhdGgiLCJ0YXJnZXRPYmplY3QiLCJpc1Byb3BlcnR5IiwiYW5ub3RhdGlvbnMiLCJVSSIsIkRhdGFGaWVsZERlZmF1bHQiLCJ1bmRlZmluZWQiLCJWYWx1ZSIsInBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsImdldENyaXRpY2FsaXR5RXhwcmVzc2lvbiIsInNwZWNpZmljQ29sb3JNYXAiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwiZ2V0Q3JpdGljYWxpdHlJY29uRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiIsImdldE9iamVjdFN0YXR1c1RleHRCaW5kaW5nIiwicHJvcGVydHlPckRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXRUZXh0QmluZGluZyIsInN0YXR1c0NvbmZpZyIsImdldEFwcENvbXBvbmVudCIsImdldEFkZGl0aW9uYWxDb25maWd1cmF0aW9uIiwiZGF0YUZpZWxkT3JQcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJjcml0aWNhbGl0eUV4cHJlc3Npb24iLCJjb2xvck1hcCIsImNyaXRpY2FsaXR5SWNvbkV4cHJlc3Npb24iLCJ0ZXh0QmluZGluZyIsImlzQWN0aXZlIiwiaGFzTGlzdGVuZXJzIiwiaXNQcm9wZXJ0eUluaXRpYWwiLCJpbnZlcnRlZCIsImludmVydGVkRGVmYXVsdFZhbHVlIiwibGFyZ2VEZXNpZ24iLCJoaWRlSWNvbiIsIl9qc3giLCJNT2JqZWN0U3RhdHVzIiwiaWQiLCJnZW5lcmF0ZSIsImdldElkIiwiY2xhc3MiLCJzdGF0ZSIsImljb24iLCJ0ZXh0IiwiYWN0aXZlIiwicmVhY3RpdmVBcmVhTW9kZSIsInByZXNzIiwicHJlc3NFdmVudCIsImZpcmVFdmVudCIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlN0YXR1cy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFQb2ludFR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBldmVudCwgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgaXNQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IsIGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0NyaXRpY2FsaXR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRUZXh0QmluZGluZywgZ2V0VmlzaWJsZUV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIHsgT2JqZWN0U3RhdHVzJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vT2JqZWN0U3RhdHVzXCI7XG5pbXBvcnQgTU9iamVjdFN0YXR1cyBmcm9tIFwic2FwL20vT2JqZWN0U3RhdHVzXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybUNvbnRlbnQgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHRvIGRpc3BsYXkgYSBzdGF0dXMgYW5kIGNyaXRpY2FsaXR5LlxuICogQHB1YmxpY1xuICogQHVpNS1leHBlcmltZW50YWwtc2luY2UgMS4xNDEuMFxuICogQHNpbmNlIDEuMTQxLjBcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5TdGF0dXNcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXR1cyBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8TU9iamVjdFN0YXR1cz4gaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgRGF0YUZpZWxkIGFubm90YXRpb24gb3IgcHJvcGVydHkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRleHQgcGF0aCBmb3IgdGhlIGJpbmRpbmcgY29udGV4dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogIFdoZW4gdGhlIFN0YXR1cyBpcyBjbGlja2FibGUsIGl0IGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIHJlYWN0aXZlIGFyZWEgb2YgdGhlIGNsaWNrYWJsZSBlbGVtZW50OlxuXHQgKlxuXHQgKiAtIFJlYWN0aXZlQXJlYU1vZGUuSW5saW5lIC0gVGhlIFN0YXR1cyBpcyBkaXNwbGF5ZWQgYXMgcGFydCBvZiBhIHNlbnRlbmNlLlxuXHQgKiAtIFJlYWN0aXZlQXJlYU1vZGUuT3ZlcmxheSAtIFRoZSBTdGF0dXMgaXMgZGlzcGxheWVkIGFzIGFuIG92ZXJsYXkgb24gdG9wIG9mIG90aGVyIGludGVyYWN0aXZlIHBhcnRzIG9mIHRoZSBwYWdlLlxuXHQgKiBOb3RlOiBJdCBpcyBkZXNpZ25lZCB0byBtYWtlIHRoZSBjbGlja2FibGUgZWxlbWVudCBlYXNpZXIgdG8gYWN0aXZhdGUgYW5kIGhlbHBzIG1lZXQgdGhlIFdDQUcgMi4yIFRhcmdldCBTaXplIHJlcXVpcmVtZW50LiBJdCBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIHRoZSBTQVAgSG9yaXpvbiB0aGVtZXMuIE5vdGU6IFRoZSBzaXplIG9mIHRoZSByZWFjdGl2ZSBhcmVhIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBoZWxwIHVzZXJzIGF2b2lkIGFjY2lkZW50YWxseSBzZWxlY3RpbmcgKGNsaWNraW5nIG9yIHRhcHBpbmcpIHVuaW50ZW5kZWQgVUkgZWxlbWVudHMuIFVJIGVsZW1lbnRzIHBvc2l0aW9uZWQgb3ZlciBvdGhlciBwYXJ0cyBvZiB0aGUgcGFnZSBtYXkgbmVlZCBhbiBpbnZpc2libGUgYWN0aXZlIHRvdWNoIGFyZWEuIFRoaXMgZW5zdXJlcyB0aGF0IG5vIGVsZW1lbnRzIGJlbmVhdGggYXJlIGFjdGl2YXRlZCBhY2NpZGVudGFsbHkgd2hlbiB0aGUgdXNlciB0cmllcyB0byBpbnRlcmFjdCB3aXRoIHRoZSBvdmVybGF5IGVsZW1lbnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIklubGluZVwiLCBcIk92ZXJsYXlcIl0gfSlcblx0cHVibGljIHJlYWN0aXZlQXJlYU1vZGU/OiBcIklubGluZVwiIHwgXCJPdmVybGF5XCI7XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBPYmplY3RTdGF0dXMgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBsYXJnZSBkZXNpZ24gbW9kZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cHVibGljIGxhcmdlRGVzaWduID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgYmFja2dyb3VuZCBjb2xvciByZWZsZWN0cyB0aGUgc2V0IHN0YXRlIG9mIHRoZSBPYmplY3RTdGF0dXMgaW5zdGVhZCBvZiB0aGUgY29udHJvbCdzIHRleHQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHB1YmxpYyBpbnZlcnRlZCA9IGZhbHNlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiIH0pXG5cdHB1YmxpYyBoaWRlSWNvbiA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBQcmVzcyBldmVudCBmaXJlZCB3aGVuIHRoZSBPYmplY3RTdGF0dXMgaXMgY2xpY2tlZC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBwcmVzcyBldmVudFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAZXZlbnQoKVxuXHRwdWJsaWMgcHJlc3M/OiAoZXZlbnQ6IE9iamVjdFN0YXR1cyRQcmVzc0V2ZW50KSA9PiB2b2lkO1xuXG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBwcm9wZXJ0eSB0byBzdG9yZSB0aGUgZGF0YSBtb2RlbCBwYXRoXG5cdCAqL1xuXHRwcml2YXRlIGRhdGFNb2RlbFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZCB8IERhdGFQb2ludFR5cGU+O1xuXG5cdHByaXZhdGUgdmFsdWVEYXRhTW9kZWxQYXRoPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG5cblx0LyoqXG5cdCAqIENvbnN0cnVjdG9yIGZvciB0aGUgU3RhdHVzIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcGFyYW0gcHJvcGVydGllcyBUaGUgcHJvcGVydGllcyBvYmplY3QgY29udGFpbmluZyBTdGF0dXMtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIGJhc2UgY29udHJvbCBzZXR0aW5nc1xuXHQgKiBAcGFyYW0gW290aGVyc10gQWRkaXRpb25hbCBjb250cm9sIHNldHRpbmdzIHRoYXQgbWF5IGJlIGFwcGxpZWQgdG8gdGhlIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzOiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPFN0YXR1cz4sIG90aGVycz86ICRDb250cm9sU2V0dGluZ3MpIHtcblx0XHRzdXBlcihwcm9wZXJ0aWVzLCBvdGhlcnMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBvbk1ldGFkYXRhQXZhaWxhYmxlIGV2ZW50LlxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZSgpOiB2b2lkIHtcblx0XHR0aGlzLmdldFRlbXBsYXRpbmdPYmplY3RzKCk7XG5cdFx0aWYgKCF0aGlzLmRhdGFNb2RlbFBhdGggJiYgIXRoaXMudmFsdWVEYXRhTW9kZWxQYXRoKSB7XG5cdFx0XHQvLyB0aGVyZSBjYW5ub3QgYmUgYSBzdGF0aWMgdmFsdWUgYW5kIG5vIGRhdGFmaWVsZCBvciBkYXRhcG9pbnRcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0byBnZXQgdGhlIHRlbXBsYXRpbmcgb2JqZWN0cyBhbmQgcHJlcGFyZSBkYXRhIG1vZGVsIHBhdGhzLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRUZW1wbGF0aW5nT2JqZWN0cygpOiB2b2lkIHtcblx0XHQvLyBUcnkgdG8gZ2V0IGFzIERhdGFGaWVsZCBmaXJzdCwgdGhlbiBhcyBEYXRhUG9pbnQsIHRoZW4gYXMgUHJvcGVydHlcblx0XHRjb25zdCBpbnRlcm5hbERhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPERhdGFGaWVsZCB8IERhdGFQb2ludFR5cGUgfCBQcm9wZXJ0eT4oXG5cdFx0XHR0aGlzLm1ldGFQYXRoLFxuXHRcdFx0dGhpcy5jb250ZXh0UGF0aFxuXHRcdCk7XG5cdFx0Y29uc3QgdGFyZ2V0T2JqZWN0ID0gaW50ZXJuYWxEYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3Q7XG5cblx0XHRpZiAoIWludGVybmFsRGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoaXNQcm9wZXJ0eSh0YXJnZXRPYmplY3QpKSB7XG5cdFx0XHRpZiAodGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uVUk/LkRhdGFGaWVsZERlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHR0aGlzLmRhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPERhdGFGaWVsZD4oXG5cdFx0XHRcdFx0YCR7dGhpcy5tZXRhUGF0aH1AJHtVSUFubm90YXRpb25UZXJtcy5EYXRhRmllbGREZWZhdWx0fWAsXG5cdFx0XHRcdFx0dGhpcy5jb250ZXh0UGF0aFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy52YWx1ZURhdGFNb2RlbFBhdGggPSBpbnRlcm5hbERhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGludGVybmFsRGF0YU1vZGVsUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFGaWVsZCB8IERhdGFQb2ludFR5cGU+O1xuXHRcdFx0aWYgKHRoaXMuZGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0Py5WYWx1ZT8ucGF0aCkge1xuXHRcdFx0XHR0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoPFByb3BlcnR5PihpbnRlcm5hbERhdGFNb2RlbFBhdGgsIHRoaXMuZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QuVmFsdWUucGF0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNyaXRpY2FsaXR5IGV4cHJlc3Npb24gZm9yIHRoZSBPYmplY3RTdGF0dXMuXG5cdCAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIGNyaXRpY2FsaXR5IGNvbG9yLCBvciB1bmRlZmluZWQgaWYgbm8gY3JpdGljYWxpdHkgaXMgYXZhaWxhYmxlXG5cdCAqL1xuXHRwcml2YXRlIGdldENyaXRpY2FsaXR5RXhwcmVzc2lvbihzcGVjaWZpY0NvbG9yTWFwPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRhTW9kZWxQYXRoID09PSB1bmRlZmluZWRcblx0XHRcdD8gdW5kZWZpbmVkXG5cdFx0XHQ6IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IodGhpcy5kYXRhTW9kZWxQYXRoLCB0aGlzLmRhdGFNb2RlbFBhdGgsIHNwZWNpZmljQ29sb3JNYXApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNyaXRpY2FsaXR5IGljb24gZXhwcmVzc2lvbiBmb3IgdGhlIE9iamVjdFN0YXR1cy5cblx0ICogQHJldHVybnMgVGhlIGNvbXBpbGVkIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgY3JpdGljYWxpdHkgaWNvbiwgb3IgdW5kZWZpbmVkIGlmIG5vIGNyaXRpY2FsaXR5IGlzIGF2YWlsYWJsZVxuXHQgKi9cblx0cHJpdmF0ZSBnZXRDcml0aWNhbGl0eUljb25FeHByZXNzaW9uKCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRhTW9kZWxQYXRoID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24odGhpcy5kYXRhTW9kZWxQYXRoLCB0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHRleHQgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgT2JqZWN0U3RhdHVzLlxuXHQgKiBAcmV0dXJucyBUaGUgY29tcGlsZWQgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgT2JqZWN0U3RhdHVzIHRleHQgY29udGVudFxuXHQgKi9cblx0cHJpdmF0ZSBnZXRPYmplY3RTdGF0dXNUZXh0QmluZGluZygpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdFx0Y29uc3QgcHJvcGVydHlPckRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGggPSAodGhpcy52YWx1ZURhdGFNb2RlbFBhdGggPz8gdGhpcy5kYXRhTW9kZWxQYXRoKSBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFxuXHRcdFx0UHJvcGVydHkgfCBEYXRhRmllbGQgfCBEYXRhUG9pbnRUeXBlXG5cdFx0Pjtcblx0XHRyZXR1cm4gZ2V0VGV4dEJpbmRpbmcocHJvcGVydHlPckRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgsIHt9KSBhcyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBPYmplY3RTdGF0dXMgY29udHJvbCBjb250ZW50LlxuXHQgKiBAcmV0dXJucyBUaGUgY29uZmlndXJlZCBPYmplY3RTdGF0dXMgY29udHJvbCByZWFkeSBmb3IgcmVuZGVyaW5nXG5cdCAqL1xuXHRjcmVhdGVDb250ZW50KCk6IE1PYmplY3RTdGF0dXMge1xuXHRcdGNvbnN0IHN0YXR1c0NvbmZpZyA9IHRoaXMuZ2V0QXBwQ29tcG9uZW50KCk/LmdldEFkZGl0aW9uYWxDb25maWd1cmF0aW9uKCk/LltcInNhcC5mZS5tYWNyb3NcIl0/LlN0YXR1cztcblx0XHRjb25zdCBkYXRhRmllbGRPclByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCA9ICh0aGlzLmRhdGFNb2RlbFBhdGggPz8gdGhpcy52YWx1ZURhdGFNb2RlbFBhdGgpIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8XG5cdFx0XHRQcm9wZXJ0eSB8IERhdGFGaWVsZCB8IERhdGFQb2ludFR5cGVcblx0XHQ+O1xuXHRcdGNvbnN0IHZpc2libGUgPSBnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhRmllbGRPclByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlFeHByZXNzaW9uID0gdGhpcy5nZXRDcml0aWNhbGl0eUV4cHJlc3Npb24oc3RhdHVzQ29uZmlnPy5jb2xvck1hcCk7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlJY29uRXhwcmVzc2lvbiA9IHRoaXMuZ2V0Q3JpdGljYWxpdHlJY29uRXhwcmVzc2lvbigpO1xuXHRcdGNvbnN0IHRleHRCaW5kaW5nID0gdGhpcy5nZXRPYmplY3RTdGF0dXNUZXh0QmluZGluZygpO1xuXHRcdGNvbnN0IGlzQWN0aXZlID0gdGhpcy5oYXNMaXN0ZW5lcnMoXCJwcmVzc1wiKTtcblx0XHRpZiAodGhpcy5pc1Byb3BlcnR5SW5pdGlhbChcImludmVydGVkXCIpKSB7XG5cdFx0XHQvLyBpZiBpbnZlcnRlZCBpcyBub3Qgc2V0LCB1c2UgdGhlIGRlZmF1bHQgZnJvbSBjb25maWd1cmF0aW9uXG5cdFx0XHR0aGlzLmludmVydGVkID0gc3RhdHVzQ29uZmlnPy5pbnZlcnRlZERlZmF1bHRWYWx1ZSA9PT0gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHRoaXMubGFyZ2VEZXNpZ24pIHtcblx0XHRcdHRoaXMuaGlkZUljb24gPSB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8TU9iamVjdFN0YXR1c1xuXHRcdFx0XHRpZD17Z2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgXCJPYmplY3RTdGF0dXNcIl0pfVxuXHRcdFx0XHRpbnZlcnRlZD17dGhpcy5pbnZlcnRlZH1cblx0XHRcdFx0Y2xhc3M9e3RoaXMubGFyZ2VEZXNpZ24gPyBcInNhcE1PYmplY3RTdGF0dXNMYXJnZSBzYXBNT2JqZWN0U3RhdHVzTG9uZ1RleHRcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0c3RhdGU9e2NyaXRpY2FsaXR5RXhwcmVzc2lvbn1cblx0XHRcdFx0aWNvbj17dGhpcy5oaWRlSWNvbiA/IHVuZGVmaW5lZCA6IGNyaXRpY2FsaXR5SWNvbkV4cHJlc3Npb259XG5cdFx0XHRcdHRleHQ9e3RleHRCaW5kaW5nfVxuXHRcdFx0XHR2aXNpYmxlPXt2aXNpYmxlfVxuXHRcdFx0XHRhY3RpdmU9e2lzQWN0aXZlfVxuXHRcdFx0XHRyZWFjdGl2ZUFyZWFNb2RlPXt0aGlzLnJlYWN0aXZlQXJlYU1vZGV9XG5cdFx0XHRcdHByZXNzPXsocHJlc3NFdmVudDogT2JqZWN0U3RhdHVzJFByZXNzRXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLmZpcmVFdmVudChcInByZXNzXCIsIHByZXNzRXZlbnQpO1xuXHRcdFx0XHR9fVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEEsSUFPcUJBLE1BQU0sSUFBQUMsSUFBQSxHQUQxQkMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLEVBQUFDLEtBQUEsR0FFckNDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFD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
@@ -0,0 +1,212 @@
1
+ import type { Property } from "@sap-ux/vocabularies-types";
2
+ import type { DataField, DataPointType } from "@sap-ux/vocabularies-types/vocabularies/UI";
3
+ import { UIAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/UI";
4
+ import type { CompiledBindingToolkitExpression } from "sap/fe/base/BindingToolkit";
5
+ import { defineUI5Class, event, implementInterface, property, type PropertiesOf } from "sap/fe/base/ClassSupport";
6
+ import BuildingBlock from "sap/fe/core/buildingBlocks/BuildingBlock";
7
+ import { generate } from "sap/fe/core/helpers/StableIdHelper";
8
+ import { isProperty } from "sap/fe/core/helpers/TypeGuards";
9
+ import { buildExpressionForCriticalityColor, buildExpressionForCriticalityIcon } from "sap/fe/core/templating/CriticalityFormatters";
10
+ import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
11
+ import { enhanceDataModelPath } from "sap/fe/core/templating/DataModelPathHelper";
12
+ import { getTextBinding, getVisibleExpression } from "sap/fe/macros/field/FieldTemplating";
13
+ import type { ObjectStatus$PressEvent } from "sap/m/ObjectStatus";
14
+ import MObjectStatus from "sap/m/ObjectStatus";
15
+ import type { $ControlSettings } from "sap/ui/core/Control";
16
+ import type { IFormContent } from "sap/ui/core/library";
17
+
18
+ /**
19
+ * Building block to display a status and criticality.
20
+ * @public
21
+ * @ui5-experimental-since 1.141.0
22
+ * @since 1.141.0
23
+ */
24
+ @defineUI5Class("sap.fe.macros.Status")
25
+ export default class Status extends BuildingBlock<MObjectStatus> implements IFormContent {
26
+ @implementInterface("sap.ui.core.IFormContent")
27
+ __implements__sap_ui_core_IFormContent = true;
28
+
29
+ /**
30
+ * Metadata path to the DataField annotation or property.
31
+ * @public
32
+ */
33
+ @property({
34
+ type: "string",
35
+ required: true
36
+ })
37
+ public metaPath!: string;
38
+
39
+ /**
40
+ * Context path for the binding context.
41
+ * @public
42
+ */
43
+ @property({
44
+ type: "string"
45
+ })
46
+ public contextPath?: string;
47
+
48
+ /**
49
+ * When the Status is clickable, it defines the size of the reactive area of the clickable element:
50
+ *
51
+ * - ReactiveAreaMode.Inline - The Status is displayed as part of a sentence.
52
+ * - ReactiveAreaMode.Overlay - The Status is displayed as an overlay on top of other interactive parts of the page.
53
+ * Note: It is designed to make the clickable element easier to activate and helps meet the WCAG 2.2 Target Size requirement. It is applicable only for the SAP Horizon themes. Note: The size of the reactive area is sufficiently large to help users avoid accidentally selecting (clicking or tapping) unintended UI elements. UI elements positioned over other parts of the page may need an invisible active touch area. This ensures that no elements beneath are activated accidentally when the user tries to interact with the overlay element.
54
+ * @public
55
+ */
56
+ @property({ type: "string", allowedValues: ["Inline", "Overlay"] })
57
+ public reactiveAreaMode?: "Inline" | "Overlay";
58
+
59
+ /**
60
+ * Indicates whether the ObjectStatus should be displayed in large design mode.
61
+ * @public
62
+ */
63
+ @property({ type: "boolean" })
64
+ public largeDesign = false;
65
+
66
+ /**
67
+ * Determines whether the background color reflects the set state of the ObjectStatus instead of the control's text.
68
+ * @public
69
+ */
70
+ @property({ type: "boolean" })
71
+ public inverted = false;
72
+
73
+ @property({ type: "boolean" })
74
+ public hideIcon = false;
75
+
76
+ /**
77
+ * Press event fired when the ObjectStatus is clicked.
78
+ * @param event The press event
79
+ * @public
80
+ */
81
+ @event()
82
+ public press?: (event: ObjectStatus$PressEvent) => void;
83
+
84
+ /**
85
+ * Internal property to store the data model path
86
+ */
87
+ private dataModelPath?: DataModelObjectPath<DataField | DataPointType>;
88
+
89
+ private valueDataModelPath?: DataModelObjectPath<Property>;
90
+
91
+ /**
92
+ * Constructor for the Status building block.
93
+ * @param properties The properties object containing Status-specific settings and base control settings
94
+ * @param [others] Additional control settings that may be applied to the building block
95
+ */
96
+ constructor(properties: $ControlSettings & PropertiesOf<Status>, others?: $ControlSettings) {
97
+ super(properties, others);
98
+ }
99
+
100
+ /**
101
+ * Handler for the onMetadataAvailable event.
102
+ */
103
+ onMetadataAvailable(): void {
104
+ this.getTemplatingObjects();
105
+ if (!this.dataModelPath && !this.valueDataModelPath) {
106
+ // there cannot be a static value and no datafield or datapoint
107
+ return;
108
+ }
109
+ if (!this.content) {
110
+ this.content = this.createContent();
111
+ }
112
+ }
113
+
114
+ /**
115
+ * Function to get the templating objects and prepare data model paths.
116
+ */
117
+ private getTemplatingObjects(): void {
118
+ // Try to get as DataField first, then as DataPoint, then as Property
119
+ const internalDataModelPath = this.getDataModelObjectForMetaPath<DataField | DataPointType | Property>(
120
+ this.metaPath,
121
+ this.contextPath
122
+ );
123
+ const targetObject = internalDataModelPath?.targetObject;
124
+
125
+ if (!internalDataModelPath) {
126
+ return;
127
+ }
128
+ if (isProperty(targetObject)) {
129
+ if (targetObject?.annotations?.UI?.DataFieldDefault !== undefined) {
130
+ this.dataModelPath = this.getDataModelObjectForMetaPath<DataField>(
131
+ `${this.metaPath}@${UIAnnotationTerms.DataFieldDefault}`,
132
+ this.contextPath
133
+ );
134
+ }
135
+ this.valueDataModelPath = internalDataModelPath as DataModelObjectPath<Property>;
136
+ } else {
137
+ this.dataModelPath = internalDataModelPath as DataModelObjectPath<DataField | DataPointType>;
138
+ if (this.dataModelPath?.targetObject?.Value?.path) {
139
+ this.valueDataModelPath = enhanceDataModelPath<Property>(internalDataModelPath, this.dataModelPath.targetObject.Value.path);
140
+ }
141
+ }
142
+ }
143
+
144
+ /**
145
+ * Gets the criticality expression for the ObjectStatus.
146
+ * @returns The compiled binding expression for criticality color, or undefined if no criticality is available
147
+ */
148
+ private getCriticalityExpression(specificColorMap?: Record<string, string>): CompiledBindingToolkitExpression | undefined {
149
+ return this.dataModelPath === undefined
150
+ ? undefined
151
+ : buildExpressionForCriticalityColor(this.dataModelPath, this.dataModelPath, specificColorMap);
152
+ }
153
+
154
+ /**
155
+ * Gets the criticality icon expression for the ObjectStatus.
156
+ * @returns The compiled binding expression for criticality icon, or undefined if no criticality is available
157
+ */
158
+ private getCriticalityIconExpression(): CompiledBindingToolkitExpression | undefined {
159
+ return this.dataModelPath === undefined ? undefined : buildExpressionForCriticalityIcon(this.dataModelPath, this.dataModelPath);
160
+ }
161
+
162
+ /**
163
+ * Gets the text binding expression for the ObjectStatus.
164
+ * @returns The compiled binding expression for the ObjectStatus text content
165
+ */
166
+ private getObjectStatusTextBinding(): CompiledBindingToolkitExpression {
167
+ const propertyOrDataFieldDataModelObjectPath = (this.valueDataModelPath ?? this.dataModelPath) as DataModelObjectPath<
168
+ Property | DataField | DataPointType
169
+ >;
170
+ return getTextBinding(propertyOrDataFieldDataModelObjectPath, {}) as CompiledBindingToolkitExpression;
171
+ }
172
+
173
+ /**
174
+ * Creates the ObjectStatus control content.
175
+ * @returns The configured ObjectStatus control ready for rendering
176
+ */
177
+ createContent(): MObjectStatus {
178
+ const statusConfig = this.getAppComponent()?.getAdditionalConfiguration()?.["sap.fe.macros"]?.Status;
179
+ const dataFieldOrPropertyDataModelObjectPath = (this.dataModelPath ?? this.valueDataModelPath) as DataModelObjectPath<
180
+ Property | DataField | DataPointType
181
+ >;
182
+ const visible = getVisibleExpression(dataFieldOrPropertyDataModelObjectPath);
183
+ const criticalityExpression = this.getCriticalityExpression(statusConfig?.colorMap);
184
+ const criticalityIconExpression = this.getCriticalityIconExpression();
185
+ const textBinding = this.getObjectStatusTextBinding();
186
+ const isActive = this.hasListeners("press");
187
+ if (this.isPropertyInitial("inverted")) {
188
+ // if inverted is not set, use the default from configuration
189
+ this.inverted = statusConfig?.invertedDefaultValue === true;
190
+ }
191
+ if (this.largeDesign) {
192
+ this.hideIcon = true;
193
+ }
194
+
195
+ return (
196
+ <MObjectStatus
197
+ id={generate([this.getId(), "ObjectStatus"])}
198
+ inverted={this.inverted}
199
+ class={this.largeDesign ? "sapMObjectStatusLarge sapMObjectStatusLongText" : undefined}
200
+ state={criticalityExpression}
201
+ icon={this.hideIcon ? undefined : criticalityIconExpression}
202
+ text={textBinding}
203
+ visible={visible}
204
+ active={isActive}
205
+ reactiveAreaMode={this.reactiveAreaMode}
206
+ press={(pressEvent: ObjectStatus$PressEvent): void => {
207
+ this.fireEvent("press", pressEvent);
208
+ }}
209
+ />
210
+ );
211
+ }
212
+ }