@sap/open.fe 1.96.0 → 1.97.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 (490) 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 +57 -42
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
  6. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
  7. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +2 -2
  8. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +4 -4
  9. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
  10. package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
  11. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/resources.json +4 -4
  13. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  14. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  15. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  16. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  17. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  18. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +2 -2
  19. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
  20. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +59 -274
  21. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
  22. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +52 -64
  23. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
  24. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +2 -2
  25. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +1 -1
  26. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +18 -22
  27. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
  28. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +80 -4
  29. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
  30. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +42 -23
  31. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
  32. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +36 -21
  33. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  34. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +9 -3
  35. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  36. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +20 -50
  37. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  38. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +222 -102
  39. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
  40. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +33 -6
  41. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  42. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +109 -111
  43. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +1 -1
  44. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +8 -0
  45. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +5 -0
  46. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
  47. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +2 -1
  48. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  49. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
  50. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +10 -1
  51. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  52. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +9 -1
  53. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +2 -2
  54. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  55. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
  56. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +67 -40
  57. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  58. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -3
  59. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  60. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +6 -3
  61. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +57 -18
  62. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  63. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +51 -13
  64. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -19
  65. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  66. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +139 -18
  67. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID-dbg.js +9 -1
  68. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.js +1 -1
  69. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.ts +4 -0
  70. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +18 -7
  71. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  72. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +17 -12
  73. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +2 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
  75. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
  76. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +2 -2
  77. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +27 -4
  78. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  79. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  80. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  81. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +211 -0
  82. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +5 -0
  83. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  84. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +32 -0
  85. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +5 -0
  86. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  87. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +51 -0
  88. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  89. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
  90. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +10 -9
  91. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
  92. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +232 -228
  93. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
  94. package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
  95. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  96. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +15 -1
  97. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +10 -0
  98. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +10 -0
  99. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +10 -0
  100. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -0
  101. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +10 -0
  102. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +10 -0
  103. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +10 -0
  104. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +10 -0
  105. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +10 -0
  106. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +10 -0
  107. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +6 -0
  108. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +11 -1
  109. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +11 -1
  110. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +10 -0
  111. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +10 -0
  112. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +10 -0
  113. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +10 -0
  114. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +10 -0
  115. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
  116. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +10 -0
  117. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +10 -0
  118. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +10 -0
  119. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +11 -1
  120. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +10 -0
  121. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +10 -0
  122. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +19 -9
  123. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +10 -0
  124. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +10 -0
  125. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +10 -0
  126. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +10 -0
  127. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +10 -0
  128. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +10 -0
  129. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +10 -0
  130. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +10 -0
  131. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +11 -1
  132. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +10 -0
  133. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +10 -0
  134. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +10 -0
  135. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +10 -0
  136. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +10 -0
  137. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +10 -0
  138. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +10 -0
  139. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +10 -0
  140. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +10 -0
  141. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +10 -0
  142. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +10 -0
  143. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +10 -0
  144. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +10 -0
  145. package/packages/sap.fe.core/src/sap/fe/core/resources.json +200 -121
  146. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +30 -19
  147. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  148. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -1
  149. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  150. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper-dbg.js +80 -7
  151. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  152. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.ts +42 -2
  153. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
  154. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  155. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  156. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +4 -0
  157. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +1 -0
  158. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/manifest.json +2 -2
  159. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +13 -10
  160. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +7 -4
  161. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +1 -2
  162. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +1 -0
  163. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +119 -0
  164. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +285 -4
  165. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +121 -0
  166. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +79 -0
  167. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +147 -0
  168. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +96 -0
  169. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +51 -18
  170. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +109 -17
  171. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +66 -0
  172. package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelper.cds +33 -0
  173. package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelperMainEntitySortableFalse.cds +12 -0
  174. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableGetSelectionMode.cds +8 -8
  175. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +68 -0
  176. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +38 -0
  177. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +483 -0
  178. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +376 -0
  179. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.js +101 -0
  180. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.ts +105 -0
  181. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.js +103 -0
  182. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.ts +106 -0
  183. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.js +118 -0
  184. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.ts +118 -0
  185. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.js +101 -0
  186. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.ts +102 -0
  187. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +118 -1
  188. package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +70 -0
  189. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.js +89 -0
  190. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.ts +73 -0
  191. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +4 -2
  192. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +6 -0
  193. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  194. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  195. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +15 -5
  196. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  197. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +9 -5
  198. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
  199. package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil-dbg.js +30 -11
  200. package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil.js +1 -1
  201. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +3 -5
  202. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
  203. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +3 -5
  204. package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate-dbg.js +17 -3
  205. package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate.js +1 -1
  206. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
  207. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -2
  208. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +4 -4
  209. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  210. package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.fragment.xml +6 -15
  211. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +14 -12
  212. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +1 -1
  213. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  214. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +2 -1
  215. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +12 -1
  216. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  217. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +15 -8
  218. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  219. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +10 -0
  220. package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +1 -1
  221. package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +1 -1
  222. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +81 -9
  223. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  224. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +13 -3
  225. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  226. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +5 -5
  227. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  228. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +4 -4
  229. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +1 -7
  230. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -3
  231. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  232. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForContact.fragment.xml +1 -1
  233. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +46 -0
  234. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +6 -0
  235. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +17 -8
  236. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +26 -16
  237. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +1 -0
  238. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +4 -13
  239. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  240. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +10 -10
  241. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +5 -3
  242. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
  243. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +72 -8
  244. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  245. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  246. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +12 -11
  247. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
  248. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +93 -91
  249. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  250. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  251. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  252. package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js +1 -1
  253. package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js +1 -1
  254. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +5 -0
  255. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +2 -2
  256. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +2 -2
  257. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +2 -2
  258. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +2 -2
  259. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +2 -2
  260. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +2 -2
  261. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +2 -2
  262. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +2 -2
  263. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +1 -1
  264. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
  265. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -0
  266. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +2 -2
  267. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
  268. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +2 -2
  269. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +2 -2
  270. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +2 -2
  271. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +2 -2
  272. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +2 -2
  273. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +2 -2
  274. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +2 -2
  275. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +2 -2
  276. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +2 -2
  277. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +2 -2
  278. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -3
  279. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +2 -2
  280. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +2 -2
  281. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +2 -2
  282. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +2 -2
  283. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +2 -2
  284. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +2 -2
  285. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +2 -2
  286. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +2 -2
  287. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +2 -2
  288. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +2 -2
  289. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +2 -2
  290. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +2 -2
  291. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +2 -2
  292. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +2 -2
  293. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +2 -2
  294. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +2 -2
  295. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +2 -2
  296. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +2 -2
  297. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +2 -2
  298. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +2 -2
  299. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +2 -2
  300. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +2 -2
  301. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartTitle.fragment.xml +21 -11
  302. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/RadialMicroChart.fragment.xml +2 -1
  303. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +149 -110
  304. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +3 -0
  305. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +70 -29
  306. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +53 -36
  307. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  308. package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +1 -1
  309. package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +1 -1
  310. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +3 -4
  311. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  312. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +2 -2
  313. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  314. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  315. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +844 -0
  316. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +833 -0
  317. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +495 -0
  318. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +440 -0
  319. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +469 -0
  320. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +448 -0
  321. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +94 -0
  322. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +70 -0
  323. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +12 -1
  324. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +11 -0
  325. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +61 -0
  326. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.js +46 -0
  327. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.ts +30 -0
  328. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +13 -1
  329. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +11 -0
  330. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.js +66 -0
  331. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.ts +35 -0
  332. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +48 -1
  333. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +56 -0
  334. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +68 -0
  335. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +65 -0
  336. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +82 -0
  337. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +23 -5
  338. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldHelper.spec.ts.snap +47 -0
  339. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +52 -3
  340. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormElement.spec.ts.snap +25 -0
  341. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +0 -3
  342. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +69 -0
  343. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +451 -0
  344. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldHelper.xml +68 -0
  345. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +13 -1
  346. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +152 -0
  347. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +116 -0
  348. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +115 -0
  349. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.js +86 -0
  350. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.ts +54 -0
  351. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/__snapshots__/FormElement.spec.ts.snap +33 -0
  352. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +154 -0
  353. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +128 -0
  354. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +7 -2
  355. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +23 -12
  356. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +1 -1
  357. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
  358. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +1 -1
  359. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
  360. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +108 -1
  361. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  362. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  363. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  364. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  365. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
  366. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  367. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  368. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  369. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  370. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  371. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  372. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  373. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  374. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  375. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +4 -4
  376. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +1 -1
  377. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  378. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  379. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +3 -3
  380. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.fragment.html +1 -1
  381. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.fragment.html +1 -1
  382. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  383. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  384. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  385. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  386. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  387. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  388. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  389. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +2 -2
  390. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +91 -60
  391. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  392. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  393. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +31 -5
  394. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  395. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +5 -5
  396. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +2 -2
  397. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  398. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +18 -1
  399. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  400. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +114 -85
  401. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  402. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +8 -0
  403. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  404. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  405. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +23 -3
  406. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
  407. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +15 -15
  408. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +6 -5
  409. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +1 -1
  410. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +6 -4
  411. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +26 -16
  412. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +5 -5
  413. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +63 -9
  414. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
  415. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +54 -32
  416. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
  417. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +24 -21
  418. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
  419. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +2 -1
  420. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +1 -1
  421. package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +2 -0
  422. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  423. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +8 -9
  424. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
  425. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +23 -30
  426. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  427. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  428. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
  429. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +51 -60
  430. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  431. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
  432. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  433. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  434. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +95 -0
  435. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +66 -0
  436. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +134 -0
  437. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +94 -0
  438. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +61 -0
  439. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/ObjectPageHeaderForm.spec.ts.snap +53 -0
  440. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  441. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  442. package/packages/sap.fe.test/src/sap/fe/test/FCLView-dbg.js +0 -6
  443. package/packages/sap.fe.test/src/sap/fe/test/FCLView.js +1 -1
  444. package/packages/sap.fe.test/src/sap/fe/test/Flexibility-dbg.js +14 -3
  445. package/packages/sap.fe.test/src/sap/fe/test/Flexibility.js +1 -1
  446. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +85 -8
  447. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  448. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +54 -2
  449. package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +0 -11
  450. package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +1 -1
  451. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +0 -38
  452. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
  453. package/packages/sap.fe.test/src/sap/fe/test/TemplatePage-dbg.js +0 -12
  454. package/packages/sap.fe.test/src/sap/fe/test/TemplatePage.js +1 -1
  455. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +22 -1
  456. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  457. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +14 -0
  458. package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +21 -0
  459. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +9 -5
  460. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
  461. package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions-dbg.js +18 -5
  462. package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions.js +1 -1
  463. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions-dbg.js +25 -5
  464. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions.js +1 -1
  465. package/packages/sap.fe.test/src/sap/fe/test/api/EditState-dbg.js +9 -0
  466. package/packages/sap.fe.test/src/sap/fe/test/api/EditState.js +1 -1
  467. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions-dbg.js +38 -4
  468. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions.js +1 -1
  469. package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions-dbg.js +33 -4
  470. package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions.js +1 -1
  471. package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.js +1 -1
  472. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  473. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +3 -3
  474. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +23 -16
  475. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
  476. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  477. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  478. package/packages/sap.fe.test/src/sap/fe/test/resources.json +36 -34
  479. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  480. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  481. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jsmeta.json +1 -1
  482. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  483. package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.96.json +0 -49
  484. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.96.json +0 -189
  485. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldRuntime.qunit.js +0 -73
  486. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.96.json +0 -160
  487. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/relnote/changes-1.96.json +0 -17
  488. package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover-dbg.js +0 -26
  489. package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +0 -6
  490. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.96.json +0 -153
