@sapui5/sap.fe.core 1.100.0 → 1.102.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 (295) hide show
  1. package/package.json +4 -4
  2. package/src/sap/fe/core/.library +2 -3
  3. package/src/sap/fe/core/AppComponent.js +23 -30
  4. package/src/sap/fe/core/AppComponent.ts +35 -40
  5. package/src/sap/fe/core/AppStateHandler.js +8 -8
  6. package/src/sap/fe/core/AppStateHandler.ts +11 -11
  7. package/src/sap/fe/core/BaseController.js +9 -9
  8. package/src/sap/fe/core/BaseController.ts +3 -4
  9. package/src/sap/fe/core/CommonUtils.js +122 -101
  10. package/src/sap/fe/core/CommonUtils.ts +239 -193
  11. package/src/sap/fe/core/ExtensionAPI.js +12 -13
  12. package/src/sap/fe/core/ExtensionAPI.ts +21 -31
  13. package/src/sap/fe/core/PageController.js +19 -13
  14. package/src/sap/fe/core/PageController.ts +40 -34
  15. package/src/sap/fe/core/TemplateComponent.js +198 -123
  16. package/src/sap/fe/core/TemplateComponent.ts +109 -121
  17. package/src/sap/fe/core/TemplateModel.js +7 -9
  18. package/src/sap/fe/core/TemplateModel.ts +3 -3
  19. package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
  20. package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
  21. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
  22. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
  23. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
  24. package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
  25. package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
  26. package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
  27. package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
  28. package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
  29. package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
  30. package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
  31. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
  32. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
  33. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
  34. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
  35. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
  36. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
  37. package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
  38. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
  39. package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
  40. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
  41. package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
  42. package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
  43. package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
  44. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
  45. package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
  46. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
  47. package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
  48. package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
  49. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
  50. package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
  51. package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
  52. package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
  53. package/src/sap/fe/core/controllerextensions/Share.js +34 -16
  54. package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
  55. package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
  56. package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
  57. package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
  58. package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
  59. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
  60. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
  61. package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
  62. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
  63. package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
  64. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
  65. package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
  66. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
  67. package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
  68. package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
  69. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
  70. package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
  71. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
  72. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
  73. package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
  74. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
  75. package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
  76. package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
  77. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
  78. package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
  79. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
  80. package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
  81. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
  82. package/src/sap/fe/core/controls/Any.js +28 -0
  83. package/src/sap/fe/core/controls/Any.ts +30 -0
  84. package/src/sap/fe/core/controls/CommandExecution.js +50 -16
  85. package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
  86. package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
  87. package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
  88. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
  89. package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
  90. package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
  91. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
  92. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
  93. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
  94. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
  95. package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
  96. package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
  97. package/src/sap/fe/core/controls/FileWrapper.js +360 -0
  98. package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
  99. package/src/sap/fe/core/controls/FilterBar.js +154 -119
  100. package/src/sap/fe/core/controls/FilterBar.ts +128 -123
  101. package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
  102. package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
  103. package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
  104. package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
  105. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
  106. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
  107. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
  108. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
  109. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
  110. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
  111. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
  112. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
  113. package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
  114. package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
  115. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
  116. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
  117. package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
  118. package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
  119. package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
  120. package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
  121. package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
  122. package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
  123. package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
  124. package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
  125. package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
  126. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
  127. package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
  128. package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
  129. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  130. package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
  131. package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
  132. package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
  133. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
  134. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
  135. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
  136. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
  137. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
  138. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
  139. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
  140. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
  141. package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
  142. package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
  143. package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
  144. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
  145. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
  146. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
  147. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
  148. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
  149. package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
  150. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
  151. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
  152. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
  153. package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
  154. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
  155. package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
  156. package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
  157. package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
  158. package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
  159. package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
  160. package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
  161. package/src/sap/fe/core/fpm/Component.js +46 -17
  162. package/src/sap/fe/core/fpm/Component.ts +11 -16
  163. package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
  164. package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
  165. package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
  166. package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
  167. package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
  168. package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
  169. package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
  170. package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
  171. package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
  172. package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
  173. package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
  174. package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
  175. package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
  176. package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
  177. package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
  178. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
  179. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
  180. package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
  181. package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
  182. package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
  183. package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
  184. package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
  185. package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
  186. package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
  187. package/src/sap/fe/core/library.js +13 -5
  188. package/src/sap/fe/core/library.ts +26 -17
  189. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
  190. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
  191. package/src/sap/fe/core/messagebundle.properties +135 -180
  192. package/src/sap/fe/core/messagebundle_ar.properties +31 -64
  193. package/src/sap/fe/core/messagebundle_bg.properties +31 -64
  194. package/src/sap/fe/core/messagebundle_ca.properties +31 -64
  195. package/src/sap/fe/core/messagebundle_cs.properties +31 -64
  196. package/src/sap/fe/core/messagebundle_cy.properties +32 -65
  197. package/src/sap/fe/core/messagebundle_da.properties +31 -64
  198. package/src/sap/fe/core/messagebundle_de.properties +29 -62
  199. package/src/sap/fe/core/messagebundle_el.properties +32 -65
  200. package/src/sap/fe/core/messagebundle_en.properties +32 -65
  201. package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
  202. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
  203. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
  204. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
  205. package/src/sap/fe/core/messagebundle_es.properties +31 -64
  206. package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
  207. package/src/sap/fe/core/messagebundle_et.properties +31 -64
  208. package/src/sap/fe/core/messagebundle_fi.properties +29 -62
  209. package/src/sap/fe/core/messagebundle_fr.properties +36 -69
  210. package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
  211. package/src/sap/fe/core/messagebundle_hi.properties +29 -62
  212. package/src/sap/fe/core/messagebundle_hr.properties +32 -65
  213. package/src/sap/fe/core/messagebundle_hu.properties +30 -63
  214. package/src/sap/fe/core/messagebundle_id.properties +32 -65
  215. package/src/sap/fe/core/messagebundle_it.properties +31 -64
  216. package/src/sap/fe/core/messagebundle_iw.properties +31 -64
  217. package/src/sap/fe/core/messagebundle_ja.properties +29 -62
  218. package/src/sap/fe/core/messagebundle_kk.properties +31 -64
  219. package/src/sap/fe/core/messagebundle_ko.properties +31 -64
  220. package/src/sap/fe/core/messagebundle_lt.properties +31 -64
  221. package/src/sap/fe/core/messagebundle_lv.properties +32 -65
  222. package/src/sap/fe/core/messagebundle_ms.properties +31 -64
  223. package/src/sap/fe/core/messagebundle_nl.properties +31 -64
  224. package/src/sap/fe/core/messagebundle_no.properties +31 -64
  225. package/src/sap/fe/core/messagebundle_pl.properties +34 -67
  226. package/src/sap/fe/core/messagebundle_pt.properties +32 -65
  227. package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
  228. package/src/sap/fe/core/messagebundle_ro.properties +33 -66
  229. package/src/sap/fe/core/messagebundle_ru.properties +33 -66
  230. package/src/sap/fe/core/messagebundle_sh.properties +31 -64
  231. package/src/sap/fe/core/messagebundle_sk.properties +31 -64
  232. package/src/sap/fe/core/messagebundle_sl.properties +29 -62
  233. package/src/sap/fe/core/messagebundle_sv.properties +30 -63
  234. package/src/sap/fe/core/messagebundle_th.properties +31 -64
  235. package/src/sap/fe/core/messagebundle_tr.properties +31 -64
  236. package/src/sap/fe/core/messagebundle_uk.properties +32 -65
  237. package/src/sap/fe/core/messagebundle_vi.properties +31 -64
  238. package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
  239. package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
  240. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
  241. package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
  242. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
  243. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
  244. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
  245. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
  246. package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
  247. package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
  248. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
  249. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
  250. package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
  251. package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
  252. package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
  253. package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
  254. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
  255. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
  256. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
  257. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
  258. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
  259. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
  260. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  261. package/src/sap/fe/core/support/CommonHelper.ts +0 -3
  262. package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
  263. package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
  264. package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
  265. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
  266. package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
  267. package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
  268. package/src/sap/fe/core/templating/FilterHelper.js +4 -4
  269. package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
  270. package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
  271. package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
  272. package/src/sap/fe/core/templating/UIFormatters.js +133 -22
  273. package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
  274. package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
  275. package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
  276. package/src/sap/fe/core/type/Email.js +26 -8
  277. package/src/sap/fe/core/type/Email.ts +8 -7
  278. package/src/sap/fe/core/AnnotationHelper.js +0 -312
  279. package/src/sap/fe/core/AnnotationHelper.ts +0 -315
  280. package/src/sap/fe/core/RouterProxy.js +0 -926
  281. package/src/sap/fe/core/TransactionHelper.js +0 -1562
  282. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
  283. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
  284. package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
  285. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
  286. package/src/sap/fe/core/actions/draft.js +0 -523
  287. package/src/sap/fe/core/actions/messageHandling.js +0 -567
  288. package/src/sap/fe/core/actions/nonDraft.js +0 -20
  289. package/src/sap/fe/core/actions/nonDraft.ts +0 -12
  290. package/src/sap/fe/core/actions/operations.js +0 -1096
  291. package/src/sap/fe/core/actions/sticky.js +0 -130
  292. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
  293. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
  294. package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
  295. package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
