@sap/open.fe 1.99.0 → 1.100.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 (969) hide show
  1. package/package.json +1 -1
  2. package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
  3. package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
  4. package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +1748 -1813
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +2 -3
  6. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.ts +1801 -0
  7. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter-dbg.js +77 -32
  8. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.js +2 -3
  9. package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.ts +26 -0
  10. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +43 -53
  11. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +2 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.ts +39 -0
  13. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +31 -38
  14. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +8 -9
  15. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js.map +3 -3
  16. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +23 -71
  17. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +4 -4
  18. package/packages/sap.fe.common/src/sap/fe/common/library.js +4 -5
  19. package/packages/sap.fe.common/src/sap/fe/common/library.ts +35 -0
  20. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  21. package/packages/sap.fe.common/src/sap/fe/common/resources.json +54 -32
  22. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  23. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  24. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jsmeta.json +1 -1
  25. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  26. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  27. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  28. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +1 -69
  29. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
  30. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +0 -70
  31. package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +388 -399
  32. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +2 -3
  33. package/packages/sap.fe.core/src/sap/fe/core/AppComponent.ts +403 -0
  34. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +127 -158
  35. package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
  36. package/packages/sap.fe.core/src/sap/fe/core/BaseController-dbg.js +82 -58
  37. package/packages/sap.fe.core/src/sap/fe/core/BaseController.js +2 -3
  38. package/packages/sap.fe.core/src/sap/fe/core/BaseController.ts +68 -0
  39. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +111 -20
  40. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
  41. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +131 -32
  42. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +278 -274
  43. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +2 -3
  44. package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.ts +250 -0
  45. package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +157 -29
  46. package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
  47. package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +60 -32
  48. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +694 -756
  49. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
  50. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +11 -9
  51. package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +21 -31
  52. package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +1 -1
  53. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
  54. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +10 -3
  55. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +20 -38
  56. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +1 -1
  57. package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +1 -1
  58. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1354 -1370
  59. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
  60. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +33 -22
  61. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync-dbg.js +392 -0
  62. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.js +5 -0
  63. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  64. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon-dbg.js +136 -0
  65. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +5 -0
  66. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  67. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage-dbg.js +262 -0
  68. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.js +5 -0
  69. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  70. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  71. package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  72. package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +30 -68
  73. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +44 -71
  75. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +55 -36
  76. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
  77. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +66 -46
  78. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +34 -15
  79. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
  80. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +48 -18
  81. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +17 -4
  82. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +1 -1
  83. package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +21 -4
  84. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata-dbg.js +69 -66
  85. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +2 -3
  86. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  87. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1593 -1669
  88. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +2 -3
  89. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  90. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +79 -54
  91. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -3
  92. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  93. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +718 -779
  94. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +2 -3
  95. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  96. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +796 -816
  97. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -3
  98. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  99. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +1004 -1005
  100. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -3
  101. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  102. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +487 -521
  103. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
  104. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  105. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +141 -169
  106. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +2 -3
  107. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  108. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +233 -244
  109. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -3
  110. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  111. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +301 -336
  112. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
  113. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  114. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +188 -175
  115. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +2 -3
  116. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  117. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +157 -149
  118. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +2 -3
  119. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  120. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +144 -125
  121. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +2 -3
  122. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  123. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +7 -6
  124. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.js +2 -3
  125. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  126. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +230 -268
  127. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +2 -3
  128. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  129. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +592 -633
  130. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  131. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  132. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +788 -806
  133. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +2 -3
  134. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  135. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  136. package/packages/sap.fe.core/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  137. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution-dbg.js +67 -66
  138. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.js +2 -3
  139. package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  140. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +90 -75
  141. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.js +2 -3
  142. package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  143. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +130 -125
  144. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -3
  145. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  146. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +103 -112
  147. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +2 -3
  148. package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  149. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +122 -135
  150. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +2 -3
  151. package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  152. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar-dbg.js +162 -159
  153. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.js +2 -3
  154. package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.ts +143 -0
  155. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +45 -39
  156. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +2 -3
  157. package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  158. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -42
  159. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -2
  160. package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  161. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +126 -116
  162. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -3
  163. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  164. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +241 -255
  165. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -3
  166. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  167. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -141
  168. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -3
  169. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  170. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +335 -322
  171. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -3
  172. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  173. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +74 -74
  174. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -3
  175. package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  176. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +348 -379
  177. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
  178. package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  179. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +12 -1
  180. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  181. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  182. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +354 -378
  183. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
  184. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  185. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +6 -4
  186. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  187. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  188. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
  189. package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  190. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +26 -12
  191. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  192. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  193. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +2 -2
  194. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  195. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  196. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +1 -1
  197. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  198. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -23
  199. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  200. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  201. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +118 -53
  202. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  203. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  204. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +161 -207
  205. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  206. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  207. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +115 -133
  208. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
  209. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +20 -6
  210. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
  211. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  212. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +12 -1
  213. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  214. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key-dbg.js +42 -57
  215. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.js +1 -1
  216. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  217. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +25 -4
  218. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
  219. package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  220. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +10 -4
  221. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  222. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  223. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +7 -5
  224. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
  225. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  226. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +92 -98
  227. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -3
  228. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  229. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +2 -3
  230. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
  231. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +104 -0
  232. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.js +5 -0
  233. package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  234. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +53 -2
  235. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  236. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  237. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component-dbg.js +50 -54
  238. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.js +2 -3
  239. package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.ts +48 -0
  240. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  241. package/packages/sap.fe.core/src/sap/fe/core/fpm/resources.json +7 -3
  242. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +323 -309
  243. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
  244. package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  245. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +7 -7
  246. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
  247. package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  248. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +186 -62
  249. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
  250. package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  251. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +5 -4
  252. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
  253. package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  254. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +1 -1
  255. package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  256. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +601 -684
  257. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +2 -3
  258. package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  259. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +25 -1
  260. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  261. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  262. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +5 -1
  263. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
  264. package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  265. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +426 -451
  266. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +36 -32
  267. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +3 -3
  268. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +644 -738
  269. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
  270. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +24 -35
  271. package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
  272. package/packages/sap.fe.core/src/sap/fe/core/library.js +2 -3
  273. package/packages/sap.fe.core/src/sap/fe/core/library.support.js +22 -33
  274. package/packages/sap.fe.core/src/sap/fe/core/library.support.ts +23 -0
  275. package/packages/sap.fe.core/src/sap/fe/core/library.ts +420 -0
  276. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  277. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +5 -3
  278. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  279. package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  280. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +22 -5
  281. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +27 -7
  282. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +27 -7
  283. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +27 -7
  284. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +27 -7
  285. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +27 -7
  286. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +27 -7
  287. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +27 -7
  288. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +27 -7
  289. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +27 -7
  290. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  291. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  292. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  293. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  294. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +27 -7
  295. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  296. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +27 -7
  297. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +28 -8
  298. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +28 -8
  299. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  300. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +27 -7
  301. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +27 -7
  302. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +27 -7
  303. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +27 -7
  304. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +27 -7
  305. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +27 -7
  306. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +26 -6
  307. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +27 -7
  308. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +27 -7
  309. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +27 -7
  310. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +28 -8
  311. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +27 -7
  312. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +27 -7
  313. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +27 -7
  314. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +27 -7
  315. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +28 -8
  316. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  317. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +27 -7
  318. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +27 -7
  319. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +27 -7
  320. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +27 -7
  321. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +27 -7
  322. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +27 -7
  323. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +26 -6
  324. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +30 -10
  325. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +27 -7
  326. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +27 -7
  327. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  328. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  329. package/packages/sap.fe.core/src/sap/fe/core/resources.json +745 -384
  330. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +45 -71
  331. package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
  332. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +154 -192
  333. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
  334. package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  335. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +66 -92
  336. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
  337. package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  338. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +284 -339
  339. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
  340. package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  341. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +67 -102
  342. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
  343. package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  344. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +754 -814
  345. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  346. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  347. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +649 -736
  348. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
  349. package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  350. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +567 -592
  351. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
  352. package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  353. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +354 -386
  354. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  355. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  356. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +1 -1
  357. package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  358. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper-dbg.js +1 -1
  359. package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.ts +1 -1
  360. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics-dbg.js +36 -48
  361. package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.js +1 -1
  362. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +93 -85
  363. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
  364. package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  365. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +25 -32
  366. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
  367. package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  368. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
  369. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.js +1 -1
  370. package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  371. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
  372. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
  373. package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +37 -24
  374. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1664 -1
  375. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  376. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
  377. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
  378. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  379. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +59 -0
  380. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/RootEntity.json +1 -1
  381. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/Component.js +33 -0
  382. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.controller.js +34 -0
  383. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.view.xml +18 -0
  384. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/Entities.json +6 -0
  385. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/service.cds +6 -0
  386. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/manifest.json +68 -0
  387. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldMessages.html +37 -0
  388. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +1 -0
  389. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +7 -2
  390. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
  391. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.js +23 -0
  392. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.ts +11 -0
  393. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/service.cds +11 -23
  394. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/Component.js +40 -0
  395. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.controller.js +35 -0
  396. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.view.xml +21 -0
  397. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/RootEntity.json +82 -0
  398. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/service.cds +82 -0
  399. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/manifest.json +78 -0
  400. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableMessages.html +37 -0
  401. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +5 -4
  402. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +3 -0
  403. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/App.view.xml +1 -1
  404. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +1 -169
  405. package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +0 -212
  406. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +2305 -119
  407. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +2206 -67
  408. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.js +40 -0
  409. package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.ts +34 -0
  410. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.js +114 -0
  411. package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.ts +114 -0
  412. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.js +113 -0
  413. package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.ts +78 -0
  414. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +599 -1
  415. package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +614 -0
  416. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +23 -5
  417. package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +26 -14
  418. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +87 -1
  419. package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +82 -1
  420. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.js +124 -0
  421. package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.ts +141 -0
  422. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +34768 -67
  423. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.js +170 -0
  424. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.ts +155 -0
  425. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.js +101 -0
  426. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.ts +94 -0
  427. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.js +82 -0
  428. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.ts +77 -0
  429. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +2 -2
  430. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +1 -1
  431. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +7 -2
  432. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +7 -0
  433. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +104 -2
  434. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +96 -1
  435. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.js +83 -0
  436. package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.ts +79 -0
  437. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.js +72 -0
  438. package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.ts +64 -0
  439. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +619 -3
  440. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +668 -5
  441. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +297 -1
  442. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +276 -6
  443. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.js +149 -0
  444. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.ts +142 -0
  445. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.js +776 -182
  446. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +181 -3
  447. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +19 -43
  448. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +2 -18
  449. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +8 -6
  450. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +5 -27
  451. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +1 -1
  452. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +1 -1
  453. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +1 -1
  454. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.js +86 -0
  455. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.ts +80 -0
  456. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
  457. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
  458. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -18
  459. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +1 -1
  460. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.js +45 -0
  461. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.ts +29 -0
  462. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +51 -1
  463. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +47 -1
  464. package/packages/sap.fe.core/test/sap/fe/core/jest/controls/__snapshots__/FilterBar.spec.ts.snap +3 -0
  465. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +2 -2
  466. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
  467. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +25 -36
  468. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +26 -36
  469. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +3 -3
  470. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +2 -2
  471. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +1 -1
  472. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +6 -5
  473. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +133 -9
  474. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +171 -8
  475. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +174 -210
  476. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +294 -230
  477. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +3 -1
  478. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.js +237 -0
  479. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.ts +246 -0
  480. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.js +9993 -0
  481. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.ts +11352 -0
  482. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.js +460 -0
  483. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.ts +543 -0
  484. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.js +616 -0
  485. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.ts +711 -0
  486. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/manifest.json +887 -0
  487. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.js +393 -0
  488. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.ts +434 -0
  489. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.js +31 -0
  490. package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.ts +12 -0
  491. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +27 -0
  492. package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +12 -0
  493. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/manifest.json +150 -0
  494. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata.xml +365 -0
  495. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_groupable_options.xml +96 -0
  496. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_textArrangement.xml +102 -0
  497. package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_withPV.xml +359 -0
  498. package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +89 -27
  499. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.js +421 -0
  500. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.ts +413 -0
  501. package/packages/sap.fe.core/test/sap/fe/core/jest/data/aggregatedSD/metadata.xml +3767 -0
  502. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/manifest.json +185 -0
  503. package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/metadata.xml +1534 -0
  504. package/packages/sap.fe.core/test/sap/fe/core/jest/data/manifest.json +887 -0
  505. package/packages/sap.fe.core/test/sap/fe/core/jest/data/salesOrderMetadata_qunit.xml +4995 -0
  506. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.js +48 -0
  507. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.ts +48 -0
  508. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +131 -51
  509. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +81 -31
  510. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +13 -7
  511. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +12 -6
  512. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +17 -3
  513. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +24 -7
  514. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +61 -1
  515. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +59 -0
  516. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +3 -3
  517. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +1 -2
  518. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +4 -4
  519. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.ts +6 -3
  520. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +1 -1
  521. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +1 -1
  522. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +19 -0
  523. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +0 -73
  524. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +11 -1
  525. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +15 -0
  526. package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +30 -0
  527. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +49 -5
  528. package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +60 -5
  529. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.js +384 -0
  530. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.ts +427 -0
  531. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +132 -2
  532. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +156 -2
  533. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.js +273 -0
  534. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.ts +402 -0
  535. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.js +45 -0
  536. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.ts +40 -0
  537. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -1
  538. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -102
  539. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.100.json +326 -0
  540. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +0 -22
  541. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  542. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  543. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +2 -2
  544. package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
  545. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +22 -43
  546. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
  547. package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +3 -3
  548. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +14 -24
  549. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  550. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +1 -1
  551. package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.fragment.xml +3 -2
  552. package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +16 -18
  553. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +162 -100
  554. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
  555. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +93 -16
  556. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +2 -1
  557. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +16 -8
  558. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
  559. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +58 -83
  560. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
  561. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +16 -2
  562. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +112 -192
  563. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  564. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +1 -1
  565. package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
  566. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +4 -20
  567. package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +1 -1
  568. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +1 -1
  569. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +10 -31
  570. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +1 -1
  571. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +147 -162
  572. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
  573. package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +32 -8
  574. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +5 -0
  575. package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
  576. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +56 -74
  577. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  578. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +1 -1
  579. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +90 -39
  580. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  581. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +284 -251
  582. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  583. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +126 -14
  584. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +38 -101
  585. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  586. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +68 -6
  587. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  588. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +72 -12
  589. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  590. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +67 -10
  591. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -12
  592. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  593. package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.fragment.xml +1 -1
  594. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +1 -3
  595. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
  596. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +62 -39
  597. package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
  598. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue-dbg.js +104 -50
  599. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.js +2 -3
  600. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.ts +68 -0
  601. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range-dbg.js +83 -35
  602. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.js +2 -3
  603. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.ts +66 -0
  604. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value-dbg.js +327 -216
  605. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.js +2 -3
  606. package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.ts +303 -0
  607. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollaborationAvatar.fragment.xml +15 -0
  608. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +14 -2
  609. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
  610. package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +18 -2
  611. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +12 -29
  612. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +9 -0
  613. package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
  614. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -0
  615. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +529 -533
  616. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +2 -3
  617. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.ts +568 -0
  618. package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +0 -1
  619. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -3
  620. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +1 -1
  621. package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +3 -2
  622. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldContent.fragment.xml +3 -1
  623. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +13 -3
  624. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +4 -1
  625. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
  626. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +1 -0
  627. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +38 -4
  628. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +2 -2
  629. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -3
  630. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +1 -2
  631. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +55 -11
  632. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
  633. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +3 -3
  634. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +9 -2
  635. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +9 -2
  636. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +12 -3
  637. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +26 -5
  638. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +10 -2
  639. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/RatingIndicator.fragment.xml +9 -2
  640. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +9 -2
  641. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +4 -0
  642. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +31 -2
  643. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  644. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +20 -0
  645. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -2
  646. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
  647. package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +7 -9
  648. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +90 -118
  649. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  650. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  651. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +13 -12
  652. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +2 -2
  653. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +185 -214
  654. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  655. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  656. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  657. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +4 -1
  658. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +3 -1
  659. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +3 -1
  660. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +3 -1
  661. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +3 -1
  662. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +3 -1
  663. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +3 -1
  664. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +4 -2
  665. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +3 -1
  666. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +3 -1
  667. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +3 -1
  668. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -1
  669. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +3 -1
  670. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +3 -1
  671. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +3 -1
  672. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +3 -1
  673. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +3 -1
  674. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +3 -1
  675. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +3 -1
  676. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +3 -1
  677. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +3 -1
  678. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +3 -1
  679. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  680. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +4 -2
  681. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +3 -1
  682. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +3 -1
  683. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -1
  684. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +3 -1
  685. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +3 -1
  686. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +3 -1
  687. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +3 -1
  688. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +3 -1
  689. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +3 -1
  690. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +3 -1
  691. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +3 -1
  692. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +3 -1
  693. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +3 -1
  694. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +3 -1
  695. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +3 -1
  696. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +3 -1
  697. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +3 -1
  698. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +3 -1
  699. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +3 -1
  700. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +3 -1
  701. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +3 -1
  702. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +3 -1
  703. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +3 -1
  704. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +3 -1
  705. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -1
  706. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +273 -199
  707. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +1 -1
  708. package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -1
  709. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +2 -0
  710. package/packages/sap.fe.macros/src/sap/fe/macros/table/CreationRow.fragment.xml +13 -20
  711. package/packages/sap.fe.macros/src/sap/fe/macros/table/CustomColumn.fragment.xml +1 -0
  712. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +5 -110
  713. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  714. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +98 -78
  715. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  716. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata-dbg.js +1 -1
  717. package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +1 -1
  718. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +211 -10
  719. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  720. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
  721. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  722. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -45
  723. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +0 -60
  724. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.js +78 -0
  725. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.ts +71 -0
  726. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +35 -1
  727. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +44 -0
  728. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +0 -76
  729. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +27 -1
  730. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +28 -0
  731. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +10 -12
  732. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +10 -10
  733. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +129 -15
  734. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +13 -39
  735. package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +2 -2
  736. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.js +119 -0
  737. package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.ts +113 -0
  738. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +166 -2
  739. package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +190 -3
  740. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +457 -389
  741. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +504 -425
  742. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +104 -2
  743. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +158 -1
  744. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +0 -6
  745. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +5 -5
  746. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +114 -25
  747. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +40 -40
  748. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +4 -8
  749. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +19 -19
  750. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -5
  751. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +12 -0
  752. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +89 -90
  753. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1314 -58
  754. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableMacro.spec.ts.snap +459 -0
  755. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +18 -2
  756. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +6 -1
  757. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +107 -106
  758. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableAPI.cds +197 -0
  759. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +33 -4
  760. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +30 -4
  761. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +72 -29
  762. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +86 -18
  763. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +51 -27
  764. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +55 -9
  765. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +46 -6
  766. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +28 -1
  767. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +170 -43
  768. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +131 -15
  769. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +90 -53
  770. package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/TestTSX.spec.tsx +2 -1
  771. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
  772. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +1 -99
  773. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
  774. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +4 -4
  775. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +4 -4
  776. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueHelpTemplating.qunit.js +15 -0
  777. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +265 -106
  778. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/metadata/simpleMetadata.js +38 -0
  779. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.100.json +372 -0
  780. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +0 -11
  781. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  782. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  783. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  784. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  785. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js.map +2 -2
  786. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
  787. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
  788. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  789. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  790. package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +8 -8
  791. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  792. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  793. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  794. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  795. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  796. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  797. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  798. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js.map +2 -2
  799. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
  800. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +2 -2
  801. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  802. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  803. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +27 -27
  804. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.source.less +316 -15
  805. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/resources.json +1 -1
  806. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.less +315 -14
  807. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.source.less +315 -14
  808. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/resources.json +2 -2
  809. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.less +316 -15
  810. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.source.less +316 -15
  811. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/resources.json +2 -2
  812. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.less +316 -15
  813. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.source.less +316 -15
  814. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/resources.json +2 -2
  815. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.less +315 -14
  816. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.source.less +315 -14
  817. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/resources.json +2 -2
  818. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.less +317 -16
  819. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.source.less +317 -16
  820. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/resources.json +2 -2
  821. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.less +317 -16
  822. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.source.less +317 -16
  823. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/resources.json +2 -2
  824. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.less +316 -15
  825. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.source.less +316 -15
  826. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/resources.json +2 -2
  827. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.less +316 -15
  828. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.source.less +316 -15
  829. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/resources.json +2 -2
  830. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.less +400 -99
  831. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.source.less +400 -99
  832. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/resources.json +2 -2
  833. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  834. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  835. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  836. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  837. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  838. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +1 -1
  839. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  840. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  841. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +7 -1
  842. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
  843. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +22 -21
  844. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +13 -18
  845. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  846. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  847. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +7 -7
  848. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +3 -3
  849. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +50 -9
  850. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  851. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -12
  852. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  853. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
  854. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +50 -17
  855. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  856. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +7 -1
  857. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  858. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +3 -0
  859. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  860. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  861. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +19 -15
  862. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +36 -0
  863. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +1 -1
  864. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -0
  865. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -0
  866. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +3 -1
  867. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
  868. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +3 -1
  869. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
  870. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js +1 -1
  871. package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js.map +2 -2
  872. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  873. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +4 -3
  874. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +2 -2
  875. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +22 -21
  876. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  877. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  878. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +14 -14
  879. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +0 -15
  880. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +0 -15
  881. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +0 -15
  882. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +0 -15
  883. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +0 -15
  884. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +0 -15
  885. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +0 -15
  886. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +0 -15
  887. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +0 -15
  888. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +0 -15
  889. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +0 -15
  890. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +0 -15
  891. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +0 -15
  892. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +0 -15
  893. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +0 -15
  894. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +0 -15
  895. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +0 -15
  896. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +0 -15
  897. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +0 -15
  898. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +0 -15
  899. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +0 -15
  900. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +0 -15
  901. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +0 -15
  902. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +0 -15
  903. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +0 -15
  904. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +0 -15
  905. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +0 -15
  906. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +0 -15
  907. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +0 -15
  908. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +0 -15
  909. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +0 -15
  910. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +0 -15
  911. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +0 -15
  912. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +0 -15
  913. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +0 -15
  914. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +0 -15
  915. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +0 -15
  916. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +0 -15
  917. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +0 -15
  918. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +0 -15
  919. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +0 -15
  920. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +0 -15
  921. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +0 -15
  922. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +0 -15
  923. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +0 -15
  924. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +0 -15
  925. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -15
  926. package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +0 -15
  927. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +115 -89
  928. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  929. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +353 -1
  930. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  931. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
  932. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  933. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +1 -1
  934. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +3 -3
  935. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +1 -1
  936. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +4 -4
  937. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +1 -1
  938. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +2 -2
  939. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +2 -1
  940. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +2 -1
  941. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +7 -7
  942. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +30 -61
  943. package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +1 -1
  944. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.100.json +192 -0
  945. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +0 -11
  946. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  947. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  948. package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +1 -1
  949. package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +8 -8
  950. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +6 -4
  951. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  952. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +10 -6
  953. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +126 -203
  954. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  955. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +17 -2
  956. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI-dbg.js +9 -1
  957. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI.js +1 -1
  958. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  959. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +2 -2
  960. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +2 -2
  961. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +9 -18
  962. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
  963. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  964. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  965. package/packages/sap.fe.test/src/sap/fe/test/resources.json +18 -18
  966. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  967. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  968. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  969. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +0 -271