@@ -15,6 +15,7 @@ sap.ui.define(
15
15
  "sap/ui/model/json/JSONModel",
16
16
  "sap/base/Log",
17
17
  "sap/fe/core/CommonUtils",
18
+ "sap/fe/core/helpers/KeepAliveHelper",
18
19
  "sap/base/util/merge"
19
20
  ],
20
21
  function(
@@ -28,6 +29,7 @@ sap.ui.define(
28
29
  JSONModel,
29
30
  Log,
30
31
  CommonUtils,
32
+ KeepAliveHelper,
31
33
  mergeObjects
32
34
  ) {
33
35
  "use strict";
@@ -202,7 +204,11 @@ sap.ui.define(
202
204
  var mViewRefreshStrategies = oView.getViewData().refreshStrategyOnAppRestore || {};
203
205
  mergeObjects(mRefreshStrategies, mViewRefreshStrategies);
204
206
  }
205
- var mRefreshStrategy = CommonUtils.getRefreshStrategyForIntent(mRefreshStrategies, sSemanticObject, sAction);
207
+ var mRefreshStrategy = KeepAliveHelper.getRefreshStrategyForIntent(
208
+ mRefreshStrategies,
209
+ sSemanticObject,
210
+ sAction
211
+ );
206
212
  if (mRefreshStrategy) {
207
213
  oInternalModel.setProperty("/refreshStrategyOnAppRestore", mRefreshStrategy);
208
214
  }
@@ -763,10 +769,10 @@ sap.ui.define(
763
769
 
764
770
  if (oContext) {
765
771
  if (oContext.isA && oContext.isA("sap.ui.model.odata.v4.Context")) {
766
- sMetaPath = CommonUtils.getMetaPathForContext(oContext);
772
+ sMetaPath = ModelHelper.getMetaPathForContext(oContext);
767
773
  oContext = [oContext];
768
774
  } else {
769
- sMetaPath = CommonUtils.getMetaPathForContext(oContext[0]);
775
+ sMetaPath = ModelHelper.getMetaPathForContext(oContext[0]);
770
776
  }
771
777
  oDefaultRefreshStrategy[sMetaPath] = "self";
772
778
  oRefreshStrategies["_feDefault"] = oDefaultRefreshStrategy;
@@ -3,4 +3,4 @@
3
3
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
 
5
5
  */
6
- sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/navigation/SelectionVariant","sap/fe/core/helpers/ModelHelper","sap/ui/core/util/XMLPreprocessor","sap/ui/core/XMLTemplateProcessor","sap/ui/core/Fragment","sap/ui/model/json/JSONModel","sap/base/Log","sap/fe/core/CommonUtils","sap/base/util/merge"],function(C,O,S,M,X,a,F,J,L,b,m){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalInternalBasedNavigation",{metadata:{methods:{navigate:{"final":true,"public":true},getEntitySet:{"final":false,"public":false},navigateOutbound:{"final":true,"public":true},navigateWithConfirmationDialog:{"final":true,"public":true},getNavigationMode:{"final":false,"public":true,overrideExecution:O.Instead},prepareContextForExternalNavigation:{"final":true,"public":true},removeSensitiveData:{"final":true,"public":true},prepareFiltersForExternalNavigation:{"final":true,"public":true},getOutboundParams:{"final":true,"public":true}}},navigate:function(s,A,n){var t=this;var _=function(c){var N=n&&n.navigationContexts,d=N&&!Array.isArray(N)?[N]:N,v=n&&n.semanticObjectMapping,e=n&&n.additionalNavigationParameters,T={semanticObject:s,action:A},V=t.base.getView(),f=V.getController();if(c){t._oView.setBindingContext(c);}if(s&&A){var g=[],h=new S();if(d&&d.length){d.map(function(q){if(q.isA&&q.isA("sap.ui.model.odata.v4.Context")){var u=q.getObject(),w=t._oMetaModel.getMetaPath(q.getPath());u=t.removeSensitiveData(u,w);var x=t.prepareContextForExternalNavigation(u,q);T["propertiesWithoutConflict"]=x.propertiesWithoutConflict;g.push(x.semanticAttributes);}else if(!(q&&Array.isArray(q.data))&&typeof q==="object"){g.push(t.removeSensitiveData(q.data,q.metaPath));}else if(q&&Array.isArray(q.data)){g=t.removeSensitiveData(q.data,q.metaPath);}});}if(g&&g.length){h=t._oNavigationService.mixAttributesAndSelectionVariant(g,h.toJSONString());}var i=t._oView.getModel(),E=t.getEntitySet(),j=E?t._oNavigationService.constructContextUrl(E,i):undefined;if(j){h.setFilterContextUrl(j);}if(e){t._applyOutboundParams(h,e);}f.intentBasedNavigation.adaptNavigationContext(h,T);if(v){t._applySemanticObjectMappings(h,v);}t._removeTechnicalParameters(h);var k=f._intentBasedNavigation.getNavigationMode();var r=(n&&n.refreshStrategies)||{},I=V.getModel("internal");if(I){if(V&&V.getViewData().refreshStrategyOnAppRestore){var l=V.getViewData().refreshStrategyOnAppRestore||{};m(r,l);}var R=b.getRefreshStrategyForIntent(r,s,A);if(R){I.setProperty("/refreshStrategyOnAppRestore",R);}}var p=function(){sap.ui.require(["sap/m/MessageBox"],function(q){var u=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");q.show(u.getText("C_COMMON_HELPER_NAVIGATION_ERROR_MESSAGE"),{title:u.getText("C_COMMON_NAVIGATION_ERROR_TITLE")});});};t._oNavigationService.navigate(s,A,h.toJSONString(),null,p,null,k);}else{throw new Error("Semantic Object/action is not provided");}};var B=this.base.getView().getBindingContext();var o=B&&B.getModel().getMetaModel();if(this.getView().getViewData().converterType==="ObjectPage"&&o&&!M.isStickySessionSupported(o)){b.fnProcessDataLossOrDraftDiscardConfirmation(_.bind(this),Function.prototype,this.base.getView().getBindingContext(),this.base.getView().getController());}else{_();}},prepareContextForExternalNavigation:function(s,c){function _(u,v){for(var K in u){if(u[K]===null||typeof u[K]!=="object"){if(!d[K]){d[K]=[];}d[K].push(v);}else{var N=u[K];_(N,v+"/"+K);}}}var d={},e=c.getPath(),o=c.getModel().getMetaModel(),f=o.getMetaPath(e),g=f.split("/").filter(Boolean);_(s,f);var h=g[0],j=o.getObject("/"+h+"/@sapui.name"),p={};var k,l,n;for(var D in d){var q=d[D],w;if(q.length>1){for(var i=0;i<=q.length-1;i++){var P=q[i],r=P.replace(P===f?f:f+"/","");r=(r===""?r:r+"/")+D;var E=o.getObject(P+"/@sapui.name");if(E===j){k=r;}if(P===f){l=r;}n=r;s[(f+"/"+r).split("/").filter(function(v){return v!="";}).join(".")]=c.getProperty(r);}w=k||l||n;s[D]=c.getProperty(w);k=undefined;l=undefined;n=undefined;}else{var P=q[0],r=P.replace(P===f?f:f+"/","");r=(r===""?r:r+"/")+D;s[D]=c.getProperty(r);p[D]=(f+"/"+r).split("/").filter(function(v){return v!="";}).join(".");}}for(var t in s){if(s[t]!==null&&typeof s[t]==="object"){delete s[t];}}return{semanticAttributes:s,propertiesWithoutConflict:p};},prepareFiltersForExternalNavigation:function(f,r,p){function _(j,l){for(var k in j){if(j[k]){if(k.includes("/")){l=k;var n=k.split("/");k=n[n.length-1];}else{l=r;}if(!d[k]){d[k]=[];}d[k].push(l);}}}var d={};_(f,r);var o={};var s,c,e,w,P;for(var D in d){var g=d[D];if(g.length>1){for(var i=0;i<=g.length-1;i++){var h=g[i];if(h===r){e=r+"/"+D;P=D;s=D;if(p&&p.includes(D)){f["$Parameter."+D]=f[D];}}else{P=h;e=(r+"/"+h).replaceAll("*","");c=h;}f[e.split("/").filter(function(v){return v!="";}).join(".")]=f[P];delete f[h];}w=s||c;f[D]=f[w];}else{var h=g[0],e=h===r?r+"/"+D:(r+"/"+h).replaceAll("*","");o[D]=e.split("/").filter(function(v){return v!="";}).join(".");if(p&&p.includes(D)){f["$Parameter."+D]=f[D];}}}return{filterConditions:f,filterConditionsWithoutConflict:o};},getNavigationMode:function(){return"inplace";},navigateWithConfirmationDialog:function(s,A,n){var t=this;if(n.notApplicableContexts&&n.notApplicableContexts.length>=1){var o;var c={onClose:function(){o.close();},onContinue:function(){n.navigationContexts=n.applicableContexts;o.close();t.navigate(s,A,n);}};var f=function(){var j,k=n.notApplicableContexts.length,N=[];for(var i=0;i<n.notApplicableContexts.length;i++){j=n.notApplicableContexts[i].getObject();N.push(j);}var l=new J(N);var T=new J({total:k,label:n.label});o.setModel(l,"notApplicable");o.setModel(T,"totals");o.open();};var d="sap.fe.core.controls.ActionPartial";var D=a.loadTemplate(d,"fragment");var e=this._oView.getModel();var g=e.getMetaModel();var h=n.notApplicableContexts[0].getCanonicalPath();var E=h.substr(0,h.indexOf("("))+"/";Promise.resolve(X.process(D,{name:d},{bindingContexts:{entityType:g.createBindingContext(E)},models:{entityType:g,metaModel:g}})).then(function(i){return F.load({definition:i,controller:c});}).then(function(p){o=p;t.getView().addDependent(p);f();}).catch(function(){L.error("Error");});}else{t.navigate(s,A,n);}},_removeTechnicalParameters:function(s){s.removeSelectOption("@odata.context");s.removeSelectOption("@odata.metadataEtag");s.removeSelectOption("SAP__Messages");},getEntitySet:function(){return this._oView.getViewData().entitySet;},removeSensitiveData:function(A,s){var p=Object.keys(A);if(p.length){delete A["@odata.context"];delete A["@odata.metadataEtag"];delete A["SAP__Messages"];for(var j=0;j<p.length;j++){if(A[p[j]]&&typeof A[p[j]]==="object"){this.removeSensitiveData(A[p[j]],s+"/"+p[j]);}var P=p[j],c=this._oMetaModel.getObject(s+"/"+P+"@");if(c){if(c["@com.sap.vocabularies.PersonalData.v1.IsPotentiallySensitive"]||c["@com.sap.vocabularies.UI.v1.ExcludeFromNavigationContext"]||c["@com.sap.vocabularies.Analytics.v1.Measure"]){delete A[P];}else if(c["@com.sap.vocabularies.Common.v1.FieldControl"]){var f=c["@com.sap.vocabularies.Common.v1.FieldControl"];if(f["$EnumMember"]&&f["$EnumMember"].split("/")[1]==="Inapplicable"){delete A[P];}else if(f["$Path"]&&this._isFieldControlPathInapplicable(f["$Path"],A)){delete A[P];}}}}}return A;},_isFieldControlPathInapplicable:function(f,A){var i=false,p=f.split("/");if(p.length>1){i=A[p[0]]&&A[p[0]].hasOwnProperty(p[1])&&A[p[0]][p[1]]===0;}else{i=A[f]===0;}return i;},_applySemanticObjectMappings:function(s,v){var o=typeof v==="string"?JSON.parse(v):v;for(var i=0;i<o.length;i++){var l=(o[i]["LocalProperty"]&&o[i]["LocalProperty"]["$PropertyPath"])||(o[i]["@com.sap.vocabularies.Common.v1.LocalProperty"]&&o[i]["@com.sap.vocabularies.Common.v1.LocalProperty"]["$Path"]);var c=o[i]["SemanticObjectProperty"]||o[i]["@com.sap.vocabularies.Common.v1.SemanticObjectProperty"];if(s.getSelectOption(l)){var d=s.getSelectOption(l);s.removeSelectOption(l);s.massAddSelectOption(c,d);}}return s;},navigateOutbound:function(o,n){var c=this.base.getAppComponent().getManifestEntry("sap.app"),d=c.crossNavigation&&c.crossNavigation.outbounds[o];if(!d){L.error("Outbound is not defined in manifest!!");return;}var s=d.semanticObject,A=d.action,e=d.parameters&&this.getOutboundParams(d.parameters);if(n){var N=[];Object.keys(n).forEach(function(k){if(Array.isArray(n[k])){var v=n[k];for(var i=0;i<v.length;i++){var p={};p[k]=v[i];N.push(p);}}else{var p={};p[k]=n[k];N.push(p);}});}if(N||e){n={navigationContexts:{data:N||e}};}this.base._intentBasedNavigation.navigate(s,A,n);},_applyOutboundParams:function(s,o){var p=Object.keys(o);var c=s.getSelectOptionsPropertyNames();p.forEach(function(k){if(!c.includes(k)){s.addSelectOption(k,"I","EQ",o[k]);}});return s;},getOutboundParams:function(o){var p={};if(o){var P=Object.keys(o)||[];if(P.length>0){P.forEach(function(k){var c=o[k];if(c.value&&c.value.value&&c.value.format==="plain"){if(!p[k]){p[k]=c.value.value;}}});}}return p;},onChevronPressNavigateOutBound:function(c,o,d,s){var e=c.getAppComponent().getRoutingService().getOutbounds(),D=e[o],f;if(D&&D.semanticObject&&D.action){var r={intents:{}},g={},h;if(d){if(d.isA&&d.isA("sap.ui.model.odata.v4.Context")){h=b.getMetaPathForContext(d);d=[d];}else{h=b.getMetaPathForContext(d[0]);}g[h]="self";r["_feDefault"]=g;}if(s){var k=D.semanticObject+"-"+D.action;r.intents[k]={};r.intents[k][s]="self";}if(D&&D.parameters){var p=D.parameters&&this.getOutboundParams(D.parameters);if(Object.keys(p).length>0){f=p;}}c._intentBasedNavigation.navigate(D.semanticObject,D.action,{navigationContexts:d,refreshStrategies:r,additionalNavigationParameters:f});return Promise.resolve();}else{throw new Error("outbound target "+o+" not found in cross navigation definition of manifest");}},override:{onInit:function(){this._oAppComponent=this.base.getAppComponent();this._oMetaModel=this._oAppComponent.getModel().getMetaModel();this._oNavigationService=this._oAppComponent.getNavigationService();this._oView=this.base.getView();}}});});
6
+ sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/navigation/SelectionVariant","sap/fe/core/helpers/ModelHelper","sap/ui/core/util/XMLPreprocessor","sap/ui/core/XMLTemplateProcessor","sap/ui/core/Fragment","sap/ui/model/json/JSONModel","sap/base/Log","sap/fe/core/CommonUtils","sap/fe/core/helpers/KeepAliveHelper","sap/base/util/merge"],function(C,O,S,M,X,a,F,J,L,b,K,m){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalInternalBasedNavigation",{metadata:{methods:{navigate:{"final":true,"public":true},getEntitySet:{"final":false,"public":false},navigateOutbound:{"final":true,"public":true},navigateWithConfirmationDialog:{"final":true,"public":true},getNavigationMode:{"final":false,"public":true,overrideExecution:O.Instead},prepareContextForExternalNavigation:{"final":true,"public":true},removeSensitiveData:{"final":true,"public":true},prepareFiltersForExternalNavigation:{"final":true,"public":true},getOutboundParams:{"final":true,"public":true}}},navigate:function(s,A,n){var t=this;var _=function(c){var N=n&&n.navigationContexts,d=N&&!Array.isArray(N)?[N]:N,v=n&&n.semanticObjectMapping,e=n&&n.additionalNavigationParameters,T={semanticObject:s,action:A},V=t.base.getView(),f=V.getController();if(c){t._oView.setBindingContext(c);}if(s&&A){var g=[],h=new S();if(d&&d.length){d.map(function(q){if(q.isA&&q.isA("sap.ui.model.odata.v4.Context")){var u=q.getObject(),w=t._oMetaModel.getMetaPath(q.getPath());u=t.removeSensitiveData(u,w);var x=t.prepareContextForExternalNavigation(u,q);T["propertiesWithoutConflict"]=x.propertiesWithoutConflict;g.push(x.semanticAttributes);}else if(!(q&&Array.isArray(q.data))&&typeof q==="object"){g.push(t.removeSensitiveData(q.data,q.metaPath));}else if(q&&Array.isArray(q.data)){g=t.removeSensitiveData(q.data,q.metaPath);}});}if(g&&g.length){h=t._oNavigationService.mixAttributesAndSelectionVariant(g,h.toJSONString());}var i=t._oView.getModel(),E=t.getEntitySet(),j=E?t._oNavigationService.constructContextUrl(E,i):undefined;if(j){h.setFilterContextUrl(j);}if(e){t._applyOutboundParams(h,e);}f.intentBasedNavigation.adaptNavigationContext(h,T);if(v){t._applySemanticObjectMappings(h,v);}t._removeTechnicalParameters(h);var k=f._intentBasedNavigation.getNavigationMode();var r=(n&&n.refreshStrategies)||{},I=V.getModel("internal");if(I){if(V&&V.getViewData().refreshStrategyOnAppRestore){var l=V.getViewData().refreshStrategyOnAppRestore||{};m(r,l);}var R=K.getRefreshStrategyForIntent(r,s,A);if(R){I.setProperty("/refreshStrategyOnAppRestore",R);}}var p=function(){sap.ui.require(["sap/m/MessageBox"],function(q){var u=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");q.show(u.getText("C_COMMON_HELPER_NAVIGATION_ERROR_MESSAGE"),{title:u.getText("C_COMMON_NAVIGATION_ERROR_TITLE")});});};t._oNavigationService.navigate(s,A,h.toJSONString(),null,p,null,k);}else{throw new Error("Semantic Object/action is not provided");}};var B=this.base.getView().getBindingContext();var o=B&&B.getModel().getMetaModel();if(this.getView().getViewData().converterType==="ObjectPage"&&o&&!M.isStickySessionSupported(o)){b.fnProcessDataLossOrDraftDiscardConfirmation(_.bind(this),Function.prototype,this.base.getView().getBindingContext(),this.base.getView().getController());}else{_();}},prepareContextForExternalNavigation:function(s,c){function _(u,v){for(var x in u){if(u[x]===null||typeof u[x]!=="object"){if(!d[x]){d[x]=[];}d[x].push(v);}else{var N=u[x];_(N,v+"/"+x);}}}var d={},e=c.getPath(),o=c.getModel().getMetaModel(),f=o.getMetaPath(e),g=f.split("/").filter(Boolean);_(s,f);var h=g[0],j=o.getObject("/"+h+"/@sapui.name"),p={};var k,l,n;for(var D in d){var q=d[D],w;if(q.length>1){for(var i=0;i<=q.length-1;i++){var P=q[i],r=P.replace(P===f?f:f+"/","");r=(r===""?r:r+"/")+D;var E=o.getObject(P+"/@sapui.name");if(E===j){k=r;}if(P===f){l=r;}n=r;s[(f+"/"+r).split("/").filter(function(v){return v!="";}).join(".")]=c.getProperty(r);}w=k||l||n;s[D]=c.getProperty(w);k=undefined;l=undefined;n=undefined;}else{var P=q[0],r=P.replace(P===f?f:f+"/","");r=(r===""?r:r+"/")+D;s[D]=c.getProperty(r);p[D]=(f+"/"+r).split("/").filter(function(v){return v!="";}).join(".");}}for(var t in s){if(s[t]!==null&&typeof s[t]==="object"){delete s[t];}}return{semanticAttributes:s,propertiesWithoutConflict:p};},prepareFiltersForExternalNavigation:function(f,r,p){function _(j,l){for(var k in j){if(j[k]){if(k.includes("/")){l=k;var n=k.split("/");k=n[n.length-1];}else{l=r;}if(!d[k]){d[k]=[];}d[k].push(l);}}}var d={};_(f,r);var o={};var s,c,e,w,P;for(var D in d){var g=d[D];if(g.length>1){for(var i=0;i<=g.length-1;i++){var h=g[i];if(h===r){e=r+"/"+D;P=D;s=D;if(p&&p.includes(D)){f["$Parameter."+D]=f[D];}}else{P=h;e=(r+"/"+h).replaceAll("*","");c=h;}f[e.split("/").filter(function(v){return v!="";}).join(".")]=f[P];delete f[h];}w=s||c;f[D]=f[w];}else{var h=g[0],e=h===r?r+"/"+D:(r+"/"+h).replaceAll("*","");o[D]=e.split("/").filter(function(v){return v!="";}).join(".");if(p&&p.includes(D)){f["$Parameter."+D]=f[D];}}}return{filterConditions:f,filterConditionsWithoutConflict:o};},getNavigationMode:function(){return"inplace";},navigateWithConfirmationDialog:function(s,A,n){var t=this;if(n.notApplicableContexts&&n.notApplicableContexts.length>=1){var o;var c={onClose:function(){o.close();},onContinue:function(){n.navigationContexts=n.applicableContexts;o.close();t.navigate(s,A,n);}};var f=function(){var j,k=n.notApplicableContexts.length,N=[];for(var i=0;i<n.notApplicableContexts.length;i++){j=n.notApplicableContexts[i].getObject();N.push(j);}var l=new J(N);var T=new J({total:k,label:n.label});o.setModel(l,"notApplicable");o.setModel(T,"totals");o.open();};var d="sap.fe.core.controls.ActionPartial";var D=a.loadTemplate(d,"fragment");var e=this._oView.getModel();var g=e.getMetaModel();var h=n.notApplicableContexts[0].getCanonicalPath();var E=h.substr(0,h.indexOf("("))+"/";Promise.resolve(X.process(D,{name:d},{bindingContexts:{entityType:g.createBindingContext(E)},models:{entityType:g,metaModel:g}})).then(function(i){return F.load({definition:i,controller:c});}).then(function(p){o=p;t.getView().addDependent(p);f();}).catch(function(){L.error("Error");});}else{t.navigate(s,A,n);}},_removeTechnicalParameters:function(s){s.removeSelectOption("@odata.context");s.removeSelectOption("@odata.metadataEtag");s.removeSelectOption("SAP__Messages");},getEntitySet:function(){return this._oView.getViewData().entitySet;},removeSensitiveData:function(A,s){var p=Object.keys(A);if(p.length){delete A["@odata.context"];delete A["@odata.metadataEtag"];delete A["SAP__Messages"];for(var j=0;j<p.length;j++){if(A[p[j]]&&typeof A[p[j]]==="object"){this.removeSensitiveData(A[p[j]],s+"/"+p[j]);}var P=p[j],c=this._oMetaModel.getObject(s+"/"+P+"@");if(c){if(c["@com.sap.vocabularies.PersonalData.v1.IsPotentiallySensitive"]||c["@com.sap.vocabularies.UI.v1.ExcludeFromNavigationContext"]||c["@com.sap.vocabularies.Analytics.v1.Measure"]){delete A[P];}else if(c["@com.sap.vocabularies.Common.v1.FieldControl"]){var f=c["@com.sap.vocabularies.Common.v1.FieldControl"];if(f["$EnumMember"]&&f["$EnumMember"].split("/")[1]==="Inapplicable"){delete A[P];}else if(f["$Path"]&&this._isFieldControlPathInapplicable(f["$Path"],A)){delete A[P];}}}}}return A;},_isFieldControlPathInapplicable:function(f,A){var i=false,p=f.split("/");if(p.length>1){i=A[p[0]]&&A[p[0]].hasOwnProperty(p[1])&&A[p[0]][p[1]]===0;}else{i=A[f]===0;}return i;},_applySemanticObjectMappings:function(s,v){var o=typeof v==="string"?JSON.parse(v):v;for(var i=0;i<o.length;i++){var l=(o[i]["LocalProperty"]&&o[i]["LocalProperty"]["$PropertyPath"])||(o[i]["@com.sap.vocabularies.Common.v1.LocalProperty"]&&o[i]["@com.sap.vocabularies.Common.v1.LocalProperty"]["$Path"]);var c=o[i]["SemanticObjectProperty"]||o[i]["@com.sap.vocabularies.Common.v1.SemanticObjectProperty"];if(s.getSelectOption(l)){var d=s.getSelectOption(l);s.removeSelectOption(l);s.massAddSelectOption(c,d);}}return s;},navigateOutbound:function(o,n){var c=this.base.getAppComponent().getManifestEntry("sap.app"),d=c.crossNavigation&&c.crossNavigation.outbounds[o];if(!d){L.error("Outbound is not defined in manifest!!");return;}var s=d.semanticObject,A=d.action,e=d.parameters&&this.getOutboundParams(d.parameters);if(n){var N=[];Object.keys(n).forEach(function(k){if(Array.isArray(n[k])){var v=n[k];for(var i=0;i<v.length;i++){var p={};p[k]=v[i];N.push(p);}}else{var p={};p[k]=n[k];N.push(p);}});}if(N||e){n={navigationContexts:{data:N||e}};}this.base._intentBasedNavigation.navigate(s,A,n);},_applyOutboundParams:function(s,o){var p=Object.keys(o);var c=s.getSelectOptionsPropertyNames();p.forEach(function(k){if(!c.includes(k)){s.addSelectOption(k,"I","EQ",o[k]);}});return s;},getOutboundParams:function(o){var p={};if(o){var P=Object.keys(o)||[];if(P.length>0){P.forEach(function(k){var c=o[k];if(c.value&&c.value.value&&c.value.format==="plain"){if(!p[k]){p[k]=c.value.value;}}});}}return p;},onChevronPressNavigateOutBound:function(c,o,d,s){var e=c.getAppComponent().getRoutingService().getOutbounds(),D=e[o],f;if(D&&D.semanticObject&&D.action){var r={intents:{}},g={},h;if(d){if(d.isA&&d.isA("sap.ui.model.odata.v4.Context")){h=M.getMetaPathForContext(d);d=[d];}else{h=M.getMetaPathForContext(d[0]);}g[h]="self";r["_feDefault"]=g;}if(s){var k=D.semanticObject+"-"+D.action;r.intents[k]={};r.intents[k][s]="self";}if(D&&D.parameters){var p=D.parameters&&this.getOutboundParams(D.parameters);if(Object.keys(p).length>0){f=p;}}c._intentBasedNavigation.navigate(D.semanticObject,D.action,{navigationContexts:d,refreshStrategies:r,additionalNavigationParameters:f});return Promise.resolve();}else{throw new Error("outbound target "+o+" not found in cross navigation definition of manifest");}},override:{onInit:function(){this._oAppComponent=this.base.getAppComponent();this._oMetaModel=this._oAppComponent.getModel().getMetaModel();this._oNavigationService=this._oAppComponent.getNavigationService();this._oView=this.base.getView();}}});});
@@ -155,7 +155,8 @@ sap.ui.define(
155
155
  checkNoHashChange: mParameters.checkNoHashChange,
156
156
  editable: mParameters.editable,
157
157
  bPersistOPScroll: mParameters.bPersistOPScroll,
158
- updateFCLLevel: mParameters.updateFCLLevel
158
+ updateFCLLevel: mParameters.updateFCLLevel,
159
+ bForceFocus: mParameters.bForceFocus
159
160
  });
160
161
  })
161
162
  .catch(function(oError) {
@@ -242,11 +243,11 @@ sap.ui.define(
242
243
  navigateToMessagePage: function(sErrorMessage, mParameters) {
243
244
  mParameters = mParameters || {};
244
245
  if (this._oRouterProxy.getHash().indexOf("i-action=create") > -1) {
245
- this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());
246
+ return this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());
246
247
  } else {
247
248
  mParameters.FCLLevel = this._getFCLLevel();
248
249
 
249
- this._oAppComponent.getRootViewController().displayMessagePage(sErrorMessage, mParameters);
250
+ return this._oAppComponent.getRootViewController().displayMessagePage(sErrorMessage, mParameters);
250
251
  }
251
252
  },
252
253
 
@@ -880,59 +881,28 @@ sap.ui.define(
880
881
  return this._oTargetInformation.FCLLevel;
881
882
  },
882
883
 
883
- overflowToolbarButtonHover: function() {
884
- this.sCurrentFocusedControlId = sap.ui.getCore().getCurrentFocusedControlId();
885
- },
886
884
  /**
887
- * Sets the current column of a FCL to fullscreen mode.
885
+ * Switches the FCL layout betwen column and full-screen.
888
886
  *
889
887
  * @ui5-restricted
890
888
  */
891
- enterFullScreen: function() {
892
- var oSource = this.base.getView();
893
- var oContext = oSource.getBindingContext(),
894
- sNextLayout = oSource.getModel("fclhelper").getProperty("/actionButtonsInfo/fullScreen");
895
-
896
- var oRouterProxy = this._oRouterProxy;
897
- var sCurrentFocusedControlId = this.sCurrentFocusedControlId;
898
- this.base._routing
899
- .navigateToContext(oContext, { sLayout: sNextLayout })
900
- .then(function() {
901
- var oLastHistoryEntry = oRouterProxy.getLastHistoryEntry();
902
- oLastHistoryEntry.oLastFocusControl = Object.assign({}, oLastHistoryEntry.oLastFocusControl, {
903
- controlId: sCurrentFocusedControlId,
904
- focusInfo: { id: sCurrentFocusedControlId }
905
- });
906
- })
907
- .catch(function() {
908
- Log.warning("cannot set focus on last focused control");
909
- });
910
- },
911
889
 
912
- /**
913
- * Exits fullscreen mode for the current column of a FCL.
914
- *
915
- * @ui5-restricted
916
- */
917
- exitFullScreen: function() {
890
+ switchFullScreen: function() {
918
891
  var oSource = this.base.getView();
919
- var oContext = oSource.getBindingContext(),
920
- sNextLayout = oSource.getModel("fclhelper").getProperty("/actionButtonsInfo/exitFullScreen");
921
-
922
- var oRouterProxy = this._oRouterProxy;
923
- var sCurrentFocusedControlId = this.sCurrentFocusedControlId;
924
- this.base._routing
925
- .navigateToContext(oContext, { sLayout: sNextLayout })
926
- .then(function() {
927
- var oLastHistoryEntry = oRouterProxy.getLastHistoryEntry();
928
- oLastHistoryEntry.oLastFocusControl = Object.assign({}, oLastHistoryEntry.oLastFocusControl, {
929
- controlId: sCurrentFocusedControlId,
930
- focusInfo: { id: sCurrentFocusedControlId }
931
- });
932
- })
933
- .catch(function() {
934
- Log.warning("cannot set focus on last focused control");
935
- });
892
+ var oFCLHelperModel = oSource.getModel("fclhelper"),
893
+ bIsFullScreen = oFCLHelperModel.getProperty("/actionButtonsInfo/isFullScreen"),
894
+ sNextLayout = oFCLHelperModel.getProperty(
895
+ bIsFullScreen ? "/actionButtonsInfo/exitFullScreen" : "/actionButtonsInfo/fullScreen"
896
+ ),
897
+ oRootViewController = this._oAppComponent.getRootViewController();
898
+
899
+ var oContext = oRootViewController.getRightmostContext
900
+ ? oRootViewController.getRightmostContext()
901
+ : oSource.getBindingContext();
902
+
903
+ this.base._routing.navigateToContext(oContext, { sLayout: sNextLayout }).catch(function() {
904
+ Log.warning("cannot switch between column and fullscreen");
905
+ });
936
906
  },
937
907
 
938
908
  /**
@@ -3,4 +3,4 @@
3
3
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
 
5
5
  */
6
- sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/fe/core/controllerextensions/ControllerExtensionMetadata","sap/ui/core/mvc/OverrideExecution","sap/ui/core/Component","sap/fe/core/CommonUtils","sap/fe/core/BusyLocker","sap/fe/core/helpers/SemanticKeyHelper","sap/ui/model/Filter","sap/ui/model/FilterOperator","sap/base/Log","sap/fe/core/actions/messageHandling","sap/m/MessageBox","sap/fe/core/helpers/EditState","sap/fe/core/controllerextensions/MessageHandler","sap/fe/core/helpers/ModelHelper"],function(C,a,O,b,c,B,S,F,d,L,m,M,E,e,f){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalRouting",{metadata:{methods:{"navigateToTarget":{"public":true,"final":false},"byId":{"public":false},"getView":{"public":false},"onRouteMatched":{"public":true,"final":false,overrideExecution:O.After},"onRouteMatchedFinished":{"public":true,"final":false,overrideExecution:O.After},"onBeforeBinding":{"public":true,"final":false,overrideExecution:O.After},"onAfterBinding":{"public":true,"final":false,overrideExecution:O.After},"navigateToContext":{"public":true,"final":true},"navigateBackFromContext":{"public":true,"final":true},"navigateForwardToContext":{"public":true,"final":true},"navigateBackFromTransientState":{"public":true,"final":true},"navigateToMessagePage":{"public":true,"final":true},"enterFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"exitFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"closeColumn":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"isCurrentStateImpactedBy":{"public":true,"final":true}}},onRouteMatched:function(){},onRouteMatchedFinished:function(){},onBeforeBinding:function(o,p){var r=this.base.getView().getController().routing;if(r&&r.onBeforeBinding){r.onBeforeBinding(o,p);}},onAfterBinding:function(o,p){this._oAppComponent.getRootViewController().onContextBoundToView(o);var r=this.base.getView().getController().routing;if(r&&r.onAfterBinding){r.onAfterBinding(o,p);}},navigateToTarget:function(o,n,s,p){var N=this._oPageComponent&&this._oPageComponent.getNavigationConfiguration&&this._oPageComponent.getNavigationConfiguration(n);if(N){var D=N.detail;var r=D.route;var P=D.parameters;this._oRoutingService.navigateTo(o,r,P,p,s);}else{this._oRoutingService.navigateTo(o,null,null,p);}this._oView.getViewData();},navigateToContext:function(o,p){var t=this;var g={};p=p||{};if(o.isA("sap.ui.model.odata.v4.ODataListBinding")){if(p.asyncContext){this._oRouterProxy.activateRouteMatchSynchronization();p.asyncContext.then(function(o){t.navigateToContext(o,{checkNoHashChange:p.checkNoHashChange,editable:p.editable,bPersistOPScroll:p.bPersistOPScroll,updateFCLLevel:p.updateFCLLevel});}).catch(function(h){L.error("Error with the async context",h);});}else if(!p.bDeferredContext){throw"navigation to a list binding is not yet supported";}}if(p.callExtension){g.sourceBindingContext=o.getObject();g.bindingContext=o;if(p.oEvent){g.oEvent=p.oEvent;}if(this.base.getView().getController().routing.onBeforeNavigation(g)){return Promise.resolve();}}p.FCLLevel=this._getFCLLevel();return this._oRoutingService.navigateToContext(o,p,this._oView.getViewData(),this._oTargetInformation);},navigateBackFromContext:function(o,p){p=p||{};p.updateFCLLevel=-1;return this.navigateToContext(o,p);},navigateForwardToContext:function(o,p){if(this._oView.getBindingContext("internal").getProperty("messageFooterContainsErrors")===true){return Promise.resolve();}p=p||{};p.updateFCLLevel=1;return this.navigateToContext(o,p,true);},navigateBackFromTransientState:function(){var h=this._oRouterProxy.getHash();if(h.indexOf("(...)")!==-1){this._oRouterProxy.navBack();}},navigateToMessagePage:function(s,p){p=p||{};if(this._oRouterProxy.getHash().indexOf("i-action=create")>-1){this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());}else{p.FCLLevel=this._getFCLLevel();this._oAppComponent.getRootViewController().displayMessagePage(s,p);}},isCurrentStateImpactedBy:function(o){return this._oRoutingService.isCurrentStateImpactedBy(o);},_onRouteMatched:function(o){var t=o.getParameter("routeInformation")&&o.getParameter("routeInformation").targets;if(!t||t.indexOf(this._oTargetInformation.targetName)===-1){return;}var T;if(this._oPageComponent&&this._oPageComponent.getBindingContextPattern){T=this._oPageComponent.getBindingContextPattern();}T=T||this._oTargetInformation.contextPattern;if(T===null||T===undefined){T=o.getParameter("routePattern");}T=T.replace(":?query:","");var A=o.getParameters().arguments,D=false,n=o.getParameter("navigationInfo");for(var k in A){var v=A[k];if(v==="..."&&T.indexOf("{"+k+"}")>=0){D=true;n.bTargetEditable=true;}T=T.replace("{"+k+"}",v);}if(A["?query"]&&A["?query"].hasOwnProperty("i-action")){n.bActionCreate=true;}if(T&&T[0]!=="/"){T="/"+T;}this.onRouteMatched();var g=this._oView.getModel(),h;if(D){h=this._bindDeferred(T,n);}else{h=this._bindPage(T,g,n);}var i=this;h.finally(function(){i.onRouteMatchedFinished();});this._oAppComponent.getRootViewController().updateUIStateForView(this._oView,this._getFCLLevel());},_bindDeferred:function(t,n){this.onBeforeBinding(null,{editable:n.bTargetEditable});if(n.bDeferredContext||!n.oAsyncContext){if(this._oPageComponent&&this._oPageComponent.createDeferredContext){this._oPageComponent.createDeferredContext(t,n.bActionCreate);}}if(this._getBindingContext()&&this._getBindingContext().hasPendingChanges()){this._getBindingContext().getBinding().resetChanges();}this._setBindingContext(null);this.onAfterBinding(null);return Promise.resolve();},_bindPage:function(t,o,n){var g=this;if(t===""){return Promise.resolve(this._bindPageToContext(null,o,n));}else{return this._resolveSemanticPath(t,o).then(function(T){g._bindPageToPath(T,o,n);}).catch(function(h){var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");g.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("C_COMMON_SAPFE_ERROR"),description:h.message});});}},_createFilterFromSemanticPath:function(s,g,o){var k=s.substring(s.indexOf("(")+1,s.length-1).split(","),h;if(g.length!=k.length){return null;}var i=f.isFilteringCaseSensitive(o);if(g.length===1){var K=k[0];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}h=[new F({path:g[0].$PropertyPath,operator:d.EQ,value1:K,caseSensitive:i})];}else{var j={};k.forEach(function(p){var P=p.split("="),K=P[1];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}j[P[0]]=K;});var l=false;h=g.map(function(p){var q=p.$PropertyPath,v=j[q];if(v!==undefined){return new F({path:q,operator:d.EQ,value1:v,caseSensitive:i});}else{l=true;return"XX";}});if(l){return null;}}var D=new F({filters:[new F("IsActiveEntity","EQ",false),new F("SiblingEntity/IsActiveEntity","EQ",null)],and:false});h.push(D);var n=new F(h,true);return n;},_getTechnicalPathFromSemanticPath:function(s,o,g){var h=o.getMetaModel(),i=h.getMetaContext(s).getPath();if(!g||g.length===0){return Promise.resolve(null);}var j=this._createFilterFromSemanticPath(s,g,h);if(j===null){return Promise.resolve(null);}var l=o.bindList("/"+i,undefined,undefined,j,{"$$groupId":"$auto.Heroes"});return l.requestContexts(0,2).then(function(k){if(k&&k.length){return k[0].getPath();}else{return null;}});},_checkPathForSemanticBookmarking:function(p,o){var g=/^[\/]?(\w+)\([^\/]+\)$/.exec(p);if(!g){return false;}var s="/"+g[1];var D=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftRoot");var h=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftNode");return D||h?true:false;},_resolveSemanticPath:function(p,o){var g=o.getMetaModel(),l=this._oRoutingService.getLastSemanticMapping(),s=this._oRouter.getHashChanger().getHash().split("?")[0],t=this;if(s&&s.lastIndexOf("/")===s.length-1){s=s.substring(0,s.length-1);}var r=s&&s.substr(0,s.indexOf("("));if(r.indexOf("/")===0){r=r.substring(1);}var A=this._checkPathForSemanticBookmarking(s,g),h=A&&S.getSemanticKeys(g,r);if(!h){return Promise.resolve(p);}else if(l&&l.semanticPath===p){return Promise.resolve(l.technicalPath);}else{return this._getTechnicalPathFromSemanticPath(s,o,h).then(function(T){if(T&&T!==p){t._oRoutingService.setLastSemanticMapping({technicalPath:T,semanticPath:p});return T;}else{return p;}});}},_bindPageToPath:function(t,o,n){var g=this._getBindingContext(),s=g&&g.getPath(),u=n.useContext;if(s!==t||(u&&u.getPath()===t)){var T;if(u&&u.getPath()===t){T=u;}else{T=this._createBindingContext(t,o);}if(T!==g){this._bindPageToContext(T,o,n);}}else if(!n.bReasonIsIappState&&E.isEditStateDirty()){this._refreshBindingContext(g);}},_bindPageToContext:function(o,g,n){var t=this;if(!o){this.onBeforeBinding(null);this.onAfterBinding(null);}else{var p=o.getBinding();if(!o.getBinding()||o.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding")){o=this._createBindingContext(o.getPath(),g);if(E.isEditStateDirty()){setTimeout(function(){t._refreshBindingContext(o);},0);}}this.onBeforeBinding(o,{editable:n.bTargetEditable,listBinding:p,bPersistOPScroll:n.bPersistOPScroll,bDraftNavigation:n.bDraftNavigation,showPlaceholder:n.bShowPlaceholder});this._setBindingContext(o);this.onAfterBinding(o);}},_createBindingContext:function(p,o){var P=this._oPageComponent,s=P&&P.getEntitySet&&P.getEntitySet(),g=(P&&P.getContextPath&&P.getContextPath())||(s&&"/"+s),h=o.getMetaModel(),t=this,i={$$patchWithoutSideEffects:true,$$groupId:"$auto.Heroes",$$updateGroupId:"$auto"};if(s){var j=h.getObject(g+"/@com.sap.vocabularies.Common.v1.Messages/$Path");if(j){i.$select=j;}}var D=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftRoot");var k=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftNode");if(D||k){if(i.$select===undefined){i.$select="HasActiveEntity,HasDraftEntity,IsActiveEntity";}else{i.$select+=",HasActiveEntity,HasDraftEntity,IsActiveEntity";}}var H=o.bindContext(p,undefined,i);H.attachEventOnce("dataRequested",function(){B.lock(t._oView);});H.attachEventOnce("dataReceived",function(l){var n=l&&l.getParameter("error");B.unlock(t._oView);if(n){sap.ui.getCore().getLibraryResourceBundle("sap.fe.core",true).then(function(r){var q=new e();q.removeTransitionMessages();t.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("SAPFE_ERROR"),description:n});}).catch(function(q){L.error("Error while getting the core resource bundle",q);});}});return H.getBoundContext();},_refreshBindingContext:function(o){var p=this._oPageComponent,s=this._oAppComponent.getSideEffectsService(),r=o.getPath(),g=p&&p.getEntitySet&&p.getEntitySet(),h=(p&&p.getContextPath&&p.getContextPath())||(g&&"/"+g),j=this._oView.getModel().getMetaModel(),k,n=[],P=[],l={TargetProperties:[],TargetEntities:[]};function q(t){var D,R=((t.getContext()&&t.getContext().getPath())||"").replace(r,""),u=(R?R.slice(1)+"/":R)+t.getPath();if(t.isA("sap.ui.model.odata.v4.ODataContextBinding")){D=t.getDependentBindings();if(D){for(var i=0;i<D.length;i++){q(D[i]);}}else if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataListBinding")){if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataPropertyBinding")){if(P.indexOf(u)===-1){P.push(u);}}}if(h){k=j.getObject(h+"/@com.sap.vocabularies.Common.v1.Messages/$Path");}q(o.getBinding());var i;for(i=0;i<n.length;i++){l.TargetEntities.push({$NavigationPropertyPath:n[i]});}l.TargetProperties=P;if(k){l.TargetProperties.push({$PropertyPath:k});}s.requestSideEffects(l.TargetEntities.concat(l.TargetProperties),o);},_getBindingContext:function(){if(this._oPageComponent){return this._oPageComponent.getBindingContext();}else{return this._oView.getBindingContext();}},_setBindingContext:function(o){if(this._oPageComponent){this._oPageComponent.setBindingContext(o);}else{this._oView.setBindingContext(o);}},_getFCLLevel:function(){return this._oTargetInformation.FCLLevel;},overflowToolbarButtonHover:function(){this.sCurrentFocusedControlId=sap.ui.getCore().getCurrentFocusedControlId();},enterFullScreen:function(){var s=this.base.getView();var o=s.getBindingContext(),n=s.getModel("fclhelper").getProperty("/actionButtonsInfo/fullScreen");var r=this._oRouterProxy;var g=this.sCurrentFocusedControlId;this.base._routing.navigateToContext(o,{sLayout:n}).then(function(){var l=r.getLastHistoryEntry();l.oLastFocusControl=Object.assign({},l.oLastFocusControl,{controlId:g,focusInfo:{id:g}});}).catch(function(){L.warning("cannot set focus on last focused control");});},exitFullScreen:function(){var s=this.base.getView();var o=s.getBindingContext(),n=s.getModel("fclhelper").getProperty("/actionButtonsInfo/exitFullScreen");var r=this._oRouterProxy;var g=this.sCurrentFocusedControlId;this.base._routing.navigateToContext(o,{sLayout:n}).then(function(){var l=r.getLastHistoryEntry();l.oLastFocusControl=Object.assign({},l.oLastFocusControl,{controlId:g,focusInfo:{id:g}});}).catch(function(){L.warning("cannot set focus on last focused control");});},closeColumn:function(){var s=this.base.getView();var v=s.getViewData();var o=s.getBindingContext();var g=this.base;var h=o.getModel().getMetaModel();if(v&&v.viewLevel===1&&f.isDraftSupported(h,o.getPath())){c.fnProcessDataLossOrDraftDiscardConfirmation(function(){g._routing.navigateBackFromContext(o,{noPreservationCache:true});},Function.prototype,o,s.getController(),false);}else{g._routing.navigateBackFromContext(o,{noPreservationCache:true});}},override:{onExit:function(){this._oRoutingService&&this._oRoutingService.detachRouteMatched(this._fnRouteMatchedBound);},onInit:function(){var t=this;this._oView=this.base.getView();this._oAppComponent=c.getAppComponent(this._oView);this._oPageComponent=b.getOwnerComponentFor(this._oView);this._oRouter=this._oAppComponent.getRouter();this._oRouterProxy=this._oAppComponent.getRouterProxy();if(!this._oAppComponent||!this._oPageComponent){throw new Error("Failed to initialize controler extension 'sap.fe.core.controllerextesions.InternalRouting");}if(this._oAppComponent===this._oPageComponent){this._oPageComponent=null;}this._oAppComponent.getService("routingService").then(function(r){t._oRoutingService=r;t._fnRouteMatchedBound=t._onRouteMatched.bind(t);t._oRoutingService.attachRouteMatched(t._fnRouteMatchedBound);t._oTargetInformation=r.getTargetInformationFor(t._oPageComponent||t._oView);}).catch(function(){throw new Error("This controller extension cannot work without a 'routingService' on the main AppComponent");});}}},a);});
6
+ sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/fe/core/controllerextensions/ControllerExtensionMetadata","sap/ui/core/mvc/OverrideExecution","sap/ui/core/Component","sap/fe/core/CommonUtils","sap/fe/core/BusyLocker","sap/fe/core/helpers/SemanticKeyHelper","sap/ui/model/Filter","sap/ui/model/FilterOperator","sap/base/Log","sap/fe/core/actions/messageHandling","sap/m/MessageBox","sap/fe/core/helpers/EditState","sap/fe/core/controllerextensions/MessageHandler","sap/fe/core/helpers/ModelHelper"],function(C,a,O,b,c,B,S,F,d,L,m,M,E,e,f){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalRouting",{metadata:{methods:{"navigateToTarget":{"public":true,"final":false},"byId":{"public":false},"getView":{"public":false},"onRouteMatched":{"public":true,"final":false,overrideExecution:O.After},"onRouteMatchedFinished":{"public":true,"final":false,overrideExecution:O.After},"onBeforeBinding":{"public":true,"final":false,overrideExecution:O.After},"onAfterBinding":{"public":true,"final":false,overrideExecution:O.After},"navigateToContext":{"public":true,"final":true},"navigateBackFromContext":{"public":true,"final":true},"navigateForwardToContext":{"public":true,"final":true},"navigateBackFromTransientState":{"public":true,"final":true},"navigateToMessagePage":{"public":true,"final":true},"enterFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"exitFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"closeColumn":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"isCurrentStateImpactedBy":{"public":true,"final":true}}},onRouteMatched:function(){},onRouteMatchedFinished:function(){},onBeforeBinding:function(o,p){var r=this.base.getView().getController().routing;if(r&&r.onBeforeBinding){r.onBeforeBinding(o,p);}},onAfterBinding:function(o,p){this._oAppComponent.getRootViewController().onContextBoundToView(o);var r=this.base.getView().getController().routing;if(r&&r.onAfterBinding){r.onAfterBinding(o,p);}},navigateToTarget:function(o,n,s,p){var N=this._oPageComponent&&this._oPageComponent.getNavigationConfiguration&&this._oPageComponent.getNavigationConfiguration(n);if(N){var D=N.detail;var r=D.route;var P=D.parameters;this._oRoutingService.navigateTo(o,r,P,p,s);}else{this._oRoutingService.navigateTo(o,null,null,p);}this._oView.getViewData();},navigateToContext:function(o,p){var t=this;var g={};p=p||{};if(o.isA("sap.ui.model.odata.v4.ODataListBinding")){if(p.asyncContext){this._oRouterProxy.activateRouteMatchSynchronization();p.asyncContext.then(function(o){t.navigateToContext(o,{checkNoHashChange:p.checkNoHashChange,editable:p.editable,bPersistOPScroll:p.bPersistOPScroll,updateFCLLevel:p.updateFCLLevel,bForceFocus:p.bForceFocus});}).catch(function(h){L.error("Error with the async context",h);});}else if(!p.bDeferredContext){throw"navigation to a list binding is not yet supported";}}if(p.callExtension){g.sourceBindingContext=o.getObject();g.bindingContext=o;if(p.oEvent){g.oEvent=p.oEvent;}if(this.base.getView().getController().routing.onBeforeNavigation(g)){return Promise.resolve();}}p.FCLLevel=this._getFCLLevel();return this._oRoutingService.navigateToContext(o,p,this._oView.getViewData(),this._oTargetInformation);},navigateBackFromContext:function(o,p){p=p||{};p.updateFCLLevel=-1;return this.navigateToContext(o,p);},navigateForwardToContext:function(o,p){if(this._oView.getBindingContext("internal").getProperty("messageFooterContainsErrors")===true){return Promise.resolve();}p=p||{};p.updateFCLLevel=1;return this.navigateToContext(o,p,true);},navigateBackFromTransientState:function(){var h=this._oRouterProxy.getHash();if(h.indexOf("(...)")!==-1){this._oRouterProxy.navBack();}},navigateToMessagePage:function(s,p){p=p||{};if(this._oRouterProxy.getHash().indexOf("i-action=create")>-1){return this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());}else{p.FCLLevel=this._getFCLLevel();return this._oAppComponent.getRootViewController().displayMessagePage(s,p);}},isCurrentStateImpactedBy:function(o){return this._oRoutingService.isCurrentStateImpactedBy(o);},_onRouteMatched:function(o){var t=o.getParameter("routeInformation")&&o.getParameter("routeInformation").targets;if(!t||t.indexOf(this._oTargetInformation.targetName)===-1){return;}var T;if(this._oPageComponent&&this._oPageComponent.getBindingContextPattern){T=this._oPageComponent.getBindingContextPattern();}T=T||this._oTargetInformation.contextPattern;if(T===null||T===undefined){T=o.getParameter("routePattern");}T=T.replace(":?query:","");var A=o.getParameters().arguments,D=false,n=o.getParameter("navigationInfo");for(var k in A){var v=A[k];if(v==="..."&&T.indexOf("{"+k+"}")>=0){D=true;n.bTargetEditable=true;}T=T.replace("{"+k+"}",v);}if(A["?query"]&&A["?query"].hasOwnProperty("i-action")){n.bActionCreate=true;}if(T&&T[0]!=="/"){T="/"+T;}this.onRouteMatched();var g=this._oView.getModel(),h;if(D){h=this._bindDeferred(T,n);}else{h=this._bindPage(T,g,n);}var i=this;h.finally(function(){i.onRouteMatchedFinished();});this._oAppComponent.getRootViewController().updateUIStateForView(this._oView,this._getFCLLevel());},_bindDeferred:function(t,n){this.onBeforeBinding(null,{editable:n.bTargetEditable});if(n.bDeferredContext||!n.oAsyncContext){if(this._oPageComponent&&this._oPageComponent.createDeferredContext){this._oPageComponent.createDeferredContext(t,n.bActionCreate);}}if(this._getBindingContext()&&this._getBindingContext().hasPendingChanges()){this._getBindingContext().getBinding().resetChanges();}this._setBindingContext(null);this.onAfterBinding(null);return Promise.resolve();},_bindPage:function(t,o,n){var g=this;if(t===""){return Promise.resolve(this._bindPageToContext(null,o,n));}else{return this._resolveSemanticPath(t,o).then(function(T){g._bindPageToPath(T,o,n);}).catch(function(h){var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");g.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("C_COMMON_SAPFE_ERROR"),description:h.message});});}},_createFilterFromSemanticPath:function(s,g,o){var k=s.substring(s.indexOf("(")+1,s.length-1).split(","),h;if(g.length!=k.length){return null;}var i=f.isFilteringCaseSensitive(o);if(g.length===1){var K=k[0];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}h=[new F({path:g[0].$PropertyPath,operator:d.EQ,value1:K,caseSensitive:i})];}else{var j={};k.forEach(function(p){var P=p.split("="),K=P[1];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}j[P[0]]=K;});var l=false;h=g.map(function(p){var q=p.$PropertyPath,v=j[q];if(v!==undefined){return new F({path:q,operator:d.EQ,value1:v,caseSensitive:i});}else{l=true;return"XX";}});if(l){return null;}}var D=new F({filters:[new F("IsActiveEntity","EQ",false),new F("SiblingEntity/IsActiveEntity","EQ",null)],and:false});h.push(D);var n=new F(h,true);return n;},_getTechnicalPathFromSemanticPath:function(s,o,g){var h=o.getMetaModel(),i=h.getMetaContext(s).getPath();if(!g||g.length===0){return Promise.resolve(null);}var j=this._createFilterFromSemanticPath(s,g,h);if(j===null){return Promise.resolve(null);}var l=o.bindList("/"+i,undefined,undefined,j,{"$$groupId":"$auto.Heroes"});return l.requestContexts(0,2).then(function(k){if(k&&k.length){return k[0].getPath();}else{return null;}});},_checkPathForSemanticBookmarking:function(p,o){var g=/^[\/]?(\w+)\([^\/]+\)$/.exec(p);if(!g){return false;}var s="/"+g[1];var D=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftRoot");var h=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftNode");return D||h?true:false;},_resolveSemanticPath:function(p,o){var g=o.getMetaModel(),l=this._oRoutingService.getLastSemanticMapping(),s=this._oRouter.getHashChanger().getHash().split("?")[0],t=this;if(s&&s.lastIndexOf("/")===s.length-1){s=s.substring(0,s.length-1);}var r=s&&s.substr(0,s.indexOf("("));if(r.indexOf("/")===0){r=r.substring(1);}var A=this._checkPathForSemanticBookmarking(s,g),h=A&&S.getSemanticKeys(g,r);if(!h){return Promise.resolve(p);}else if(l&&l.semanticPath===p){return Promise.resolve(l.technicalPath);}else{return this._getTechnicalPathFromSemanticPath(s,o,h).then(function(T){if(T&&T!==p){t._oRoutingService.setLastSemanticMapping({technicalPath:T,semanticPath:p});return T;}else{return p;}});}},_bindPageToPath:function(t,o,n){var g=this._getBindingContext(),s=g&&g.getPath(),u=n.useContext;if(s!==t||(u&&u.getPath()===t)){var T;if(u&&u.getPath()===t){T=u;}else{T=this._createBindingContext(t,o);}if(T!==g){this._bindPageToContext(T,o,n);}}else if(!n.bReasonIsIappState&&E.isEditStateDirty()){this._refreshBindingContext(g);}},_bindPageToContext:function(o,g,n){var t=this;if(!o){this.onBeforeBinding(null);this.onAfterBinding(null);}else{var p=o.getBinding();if(!o.getBinding()||o.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding")){o=this._createBindingContext(o.getPath(),g);if(E.isEditStateDirty()){setTimeout(function(){t._refreshBindingContext(o);},0);}}this.onBeforeBinding(o,{editable:n.bTargetEditable,listBinding:p,bPersistOPScroll:n.bPersistOPScroll,bDraftNavigation:n.bDraftNavigation,showPlaceholder:n.bShowPlaceholder});this._setBindingContext(o);this.onAfterBinding(o);}},_createBindingContext:function(p,o){var P=this._oPageComponent,s=P&&P.getEntitySet&&P.getEntitySet(),g=(P&&P.getContextPath&&P.getContextPath())||(s&&"/"+s),h=o.getMetaModel(),t=this,i={$$patchWithoutSideEffects:true,$$groupId:"$auto.Heroes",$$updateGroupId:"$auto"};if(s){var j=h.getObject(g+"/@com.sap.vocabularies.Common.v1.Messages/$Path");if(j){i.$select=j;}}var D=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftRoot");var k=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftNode");if(D||k){if(i.$select===undefined){i.$select="HasActiveEntity,HasDraftEntity,IsActiveEntity";}else{i.$select+=",HasActiveEntity,HasDraftEntity,IsActiveEntity";}}var H=o.bindContext(p,undefined,i);H.attachEventOnce("dataRequested",function(){B.lock(t._oView);});H.attachEventOnce("dataReceived",function(l){var n=l&&l.getParameter("error");B.unlock(t._oView);if(n){sap.ui.getCore().getLibraryResourceBundle("sap.fe.core",true).then(function(r){var q=new e();q.removeTransitionMessages();t.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("SAPFE_ERROR"),description:n});}).catch(function(q){L.error("Error while getting the core resource bundle",q);});}});return H.getBoundContext();},_refreshBindingContext:function(o){var p=this._oPageComponent,s=this._oAppComponent.getSideEffectsService(),r=o.getPath(),g=p&&p.getEntitySet&&p.getEntitySet(),h=(p&&p.getContextPath&&p.getContextPath())||(g&&"/"+g),j=this._oView.getModel().getMetaModel(),k,n=[],P=[],l={TargetProperties:[],TargetEntities:[]};function q(t){var D,R=((t.getContext()&&t.getContext().getPath())||"").replace(r,""),u=(R?R.slice(1)+"/":R)+t.getPath();if(t.isA("sap.ui.model.odata.v4.ODataContextBinding")){D=t.getDependentBindings();if(D){for(var i=0;i<D.length;i++){q(D[i]);}}else if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataListBinding")){if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataPropertyBinding")){if(P.indexOf(u)===-1){P.push(u);}}}if(h){k=j.getObject(h+"/@com.sap.vocabularies.Common.v1.Messages/$Path");}q(o.getBinding());var i;for(i=0;i<n.length;i++){l.TargetEntities.push({$NavigationPropertyPath:n[i]});}l.TargetProperties=P;if(k){l.TargetProperties.push({$PropertyPath:k});}s.requestSideEffects(l.TargetEntities.concat(l.TargetProperties),o);},_getBindingContext:function(){if(this._oPageComponent){return this._oPageComponent.getBindingContext();}else{return this._oView.getBindingContext();}},_setBindingContext:function(o){if(this._oPageComponent){this._oPageComponent.setBindingContext(o);}else{this._oView.setBindingContext(o);}},_getFCLLevel:function(){return this._oTargetInformation.FCLLevel;},switchFullScreen:function(){var s=this.base.getView();var o=s.getModel("fclhelper"),i=o.getProperty("/actionButtonsInfo/isFullScreen"),n=o.getProperty(i?"/actionButtonsInfo/exitFullScreen":"/actionButtonsInfo/fullScreen"),r=this._oAppComponent.getRootViewController();var g=r.getRightmostContext?r.getRightmostContext():s.getBindingContext();this.base._routing.navigateToContext(g,{sLayout:n}).catch(function(){L.warning("cannot switch between column and fullscreen");});},closeColumn:function(){var s=this.base.getView();var v=s.getViewData();var o=s.getBindingContext();var g=this.base;var h=o.getModel().getMetaModel();if(v&&v.viewLevel===1&&f.isDraftSupported(h,o.getPath())){c.fnProcessDataLossOrDraftDiscardConfirmation(function(){g._routing.navigateBackFromContext(o,{noPreservationCache:true});},Function.prototype,o,s.getController(),false);}else{g._routing.navigateBackFromContext(o,{noPreservationCache:true});}},override:{onExit:function(){this._oRoutingService&&this._oRoutingService.detachRouteMatched(this._fnRouteMatchedBound);},onInit:function(){var t=this;this._oView=this.base.getView();this._oAppComponent=c.getAppComponent(this._oView);this._oPageComponent=b.getOwnerComponentFor(this._oView);this._oRouter=this._oAppComponent.getRouter();this._oRouterProxy=this._oAppComponent.getRouterProxy();if(!this._oAppComponent||!this._oPageComponent){throw new Error("Failed to initialize controler extension 'sap.fe.core.controllerextesions.InternalRouting");}if(this._oAppComponent===this._oPageComponent){this._oPageComponent=null;}this._oAppComponent.getService("routingService").then(function(r){t._oRoutingService=r;t._fnRouteMatchedBound=t._onRouteMatched.bind(t);t._oRoutingService.attachRouteMatched(t._fnRouteMatchedBound);t._oTargetInformation=r.getTargetInformationFor(t._oPageComponent||t._oView);}).catch(function(){throw new Error("This controller extension cannot work without a 'routingService' on the main AppComponent");});}}},a);});
@@ -4,113 +4,233 @@
4
4
 
5
5
  */
6
6
 
7
- sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "sap/fe/core/actions/messageHandling"], function(
8
- ControllerExtension,
9
- OverrideExecution,
10
- messageHandling
11
- ) {
12
- "use strict";
7
+ sap.ui.define(
8
+ [
9
+ "sap/ui/core/mvc/ControllerExtension",
10
+ "sap/ui/core/mvc/OverrideExecution",
11
+ "sap/fe/core/actions/messageHandling",
12
+ "sap/fe/core/CommonUtils",
13
+ "sap/fe/core/controllerextensions/ControllerExtensionMetadata"
14
+ ],
15
+ function(ControllerExtension, OverrideExecution, messageHandling, CommonUtils, ControllerExtensionMetadata) {
16
+ "use strict";
13
17
 
14
- /**
15
- * @class A controller extension offering message handling.
16
- *
17
- * @name sap.fe.core.controllerextensions.MessageHandler
18
- * @hideconstructor
19
- * @public
20
- * @experimental As of version 1.90.0
21
- * @since 1.90.0
22
- */
23
-
24
- var MessageHandler = ControllerExtension.extend("sap.fe.core.controllerextensions.MessageHandler", {
25
- metadata: {
26
- methods: {
27
- showMessageDialog: { "public": true, "final": true },
28
- getShowBoundMessagesInMessageDialog: { "public": false, "final": false, overrideExecution: OverrideExecution.Instead }
29
- }
30
- },
31
-
32
- /**
33
- * @private
34
- * @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
35
- * @function
36
- */
37
- /**
38
- * @private
39
- * @name sap.fe.core.controllerextensions.MessageHandler.extend
40
- * @function
41
- */
42
18
  /**
43
- * Determines whether or not bound messages are shown in the message dialog.
44
- *
45
- * This function is meant to be individually overridden by consuming controllers, but not to be called directly.
46
- * The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
47
- *
48
- * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
49
- * this method has to be overridden.
19
+ * @class A controller extension offering message handling.
50
20
  *
51
- * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
52
- * @private
53
- */
54
- getShowBoundMessagesInMessageDialog: function() {
55
- return true;
56
- },
57
- // eslint-disable-next-line jsdoc/require-param
58
- /**
59
- * Shows a message dialog with transition messages if there are any.
60
- * The message dialog is shown as a modal dialog. Once the user confirms the dialog, all transition messages
61
- * are removed from the message model. If there is more than one message, a list of messages is shown. The user
62
- * can filter on message types and can display details as well as the long text. If there is one message,
63
- * the dialog immediately shows the details of the message. If there is just one success message, a message
64
- * toast is shown instead.
65
- * @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
66
- * to be shown, the promise is resolved immediately
67
- * @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
21
+ * @name sap.fe.core.controllerextensions.MessageHandler
22
+ * @hideconstructor
68
23
  * @public
69
24
  * @experimental As of version 1.90.0
70
25
  * @since 1.90.0
71
26
  */
72
- showMessageDialog: function(mParameters) {
73
- var customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
74
- oOPInternalBindingContext = this.base.getView().getBindingContext("internal");
75
- // set isActionParameterDialog open so that it can be used in the controller extension to decide whether message dialog should open or not
76
- if (mParameters && mParameters.isActionParameterDialogOpen && oOPInternalBindingContext) {
77
- oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", true);
78
- }
79
- var bShowBoundMessages = this.getShowBoundMessagesInMessageDialog();
80
- var oBindingContext = mParameters && mParameters.context ? mParameters.context : this.getView().getBindingContext();
81
- var bEtagMessage = mParameters && mParameters.bHasEtagMessage;
82
- // reset isActionParameterDialogOpen
83
- // cannot do this operations.js since it is not aware of the view
84
- if (oOPInternalBindingContext) {
85
- oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
86
- }
87
- return new Promise(function(resolve, reject) {
88
- // we have to set a timeout to be able to access the most recent messages
89
- setTimeout(function() {
90
- // TODO: great API - will be changed later
91
- messageHandling
92
- .showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
93
- .then(resolve)
94
- .catch(reject);
95
- }, 0);
96
- });
97
- },
98
27
 
99
- /**
100
- * You can remove the existing transition message from the message model with this method.
101
- * With every user interaction that causes server communication (like clicking on an action, changing data),
102
- * this method removes the existing transition messages from the message model.
103
- * @param {boolean} keepBoundMessage Checks if the bound transition messages are not to be removed
104
- *
105
- * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
106
- * @private
107
- */
108
- removeTransitionMessages: function(keepBoundMessage) {
109
- if (!keepBoundMessage) {
110
- messageHandling.removeBoundTransitionMessages();
111
- }
112
- messageHandling.removeUnboundTransitionMessages();
113
- }
114
- });
115
- return MessageHandler;
116
- });
28
+ return ControllerExtension.extend(
29
+ "sap.fe.core.controllerextensions.MessageHandler",
30
+ {
31
+ metadata: {
32
+ methods: {
33
+ showMessageDialog: { "public": true, "final": true },
34
+ getShowBoundMessagesInMessageDialog: {
35
+ "public": false,
36
+ "final": false,
37
+ overrideExecution: OverrideExecution.Instead
38
+ }
39
+ }
40
+ },
41
+
42
+ /**
43
+ * @private
44
+ * @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
45
+ * @function
46
+ */
47
+ /**
48
+ * @private
49
+ * @name sap.fe.core.controllerextensions.MessageHandler.extend
50
+ * @function
51
+ */
52
+ /**
53
+ * Determines whether or not bound messages are shown in the message dialog.
54
+ *
55
+ * This function is meant to be individually overridden by consuming controllers, but not to be called directly.
56
+ * The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
57
+ *
58
+ * If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
59
+ * this method has to be overridden.
60
+ *
61
+ * @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
62
+ * @private
63
+ */
64
+ getShowBoundMessagesInMessageDialog: function() {
65
+ return true;
66
+ },
67
+ // eslint-disable-next-line jsdoc/require-param
68
+ /**
69
+ * Shows a message dialog with transition messages if there are any.
70
+ * The message dialog is shown as a modal dialog. Once the user confirms the dialog, all transition messages
71
+ * are removed from the message model. If there is more than one message, a list of messages is shown. The user
72
+ * can filter on message types and can display details as well as the long text. If there is one message,
73
+ * the dialog immediately shows the details of the message. If there is just one success message, a message
74
+ * toast is shown instead.
75
+ * @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
76
+ * to be shown, the promise is resolved immediately
77
+ * @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
78
+ * @public
79
+ * @experimental As of version 1.90.0
80
+ * @since 1.90.0
81
+ */
82
+ showMessageDialog: function(mParameters) {
83
+ var customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
84
+ oOPInternalBindingContext = this.base.getView().getBindingContext("internal");
85
+ // set isActionParameterDialog open so that it can be used in the controller extension to decide whether message dialog should open or not
86
+ if (mParameters && mParameters.isActionParameterDialogOpen && oOPInternalBindingContext) {
87
+ oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", true);
88
+ }
89
+ var bShowBoundMessages = this.getShowBoundMessagesInMessageDialog();
90
+ var oBindingContext = mParameters && mParameters.context ? mParameters.context : this.getView().getBindingContext();
91
+ var bEtagMessage = mParameters && mParameters.bHasEtagMessage;
92
+ // reset isActionParameterDialogOpen
93
+ // cannot do this operations.js since it is not aware of the view
94
+ if (oOPInternalBindingContext) {
95
+ oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
96
+ }
97
+ return new Promise(function(resolve, reject) {
98
+ // we have to set a timeout to be able to access the most recent messages
99
+ setTimeout(function() {
100
+ // TODO: great API - will be changed later
101
+ messageHandling
102
+ .showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
103
+ .then(resolve)
104
+ .catch(reject);
105
+ }, 0);
106
+ });
107
+ },
108
+
109
+ /**
110
+ * You can remove the existing transition message from the message model with this method.
111
+ * With every user interaction that causes server communication (like clicking on an action, changing data),
112
+ * this method removes the existing transition messages from the message model.
113
+ * @param {boolean} keepBoundMessage Checks if the bound transition messages are not to be removed
114
+ *
115
+ * @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
116
+ * @private
117
+ */
118
+ removeTransitionMessages: function(keepBoundMessage) {
119
+ if (!keepBoundMessage) {
120
+ messageHandling.removeBoundTransitionMessages();
121
+ }
122
+ messageHandling.removeUnboundTransitionMessages();
123
+ },
124
+
125
+ _checkNavigationToMessagePage: function(mParameters) {
126
+ var aUnboundMessages = messageHandling.getMessages(),
127
+ bShowBoundTransitionMessages = this.getShowBoundMessagesInMessageDialog(),
128
+ aBoundTransitionMessages = bShowBoundTransitionMessages ? messageHandling.getMessages(true, true) : [],
129
+ aCustomMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : [],
130
+ bIsStickyEditMode = CommonUtils.isStickyEditMode(this.base.getView()),
131
+ mMessagePageParameters;
132
+
133
+ // TODO: Stick mode check is okay as long as the controller extension is used with sap.fe.core and sap.fe.core.AppComponent.
134
+ // It might be better to provide an extension to the consumer of the controller extension to provide this value.
135
+
136
+ // The message page can only show 1 message today, so we navigate to it when :
137
+ // 1. There are no bound transition messages to show,
138
+ // 2. There are no custom messages to show, &
139
+ // 3. There is exactly 1 unbound message in the message model with statusCode=503 and retry-After available
140
+ // 4. retryAfter is greater than 120 seconds
141
+ //
142
+ // In Addition, navigating away from a sticky session will destroy the session so we do not navigate to message page for now.
143
+ // TODO: check if navigation should be done in sticky edit mode.
144
+ if (
145
+ !bIsStickyEditMode &&
146
+ !aBoundTransitionMessages.length &&
147
+ !aCustomMessages.length &&
148
+ aUnboundMessages.length === 1
149
+ ) {
150
+ var oMessage = aUnboundMessages[0],
151
+ oTechnicalDetails = oMessage.getTechnicalDetails();
152
+ var sRetryAfterMessage;
153
+ if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503) {
154
+ if (oTechnicalDetails.retryAfter) {
155
+ var iSecondsBeforeRetry = this._getSecondsBeforeRetryAfter(oTechnicalDetails.retryAfter);
156
+ if (iSecondsBeforeRetry > 120) {
157
+ // TODO: For now let's keep getRetryAfterMessage in messageHandling because it is needed also by the dialog.
158
+ // We can plan to move this and the dialog logic both to messageHandler controller extension if required.
159
+ sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
160
+ mMessagePageParameters = {
161
+ description: sRetryAfterMessage
162
+ ? sRetryAfterMessage + " " + oMessage.getMessage()
163
+ : oMessage.getMessage(),
164
+ navigateBackToOrigin: true
165
+ };
166
+ }
167
+ } else {
168
+ sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
169
+ mMessagePageParameters = {
170
+ description: sRetryAfterMessage
171
+ ? sRetryAfterMessage + " " + oMessage.getMessage()
172
+ : oMessage.getMessage(),
173
+ navigateBackToOrigin: true
174
+ };
175
+ }
176
+ }
177
+ }
178
+ return mMessagePageParameters;
179
+ },
180
+
181
+ _getSecondsBeforeRetryAfter: function(dRetryAfter) {
182
+ var dCurrentDateTime = new Date(),
183
+ iCurrentDateTimeInMilliSeconds = dCurrentDateTime.getTime(),
184
+ iRetryAfterDateTimeInMilliSeconds = dRetryAfter.getTime(),
185
+ iSecondsBeforeRetry = (iRetryAfterDateTimeInMilliSeconds - iCurrentDateTimeInMilliSeconds) / 1000;
186
+ return iSecondsBeforeRetry;
187
+ },
188
+ /**
189
+ * Shows a message page or a message dialog based on the messages in the message dialog.
190
+ * @param mParameters
191
+ * @returns {Promise} A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
192
+ * to be shown, the promise is resolved immediately
193
+ * @private
194
+ */
195
+ showMessages: function(mParameters) {
196
+ var mMessagePageParameters = this._checkNavigationToMessagePage(mParameters);
197
+ if (mMessagePageParameters) {
198
+ // navigate to message page.
199
+ // handler before page navigation is triggered, for example to close the action parameter dialog
200
+ mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
201
+
202
+ mMessagePageParameters.handleShellBack = true;
203
+ // TODO: Use Illustrated message instead of normal message page
204
+ // TODO: Return value needs to provided but since this function is private for now hence we can skip this.
205
+ this.removeTransitionMessages();
206
+ var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
207
+ if (this.base._routing) {
208
+ return new Promise(
209
+ function(resolve, reject) {
210
+ // we have to set a timeout to be able to access the most recent messages
211
+ setTimeout(
212
+ function() {
213
+ // TODO: great API - will be changed later
214
+ this.base._routing
215
+ .navigateToMessagePage(
216
+ oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),
217
+ mMessagePageParameters
218
+ )
219
+ .then(resolve)
220
+ .catch(reject);
221
+ }.bind(this),
222
+ 0
223
+ );
224
+ }.bind(this)
225
+ );
226
+ }
227
+ } else {
228
+ // navigate to message dialog
229
+ return this.showMessageDialog(mParameters);
230
+ }
231
+ }
232
+ },
233
+ ControllerExtensionMetadata
234
+ );
235
+ }
236
+ );
@@ -3,4 +3,4 @@
3
3
  (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
 
5
5
  */
6
- sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/core/actions/messageHandling"],function(C,O,m){"use strict";var M=C.extend("sap.fe.core.controllerextensions.MessageHandler",{metadata:{methods:{showMessageDialog:{"public":true,"final":true},getShowBoundMessagesInMessageDialog:{"public":false,"final":false,overrideExecution:O.Instead}}},getShowBoundMessagesInMessageDialog:function(){return true;},showMessageDialog:function(p){var c=p&&p.customMessages?p.customMessages:undefined,o=this.base.getView().getBindingContext("internal");if(p&&p.isActionParameterDialogOpen&&o){o.setProperty("isActionParameterDialogOpen",true);}var s=this.getShowBoundMessagesInMessageDialog();var b=p&&p.context?p.context:this.getView().getBindingContext();var e=p&&p.bHasEtagMessage;if(o){o.setProperty("isActionParameterDialogOpen",false);}return new Promise(function(r,a){setTimeout(function(){m.showUnboundMessages(c,b,e,s).then(r).catch(a);},0);});},removeTransitionMessages:function(k){if(!k){m.removeBoundTransitionMessages();}m.removeUnboundTransitionMessages();}});return M;});
6
+ sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/core/actions/messageHandling","sap/fe/core/CommonUtils","sap/fe/core/controllerextensions/ControllerExtensionMetadata"],function(C,O,m,a,b){"use strict";return C.extend("sap.fe.core.controllerextensions.MessageHandler",{metadata:{methods:{showMessageDialog:{"public":true,"final":true},getShowBoundMessagesInMessageDialog:{"public":false,"final":false,overrideExecution:O.Instead}}},getShowBoundMessagesInMessageDialog:function(){return true;},showMessageDialog:function(p){var c=p&&p.customMessages?p.customMessages:undefined,o=this.base.getView().getBindingContext("internal");if(p&&p.isActionParameterDialogOpen&&o){o.setProperty("isActionParameterDialogOpen",true);}var s=this.getShowBoundMessagesInMessageDialog();var B=p&&p.context?p.context:this.getView().getBindingContext();var e=p&&p.bHasEtagMessage;if(o){o.setProperty("isActionParameterDialogOpen",false);}return new Promise(function(r,d){setTimeout(function(){m.showUnboundMessages(c,B,e,s).then(r).catch(d);},0);});},removeTransitionMessages:function(k){if(!k){m.removeBoundTransitionMessages();}m.removeUnboundTransitionMessages();},_checkNavigationToMessagePage:function(p){var u=m.getMessages(),s=this.getShowBoundMessagesInMessageDialog(),B=s?m.getMessages(true,true):[],c=p&&p.customMessages?p.customMessages:[],i=a.isStickyEditMode(this.base.getView()),M;if(!i&&!B.length&&!c.length&&u.length===1){var o=u[0],t=o.getTechnicalDetails();var r;if(t&&t.httpStatus===503){if(t.retryAfter){var S=this._getSecondsBeforeRetryAfter(t.retryAfter);if(S>120){r=m.getRetryAfterMessage(o);M={description:r?r+" "+o.getMessage():o.getMessage(),navigateBackToOrigin:true};}}else{r=m.getRetryAfterMessage(o);M={description:r?r+" "+o.getMessage():o.getMessage(),navigateBackToOrigin:true};}}}return M;},_getSecondsBeforeRetryAfter:function(r){var c=new Date(),i=c.getTime(),R=r.getTime(),s=(R-i)/1000;return s;},showMessages:function(p){var M=this._checkNavigationToMessagePage(p);if(M){p&&p.messagePageNavigationCallback&&p.messagePageNavigationCallback();M.handleShellBack=true;this.removeTransitionMessages();var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");if(this.base._routing){return new Promise(function(c,d){setTimeout(function(){this.base._routing.navigateToMessagePage(r.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),M).then(c).catch(d);}.bind(this),0);}.bind(this));}}else{return this.showMessageDialog(p);}}},b);});