@@ -8,50 +8,611 @@
8
8
  * @private
9
9
  * @alias sap.fe.core.controls.filterbar.VisualFilterContainer
10
10
  */
11
- const MassEditHandlers = {
12
- handleMassEditChange: function(oEvent: any) {
13
- const oSource = oEvent && oEvent.getSource();
14
- const aParams = oSource && oSource.getSelectedKey() && oSource.getSelectedKey().split("/");
15
- const oDialog =
16
- oSource &&
17
- oSource
18
- .getParent()
19
- .getParent()
20
- .getParent()
21
- .getParent();
22
- const oFieldsInfoData = oDialog && oDialog.getModel("fieldsInfo").getData();
11
+ import Log from "sap/base/Log";
12
+ import ModelHelper from "sap/fe/core/helpers/ModelHelper";
13
+ import ValueListHelper from "sap/fe/macros/internal/valuehelp/ValueListHelper";
14
+ import ComboBox from "sap/m/ComboBox";
15
+ import Select from "sap/m/Select";
16
+ import Control from "sap/ui/core/Control";
17
+ import Core from "sap/ui/core/Core";
18
+ import Field from "sap/ui/mdc/Field";
19
+ import InParameter from "sap/ui/mdc/field/InParameter";
20
+ import OutParameter from "sap/ui/mdc/field/OutParameter";
21
+ import JSONModel from "sap/ui/model/json/JSONModel";
22
+ import Context from "sap/ui/model/odata/v4/Context";
23
+
24
+ const MassEditHandlers: any = {
25
+ /**
26
+ * Called for property change in the transient context.
27
+ *
28
+ * @function
29
+ * @param {any} newValue New value of the property.
30
+ * @param {string} dataProperty Final context returned after the paginator action
31
+ * @param {string} mdcFieldId Final context returned after the paginator action
32
+ */
33
+ contextPropertyChange: function (newValue: any, dataProperty: string, mdcFieldId: string) {
34
+ // Called for
35
+ // 1. Out Parameters.
36
+ // 2. Transient context property change.
37
+
38
+ const source = Core.byId(mdcFieldId) as Field;
39
+ const transCtx = source && (source.getBindingContext() as Context);
40
+ const fieldInfoModel = source && (source.getModel("fieldsInfo") as JSONModel);
41
+ const values =
42
+ fieldInfoModel.getProperty("/values/" + dataProperty) || fieldInfoModel.getProperty("/unitData/" + dataProperty) || [];
43
+
44
+ if (transCtx && (values.inputType === "InputWithValueHelp" || values.inputType === "InputWithUnit") && !values.valueListInfo) {
45
+ MassEditHandlers._setValueListInfo(transCtx, source, fieldInfoModel, dataProperty);
46
+ }
47
+
48
+ const isDialogOpen = fieldInfoModel && fieldInfoModel.getProperty("/isOpen");
49
+ if (!isDialogOpen || !source.getVisible()) {
50
+ return;
51
+ }
52
+
53
+ MassEditHandlers._updateSelectKey(source, dataProperty, newValue);
54
+ },
55
+
56
+ /**
57
+ * Called for change in the MDC field.
58
+ * This is called on selection done through VHD.
59
+ * This is not called on change of the dropdown as we are using a custom MassEditSelect control and not general Select.
60
+ *
61
+ * @function
62
+ * @param {object} event Event object for change.
63
+ * @param {string} propertyName Property path.
64
+ */
65
+ handleMDCFieldChange: function (event: any, propertyName: string) {
66
+ // Called for
67
+ // 1. VHD property change.
68
+
69
+ const source = event && event.getSource();
70
+ const changePromise = event && event.getParameter("promise");
71
+ const comboBox = source.getContent();
72
+ if (!comboBox || !propertyName) {
73
+ return;
74
+ }
75
+
76
+ changePromise
77
+ .then(MassEditHandlers._updateSelectKeyForMDCFieldChange.bind(MassEditHandlers, source, propertyName))
78
+ .catch((err: any) => {
79
+ Log.warning("VHD selection couldn't be populated in the mass edit field." + err);
80
+ });
81
+ },
82
+
83
+ /**
84
+ * Called for selection change through the drop down.
85
+ *
86
+ * @function
87
+ * @param {object} event Event object for change.
88
+ */
89
+ handleSelectionChange: function (event: any) {
90
+ // Called for Manual selection from dropdown(comboBox or select)
91
+ // 1. VHD select.
92
+ // 2. Any value change in the control.
93
+
94
+ const source = (event && event.getSource()) as any;
95
+ const key = source.getSelectedKey() as string;
96
+ const params = source && key && key.split("/");
97
+ let propertyName;
98
+
99
+ if (params[0] === "UseValueHelpValue") {
100
+ const prevItem = event.getParameter("previousSelectedItem");
101
+ const selectKey = prevItem.getKey();
102
+ propertyName = params.slice(1).join("/");
103
+ MassEditHandlers._onVHSelect(source, propertyName, selectKey);
104
+ return;
105
+ }
106
+
107
+ const fieldInfoModel = source && (source.getModel("fieldsInfo") as JSONModel);
108
+ propertyName = MassEditHandlers._getPropertyNameFromKey(key);
109
+ MassEditHandlers._updateSuggestionForFieldsWithInParameters(
110
+ fieldInfoModel,
111
+ propertyName,
112
+ key.startsWith("Default/") || key.startsWith("ClearFieldValue/"),
113
+ true
114
+ );
115
+ MassEditHandlers._updateSuggestionForFieldsWithOutParameters(
116
+ fieldInfoModel,
117
+ propertyName,
118
+ key.startsWith("Default/") || key.startsWith("ClearFieldValue/"),
119
+ false
120
+ );
121
+ MassEditHandlers._updateResults(source, params, true);
122
+ },
123
+
124
+ /**
125
+ * Update selections to results and the suggests in drop downs.
126
+ *
127
+ * @function
128
+ * @param {MDCField} source MDC field that was changed.
129
+ * @param {string} propertyName Property path.
130
+ * @param {any} value New value.
131
+ */
132
+ _updateSelectKeyForMDCFieldChange: function (source: any, propertyName: string, value: any): void {
133
+ const transCtx = source && source.getBindingContext();
134
+ const fieldInfoModel = source && (source.getModel("fieldsInfo") as JSONModel);
135
+ const values =
136
+ fieldInfoModel.getProperty("/values/" + propertyName) || fieldInfoModel.getProperty("/unitData/" + propertyName) || [];
137
+
138
+ if (transCtx && (values.inputType === "InputWithValueHelp" || values.inputType === "InputWithUnit") && !values.valueListInfo) {
139
+ MassEditHandlers._setValueListInfo(transCtx, source, fieldInfoModel, propertyName);
140
+ }
141
+
142
+ MassEditHandlers._updateSuggestionForFieldsWithOutParameters(fieldInfoModel, propertyName, false, true);
143
+ MassEditHandlers._updateSuggestionForFieldsWithInParameters(fieldInfoModel, propertyName, false, true);
144
+
145
+ const formattedValue = source.getFormFormattedValue();
146
+ MassEditHandlers._updateSelectKey(source, propertyName, value, formattedValue);
147
+ },
148
+
149
+ /**
150
+ * Update suggests for all drop downs with InParameter as the propertyName.
151
+ *
152
+ * @function
153
+ * @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
154
+ * @param {string} propertyName Property path.
155
+ * @param {boolean} resetValues Should the values be reset to original state.
156
+ * @param {boolean} keepExistingSelection Should the existing selection before update remain.
157
+ */
158
+ _updateSuggestionForFieldsWithInParameters: function (
159
+ fieldInfoModel: JSONModel,
160
+ propertyName: string,
161
+ resetValues: boolean,
162
+ keepExistingSelection: boolean
163
+ ): void {
164
+ const values = fieldInfoModel.getProperty("/values");
165
+ const unitData = fieldInfoModel.getProperty("/unitData");
166
+ const fieldPaths = Object.keys(values);
167
+ const unitFieldPaths = Object.keys(unitData);
168
+
169
+ fieldPaths.forEach(
170
+ MassEditHandlers._updateInParameterSuggetions.bind(
171
+ MassEditHandlers,
172
+ fieldInfoModel,
173
+ "/values/",
174
+ propertyName,
175
+ resetValues,
176
+ keepExistingSelection
177
+ )
178
+ );
179
+ unitFieldPaths.forEach(
180
+ MassEditHandlers._updateInParameterSuggetions.bind(
181
+ MassEditHandlers,
182
+ fieldInfoModel,
183
+ "/unitData/",
184
+ propertyName,
185
+ resetValues,
186
+ keepExistingSelection
187
+ )
188
+ );
189
+ },
190
+
191
+ /**
192
+ * Update suggests for a drop down with InParameter as the srcPropertyName.
193
+ *
194
+ * @function
195
+ * @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
196
+ * @param {string} pathPrefix Path in the runtime model.
197
+ * @param {string} srcPropertyName The InParameter Property path.
198
+ * @param {boolean} resetValues Should the values be reset to original state.
199
+ * @param {boolean} keepExistingSelection Should the existing selection before update remain.
200
+ * @param {string} propertyName Property path that needs update of suggestions.
201
+ */
202
+ _updateInParameterSuggetions: function (
203
+ fieldInfoModel: JSONModel,
204
+ pathPrefix: string,
205
+ srcPropertyName: string,
206
+ resetValues: boolean,
207
+ keepExistingSelection: boolean,
208
+ propertyName: string
209
+ ) {
210
+ const valueListInfo = fieldInfoModel.getProperty(pathPrefix + propertyName + "/valueListInfo");
211
+ if (valueListInfo && srcPropertyName != propertyName) {
212
+ const inParameters = valueListInfo.inParameters;
213
+ if (inParameters && inParameters.length > 0 && inParameters.includes(srcPropertyName)) {
214
+ MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, pathPrefix + propertyName, resetValues, keepExistingSelection);
215
+ }
216
+ }
217
+ },
218
+
219
+ /**
220
+ * Update suggests for all OutParameter's drop downs of the propertyName.
221
+ *
222
+ * @function
223
+ * @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
224
+ * @param {string} propertyName Property path.
225
+ * @param {boolean} resetValues Should the values be reset to original state.
226
+ * @param {boolean} keepExistingSelection Should the existing selection before update remain.
227
+ */
228
+ _updateSuggestionForFieldsWithOutParameters: function (
229
+ fieldInfoModel: JSONModel,
230
+ propertyName: string,
231
+ resetValues: boolean,
232
+ keepExistingSelection: boolean
233
+ ): void {
234
+ const valueListInfo =
235
+ fieldInfoModel.getProperty("/values/" + propertyName + "/valueListInfo") ||
236
+ fieldInfoModel.getProperty("/unitData/" + propertyName + "/valueListInfo");
237
+
238
+ if (valueListInfo && valueListInfo.outParameters) {
239
+ const outParameters = valueListInfo.outParameters;
240
+ MassEditHandlers._updateOutParameterSuggetions(outParameters, fieldInfoModel, resetValues, keepExistingSelection);
241
+ const pathPrefix =
242
+ (fieldInfoModel.getProperty(`/values/${propertyName}`) && `/values/${propertyName}`) ||
243
+ (fieldInfoModel.getProperty(`/unitData/${propertyName}`) && `/unitData/${propertyName}`);
244
+ if (pathPrefix) {
245
+ MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, pathPrefix, false, true);
246
+ }
247
+ }
248
+ },
249
+
250
+ /**
251
+ * Update suggests for a drop down with InParameter as the srcPropertyName.
252
+ *
253
+ * @function
254
+ * @param {string} outParameters String arrary of OutParameter property paths.
255
+ * @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
256
+ * @param {boolean} resetValues Should the values be reset to original state.
257
+ * @param {boolean} keepExistingSelection Should the existing selection before update remain.
258
+ */
259
+ _updateOutParameterSuggetions: function (
260
+ outParameters: string[],
261
+ fieldInfoModel: JSONModel,
262
+ resetValues: boolean,
263
+ keepExistingSelection: boolean
264
+ ) {
265
+ const values = fieldInfoModel.getProperty("/values");
266
+ const unitData = fieldInfoModel.getProperty("/unitData");
267
+ const fieldPaths = Object.keys(values);
268
+ const unitFieldPaths = Object.keys(unitData);
269
+
270
+ outParameters.forEach((outParameter: string) => {
271
+ if (fieldPaths.includes(outParameter)) {
272
+ MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, "/values/" + outParameter, resetValues, keepExistingSelection);
273
+ } else if (unitFieldPaths.includes(outParameter)) {
274
+ MassEditHandlers._updateFieldPathSuggestions(
275
+ fieldInfoModel,
276
+ "/unitData/" + outParameter,
277
+ resetValues,
278
+ keepExistingSelection
279
+ );
280
+ }
281
+ });
282
+ },
283
+
284
+ /**
285
+ * Update suggests for a drop down of a field.
286
+ *
287
+ * @function
288
+ * @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
289
+ * @param {string} fieldPathAbsolute Complete runtime property path.
290
+ * @param {boolean} resetValues Should the values be reset to original state.
291
+ * @param {boolean} keepExistingSelection Should the existing selection before update remain.
292
+ */
293
+ _updateFieldPathSuggestions: function (
294
+ fieldInfoModel: JSONModel,
295
+ fieldPathAbsolute: string,
296
+ resetValues: boolean,
297
+ keepExistingSelection: boolean
298
+ ) {
299
+ const options = fieldInfoModel.getProperty(fieldPathAbsolute);
300
+ const defaultOptions = options.defaultOptions;
301
+ const selectedKey = fieldInfoModel.getProperty(fieldPathAbsolute + "/selectedKey");
302
+ const existingSelection = keepExistingSelection && options.find((option: any) => option.key === selectedKey);
303
+ if (resetValues) {
304
+ const selectOptions = options.selectOptions;
305
+ options.length = 0;
306
+ defaultOptions.forEach((defaultOption: any) => options.push(defaultOption));
307
+ selectOptions.forEach((selectOption: any) => options.push(selectOption));
308
+ } else {
309
+ options.length = 0;
310
+ defaultOptions.forEach((defaultOption: any) => options.push(defaultOption));
311
+ }
312
+
313
+ fieldInfoModel.setProperty(fieldPathAbsolute, options);
314
+
315
+ if (existingSelection && !options.includes(existingSelection)) {
316
+ options.push(existingSelection);
317
+ fieldInfoModel.setProperty(fieldPathAbsolute + "/selectedKey", selectedKey);
318
+ }
319
+ },
320
+
321
+ /**
322
+ * Update In and Out Parameters in the MED.
323
+ *
324
+ * @function
325
+ * @param {Context} transCtx The transient context of the MED.
326
+ * @param {MDCField} source MDC field.
327
+ * @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
328
+ * @param {string} propertyName Property path.
329
+ */
330
+ _setValueListInfo: function (transCtx: Context, source: Field, fieldInfoModel: JSONModel, propertyName: string): void {
331
+ const propPath =
332
+ (fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
333
+ (fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
334
+
335
+ if (fieldInfoModel.getProperty(`${propPath}${propertyName}/valueListInfo`)) {
336
+ return;
337
+ }
338
+ const fieldValueHelp = MassEditHandlers._getValueHelp(transCtx, source);
339
+ if (fieldValueHelp && fieldValueHelp.getDialogContent().getTable()) {
340
+ const inParameters = (fieldValueHelp.getInParameters() || []).map((inParam: InParameter) => inParam.getFieldPath());
341
+ const outParameters = (fieldValueHelp.getInParameters() || []).map((outParam: OutParameter) => outParam.getFieldPath());
342
+ const info: any = {
343
+ inParameters: inParameters.map((inParam: any) => inParam.getFieldPath()),
344
+ outParameters: outParameters.map((outParam: any) => outParam.getFieldPath())
345
+ };
346
+ fieldInfoModel.setProperty(`${propPath}${propertyName}/valueListInfo`, info);
347
+ if (info.outParameters.length > 0) {
348
+ MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, `/values/${propertyName}`, false, true);
349
+ }
350
+ } else {
351
+ MassEditHandlers._requestValueList(transCtx, source, fieldInfoModel, propertyName);
352
+ }
353
+ },
354
+
355
+ /**
356
+ * Request and update In and Out Parameters in the MED.
357
+ *
358
+ * @function
359
+ * @param {Context} transCtx The transient context of the MED.
360
+ * @param {MDCField} source MDC field.
361
+ * @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
362
+ * @param {string} propertyName Property path.
363
+ */
364
+ _requestValueList: function (transCtx: Context, source: Field, fieldInfoModel: JSONModel, propertyName: string): void {
365
+ const metaPath = ModelHelper.getMetaPathForContext(transCtx);
366
+ const propertyPath = (metaPath && metaPath + "/" + propertyName) as string;
367
+ const dependents = (source as any)?.getDependents();
368
+ const fieldHelp = source?.getFieldHelp();
369
+ const fieldValueHelp = dependents?.find((dependent: any) => dependent.getId() === fieldHelp);
370
+ if (!fieldValueHelp?.getBindingContext()) {
371
+ fieldValueHelp?.setBindingContext(transCtx);
372
+ }
373
+ const metaModel = transCtx.getModel().getMetaModel();
374
+ ValueListHelper.createVHUIModel(propertyPath, fieldValueHelp);
375
+ const valueListInfo = ValueListHelper.getValueListInfo(fieldValueHelp, metaModel, propertyPath) as Promise<any>;
376
+
377
+ valueListInfo
378
+ .then((vLinfo: any) => {
379
+ const propPath =
380
+ (fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
381
+ (fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
382
+ const info: any = {
383
+ inParameters: vLinfo.inParameters.map((inParam: any) => inParam.getFieldPath()),
384
+ outParameters: vLinfo.outParameters.map((outParam: any) => outParam.getFieldPath())
385
+ };
386
+ fieldInfoModel.setProperty(`${propPath}${propertyName}/valueListInfo`, info);
387
+ if (info.outParameters.length > 0) {
388
+ MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, `/values/${propertyName}`, false, true);
389
+ }
390
+ })
391
+ .catch(() => {
392
+ Log.warning(`Mass Edit: Couldn't load valueList info for ${propertyPath}`);
393
+ });
394
+ },
395
+
396
+ /**
397
+ * Get field help control from MDC field.
398
+ *
399
+ * @function
400
+ * @param {Context} transCtx The transient context of the MED.
401
+ * @param {MDCField} source MDC field.
402
+ * @returns Field Help control.
403
+ */
404
+ _getValueHelp: function (transCtx: Context, source: any): any {
405
+ const dependents = source?.getDependents();
406
+ const fieldHelp = source?.getFieldHelp();
407
+ const fieldValueHelp = dependents?.find((dependent: any) => dependent.getId() === fieldHelp);
408
+ return fieldValueHelp;
409
+ },
410
+
411
+ /**
412
+ * Colled on drop down selection of VHD option.
413
+ *
414
+ * @function
415
+ * @param {MassEditSelect} source Custom Mass Edit Select control.
416
+ * @param {string} propertyName Property path.
417
+ * @param {string} selectKey Previous key before the VHD was selected.
418
+ */
419
+ _onVHSelect: function (source: any, propertyName: string, selectKey: string): void {
420
+ // Called for
421
+ // 1. VHD selected.
422
+
423
+ const fieldInfoModel = source && source.getModel("fieldsInfo");
424
+ const propPath =
425
+ (fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
426
+ (fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
427
+ const transCtx = source.getBindingContext();
428
+ const fieldValueHelp = MassEditHandlers._getValueHelp(transCtx, source.getParent());
429
+ if (!fieldValueHelp?.getBindingContext()) {
430
+ fieldValueHelp?.setBindingContext(transCtx);
431
+ }
432
+ source.fireValueHelpRequest();
433
+
434
+ fieldInfoModel.setProperty(propPath + propertyName + "/selectedKey", selectKey);
435
+ },
436
+
437
+ /**
438
+ * Gets Property name from selection key.
439
+ *
440
+ * @function
441
+ * @param {string} key Selection key.
442
+ * @returns Property name.
443
+ */
444
+ _getPropertyNameFromKey: function (key: string) {
445
+ let propertyName = "";
446
+ if (key.startsWith("Default/") || key.startsWith("ClearFieldValue/") || key.startsWith("UseValueHelpValue/")) {
447
+ propertyName = key.substring(key.indexOf("/") + 1);
448
+ } else {
449
+ propertyName = key.substring(0, key.lastIndexOf("/"));
450
+ }
451
+ return propertyName;
452
+ },
453
+
454
+ /**
455
+ * Update selection to Custom Mass Edit Select from MDC field.
456
+ *
457
+ * @function
458
+ * @param {MDCField} source MDC field.
459
+ * @param {string} propertyName Property path.
460
+ * @param {string} value Value to update.
461
+ * @param {string} fullText Full text to use.
462
+ */
463
+ _updateSelectKey: function (source: Field, propertyName: string, value: any, fullText?: any): void {
464
+ // Called for
465
+ // 1. VHD property change
466
+ // 2. Out Parameters.
467
+ // 3. Transient context property change.
468
+
469
+ const massEditSelect = (source.getContent() as any) as Select;
470
+ if (!massEditSelect || !propertyName) {
471
+ return;
472
+ }
473
+ let key: string = massEditSelect.getSelectedKey();
474
+ if ((key.startsWith("Default/") || key.startsWith("ClearFieldValue/")) && !value) {
475
+ return;
476
+ }
477
+
478
+ const formattedText = MassEditHandlers._valueExists(fullText) ? fullText : value;
479
+ const fieldInfoModel = source && ((source as any).getModel("fieldsInfo") as JSONModel);
480
+ const values =
481
+ fieldInfoModel.getProperty("/values/" + propertyName) || fieldInfoModel.getProperty("/unitData/" + propertyName) || [];
482
+ const propPath =
483
+ (fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
484
+ (fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
485
+
486
+ const relatedField = values.find((fieldData: any) => fieldData?.textInfo?.value === value || fieldData.text === value);
487
+
488
+ if (relatedField) {
489
+ if (
490
+ fullText &&
491
+ relatedField.textInfo &&
492
+ relatedField.textInfo.descriptionPath &&
493
+ (relatedField.text != formattedText || relatedField.textInfo.fullText != formattedText)
494
+ ) {
495
+ // Update the full text only when provided.
496
+ relatedField.text = formattedText;
497
+ relatedField.textInfo.fullText = formattedText;
498
+ relatedField.textInfo.description = source.getAdditionalValue();
499
+ }
500
+ if (relatedField.key === key) {
501
+ fieldInfoModel.setProperty(propPath + propertyName + "/selectedKey", key);
502
+ return;
503
+ }
504
+ key = relatedField.key;
505
+ } else if ([undefined, null, ""].indexOf(value) === -1) {
506
+ key = propertyName + "/" + value;
507
+ const selectionInfo = {
508
+ text: formattedText,
509
+ key,
510
+ textInfo: {
511
+ description: source.getAdditionalValue(),
512
+ descriptionPath: values && values.textInfo && values.textInfo.descriptionPath,
513
+ fullText: formattedText,
514
+ textArrangement: source.getDisplay(),
515
+ value: source.getValue(),
516
+ valuePath: propertyName
517
+ }
518
+ };
519
+ values.push(selectionInfo);
520
+ values.selectOptions = values.selectOptions || [];
521
+ values.selectOptions.push(selectionInfo);
522
+ fieldInfoModel.setProperty(propPath + propertyName, values);
523
+ } else {
524
+ key = "Default/" + propertyName;
525
+ }
526
+
527
+ fieldInfoModel.setProperty(propPath + propertyName + "/selectedKey", key);
528
+ MassEditHandlers._updateResults(massEditSelect);
529
+ },
530
+
531
+ /**
532
+ * Get Value from Drop down.
533
+ *
534
+ * @function
535
+ * @param {Control} source Drop down control.
536
+ * @returns {string} Value of selection.
537
+ */
538
+ _getValue: function (source: Control) {
539
+ return source.getMetadata().getName() === "sap.fe.core.controls.MassEditSelect"
540
+ ? (source as Select).getSelectedItem()?.getText()
541
+ : (source as ComboBox).getValue();
542
+ },
543
+
544
+ _getValueOnEmpty: function (oSource: any, fieldsInfoModel: JSONModel, value: any, sPropertyName: string) {
545
+ if (!value) {
546
+ const values =
547
+ fieldsInfoModel.getProperty(`/values/${sPropertyName}`) || fieldsInfoModel.getProperty(`/unitData/${sPropertyName}`) || [];
548
+ if (values.unitProperty) {
549
+ value = 0;
550
+ oSource.setValue(value);
551
+ } else if (values.inputType === "CheckBox") {
552
+ value = null;
553
+ }
554
+ }
555
+ return value;
556
+ },
557
+
558
+ _valueExists: function (value: any) {
559
+ return value != undefined && value != null;
560
+ },
561
+
562
+ /**
563
+ * Updates selections to runtime model.
564
+ *
565
+ * @function
566
+ * @param {Control} oSource Drop down control.
567
+ * @param {Array} aParams Parts of key in runtime model.
568
+ * @param {boolean} updateTransCtx Should transient context be updated with the value.
569
+ */
570
+ _updateResults: function (oSource: any, aParams: Array<string> = [], updateTransCtx: boolean) {
571
+ // Called for
572
+ // 1. VHD property change.
573
+ // 2. Out parameter.
574
+ // 3. transient context property change.
575
+ const fieldsInfoModel = oSource && oSource.getModel("fieldsInfo");
576
+ const oFieldsInfoData = fieldsInfoModel && fieldsInfoModel.getData();
577
+ let value = MassEditHandlers._getValue(oSource as Control);
578
+ aParams = aParams.length > 0 ? aParams : oSource && oSource.getSelectedKey() && oSource.getSelectedKey().split("/");
579
+
23
580
  let oDataObject;
24
- //TODO - Value Help Handling Load Value Help when respective value is selected in combo Box in dialog
25
- /*
26
- if (aParams[0] === "ValueHelp") {
27
- } */
581
+ const sPropertyName = oSource.getId().substring(oSource.getId().lastIndexOf(":") + 1);
582
+
28
583
  if (aParams[0] === "Default") {
29
- oDataObject = { keyValue: aParams[1], value: aParams[0] };
584
+ oDataObject = {
585
+ keyValue: aParams[1],
586
+ value: aParams[0]
587
+ };
30
588
  } else if (aParams[0] === "ClearFieldValue") {
31
- oDataObject = { keyValue: aParams[1], value: "" };
589
+ value = "";
590
+ value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
591
+ oDataObject = {
592
+ keyValue: aParams[1],
593
+ value: value
594
+ };
32
595
  } else if (!aParams) {
33
- const sPropertyName = oSource.getId().substring(oSource.getId().lastIndexOf(":") + 1);
596
+ value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
34
597
  oDataObject = {
35
598
  keyValue: sPropertyName,
36
- value: oSource.getValue()
599
+ value: value
37
600
  };
38
601
  } else {
39
- const aRelatedField =
40
- aParams[0] &&
41
- oFieldsInfoData.values &&
42
- oFieldsInfoData.values[aParams[0]].filter(function(oFieldData: any) {
43
- return oFieldData.text === oSource.getValue();
44
- });
45
- const iValueIndex = oFieldsInfoData.values[aParams[0]].findIndex(function(data: any) {
46
- return typeof data.text === "boolean" && data.text === Boolean(oSource.getValue());
602
+ const propertyName = aParams.slice(0, -1).join("/");
603
+ const propertyValues =
604
+ fieldsInfoModel.getProperty("/values/" + propertyName) || fieldsInfoModel.getProperty("/unitData/" + propertyName) || [];
605
+
606
+ const relatedField = (propertyValues || []).find(function (oFieldData: any) {
607
+ return oFieldData?.textInfo?.value === value || oFieldData.text === value;
47
608
  });
48
- oDataObject =
49
- aRelatedField && aRelatedField[0] && aRelatedField[0].textInfo
50
- ? { keyValue: aParams[0], value: aRelatedField[0].textInfo.value }
51
- : {
52
- keyValue: aParams[0],
53
- value: iValueIndex !== -1 ? oFieldsInfoData.values[aParams[0]][iValueIndex].text : oSource.getValue()
54
- };
609
+ oDataObject = {
610
+ keyValue: propertyName,
611
+ value:
612
+ relatedField.textInfo && MassEditHandlers._valueExists(relatedField.textInfo.value)
613
+ ? relatedField.textInfo.value
614
+ : relatedField.text
615
+ };
55
616
  }
56
617
  let bExistingElementindex = -1;
57
618
  for (let i = 0; i < oFieldsInfoData.results.length; i++) {
@@ -64,6 +625,14 @@ const MassEditHandlers = {
64
625
  } else {
65
626
  oFieldsInfoData.results.push(oDataObject);
66
627
  }
628
+ if (updateTransCtx) {
629
+ const transCtx = oSource.getBindingContext();
630
+ if (aParams[0] === "Default" || aParams[0] === "ClearFieldValue") {
631
+ transCtx.setProperty(oDataObject.keyValue, null);
632
+ } else if (oDataObject) {
633
+ transCtx.setProperty(oDataObject.keyValue, oDataObject.value);
634
+ }
635
+ }
67
636
  }
68
637
  };
69
638