@@ -0,0 +1,1801 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ (c) Copyright 2009-2017 SAP SE. All rights reserved
4
+
5
+ */
6
+ import Button from "sap/m/Button";
7
+ import Dialog from "sap/m/Dialog";
8
+ import mLib from "sap/m/library";
9
+ import MessagePopover from "sap/fe/common/MessagePopover";
10
+ import CommonUtils from "sap/fe/core/CommonUtils";
11
+ import coreLib from "sap/ui/core/library";
12
+ import Filter from "sap/ui/model/Filter";
13
+ import Sorter from "sap/ui/model/Sorter";
14
+ import FilterOperator from "sap/ui/model/FilterOperator";
15
+ import Log from "sap/base/Log";
16
+ import UriParameters from "sap/base/util/UriParameters";
17
+ import FormattedText from "sap/m/FormattedText";
18
+ import CoreEvent from "sap/ui/base/Event";
19
+ import View from "sap/ui/core/mvc/View";
20
+ import JSONModel from "sap/ui/model/json/JSONModel";
21
+ import PageController from "sap/fe/core/PageController";
22
+ import { Aggregation, UI5Class, Event } from "sap/fe/core/helpers/ClassSupport";
23
+ import MessageFilter from "sap/fe/common/MessageFilter";
24
+
25
+ const ButtonType = mLib.ButtonType;
26
+ const MessageType = coreLib.MessageType;
27
+
28
+ @UI5Class("sap.fe.common.MessageButton")
29
+ class MessageButton extends Button {
30
+ @Aggregation({ type: "sap.fe.common.MessageFilter", multiple: true, singularName: "customFilter" })
31
+ customFilters!: MessageFilter;
32
+
33
+ @Event
34
+ messageChange!: Function;
35
+
36
+ private oMessagePopover: any;
37
+ private oItemBinding: any;
38
+ private oObjectPageLayout: any;
39
+ private sLastActionText = "";
40
+ private sGeneralGroupText = "";
41
+ private _setMessageDataTimeout: any;
42
+ private sViewId = "";
43
+
44
+ init() {
45
+ Button.prototype.init.apply(this);
46
+ //press event handler attached to open the message popover
47
+ this.attachPress(this.handleMessagePopoverPress, this);
48
+ this.oMessagePopover = new MessagePopover();
49
+ this.oItemBinding = this.oMessagePopover.getBinding("items");
50
+ this.oItemBinding.attachChange(this._setMessageData, this);
51
+ const messageButtonId = this.getId();
52
+ if (messageButtonId) {
53
+ this.oMessagePopover.addCustomData(new (sap as any).ui.core.CustomData({ key: "messageButtonId", value: messageButtonId })); // TODO check for custom data type
54
+ }
55
+ this.attachModelContextChange(this._applyFiltersAndSort.bind(this));
56
+ this.oMessagePopover.attachActiveTitlePress(this._activeTitlePress.bind(this));
57
+ }
58
+
59
+ /**
60
+ * The method that is called when a user clicks on the MessageButton control.
61
+ *
62
+ * @param {object} oEvent Event object
63
+ */
64
+ handleMessagePopoverPress(oEvent: CoreEvent) {
65
+ this.oMessagePopover.toggle(oEvent.getSource());
66
+ }
67
+
68
+ /**
69
+ * The method that groups the messages based on the section or subsection they belong to.
70
+ * This method force the loading of contexts for all tables before to apply the grouping.
71
+ *
72
+ * @param {object} oView Current view.
73
+ * @returns {Promise} Return promise.
74
+ *
75
+ * @private
76
+ */
77
+ _applyGroupingAsync(oView: View) {
78
+ const that = this as MessageButton;
79
+ const aWaitForData: any[] = [];
80
+ const oViewBindingContext = oView.getBindingContext();
81
+ const _findTablesRelatedToMessages = function(oView: View) {
82
+ const oRes: any[] = [];
83
+ const aMessages = that.oItemBinding.getContexts().map(function(oContext: any) {
84
+ return oContext.getObject();
85
+ });
86
+ const oViewContext = oView.getBindingContext();
87
+ if (oViewContext) {
88
+ const oObjectPage = oView.getContent()[0];
89
+ that.getVisibleSectionsFromObjectPageLayout(oObjectPage).forEach(function(oSection: any) {
90
+ oSection.getSubSections().forEach(function(oSubSection: any) {
91
+ oSubSection.findElements(true).forEach(function(oElem: any) {
92
+ if (oElem.isA("sap.ui.mdc.Table")) {
93
+ for (let i = 0; i < aMessages.length; i++) {
94
+ const oRowBinding = oElem.getRowBinding();
95
+ if (oRowBinding) {
96
+ const sElemeBindingPath = oViewContext.getPath() + "/" + oElem.getRowBinding().getPath();
97
+ if (aMessages[i].target.indexOf(sElemeBindingPath) === 0) {
98
+ oRes.push({ table: oElem, subsection: oSubSection });
99
+ break;
100
+ }
101
+ }
102
+ }
103
+ }
104
+ });
105
+ });
106
+ });
107
+ }
108
+ return oRes;
109
+ };
110
+ // Search for table related to Messages and initialize the binding context of the parent subsection to retrieve the data
111
+ const oTables = _findTablesRelatedToMessages.bind(this)(oView);
112
+ oTables.forEach(function(_oTable) {
113
+ const oMDCTable = _oTable.table,
114
+ oSubsection = _oTable.subsection;
115
+ if (!oMDCTable.getBindingContext() || oMDCTable.getBindingContext()?.getPath() !== oViewBindingContext?.getPath()) {
116
+ oSubsection.setBindingContext(oViewBindingContext);
117
+ if (!oMDCTable.getRowBinding().isLengthFinal()) {
118
+ aWaitForData.push(
119
+ new Promise(function(resolve: Function) {
120
+ oMDCTable.getRowBinding().attachEventOnce("dataReceived", function() {
121
+ resolve();
122
+ });
123
+ })
124
+ );
125
+ }
126
+ }
127
+ });
128
+ return Promise.all(aWaitForData)
129
+ .then(function() {
130
+ // the checkMessages call will refresh the controlIds for each messages
131
+ oView.getModel().checkMessages();
132
+ return new Promise(function(resolve: Function) {
133
+ setTimeout(function() {
134
+ that._applyGrouping();
135
+ resolve();
136
+ }, 0);
137
+ });
138
+ })
139
+ .catch(function() {
140
+ Log.error("Error while grouping the messages in the messagePopOver");
141
+ });
142
+ }
143
+
144
+ /**
145
+ * The method retrieves the visible sections from an objectpage.
146
+ *
147
+ * @param {object} oObjectPageLayout The objectPageLayout object for which we want to retrieve the visible sections.
148
+ * @returns {Array} Array of visible sections.
149
+ * @private
150
+ */
151
+ getVisibleSectionsFromObjectPageLayout(oObjectPageLayout: any) {
152
+ return oObjectPageLayout.getSections().filter(function(oSection: any) {
153
+ return oSection.getVisible();
154
+ });
155
+ }
156
+
157
+ /**
158
+ * The method that groups the messages based on the section or subsection they belong to.
159
+ *
160
+ * @private
161
+ */
162
+ _applyGrouping() {
163
+ this.oObjectPageLayout = this._getObjectPageLayout(this, this.oObjectPageLayout);
164
+ if (!this.oObjectPageLayout) {
165
+ return;
166
+ }
167
+ const aMessages = this.oMessagePopover.getItems();
168
+ const aSections = this.getVisibleSectionsFromObjectPageLayout(this.oObjectPageLayout);
169
+ const bEnableBinding = this._checkControlIdInSections(aMessages, false);
170
+ if (bEnableBinding) {
171
+ this._fnEnableBindings(aSections);
172
+ }
173
+ }
174
+
175
+ /**
176
+ * The method retrieves the binding context for the refError object.
177
+ * The refError contains a map to store the indexes of the rows with errors.
178
+ *
179
+ * @param {object} oTable The table for which we want to get the refError Object.
180
+ * @returns {object} Context of the refError.
181
+ * @private
182
+ */
183
+ _getTableRefErrorContext(oTable: any) {
184
+ const oModel = oTable.getModel("internal");
185
+ //initialize the refError property if it doesn't exist
186
+ if (!oTable.getBindingContext("internal").getProperty("refError")) {
187
+ oModel.setProperty("refError", {}, oTable.getBindingContext("internal"));
188
+ }
189
+ const sRefErrorContextPath =
190
+ oTable.getBindingContext("internal").getPath() +
191
+ "/refError/" +
192
+ oTable
193
+ .getBindingContext()
194
+ .getPath()
195
+ .replace("/", "$") +
196
+ "$" +
197
+ oTable
198
+ .getRowBinding()
199
+ .getPath()
200
+ .replace("/", "$");
201
+ const oContext = oModel.getContext(sRefErrorContextPath);
202
+ if (!oContext.getProperty("")) {
203
+ oModel.setProperty("", {}, oContext);
204
+ }
205
+ return oContext;
206
+ }
207
+
208
+ _getBackendMessageToRemove(oTable: any, oMessageObject: any, oErrorContext: any) {
209
+ //Test if there is already a message for the same context:
210
+ let oBackendMessageToRemove;
211
+ const oContext = this._getTableRefErrorContext(oTable),
212
+ aMessageIds = Object.keys(oContext.getProperty()).filter(function(key) {
213
+ return Object.keys(oContext.getProperty()[key]).every(function(childKey) {
214
+ return key !== oMessageObject.getId() && oContext.getProperty()[key][childKey] === oErrorContext[childKey];
215
+ });
216
+ }),
217
+ aValidMessageIds = sap.ui
218
+ .getCore()
219
+ .getMessageManager()
220
+ .getMessageModel()
221
+ .getData()
222
+ .map(function(m: any) {
223
+ return m.id;
224
+ });
225
+ if (aMessageIds.length > 0) {
226
+ aValidMessageIds.indexOf(aMessageIds[0]);
227
+ oBackendMessageToRemove = sap.ui
228
+ .getCore()
229
+ .getMessageManager()
230
+ .getMessageModel()
231
+ .getData()[aValidMessageIds.indexOf(aMessageIds[0])];
232
+ }
233
+ return oBackendMessageToRemove;
234
+ }
235
+
236
+ _updateInternalModel(
237
+ oTableRowContext: any,
238
+ iRowIndex: number,
239
+ sTableTargetColProperty: string,
240
+ oTable: any,
241
+ oMessageObject: any,
242
+ bIsCreationRow?: boolean
243
+ ) {
244
+ let oTemp;
245
+ if (bIsCreationRow) {
246
+ oTemp = {
247
+ rowIndex: "CreationRow",
248
+ targetColProperty: sTableTargetColProperty ? sTableTargetColProperty : ""
249
+ };
250
+ } else {
251
+ oTemp = {
252
+ rowIndex: oTableRowContext ? iRowIndex : "",
253
+ targetColProperty: sTableTargetColProperty ? sTableTargetColProperty : ""
254
+ };
255
+ }
256
+ const oModel = oTable.getModel("internal"),
257
+ oContext = this._getTableRefErrorContext(oTable);
258
+ //we first remove the entries with obsolete message ids from the internal model before inserting the new error info :
259
+ const aValidMessageIds = sap.ui
260
+ .getCore()
261
+ .getMessageManager()
262
+ .getMessageModel()
263
+ .getData()
264
+ .map(function(message: any) {
265
+ return message.id;
266
+ });
267
+ let aObsoleteMessagelIds;
268
+ if (oContext.getProperty()) {
269
+ aObsoleteMessagelIds = Object.keys(oContext.getProperty()).filter(function(internalMessageId) {
270
+ return aValidMessageIds.indexOf(internalMessageId) === -1;
271
+ });
272
+ aObsoleteMessagelIds.forEach(function(obsoleteId) {
273
+ delete oContext.getProperty()[obsoleteId];
274
+ });
275
+ }
276
+ oModel.setProperty(
277
+ oMessageObject.getId(),
278
+ Object.assign({}, oContext.getProperty(oMessageObject.getId()) ? oContext.getProperty(oMessageObject.getId()) : {}, oTemp),
279
+ oContext
280
+ );
281
+ }
282
+
283
+ _getControlFromMessageRelatingToSubSection(subSection: any, message: any) {
284
+ const that = this as MessageButton;
285
+ const oMessageObject = message.getBindingContext("message").getObject();
286
+ const aElements = subSection
287
+ .findElements(true, function(oElem: any) {
288
+ return that._fnFilterUponIds(oMessageObject.getControlIds(), oElem);
289
+ })
290
+ .sort(function(a: any, b: any) {
291
+ // controls are sorted in order to have the table on top of the array
292
+ // it will help to compute the subtitle of the message based on the type of related controls
293
+ if (a.isA("sap.ui.mdc.Table") && !b.isA("sap.ui.mdc.Table")) {
294
+ return -1;
295
+ }
296
+ return 1;
297
+ });
298
+ return aElements;
299
+ }
300
+
301
+ /**
302
+ * The method that sets groups for transient messages.
303
+ *
304
+ * @param {object} message The message we want to compute group and subtitle.
305
+ * @param {string} sActionName The action name.
306
+ * @private
307
+ */
308
+
309
+ _setGroupLabelForTransientMsg(message: any, sActionName: string) {
310
+ this.sLastActionText = this.sLastActionText
311
+ ? this.sLastActionText
312
+ : (sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as any).getText("T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_LAST_ACTION");
313
+
314
+ message.setGroupName(this.sLastActionText + ": " + sActionName);
315
+ }
316
+
317
+ /**
318
+ * The method that group messages and add the subtitle.
319
+ *
320
+ * @param {object} message The message we want to compute group and subtitle.
321
+ * @param {object} section The section containing the controls.
322
+ * @param {object} subSection The subsection containing the controls.
323
+ * @param {object} aElements List of controls from a subsection related to a message .
324
+ * @param {boolean} bMultipleSubSections True if there are more than 1 subsection in the section.
325
+ * @param {string} sActionName The action name.
326
+ * @returns {object} Return the control targeted by the message.
327
+ * @private
328
+ */
329
+
330
+ _computeMessageGroupAndSubTitle(
331
+ message: any,
332
+ section: any,
333
+ subSection: any,
334
+ aElements: any[],
335
+ bMultipleSubSections: boolean,
336
+ sActionName: string
337
+ ) {
338
+ const that = this as MessageButton;
339
+ this.oItemBinding.detachChange(this._setMessageData, this);
340
+ const oMessageObject = message.getBindingContext("message").getObject();
341
+
342
+ let oElement, oTable, oTargetTableInfo: any, l, iRowIndex, oTargetedControl, oBackendMessageToRemove, bIsCreationRow;
343
+ const bIsBackendMessage = new RegExp("^/").test(oMessageObject.getTarget()),
344
+ oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as any;
345
+ if (bIsBackendMessage) {
346
+ for (l = 0; l < aElements.length; l++) {
347
+ oElement = aElements[l];
348
+ oTargetedControl = oElement;
349
+ if (oElement.isA("sap.m.Table") || oElement.isA("sap.ui.table.Table")) {
350
+ oTargetTableInfo = {};
351
+ oTable = oElement.getParent();
352
+ oTargetTableInfo.tableHeader = oTable.getHeader();
353
+ const oRowBinding = oTable.getRowBinding();
354
+ if (oRowBinding && oRowBinding.isLengthFinal() && oTable.getBindingContext()) {
355
+ oTargetTableInfo.sTableTargetColProperty = this._getTableColProperty(oTable, oMessageObject);
356
+ const oTableColInfo = this._getTableColInfo(oTable, oTargetTableInfo.sTableTargetColProperty);
357
+ oTargetTableInfo.oTableRowBindingContexts = oElement.isA("sap.ui.table.Table")
358
+ ? oRowBinding.getContexts()
359
+ : oRowBinding.getCurrentContexts();
360
+ oTargetTableInfo.sTableTargetColName = oTableColInfo.sTableTargetColName;
361
+ oTargetTableInfo.sTableTargetProperty = oTargetTableInfo.sTableTargetColProperty;
362
+ oTargetTableInfo.sTableTargetColProperty = oTableColInfo.sTableTargetColProperty;
363
+ oTargetTableInfo.oTableRowContext = oTargetTableInfo.oTableRowBindingContexts.find(
364
+ function(oMessageObject: any, rowContext: any) {
365
+ return rowContext && oMessageObject.getTarget().indexOf(rowContext.getPath()) === 0;
366
+ }.bind(this, oMessageObject)
367
+ );
368
+ let sControlId;
369
+ if (!oTargetTableInfo.oTableRowContext) {
370
+ sControlId = oMessageObject.controlIds.find(
371
+ function(oTable: any, sId: string) {
372
+ return that._IsControlInTable(oTable, sId);
373
+ }.bind(this, oTable)
374
+ );
375
+ }
376
+ if (sControlId) {
377
+ const oControl = sap.ui.getCore().byId(sControlId);
378
+ bIsCreationRow = this._IsControlPartOfCreationRow(oControl);
379
+ }
380
+ this._setMessageSubtitle(
381
+ message,
382
+ oTargetTableInfo.oTableRowBindingContexts,
383
+ oTargetTableInfo.oTableRowContext,
384
+ oTargetTableInfo.sTableTargetColName,
385
+ oResourceBundle,
386
+ oTargetTableInfo.sTableTargetProperty,
387
+ oTable,
388
+ bIsCreationRow
389
+ );
390
+ if (oTargetTableInfo.oTableRowContext) {
391
+ this._formatMessageDescription(
392
+ message,
393
+ oTargetTableInfo.oTableRowContext,
394
+ oTargetTableInfo.sTableTargetColName,
395
+ oResourceBundle,
396
+ oTable
397
+ );
398
+ }
399
+ iRowIndex = oTargetTableInfo.oTableRowContext && oTargetTableInfo.oTableRowContext.getIndex();
400
+ this._updateInternalModel(
401
+ oTargetTableInfo.oTableRowContext,
402
+ iRowIndex,
403
+ oTargetTableInfo.sTableTargetColProperty,
404
+ oTable,
405
+ oMessageObject
406
+ );
407
+ }
408
+ } else {
409
+ message.setActiveTitle(true);
410
+ //check if the targeted control is a child of one of the other controls
411
+ const bIsTargetedControlOrphan = this._bIsOrphanElement(oTargetedControl, aElements);
412
+ if (bIsTargetedControlOrphan) {
413
+ //set the subtitle
414
+ message.setSubtitle("");
415
+ break;
416
+ }
417
+ }
418
+ }
419
+ } else {
420
+ //There is only one elt as this is a frontEnd message
421
+ oTargetedControl = aElements[0];
422
+ oTable = this._getMdcTable(oTargetedControl);
423
+ if (oTable) {
424
+ oTargetTableInfo = {};
425
+ oTargetTableInfo.tableHeader = oTable.getHeader();
426
+ const iTargetColumnIndex = this._getTableColumnIndex(oTargetedControl);
427
+ oTargetTableInfo.sTableTargetColProperty =
428
+ iTargetColumnIndex > -1 ? oTable.getColumns()[iTargetColumnIndex].getDataProperty() : undefined;
429
+ oTargetTableInfo.sTableTargetProperty = oTargetTableInfo.sTableTargetColProperty;
430
+ oTargetTableInfo.sTableTargetColName =
431
+ oTargetTableInfo.sTableTargetColProperty && iTargetColumnIndex > -1
432
+ ? oTable.getColumns()[iTargetColumnIndex].getHeader()
433
+ : undefined;
434
+ bIsCreationRow = this._getTableRow(oTargetedControl).isA("sap.ui.table.CreationRow");
435
+ if (!bIsCreationRow) {
436
+ iRowIndex = this._getTableRowIndex(oTargetedControl);
437
+ oTargetTableInfo.oTableRowBindingContexts = oTable.getRowBinding().getCurrentContexts();
438
+ oTargetTableInfo.oTableRowContext = oTargetTableInfo.oTableRowBindingContexts[iRowIndex];
439
+ }
440
+ this._setMessageSubtitle(
441
+ message,
442
+ oTargetTableInfo.oTableRowBindingContexts,
443
+ oTargetTableInfo.oTableRowContext,
444
+ oTargetTableInfo.sTableTargetColName,
445
+ oResourceBundle,
446
+ oTargetTableInfo.sTableTargetProperty,
447
+ oTable,
448
+ bIsCreationRow
449
+ );
450
+ this._updateInternalModel(
451
+ oTargetTableInfo.oTableRowContext,
452
+ iRowIndex,
453
+ oTargetTableInfo.sTableTargetColProperty,
454
+ oTable,
455
+ oMessageObject,
456
+ bIsCreationRow
457
+ );
458
+ if (oTargetTableInfo.oTableRowContext) {
459
+ const oErrorContext = {
460
+ rowIndex: oTargetTableInfo.oTableRowContext ? iRowIndex : "",
461
+ targetColProperty: oTargetTableInfo.sTableTargetColProperty ? oTargetTableInfo.sTableTargetColProperty : ""
462
+ };
463
+ oBackendMessageToRemove = this._getBackendMessageToRemove(oTable, oMessageObject, oErrorContext);
464
+ }
465
+ }
466
+ }
467
+ if (oMessageObject.persistent && sActionName) {
468
+ this._setGroupLabelForTransientMsg(message, sActionName);
469
+ } else {
470
+ message.setGroupName(
471
+ section.getTitle() +
472
+ (subSection.getTitle() && bMultipleSubSections ? ", " + subSection.getTitle() : "") +
473
+ (oTargetTableInfo
474
+ ? ", " + oResourceBundle.getText("T_MESSAGE_GROUP_TITLE_TABLE_DENOMINATOR") + ": " + oTargetTableInfo.tableHeader
475
+ : "")
476
+ );
477
+ const sViewId = this._getViewId(this.getId());
478
+ const oView = sap.ui.getCore().byId(sViewId as string);
479
+ const oMessageTargetProperty =
480
+ oMessageObject.getTarget() &&
481
+ oMessageObject
482
+ .getTarget()
483
+ .split("/")
484
+ .pop();
485
+ const oUIModel = oView?.getModel("internal") as JSONModel;
486
+ if (
487
+ oUIModel &&
488
+ oUIModel.getProperty("/messageTargetProperty") &&
489
+ oMessageTargetProperty &&
490
+ oMessageTargetProperty == oUIModel.getProperty("/messageTargetProperty")
491
+ ) {
492
+ this.oMessagePopover.fireActiveTitlePress({ "item": message });
493
+ oUIModel.setProperty("/messageTargetProperty", false);
494
+ }
495
+ }
496
+ this.oItemBinding.attachChange(this._setMessageData, this);
497
+ if (oBackendMessageToRemove && !bIsBackendMessage) {
498
+ /*Pending further investigation, along with the deletion of the backendEnd message,
499
+ we remove and reinsert all the other existing messages from the message manager to
500
+ make the highlight of the field on error persistent.*/
501
+ this._removeMessage(oBackendMessageToRemove);
502
+ }
503
+ return oTargetedControl;
504
+ }
505
+
506
+ _checkControlIdInSections(aMessages: any[], bEnableBinding: boolean) {
507
+ let section, aSubSections, message, i, j, k;
508
+ this.sGeneralGroupText = this.sGeneralGroupText
509
+ ? this.sGeneralGroupText
510
+ : (sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as any).getText("T_MESSAGE_BUTTON_SAPFE_MESSAGE_GROUP_GENERAL");
511
+ //Get all sections from the object page layout
512
+ const aVisibleSections = this.getVisibleSectionsFromObjectPageLayout(this.oObjectPageLayout);
513
+ if (aVisibleSections) {
514
+ const viewId = this._getViewId(this.getId());
515
+ const oView = sap.ui.getCore().byId(viewId as string);
516
+ const sActionName = oView?.getBindingContext("internal")?.getProperty("sActionName");
517
+ if (sActionName) {
518
+ (oView?.getBindingContext("internal") as any).setProperty("sActionName", null);
519
+ }
520
+ for (i = aMessages.length - 1; i >= 0; --i) {
521
+ // Loop over all messages
522
+ message = aMessages[i];
523
+ let bIsGeneralGroupName = true;
524
+ for (j = aVisibleSections.length - 1; j >= 0; --j) {
525
+ // Loop over all visible sections
526
+ section = aVisibleSections[j];
527
+ aSubSections = section.getSubSections();
528
+ for (k = aSubSections.length - 1; k >= 0; --k) {
529
+ // Loop over all sub-sections
530
+ const subSection = aSubSections[k];
531
+ const aControls = this._getControlFromMessageRelatingToSubSection(subSection, message);
532
+ if (aControls.length > 0) {
533
+ const oTargetedControl = this._computeMessageGroupAndSubTitle(
534
+ message,
535
+ section,
536
+ subSection,
537
+ aControls,
538
+ aSubSections.length > 1,
539
+ sActionName
540
+ );
541
+ // if we found table that matches with the message, we don't stop the loop
542
+ // in case we find an additional control (eg mdc field) that also match with the message
543
+ if (oTargetedControl && !oTargetedControl.isA("sap.m.Table") && !oTargetedControl.isA("sap.ui.table.Table")) {
544
+ j = k = -1;
545
+ }
546
+ bIsGeneralGroupName = false;
547
+ }
548
+ }
549
+ }
550
+ if (bIsGeneralGroupName) {
551
+ const oMessageObject = message.getBindingContext("message").getObject();
552
+ message.setActiveTitle(false);
553
+ if (oMessageObject.persistent && sActionName) {
554
+ this._setGroupLabelForTransientMsg(message, sActionName);
555
+ } else {
556
+ message.setGroupName(this.sGeneralGroupText);
557
+ }
558
+ }
559
+ if (!bEnableBinding && message.getGroupName() === this.sGeneralGroupText && this._findTargetForMessage(message)) {
560
+ return true;
561
+ }
562
+ }
563
+ }
564
+ }
565
+
566
+ _findTargetForMessage(message: any) {
567
+ const messageObject = message.getBindingContext("message") && message.getBindingContext("message").getObject();
568
+ if (messageObject && messageObject.target) {
569
+ const oMetaModel =
570
+ this.oObjectPageLayout && this.oObjectPageLayout.getModel() && this.oObjectPageLayout.getModel().getMetaModel(),
571
+ contextPath = oMetaModel && oMetaModel.getMetaPath(messageObject.target),
572
+ oContextPathMetadata = oMetaModel && oMetaModel.getObject(contextPath);
573
+ if (oContextPathMetadata && oContextPathMetadata.$kind == "Property") {
574
+ return true;
575
+ }
576
+ }
577
+ }
578
+
579
+ _fnEnableBindings(aSections: any[]) {
580
+ if (UriParameters.fromQuery(window.location.search).get("sap-fe-xx-lazyloadingtest")) {
581
+ return;
582
+ }
583
+ for (let iSection = 0; iSection < aSections.length; iSection++) {
584
+ const oSection = aSections[iSection];
585
+ let nonTableChartcontrolFound = false;
586
+ const aSubSections = oSection.getSubSections();
587
+ for (let iSubSection = 0; iSubSection < aSubSections.length; iSubSection++) {
588
+ const oSubSection = aSubSections[iSubSection];
589
+ const oAllBlocks = oSubSection.getBlocks();
590
+ if (oAllBlocks) {
591
+ for (let block = 0; block < oSubSection.getBlocks().length; block++) {
592
+ if (oAllBlocks[block].getContent && !oAllBlocks[block].getContent().isA("sap.fe.macros.TableAPI")) {
593
+ nonTableChartcontrolFound = true;
594
+ break;
595
+ }
596
+ }
597
+ if (nonTableChartcontrolFound) {
598
+ oSubSection.setBindingContext(undefined);
599
+ }
600
+ }
601
+ if (oSubSection.getBindingContext() && this._findMessageGroupAfterRebinding()) {
602
+ oSubSection
603
+ .getBindingContext()
604
+ .getBinding()
605
+ .attachDataReceived(this._findMessageGroupAfterRebinding());
606
+ }
607
+ }
608
+ }
609
+ }
610
+
611
+ _findMessageGroupAfterRebinding() {
612
+ const aMessages = this.oMessagePopover.getItems();
613
+ this._checkControlIdInSections(aMessages, true);
614
+ }
615
+
616
+ /**
617
+ * The method that retrieves the view ID (HTMLView/XMLView/JSONview/JSView/Templateview) of any control.
618
+ *
619
+ * @param {string} sControlId ID of the control needed to retrieve the view ID
620
+ * @returns {string} The view ID of the control
621
+ */
622
+ _getViewId(sControlId: string) {
623
+ let sViewId,
624
+ oControl = sap.ui.getCore().byId(sControlId) as any;
625
+ while (oControl) {
626
+ if (oControl instanceof View) {
627
+ sViewId = oControl.getId();
628
+ break;
629
+ }
630
+ oControl = oControl.getParent();
631
+ }
632
+ return sViewId;
633
+ }
634
+
635
+ _setLongtextUrlDescription(sMessageDescriptionContent: string, oDiagnosisTitle: any) {
636
+ this.oMessagePopover.setAsyncDescriptionHandler(function(config: any) {
637
+ // This stores the old description
638
+ const sOldDescription = sMessageDescriptionContent;
639
+ // Here we can fetch the data and concatenate it to the old one
640
+ // By default, the longtextUrl fetching will overwrite the description (with the default behaviour)
641
+ // Here as we have overwritten the default async handler, which fetches and replaces the description of the item
642
+ // we can manually modify it to include whatever needed.
643
+ const sLongTextUrl = config.item.getLongtextUrl();
644
+ if (sLongTextUrl) {
645
+ jQuery.ajax({
646
+ type: "GET",
647
+ url: sLongTextUrl,
648
+ success: function(data) {
649
+ const sDiagnosisText = oDiagnosisTitle.getHtmlText() + data;
650
+ config.item.setDescription(sOldDescription + "" + sDiagnosisText);
651
+ config.promise.resolve();
652
+ },
653
+ error: function() {
654
+ config.item.setDescription(sMessageDescriptionContent);
655
+ const sError = "A request has failed for long text data. URL: " + sLongTextUrl;
656
+ Log.error(sError);
657
+ config.promise.reject(sError);
658
+ }
659
+ });
660
+ }
661
+ });
662
+ }
663
+
664
+ _formatMessageDescription(message: any, oTableRowContext: any, sTableTargetColName: string, oResourceBundle: any, oTable: any) {
665
+ const sTableFirstColProperty = this._getTableFirstColProperty(oTable);
666
+ let sColumnInfo = "";
667
+ const oColFromTableSettings = this._fetchColumnInfo(message, oTable);
668
+ if (sTableTargetColName) {
669
+ // if column in present in table definition
670
+ sColumnInfo = oResourceBundle.getText("T_MESSAGE_GROUP_DESCRIPTION_TABLE_COLUMN") + ": " + sTableTargetColName;
671
+ } else if (oColFromTableSettings) {
672
+ if (oColFromTableSettings.availability === "Hidden") {
673
+ // if column in neither in table definition nor personalization
674
+ if (message.getType() === "Error") {
675
+ sColumnInfo =
676
+ oResourceBundle.getText("T_COLUMN_AVAILABLE_DIAGNOSIS_MSGDESC_ERROR") +
677
+ " " +
678
+ oTableRowContext.getValue(sTableFirstColProperty);
679
+ } else {
680
+ sColumnInfo =
681
+ oResourceBundle.getText("T_COLUMN_AVAILABLE_DIAGNOSIS_MSGDESC") +
682
+ " " +
683
+ oTableRowContext.getValue(sTableFirstColProperty);
684
+ }
685
+ } else {
686
+ // if column is not in table definition but in personalization
687
+ sColumnInfo =
688
+ oResourceBundle.getText("T_MESSAGE_GROUP_DESCRIPTION_TABLE_COLUMN") +
689
+ ": " +
690
+ oColFromTableSettings.label +
691
+ " (" +
692
+ oResourceBundle.getText("T_COLUMN_INDICATOR_IN_TABLE_DEFINITION") +
693
+ ")";
694
+ }
695
+ }
696
+ const oFieldsAffectedTitle = new FormattedText({
697
+ htmlText: "<html><body><strong>" + oResourceBundle.getText("T_FIELDS_AFFECTED_TITLE") + "</strong></body></html><br>"
698
+ });
699
+ const sFieldAffectedText =
700
+ oFieldsAffectedTitle.getHtmlText() +
701
+ "<br>" +
702
+ oResourceBundle.getText("T_MESSAGE_GROUP_TITLE_TABLE_DENOMINATOR") +
703
+ ": " +
704
+ oTable.getHeader() +
705
+ "<br>" +
706
+ oResourceBundle.getText("T_MESSAGE_GROUP_DESCRIPTION_TABLE_ROW") +
707
+ ": " +
708
+ oTableRowContext.getValue(sTableFirstColProperty) +
709
+ "<br>" +
710
+ sColumnInfo +
711
+ "<br>";
712
+ const oDiagnosisTitle = new FormattedText({
713
+ htmlText: "<html><body><strong>" + oResourceBundle.getText("T_DIAGNOSIS_TITLE") + "</strong></body></html><br>"
714
+ });
715
+ // get the UI messages from the message context to set it to Diagnosis section
716
+ const sUIMessageDescription = message.getBindingContext("message").getObject().description;
717
+ //set the description to null to reset it below
718
+ message.setDescription(null);
719
+ let sDiagnosisText = "";
720
+ let sMessageDescriptionContent = "";
721
+ if (message.getLongtextUrl()) {
722
+ sMessageDescriptionContent = sFieldAffectedText + "<br>";
723
+ this._setLongtextUrlDescription(sMessageDescriptionContent, oDiagnosisTitle);
724
+ } else if (sUIMessageDescription) {
725
+ sDiagnosisText = oDiagnosisTitle.getHtmlText() + "<br>" + sUIMessageDescription;
726
+ sMessageDescriptionContent = sFieldAffectedText + "<br>" + sDiagnosisText;
727
+ message.setDescription(sMessageDescriptionContent);
728
+ } else {
729
+ message.setDescription(sFieldAffectedText);
730
+ }
731
+ }
732
+
733
+ /**
734
+ * Method to set the button text, count and icon property based upon the message items
735
+ * ButtonType: Possible settings for warning and error messages are 'critical' and 'negative'.
736
+ *
737
+ *
738
+ * @private
739
+ */
740
+ _setMessageData() {
741
+ clearTimeout(this._setMessageDataTimeout);
742
+ const that = this as MessageButton;
743
+
744
+ this._setMessageDataTimeout = setTimeout(function() {
745
+ const sIcon = "",
746
+ oMessages = that.oMessagePopover.getItems(),
747
+ oMessageCount: any = { Error: 0, Warning: 0, Success: 0, Information: 0 },
748
+ oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core") as any,
749
+ iMessageLength = oMessages.length;
750
+ let sButtonType = ButtonType.Default,
751
+ sMessageKey = "",
752
+ sTooltipText = "",
753
+ sMessageText = "";
754
+ if (iMessageLength > 0) {
755
+ for (let i = 0; i < iMessageLength; i++) {
756
+ if (!oMessages[i].getType() || oMessages[i].getType() == "") {
757
+ ++oMessageCount["Information"];
758
+ } else {
759
+ ++oMessageCount[oMessages[i].getType()];
760
+ }
761
+ }
762
+ if (oMessageCount[MessageType.Error] > 0) {
763
+ sButtonType = ButtonType.Negative;
764
+ } else if (oMessageCount[MessageType.Warning] > 0) {
765
+ sButtonType = ButtonType.Critical;
766
+ } else if (oMessageCount[MessageType.Success] > 0) {
767
+ sButtonType = ButtonType.Success;
768
+ } else if (oMessageCount[MessageType.Information] > 0) {
769
+ sButtonType = ButtonType.Neutral;
770
+ }
771
+ if (oMessageCount.Error > 0) {
772
+ that.setText(oMessageCount.Error);
773
+ } else {
774
+ that.setText("");
775
+ }
776
+ if (oMessageCount.Error === 1) {
777
+ sMessageKey = "C_COMMON_SAPFE_ERROR_MESSAGES_PAGE_TITLE_ERROR";
778
+ } else if (oMessageCount.Error > 1) {
779
+ sMessageKey = "C_COMMON_SAPFE_ERROR_MESSAGES_PAGE_MULTIPLE_ERROR_TOOLTIP";
780
+ } else if (!oMessageCount.Error && oMessageCount.Warning) {
781
+ sMessageKey = "C_COMMON_SAPFE_ERROR_MESSAGES_PAGE_WARNING_TOOLTIP";
782
+ } else if (!oMessageCount.Error && !oMessageCount.Warning && oMessageCount.Information) {
783
+ sMessageKey = "C_MESSAGE_HANDLING_SAPFE_ERROR_MESSAGES_PAGE_TITLE_INFO";
784
+ } else if (!oMessageCount.Error && !oMessageCount.Warning && !oMessageCount.Information && oMessageCount.Success) {
785
+ sMessageKey = "C_MESSAGE_HANDLING_SAPFE_ERROR_MESSAGES_PAGE_TITLE_SUCCESS";
786
+ }
787
+ if (sMessageKey) {
788
+ sMessageText = oResourceBundle.getText(sMessageKey);
789
+ sTooltipText = oMessageCount.Error ? oMessageCount.Error + " " + sMessageText : sMessageText;
790
+ that.setTooltip(sTooltipText);
791
+ }
792
+ that.setIcon(sIcon);
793
+ that.setType(sButtonType);
794
+ that.setVisible(true);
795
+ const oView = sap.ui.getCore().byId(that.sViewId) as View;
796
+ if (oView) {
797
+ const oPageReady = (oView.getController() as PageController).pageReady;
798
+ oPageReady
799
+ .waitPageReady()
800
+ .then(function() {
801
+ return that._applyGroupingAsync(oView);
802
+ })
803
+ .finally(function() {
804
+ (that as any).fireMessageChange({
805
+ iMessageLength: iMessageLength
806
+ });
807
+ })
808
+ .catch(function() {
809
+ Log.error("fail grouping messages");
810
+ });
811
+ }
812
+ if (iMessageLength > 1) {
813
+ that.oMessagePopover.navigateBack();
814
+ }
815
+ } else {
816
+ that.setVisible(false);
817
+ (that as any).fireMessageChange({
818
+ iMessageLength: iMessageLength
819
+ });
820
+ }
821
+ }, 100);
822
+ }
823
+
824
+ _bIsOrphanElement(oElement: any, aElements: any[]) {
825
+ return !aElements.some(
826
+ function(oElement: any, oElem: any) {
827
+ let oParentElement = oElement.getParent();
828
+ while (oParentElement && oParentElement !== oElem) {
829
+ oParentElement = oParentElement.getParent();
830
+ }
831
+ return oParentElement ? true : false;
832
+ }.bind(this, oElement)
833
+ );
834
+ }
835
+
836
+ /**
837
+ * The method that is called when a user clicks on the title of the message.
838
+ *
839
+ * @function
840
+ * @name _activeTitlePress
841
+ * @private
842
+ * @param {Event} oEvent Event object passed from the handler
843
+ */
844
+ _activeTitlePress(oEvent: CoreEvent) {
845
+ const that = this as MessageButton;
846
+ const oInternalModelContext = this.getBindingContext("pageInternal");
847
+ (oInternalModelContext as any).setProperty("errorNavigationSectionFlag", true);
848
+ const oItem = oEvent.getParameter("item"),
849
+ oMessage = oItem.getBindingContext("message").getObject(),
850
+ bIsBackendMessage = new RegExp("^/").test(oMessage.getTarget()),
851
+ oView = sap.ui.getCore().byId(this.sViewId) as View,
852
+ oMessagePopover = this.oMessagePopover;
853
+ let oControl, sSectionTitle;
854
+
855
+ if (oMessagePopover && oMessagePopover.isOpen()) {
856
+ oMessagePopover.close();
857
+ }
858
+
859
+ const _focusOnMessageTargetControl = function(oMessage: any, oTargetMdcTable?: any, iRowIndex?: number) {
860
+ const aAllViewElements = oView.findElements(true);
861
+ const aErroneousControls = oMessage
862
+ .getControlIds()
863
+ .filter(function(sControlId: string) {
864
+ return aAllViewElements.some(function(oElem) {
865
+ return oElem.getId() === sControlId;
866
+ });
867
+ })
868
+ .map(function(sControlId: string) {
869
+ return sap.ui.getCore().byId(sControlId);
870
+ });
871
+ const aNotTableErroneousControls = aErroneousControls.filter(function(oElem: any) {
872
+ return !oElem.isA("sap.m.Table") && !oElem.isA("sap.ui.table.Table");
873
+ });
874
+ //The focus is set on Not Table control in priority
875
+ if (aNotTableErroneousControls.length > 0) {
876
+ aNotTableErroneousControls[0].focus();
877
+ } else if (aErroneousControls.length > 0) {
878
+ aErroneousControls[0].focus();
879
+ const aTargetMdcTableRow = oTargetMdcTable
880
+ ? oTargetMdcTable.findElements(true, function(oElem: any) {
881
+ return oElem.isA("sap.m.ColumnListItem");
882
+ })
883
+ : [];
884
+ if (aTargetMdcTableRow.length > 0 && aTargetMdcTableRow[0]) {
885
+ const oTargetRow = aTargetMdcTableRow[iRowIndex as number];
886
+ const oTargetCell = _getTargetCell(oTargetRow, oMessage);
887
+ if (oTargetCell) {
888
+ const oTargetField = oTargetCell.isA("sap.fe.macros.FieldAPI")
889
+ ? oTargetCell.getContent().getContentEdit()[0]
890
+ : oTargetCell
891
+ .getItems()[0]
892
+ .getContent()
893
+ .getContentEdit()[0];
894
+ oTargetField.focus();
895
+ } else {
896
+ // control not found on table
897
+ const errorProperty = oMessage
898
+ .getTarget()
899
+ .split("/")
900
+ .pop();
901
+ if (errorProperty) {
902
+ (oView.getModel("internal") as JSONModel).setProperty("/messageTargetProperty", errorProperty);
903
+ }
904
+ (oView.getController() as PageController)._routing.navigateForwardToContext(oTargetRow.getBindingContext());
905
+ }
906
+ }
907
+ }
908
+ };
909
+
910
+ function _getTargetCell(oTargetRow: any, oMessage: any) {
911
+ const oTargetCell = oMessage.controlIds
912
+ .map(function(sControlId: string) {
913
+ const isControlInTable = oTargetRow.findElements(true, function(oElem: any) {
914
+ return oElem.getId() === sControlId;
915
+ });
916
+ return isControlInTable.length > 0 ? sap.ui.getCore().byId(sControlId) : null;
917
+ })
918
+ .reduce(function(acc: any, val: any) {
919
+ return val ? val : acc;
920
+ });
921
+ return oTargetCell;
922
+ }
923
+
924
+ //check if the pressed item is related to a table control
925
+ if (oItem.getGroupName().indexOf("Table:") !== -1) {
926
+ let oTargetMdcTable: any;
927
+ if (bIsBackendMessage) {
928
+ oTargetMdcTable = oMessage.controlIds
929
+ .map(function(sControlId: string) {
930
+ const oControl = sap.ui.getCore().byId(sControlId);
931
+ const oParentControl = oControl && (oControl.getParent() as any);
932
+ return oParentControl &&
933
+ oParentControl.isA("sap.ui.mdc.Table") &&
934
+ oParentControl.getHeader() === oItem.getGroupName().split(", Table: ")[1]
935
+ ? oParentControl
936
+ : null;
937
+ })
938
+ .reduce(function(acc: any, val: any) {
939
+ return val ? val : acc;
940
+ });
941
+ if (oTargetMdcTable) {
942
+ sSectionTitle = oItem.getGroupName().split(", ")[0];
943
+ this._navigateFromMessageToSectionTableInIconTabBarMode(oTargetMdcTable, this.oObjectPageLayout, sSectionTitle)
944
+ .then(function() {
945
+ const oRefErrorContext = that._getTableRefErrorContext(oTargetMdcTable);
946
+ const oRefError = oRefErrorContext.getProperty(
947
+ oItem
948
+ .getBindingContext("message")
949
+ .getObject()
950
+ .getId()
951
+ );
952
+ const _setFocusOnTargetField = function(oTargetMdcTable: any, iRowIndex: number) {
953
+ const aTargetMdcTableRow = that._getMdcTableRows(oTargetMdcTable),
954
+ iFirstVisibleRow = that._getGridTable(oTargetMdcTable).getFirstVisibleRow();
955
+ if (aTargetMdcTableRow.length > 0 && aTargetMdcTableRow[0]) {
956
+ const oTargetRow = aTargetMdcTableRow[iRowIndex - iFirstVisibleRow],
957
+ oTargetCell = _getTargetCell(oTargetRow, oMessage);
958
+ if (oTargetCell) {
959
+ oTargetCell.focus();
960
+ } else {
961
+ // control not found on table
962
+ const errorProperty = oMessage
963
+ .getTarget()
964
+ .split("/")
965
+ .pop();
966
+ if (errorProperty) {
967
+ (oView.getModel("internal") as JSONModel).setProperty("/messageTargetProperty", errorProperty);
968
+ }
969
+ (oView.getController() as PageController)._routing.navigateForwardToContext(
970
+ oTargetRow.getBindingContext()
971
+ );
972
+ }
973
+ return { targetRow: oTargetRow, targetCell: oTargetCell };
974
+ }
975
+ return { targetRow: null, targetCell: null };
976
+ };
977
+ if (oTargetMdcTable.data("tableType") === "GridTable" && oRefError.rowIndex !== "") {
978
+ const iFirstVisibleRow = that._getGridTable(oTargetMdcTable).getFirstVisibleRow();
979
+ oTargetMdcTable
980
+ .scrollToIndex(oRefError.rowIndex)
981
+ .then(function() {
982
+ const aTargetMdcTableRow = that._getMdcTableRows(oTargetMdcTable);
983
+ let iNewFirstVisibleRow, bScrollNeeded;
984
+ if (aTargetMdcTableRow.length > 0 && aTargetMdcTableRow[0]) {
985
+ iNewFirstVisibleRow = aTargetMdcTableRow[0].getParent().getFirstVisibleRow();
986
+ bScrollNeeded = iFirstVisibleRow - iNewFirstVisibleRow !== 0;
987
+ }
988
+ if (bScrollNeeded) {
989
+ //The scrollToIndex function does not wait for the UI update. As a workdaround, pending a fix from MDC (BCP: 2170251631) we use the event "UIUpdated".
990
+ const oWaitControlIdAdded = new Promise(function(resolve) {
991
+ sap.ui.getCore().attachEvent("UIUpdated", resolve);
992
+ });
993
+ return oWaitControlIdAdded;
994
+ }
995
+ return null;
996
+ })
997
+ .then(function() {
998
+ setTimeout(function() {
999
+ _setFocusOnTargetField(oTargetMdcTable, oRefError.rowIndex);
1000
+ }, 0);
1001
+ })
1002
+ .catch(function() {
1003
+ Log.error("Error while focusing on error");
1004
+ });
1005
+ } else if (oTargetMdcTable.data("tableType") === "ResponsiveTable" && oRefError) {
1006
+ _focusOnMessageTargetControl(oMessage, oTargetMdcTable, oRefError.rowIndex);
1007
+ } else {
1008
+ _focusOnMessageTargetControl(oMessage);
1009
+ }
1010
+ })
1011
+ .catch(function() {
1012
+ Log.error("Fail to navigate to Error control");
1013
+ });
1014
+ }
1015
+ } else {
1016
+ oControl = sap.ui.getCore().byId(oMessage.controlIds[0]);
1017
+ //If the control underlying the frontEnd message is not within the current section, we first go into the target section:
1018
+ const oSelectedSection: any = sap.ui.getCore().byId(this.oObjectPageLayout.getSelectedSection());
1019
+ if (oSelectedSection?.findElements(true).indexOf(oControl) === -1) {
1020
+ sSectionTitle = oItem.getGroupName().split(", ")[0];
1021
+ this._navigateFromMessageToSectionInIconTabBarMode(this.oObjectPageLayout, sSectionTitle);
1022
+ }
1023
+ oControl?.focus();
1024
+ }
1025
+ } else {
1026
+ // focus on control
1027
+ sSectionTitle = oItem.getGroupName().split(", ")[0];
1028
+ this._navigateFromMessageToSectionInIconTabBarMode(this.oObjectPageLayout, sSectionTitle);
1029
+ _focusOnMessageTargetControl(oMessage);
1030
+ }
1031
+ }
1032
+
1033
+ _getTableColInfo(oTable: any, sTableTargetColProperty: string) {
1034
+ let sTableTargetColName;
1035
+ let oTableTargetCol = oTable.getColumns().find(
1036
+ function(sTableTargetColProperty: any, column: any) {
1037
+ return column.getDataProperty() === sTableTargetColProperty;
1038
+ }.bind(this, sTableTargetColProperty)
1039
+ );
1040
+ if (!oTableTargetCol) {
1041
+ /* If the target column is not found, we check for a custom column */
1042
+ const oCustomColumn = oTable
1043
+ .getControlDelegate()
1044
+ .getColumnsFor(oTable)
1045
+ .find(function(oColumn: any) {
1046
+ if (!!oColumn.template && oColumn.propertyInfos) {
1047
+ return (
1048
+ oColumn.propertyInfos[0] === sTableTargetColProperty ||
1049
+ oColumn.propertyInfos[0].replace("Property::", "") === sTableTargetColProperty
1050
+ );
1051
+ } else {
1052
+ return false;
1053
+ }
1054
+ });
1055
+ if (oCustomColumn) {
1056
+ oTableTargetCol = oCustomColumn;
1057
+ sTableTargetColProperty = oTableTargetCol.name;
1058
+
1059
+ sTableTargetColName = oTable
1060
+ .getColumns()
1061
+ .find(function(oColumn: any) {
1062
+ return sTableTargetColProperty === oColumn.getDataProperty();
1063
+ })
1064
+ .getHeader();
1065
+ } else {
1066
+ /* If the target column is not found, we check for a field group */
1067
+ const aColumns = oTable.getControlDelegate().getColumnsFor(oTable);
1068
+ oTableTargetCol = aColumns.find(
1069
+ function(aColumns: any[], sTableTargetColProperty: string, oColumn: any) {
1070
+ if (oColumn.key.indexOf("::FieldGroup::") !== -1) {
1071
+ return oColumn.propertyInfos.find(function() {
1072
+ return aColumns.find(function(oColumn) {
1073
+ return oColumn.relativePath === sTableTargetColProperty;
1074
+ });
1075
+ });
1076
+ }
1077
+ }.bind(this, aColumns, sTableTargetColProperty)
1078
+ );
1079
+ /* check if the column with the field group is visible in the table: */
1080
+ let bIsTableTargetColVisible = false;
1081
+ if (oTableTargetCol && oTableTargetCol.label) {
1082
+ bIsTableTargetColVisible = oTable.getColumns().some(function(column: any) {
1083
+ return column.getHeader() === oTableTargetCol.label;
1084
+ });
1085
+ }
1086
+ sTableTargetColName = bIsTableTargetColVisible && oTableTargetCol.label;
1087
+ sTableTargetColProperty = bIsTableTargetColVisible && oTableTargetCol.key;
1088
+ }
1089
+ } else {
1090
+ sTableTargetColName = oTableTargetCol && oTableTargetCol.getHeader();
1091
+ }
1092
+ return { sTableTargetColName: sTableTargetColName, sTableTargetColProperty: sTableTargetColProperty };
1093
+ }
1094
+
1095
+ /**
1096
+ *
1097
+ * @param {object} obj The message object
1098
+ * @param {Array} aSections The array of sections in the object page
1099
+ *
1100
+ * @returns {number} The rank of the message
1101
+ */
1102
+ _getMessageRank(obj: any, aSections: any[]) {
1103
+ if (aSections) {
1104
+ let section, aSubSections, subSection, j, k, aElements, aAllElements, sectionRank;
1105
+ for (j = aSections.length - 1; j >= 0; --j) {
1106
+ // Loop over all sections
1107
+ section = aSections[j];
1108
+ aSubSections = section.getSubSections();
1109
+ for (k = aSubSections.length - 1; k >= 0; --k) {
1110
+ // Loop over all sub-sections
1111
+ subSection = aSubSections[k];
1112
+ aAllElements = subSection.findElements(true); // Get all elements inside a sub-section
1113
+ //Try to find the control 1 inside the sub section
1114
+ aElements = aAllElements.filter(this._fnFilterUponId.bind(this, obj.getControlId()));
1115
+ sectionRank = j + 1;
1116
+ if (aElements.length > 0) {
1117
+ obj.sectionName = section.getTitle();
1118
+ obj.subSectionName = subSection.getTitle();
1119
+ return sectionRank * 10 + (k + 1);
1120
+ }
1121
+ }
1122
+ }
1123
+ //if sub section title is Other messages, we return a high number(rank), which ensures
1124
+ //that messages belonging to this sub section always come later in messagePopover
1125
+ if (!obj.sectionName && !obj.subSectionName && obj.persistent) {
1126
+ return 1;
1127
+ }
1128
+ return 999;
1129
+ }
1130
+ return 999;
1131
+ }
1132
+
1133
+ /**
1134
+ * Method to set the filters based upon the message items
1135
+ * The desired filter operation is:
1136
+ * ( filters provided by user && ( validation = true && Control should be present in view ) || messages for the current matching context ).
1137
+ *
1138
+ * @private
1139
+ */
1140
+ _applyFiltersAndSort() {
1141
+ let oValidationFilters,
1142
+ oValidationAndContextFilter,
1143
+ oFilters,
1144
+ sPath,
1145
+ oSorter,
1146
+ oDialogFilter,
1147
+ objectPageLayoutSections: any = null;
1148
+ const aUserDefinedFilter: any[] = [];
1149
+ function filterOutMessagesInDialog() {
1150
+ const fnTest = function(aControlIds: string[]) {
1151
+ let index = Infinity,
1152
+ oControl = sap.ui.getCore().byId(aControlIds[0]) as any;
1153
+ const errorFieldControl = sap.ui.getCore().byId(aControlIds[0]);
1154
+ while (oControl) {
1155
+ const fieldRankinDialog =
1156
+ oControl instanceof Dialog
1157
+ ? (errorFieldControl?.getParent() as any).findElements(true).indexOf(errorFieldControl)
1158
+ : Infinity;
1159
+ if (oControl instanceof Dialog) {
1160
+ if (index > fieldRankinDialog) {
1161
+ index = fieldRankinDialog;
1162
+ // Set the focus to the dialog's control
1163
+ errorFieldControl?.focus();
1164
+ }
1165
+ // messages for sap.m.Dialog should not appear in the message button
1166
+ return false;
1167
+ }
1168
+ oControl = oControl.getParent();
1169
+ }
1170
+ return true;
1171
+ };
1172
+ return new Filter({
1173
+ path: "controlIds",
1174
+ test: fnTest,
1175
+ caseSensitive: true
1176
+ });
1177
+ }
1178
+ //Filter function to verify if the control is part of the current view or not
1179
+ function getCheckControlInViewFilter() {
1180
+ const fnTest = function(aControlIds: string[]) {
1181
+ if (!aControlIds.length) {
1182
+ return false;
1183
+ }
1184
+ let oControl: any = sap.ui.getCore().byId(aControlIds[0]);
1185
+ while (oControl) {
1186
+ if (oControl.getId() === sViewId) {
1187
+ return true;
1188
+ }
1189
+ if (oControl instanceof Dialog) {
1190
+ // messages for sap.m.Dialog should not appear in the message button
1191
+ return false;
1192
+ }
1193
+ oControl = oControl.getParent();
1194
+ }
1195
+ return false;
1196
+ };
1197
+ return new Filter({
1198
+ path: "controlIds",
1199
+ test: fnTest,
1200
+ caseSensitive: true
1201
+ });
1202
+ }
1203
+ if (!this.sViewId) {
1204
+ this.sViewId = this._getViewId(this.getId()) as string;
1205
+ }
1206
+ const sViewId = this.sViewId;
1207
+ //Add the filters provided by the user
1208
+ const aCustomFilters = this.getAggregation("customFilters") as any;
1209
+ if (aCustomFilters) {
1210
+ aCustomFilters.forEach(function(filter: any) {
1211
+ aUserDefinedFilter.push(
1212
+ new Filter({
1213
+ path: filter.getProperty("path"),
1214
+ operator: filter.getProperty("operator"),
1215
+ value1: filter.getProperty("value1"),
1216
+ value2: filter.getProperty("value2")
1217
+ })
1218
+ );
1219
+ });
1220
+ }
1221
+ const oBindingContext = this.getBindingContext();
1222
+ if (!oBindingContext) {
1223
+ this.setVisible(false);
1224
+ return;
1225
+ } else {
1226
+ sPath = oBindingContext.getPath();
1227
+ //Filter for filtering out only validation messages which are currently present in the view
1228
+ oValidationFilters = new Filter({
1229
+ filters: [
1230
+ new Filter({
1231
+ path: "validation",
1232
+ operator: FilterOperator.EQ,
1233
+ value1: true
1234
+ }),
1235
+ getCheckControlInViewFilter()
1236
+ ],
1237
+ and: true
1238
+ });
1239
+ //Filter for filtering out the bound messages i.e target starts with the context path
1240
+ oValidationAndContextFilter = new Filter({
1241
+ filters: [
1242
+ oValidationFilters,
1243
+ new Filter({
1244
+ path: "target",
1245
+ operator: FilterOperator.StartsWith,
1246
+ value1: sPath
1247
+ })
1248
+ ],
1249
+ and: false
1250
+ });
1251
+ oDialogFilter = new Filter({
1252
+ filters: [filterOutMessagesInDialog()]
1253
+ });
1254
+ }
1255
+ const oValidationContextDialogFilters = new Filter({
1256
+ filters: [oValidationAndContextFilter, oDialogFilter],
1257
+ and: true
1258
+ });
1259
+ // and finally - if there any - add custom filter (via OR)
1260
+ if (aUserDefinedFilter.length > 0) {
1261
+ oFilters = new (Filter as any)({
1262
+ filters: [aUserDefinedFilter, oValidationContextDialogFilters],
1263
+ and: false
1264
+ });
1265
+ } else {
1266
+ oFilters = oValidationContextDialogFilters;
1267
+ }
1268
+ this.oItemBinding.filter(oFilters);
1269
+ this.oObjectPageLayout = this._getObjectPageLayout(this, this.oObjectPageLayout);
1270
+ // We support sorting only for ObjectPageLayout use-case.
1271
+ if (this.oObjectPageLayout) {
1272
+ const that = this as MessageButton;
1273
+ oSorter = new (Sorter as any)("", null, null, function(obj1: any, obj2: any) {
1274
+ if (!objectPageLayoutSections) {
1275
+ objectPageLayoutSections = that.oObjectPageLayout && that.oObjectPageLayout.getSections();
1276
+ }
1277
+ const rankA = that._getMessageRank(obj1, objectPageLayoutSections);
1278
+ const rankB = that._getMessageRank(obj2, objectPageLayoutSections);
1279
+ if (rankA < rankB) {
1280
+ return -1;
1281
+ }
1282
+ if (rankA > rankB) {
1283
+ return 1;
1284
+ }
1285
+ return 0;
1286
+ });
1287
+ this.oItemBinding.sort(oSorter);
1288
+ }
1289
+ }
1290
+
1291
+ /**
1292
+ *
1293
+ * @param {object} sControlId
1294
+ * @param {object} oItem
1295
+ *
1296
+ * @returns {boolean} True if the control ID matches the item ID
1297
+ */
1298
+ _fnFilterUponId(sControlId: string, oItem: any) {
1299
+ return sControlId === oItem.getId();
1300
+ }
1301
+
1302
+ /**
1303
+ *
1304
+ * @param {Array} aControlIds
1305
+ * @param {object} oItem
1306
+ *
1307
+ * @returns {boolean} True if matches the item ID matcheds with one of the controlIds
1308
+ */
1309
+ _fnFilterUponIds(aControlIds: string[], oItem: any) {
1310
+ return aControlIds.some(function(sControlId) {
1311
+ if (sControlId === oItem.getId()) {
1312
+ return true;
1313
+ }
1314
+ return false;
1315
+ });
1316
+ }
1317
+
1318
+ /**
1319
+ * Retrieves the section based on section title and visibility.
1320
+ *
1321
+ * @param {object} oObjectPage Object page.
1322
+ * @param {string} sSectionTitle Section title.
1323
+ * @returns {object}
1324
+ * @private
1325
+ * @ignore
1326
+ */
1327
+ _getSectionBySectionTitle(oObjectPage: any, sSectionTitle: string) {
1328
+ if (sSectionTitle) {
1329
+ const aSections = oObjectPage.getSections();
1330
+ let oSection;
1331
+ for (let i = 0; i < aSections.length; i++) {
1332
+ if (aSections[i].getVisible() && aSections[i].getTitle() === sSectionTitle) {
1333
+ oSection = aSections[i];
1334
+ break;
1335
+ }
1336
+ }
1337
+ return oSection;
1338
+ }
1339
+ }
1340
+
1341
+ /**
1342
+ * Navigates to the section if the object page uses an IconTabBar and if the current section is not the target of the navigation.
1343
+ *
1344
+ * @param {object} oObjectPage Object page.
1345
+ * @param {string} sSectionTitle Section title.
1346
+ * @private
1347
+ * @ignore
1348
+ */
1349
+ _navigateFromMessageToSectionInIconTabBarMode(oObjectPage: any, sSectionTitle: string) {
1350
+ const bUseIconTabBar = oObjectPage.getUseIconTabBar();
1351
+ if (bUseIconTabBar) {
1352
+ const oSection = this._getSectionBySectionTitle(oObjectPage, sSectionTitle);
1353
+ const sSelectedSectionId = oObjectPage.getSelectedSection();
1354
+ if (oSection && sSelectedSectionId !== oSection.getId()) {
1355
+ oObjectPage.setSelectedSection(oSection.getId());
1356
+ }
1357
+ }
1358
+ }
1359
+
1360
+ _navigateFromMessageToSectionTableInIconTabBarMode(oTable: any, oObjectPage: any, sSectionTitle: string) {
1361
+ const oRowBinding = oTable.getRowBinding();
1362
+ const oTableContext = oTable.getBindingContext();
1363
+ const oOPContext = oObjectPage.getBindingContext();
1364
+ const bShouldWaitForTableRefresh = !(oTableContext === oOPContext);
1365
+ this._navigateFromMessageToSectionInIconTabBarMode(oObjectPage, sSectionTitle);
1366
+ return new Promise(function(resolve: Function) {
1367
+ if (bShouldWaitForTableRefresh) {
1368
+ oRowBinding.attachEventOnce("change", function() {
1369
+ resolve();
1370
+ });
1371
+ } else {
1372
+ resolve();
1373
+ }
1374
+ });
1375
+ }
1376
+
1377
+ /**
1378
+ * Retrieves the MDC table if it is found among any of the parent elements.
1379
+ *
1380
+ * @param {object} oElement Control
1381
+ * @returns {object} MDC table || undefined
1382
+ * @private
1383
+ * @ignore
1384
+ */
1385
+ _getMdcTable(oElement: any) {
1386
+ //check if the element has a table within any of its parents
1387
+ let oParentElement = oElement.getParent();
1388
+ while (oParentElement && !oParentElement.isA("sap.ui.mdc.Table")) {
1389
+ oParentElement = oParentElement.getParent();
1390
+ }
1391
+ const oMdcTable = oParentElement && oParentElement.isA("sap.ui.mdc.Table") ? oParentElement : undefined;
1392
+ return oMdcTable;
1393
+ }
1394
+
1395
+ _getGridTable(oMdcTable: any) {
1396
+ return oMdcTable.findElements(true, function(oElem: any) {
1397
+ return (
1398
+ oElem.isA("sap.ui.table.Table") &&
1399
+ /** We check the element belongs to the Mdc Table :*/
1400
+ oElem.getParent() === oMdcTable
1401
+ );
1402
+ })[0];
1403
+ }
1404
+
1405
+ /**
1406
+ * Retrieves the table row (if available) containing the element.
1407
+ *
1408
+ * @param {object} oElement Control
1409
+ * @returns {object} Table row || undefined
1410
+ * @private
1411
+ * @ignore
1412
+ */
1413
+ _getTableRow(oElement: any) {
1414
+ let oParentElement = oElement.getParent();
1415
+ while (
1416
+ oParentElement &&
1417
+ !oParentElement.isA("sap.ui.table.Row") &&
1418
+ !oParentElement.isA("sap.ui.table.CreationRow") &&
1419
+ !oParentElement.isA("sap.m.ColumnListItem")
1420
+ ) {
1421
+ oParentElement = oParentElement.getParent();
1422
+ }
1423
+ const oTableRow =
1424
+ oParentElement &&
1425
+ (oParentElement.isA("sap.ui.table.Row") ||
1426
+ oParentElement.isA("sap.ui.table.CreationRow") ||
1427
+ oParentElement.isA("sap.m.ColumnListItem"))
1428
+ ? oParentElement
1429
+ : undefined;
1430
+ return oTableRow;
1431
+ }
1432
+
1433
+ /**
1434
+ * Retrieves the index of the table row containing the element.
1435
+ *
1436
+ * @param {object} oElement Control
1437
+ * @returns {object} Row index || undefined
1438
+ * @private
1439
+ * @ignore
1440
+ */
1441
+ _getTableRowIndex(oElement: any) {
1442
+ const oTableRow = this._getTableRow(oElement);
1443
+ let iRowIndex;
1444
+ if (oTableRow.isA("sap.ui.table.Row")) {
1445
+ iRowIndex = oTableRow.getIndex();
1446
+ } else {
1447
+ iRowIndex = oTableRow
1448
+ .getTable()
1449
+ .getItems()
1450
+ .findIndex(function(element: any) {
1451
+ return element.getId() === oTableRow.getId();
1452
+ });
1453
+ }
1454
+ return iRowIndex;
1455
+ }
1456
+
1457
+ /**
1458
+ * Retrieves the index of the table column containing the element.
1459
+ *
1460
+ * @param {object} oElement Control
1461
+ * @returns {object} Column index || undefined
1462
+ * @private
1463
+ * @ignore
1464
+ */
1465
+ _getTableColumnIndex(oElement: any) {
1466
+ const getTargetCellIndex = function(oElement: any, oTargetRow: any) {
1467
+ return oTargetRow.getCells().findIndex(function(oCell: any) {
1468
+ return oCell.getId() === oElement.getId();
1469
+ });
1470
+ };
1471
+ const getTargetColumnIndex = function(oElement: any, oTargetRow: any) {
1472
+ let oTargetElement = oElement.getParent(),
1473
+ iTargetCellIndex = getTargetCellIndex(oTargetElement, oTargetRow);
1474
+ while (oTargetElement && iTargetCellIndex < 0) {
1475
+ oTargetElement = oTargetElement.getParent();
1476
+ iTargetCellIndex = getTargetCellIndex(oTargetElement, oTargetRow);
1477
+ }
1478
+ return iTargetCellIndex;
1479
+ };
1480
+ const oTargetRow = this._getTableRow(oElement);
1481
+ let iTargetColumnIndex;
1482
+ iTargetColumnIndex = getTargetColumnIndex(oElement, oTargetRow);
1483
+ if (oTargetRow.isA("sap.ui.table.CreationRow")) {
1484
+ const sTargetCellId = oTargetRow.getCells()[iTargetColumnIndex].getId(),
1485
+ aTableColumns = oTargetRow.getTable().getColumns();
1486
+ iTargetColumnIndex = aTableColumns.findIndex(function(column: any) {
1487
+ if (column.getCreationTemplate()) {
1488
+ return sTargetCellId.search(column.getCreationTemplate().getId()) > -1 ? true : false;
1489
+ } else {
1490
+ return false;
1491
+ }
1492
+ });
1493
+ }
1494
+ return iTargetColumnIndex;
1495
+ }
1496
+
1497
+ _getMdcTableRows(oMdcTable: any) {
1498
+ return oMdcTable.findElements(true, function(oElem: any) {
1499
+ return (
1500
+ oElem.isA("sap.ui.table.Row") &&
1501
+ /** We check the element belongs to the Mdc Table :*/
1502
+ oElem.getTable().getParent() === oMdcTable
1503
+ );
1504
+ });
1505
+ }
1506
+
1507
+ _getTableColProperty(oTable: any, oMessageObject: any) {
1508
+ //this function escapes a string to use it as a regex
1509
+ const fnRegExpescape = function(s: string) {
1510
+ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
1511
+ };
1512
+ // based on the target path of the message we retrieve the property name.
1513
+ // to achieve it we remove the bindingContext path and the row binding path from the target
1514
+ const sTableTargetColProperty = oMessageObject
1515
+ .getTarget()
1516
+ .replace(
1517
+ new RegExp(fnRegExpescape(oTable.getBindingContext().getPath() + "/" + oTable.getRowBinding().getPath()) + "\\(.*\\)/"),
1518
+ ""
1519
+ );
1520
+ return sTableTargetColProperty;
1521
+ }
1522
+
1523
+ _getObjectPageLayout(oElement: any, oObjectPageLayout: any) {
1524
+ if (oObjectPageLayout) {
1525
+ return oObjectPageLayout;
1526
+ }
1527
+ oObjectPageLayout = oElement;
1528
+ //Iterate over parent till you have not reached the object page layout
1529
+ while (oObjectPageLayout && !oObjectPageLayout.isA("sap.uxap.ObjectPageLayout")) {
1530
+ oObjectPageLayout = oObjectPageLayout.getParent();
1531
+ }
1532
+ return oObjectPageLayout;
1533
+ }
1534
+
1535
+ _getCustomColumnInfo(oTable: any, iPosition: number) {
1536
+ const sTableColProperty = oTable.getColumns()[iPosition].getDataProperty();
1537
+ const oCustomColumn = oTable
1538
+ .getControlDelegate()
1539
+ .getColumnsFor(oTable)
1540
+ .find(function(oColumn: any) {
1541
+ return oColumn.name === sTableColProperty && !!oColumn.template;
1542
+ });
1543
+ return oCustomColumn;
1544
+ }
1545
+
1546
+ _getTableFirstColProperty(oTable: any) {
1547
+ const oCustomColumnInfo = this._getCustomColumnInfo(oTable, 0);
1548
+ let sTableFirstColProperty;
1549
+ if (oCustomColumnInfo) {
1550
+ if (oCustomColumnInfo.propertyInfos) {
1551
+ sTableFirstColProperty = oCustomColumnInfo.propertyInfos[0].replace("Property::", "");
1552
+ } else {
1553
+ sTableFirstColProperty = undefined;
1554
+ }
1555
+ } else {
1556
+ sTableFirstColProperty = oTable.getColumns()[0].getDataProperty();
1557
+ }
1558
+ return sTableFirstColProperty;
1559
+ }
1560
+
1561
+ _getTableFirstColBindingContextForTextAnnotation(oTable: any, oTableRowContext: any, sTableFirstColProperty: string) {
1562
+ let oBindingContext;
1563
+ if (oTableRowContext && sTableFirstColProperty) {
1564
+ const oModel = oTable.getModel();
1565
+ const oMetaModel = oModel.getMetaModel();
1566
+ const sMetaPath = oMetaModel.getMetaPath(oTableRowContext.getPath());
1567
+ if (oMetaModel.getObject(sMetaPath + "/" + sTableFirstColProperty + "@com.sap.vocabularies.Common.v1.Text/$Path")) {
1568
+ oBindingContext = oMetaModel.createBindingContext(
1569
+ sMetaPath + "/" + sTableFirstColProperty + "@com.sap.vocabularies.Common.v1.Text"
1570
+ );
1571
+ }
1572
+ }
1573
+ return oBindingContext;
1574
+ }
1575
+
1576
+ _getTableFirstColValue(sTableFirstColProperty: string, oTableRowContext: any, sTextAnnotationPath: string, sTextArrangement: string) {
1577
+ const sCodeValue = oTableRowContext.getValue(sTableFirstColProperty);
1578
+ let sTextValue;
1579
+ let sComputedValue = sCodeValue;
1580
+ if (sTextAnnotationPath) {
1581
+ if (sTableFirstColProperty.lastIndexOf("/") > 0) {
1582
+ // the target property is replaced with the text annotation path
1583
+ sTableFirstColProperty = sTableFirstColProperty.slice(0, sTableFirstColProperty.lastIndexOf("/") + 1);
1584
+ sTableFirstColProperty = sTableFirstColProperty.concat(sTextAnnotationPath);
1585
+ } else {
1586
+ sTableFirstColProperty = sTextAnnotationPath;
1587
+ }
1588
+ sTextValue = oTableRowContext.getValue(sTableFirstColProperty);
1589
+ if (sTextValue) {
1590
+ if (sTextArrangement) {
1591
+ const sEnumNumber = sTextArrangement.slice(sTextArrangement.indexOf("/") + 1);
1592
+ switch (sEnumNumber) {
1593
+ case "TextOnly":
1594
+ sComputedValue = sTextValue;
1595
+ break;
1596
+ case "TextFirst":
1597
+ sComputedValue = sTextValue + " (" + sCodeValue + ")";
1598
+ break;
1599
+ case "TextLast":
1600
+ sComputedValue = sCodeValue + " (" + sTextValue + ")";
1601
+ break;
1602
+ case "TextSeparate":
1603
+ sComputedValue = sCodeValue;
1604
+ break;
1605
+ default:
1606
+ }
1607
+ } else {
1608
+ sComputedValue = sTextValue + " (" + sCodeValue + ")";
1609
+ }
1610
+ }
1611
+ }
1612
+ return sComputedValue;
1613
+ }
1614
+
1615
+ _IsControlInTable(oTable: any, sControlId: string) {
1616
+ const oControl = sap.ui.getCore().byId(sControlId);
1617
+ if (oControl && !oControl.isA("sap.ui.table.Table") && !oControl.isA("sap.m.Table")) {
1618
+ return oTable.findElements(true, function(oElem: any) {
1619
+ return oElem.getId() === oControl;
1620
+ });
1621
+ }
1622
+ return false;
1623
+ }
1624
+
1625
+ _IsControlPartOfCreationRow(oControl: any) {
1626
+ let oParentControl = oControl.getParent();
1627
+ while (
1628
+ oParentControl &&
1629
+ !oParentControl.isA("sap.ui.table.Row") &&
1630
+ !oParentControl.isA("sap.ui.table.CreationRow") &&
1631
+ !oParentControl.isA("sap.m.ColumnListItem")
1632
+ ) {
1633
+ oParentControl = oParentControl.getParent();
1634
+ }
1635
+
1636
+ return !!oParentControl && oParentControl.isA("sap.ui.table.CreationRow");
1637
+ }
1638
+
1639
+ /**
1640
+ * The method that is called to retrive the column info for associated messages in message popover.
1641
+ * @private
1642
+ * @param {oMessage} oMessage Message object
1643
+ * @param {oTable} oTable MDC Table
1644
+ * @returns {oColFromTableSettings} Returns the column info.
1645
+ */
1646
+ _fetchColumnInfo(oMessage: any, oTable: any) {
1647
+ const sColNameFromMessageObj = oMessage
1648
+ .getBindingContext("message")
1649
+ .getObject()
1650
+ .getTarget()
1651
+ .split("/")
1652
+ .pop();
1653
+ const oColFromTableSettings = oTable
1654
+ .getParent()
1655
+ .getTableDefinition()
1656
+ .columns.find(function(oColumn: any) {
1657
+ return oColumn.key.split("::").pop() === sColNameFromMessageObj;
1658
+ });
1659
+ return oColFromTableSettings;
1660
+ }
1661
+
1662
+ _setMessageSubtitle(
1663
+ message: any,
1664
+ oTableRowBindingContexts: any,
1665
+ oTableRowContext: any,
1666
+ sTableTargetColName: string,
1667
+ oResourceBundle: any,
1668
+ sTableTargetProperty: string,
1669
+ oTable: any,
1670
+ bIsCreationRow: boolean
1671
+ ) {
1672
+ let sMessageSubtitle;
1673
+ let sRowSubtitleValue, sColumnSubtitleText;
1674
+ const sTableFirstColProperty = this._getTableFirstColProperty(oTable);
1675
+ const oColFromTableSettings = this._fetchColumnInfo(message, oTable);
1676
+ if (bIsCreationRow) {
1677
+ sMessageSubtitle = CommonUtils.getTranslatedText("T_MESSAGE_ITEM_SUBTITLE", oResourceBundle, [
1678
+ oResourceBundle.getText("T_MESSAGE_ITEM_SUBTITLE_CREATION_ROW_INDICATOR"),
1679
+ sTableTargetColName ? sTableTargetColName : oColFromTableSettings.label
1680
+ ]);
1681
+ } else {
1682
+ const oTableFirstColBindingContextTextAnnotation = this._getTableFirstColBindingContextForTextAnnotation(
1683
+ oTable,
1684
+ oTableRowContext,
1685
+ sTableFirstColProperty
1686
+ );
1687
+ const sTableFirstColTextAnnotationPath = oTableFirstColBindingContextTextAnnotation
1688
+ ? oTableFirstColBindingContextTextAnnotation.getObject("$Path")
1689
+ : undefined;
1690
+ const sTableFirstColTextArrangement =
1691
+ sTableFirstColTextAnnotationPath && oTableFirstColBindingContextTextAnnotation
1692
+ ? oTableFirstColBindingContextTextAnnotation.getObject("@com.sap.vocabularies.UI.v1.TextArrangement/$EnumMember")
1693
+ : undefined;
1694
+ if (oTableRowBindingContexts.length > 0) {
1695
+ // set Row subtitle text
1696
+ if (oTableRowContext && sTableFirstColProperty) {
1697
+ sRowSubtitleValue = this._getTableFirstColValue(
1698
+ sTableFirstColProperty,
1699
+ oTableRowContext,
1700
+ sTableFirstColTextAnnotationPath,
1701
+ sTableFirstColTextArrangement
1702
+ );
1703
+ } else {
1704
+ sRowSubtitleValue = oResourceBundle.getText("T_MESSAGE_ITEM_SUBTITLE_INDICATOR_UNKNOWN");
1705
+ }
1706
+ // set the message subtitle
1707
+ if (sTableTargetColName) {
1708
+ // if column is present in table definition
1709
+ sMessageSubtitle = CommonUtils.getTranslatedText("T_MESSAGE_ITEM_SUBTITLE", oResourceBundle, [
1710
+ sRowSubtitleValue,
1711
+ sTableTargetColName
1712
+ ]);
1713
+ } else if (oColFromTableSettings) {
1714
+ // if column is neither in table definition nor personalization, show only row subtitle text
1715
+ if (oColFromTableSettings.availability === "Hidden") {
1716
+ sMessageSubtitle = oResourceBundle.getText("T_MESSAGE_GROUP_DESCRIPTION_TABLE_ROW") + ": " + sRowSubtitleValue;
1717
+ } else {
1718
+ //if column is in table personalization but not in table definition, show Column (Hidden) : <colName>
1719
+ sColumnSubtitleText =
1720
+ oResourceBundle.getText("T_MESSAGE_GROUP_DESCRIPTION_TABLE_COLUMN") +
1721
+ " (" +
1722
+ oResourceBundle.getText("T_COLUMN_INDICATOR_IN_TABLE_DEFINITION") +
1723
+ "): " +
1724
+ oColFromTableSettings.label;
1725
+ sMessageSubtitle =
1726
+ oResourceBundle.getText("T_MESSAGE_GROUP_DESCRIPTION_TABLE_ROW") +
1727
+ ": " +
1728
+ sRowSubtitleValue +
1729
+ ", " +
1730
+ sColumnSubtitleText;
1731
+ }
1732
+ } else {
1733
+ sMessageSubtitle = CommonUtils.getTranslatedText("T_MESSAGE_ITEM_SUBTITLE", oResourceBundle, [
1734
+ sRowSubtitleValue,
1735
+ oResourceBundle.getText("T_MESSAGE_ITEM_SUBTITLE_INDICATOR_UNKNOWN")
1736
+ ]);
1737
+ }
1738
+ } else {
1739
+ sMessageSubtitle = null;
1740
+ }
1741
+ }
1742
+ //set the subtitle
1743
+ message.setSubtitle(sMessageSubtitle);
1744
+ const oTableProperties = Object.keys(
1745
+ oTable
1746
+ .getModel()
1747
+ .getMetaModel()
1748
+ .getObject(oTable.data("entityType"))
1749
+ );
1750
+ // TODO: this logic would be moved to check the same at the template time to avoid the same check happening multiple times
1751
+ const oComponent = sap.ui.require("sap/ui/core/Component");
1752
+ const oNavObject = oTable && oComponent.getOwnerComponentFor(oTable) && oComponent.getOwnerComponentFor(oTable).getNavigation();
1753
+ let bSubOPConfigured = false;
1754
+ if (oNavObject && Object.keys(oNavObject).indexOf(oTable.getRowBinding().sPath) != -1) {
1755
+ bSubOPConfigured =
1756
+ oNavObject[oTable.getRowBinding().sPath] &&
1757
+ oNavObject[oTable.getRowBinding().sPath].detail &&
1758
+ oNavObject[oTable.getRowBinding().sPath].detail.route
1759
+ ? true
1760
+ : false;
1761
+ }
1762
+ const bIsNavigationConfigured =
1763
+ bSubOPConfigured &&
1764
+ oTable.getRowAction() &&
1765
+ oTable.getRowAction().indexOf("Navigation") != -1 &&
1766
+ oTableProperties.indexOf(sTableTargetProperty) != -1
1767
+ ? true
1768
+ : false;
1769
+ // Deactivation of the error link when the error column is not displayed
1770
+ // but The Link should be displayed if there is no subtitle
1771
+ message.setActiveTitle(
1772
+ !sMessageSubtitle ||
1773
+ bIsNavigationConfigured ||
1774
+ bIsCreationRow ||
1775
+ (!!sTableTargetColName ? !!oTableRowContext : !!sTableTargetColName)
1776
+ );
1777
+ return sMessageSubtitle;
1778
+ }
1779
+
1780
+ _removeMessage(oMessage: any) {
1781
+ const oTemp = sap.ui
1782
+ .getCore()
1783
+ .getMessageManager()
1784
+ .getMessageModel()
1785
+ .getData();
1786
+ sap.ui
1787
+ .getCore()
1788
+ .getMessageManager()
1789
+ .removeAllMessages();
1790
+ oTemp.forEach(function(message: any) {
1791
+ if (message !== oMessage) {
1792
+ sap.ui
1793
+ .getCore()
1794
+ .getMessageManager()
1795
+ .addMessages([message]);
1796
+ }
1797
+ });
1798
+ }
1799
+ }
1800
+
1801
+ export default MessageButton;