@sapui5/sap.cux.home 1.135.0 → 1.136.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 (436) hide show
  1. package/package.json +1 -1
  2. package/src/sap/cux/home/AdvancedSettingsPanel-dbg.js +23 -5
  3. package/src/sap/cux/home/AdvancedSettingsPanel-dbg.js.map +1 -1
  4. package/src/sap/cux/home/AdvancedSettingsPanel.d.ts +7 -0
  5. package/src/sap/cux/home/AdvancedSettingsPanel.d.ts.map +1 -1
  6. package/src/sap/cux/home/AdvancedSettingsPanel.js +1 -1
  7. package/src/sap/cux/home/AdvancedSettingsPanel.js.map +1 -1
  8. package/src/sap/cux/home/AdvancedSettingsPanel.ts +24 -5
  9. package/src/sap/cux/home/AppsAdditionPanel-dbg.js +919 -0
  10. package/src/sap/cux/home/AppsAdditionPanel-dbg.js.map +1 -0
  11. package/src/sap/cux/home/AppsAdditionPanel.d.ts +293 -0
  12. package/src/sap/cux/home/AppsAdditionPanel.d.ts.map +1 -0
  13. package/src/sap/cux/home/AppsAdditionPanel.js +6 -0
  14. package/src/sap/cux/home/AppsAdditionPanel.js.map +1 -0
  15. package/src/sap/cux/home/AppsAdditionPanel.ts +757 -0
  16. package/src/sap/cux/home/AppsContainer-dbg.js +42 -28
  17. package/src/sap/cux/home/AppsContainer-dbg.js.map +1 -1
  18. package/src/sap/cux/home/AppsContainer.d.ts +17 -1
  19. package/src/sap/cux/home/AppsContainer.d.ts.map +1 -1
  20. package/src/sap/cux/home/AppsContainer.js +1 -1
  21. package/src/sap/cux/home/AppsContainer.js.map +1 -1
  22. package/src/sap/cux/home/AppsContainer.ts +27 -6
  23. package/src/sap/cux/home/AppsContainerGenericPlaceholder-dbg.js +261 -0
  24. package/src/sap/cux/home/AppsContainerGenericPlaceholder-dbg.js.map +1 -0
  25. package/src/sap/cux/home/AppsContainerGenericPlaceholder.d.ts +8 -0
  26. package/src/sap/cux/home/AppsContainerGenericPlaceholder.d.ts.map +1 -0
  27. package/src/sap/cux/home/AppsContainerGenericPlaceholder.js +6 -0
  28. package/src/sap/cux/home/AppsContainerGenericPlaceholder.js.map +1 -0
  29. package/src/sap/cux/home/AppsContainerGenericPlaceholder.ts +251 -0
  30. package/src/sap/cux/home/BaseAppPanel-dbg.js +4 -5
  31. package/src/sap/cux/home/BaseAppPanel-dbg.js.map +1 -1
  32. package/src/sap/cux/home/BaseAppPanel.d.ts.map +1 -1
  33. package/src/sap/cux/home/BaseAppPanel.js +1 -1
  34. package/src/sap/cux/home/BaseAppPanel.js.map +1 -1
  35. package/src/sap/cux/home/BaseAppPanel.ts +3 -5
  36. package/src/sap/cux/home/BaseAppPersPanel-dbg.js +2 -1
  37. package/src/sap/cux/home/BaseAppPersPanel-dbg.js.map +1 -1
  38. package/src/sap/cux/home/BaseAppPersPanel.d.ts.map +1 -1
  39. package/src/sap/cux/home/BaseAppPersPanel.js +1 -1
  40. package/src/sap/cux/home/BaseAppPersPanel.js.map +1 -1
  41. package/src/sap/cux/home/BaseAppPersPanel.ts +2 -1
  42. package/src/sap/cux/home/BaseContainer-dbg.js +24 -3
  43. package/src/sap/cux/home/BaseContainer-dbg.js.map +1 -1
  44. package/src/sap/cux/home/BaseContainer.d.ts +10 -0
  45. package/src/sap/cux/home/BaseContainer.d.ts.map +1 -1
  46. package/src/sap/cux/home/BaseContainer.js +1 -1
  47. package/src/sap/cux/home/BaseContainer.js.map +1 -1
  48. package/src/sap/cux/home/BaseContainer.ts +24 -2
  49. package/src/sap/cux/home/BaseContainerRenderer-dbg.js +18 -1
  50. package/src/sap/cux/home/BaseContainerRenderer-dbg.js.map +1 -1
  51. package/src/sap/cux/home/BaseContainerRenderer.d.ts +4 -4
  52. package/src/sap/cux/home/BaseContainerRenderer.d.ts.map +1 -1
  53. package/src/sap/cux/home/BaseContainerRenderer.js +1 -1
  54. package/src/sap/cux/home/BaseContainerRenderer.js.map +1 -1
  55. package/src/sap/cux/home/BaseContainerRenderer.ts +25 -4
  56. package/src/sap/cux/home/BaseLayout-dbg.js +22 -2
  57. package/src/sap/cux/home/BaseLayout-dbg.js.map +1 -1
  58. package/src/sap/cux/home/BaseLayout.d.ts +6 -0
  59. package/src/sap/cux/home/BaseLayout.d.ts.map +1 -1
  60. package/src/sap/cux/home/BaseLayout.js +1 -1
  61. package/src/sap/cux/home/BaseLayout.js.map +1 -1
  62. package/src/sap/cux/home/BaseLayout.ts +23 -2
  63. package/src/sap/cux/home/BaseNewsItem-dbg.js +3 -3
  64. package/src/sap/cux/home/BaseNewsItem-dbg.js.map +1 -1
  65. package/src/sap/cux/home/BaseNewsItem.js +1 -1
  66. package/src/sap/cux/home/BaseNewsItem.js.map +1 -1
  67. package/src/sap/cux/home/BaseNewsItem.ts +3 -3
  68. package/src/sap/cux/home/BaseNewsPanel-dbg.js +4 -5
  69. package/src/sap/cux/home/BaseNewsPanel-dbg.js.map +1 -1
  70. package/src/sap/cux/home/BaseNewsPanel.d.ts.map +1 -1
  71. package/src/sap/cux/home/BaseNewsPanel.js +1 -1
  72. package/src/sap/cux/home/BaseNewsPanel.js.map +1 -1
  73. package/src/sap/cux/home/BaseNewsPanel.ts +5 -4
  74. package/src/sap/cux/home/BasePanel-dbg.js +1 -1
  75. package/src/sap/cux/home/BasePanel-dbg.js.map +1 -1
  76. package/src/sap/cux/home/BasePanel.js +1 -1
  77. package/src/sap/cux/home/BasePanel.js.map +1 -1
  78. package/src/sap/cux/home/BasePanel.ts +1 -1
  79. package/src/sap/cux/home/BaseSettingsDialog-dbg.js +11 -0
  80. package/src/sap/cux/home/BaseSettingsDialog-dbg.js.map +1 -1
  81. package/src/sap/cux/home/BaseSettingsDialog.d.ts.map +1 -1
  82. package/src/sap/cux/home/BaseSettingsDialog.js +1 -1
  83. package/src/sap/cux/home/BaseSettingsDialog.js.map +1 -1
  84. package/src/sap/cux/home/BaseSettingsDialog.ts +12 -0
  85. package/src/sap/cux/home/BaseSettingsPanel-dbg.js +67 -2
  86. package/src/sap/cux/home/BaseSettingsPanel-dbg.js.map +1 -1
  87. package/src/sap/cux/home/BaseSettingsPanel.d.ts +42 -0
  88. package/src/sap/cux/home/BaseSettingsPanel.d.ts.map +1 -1
  89. package/src/sap/cux/home/BaseSettingsPanel.gen.d.ts +75 -0
  90. package/src/sap/cux/home/BaseSettingsPanel.js +1 -1
  91. package/src/sap/cux/home/BaseSettingsPanel.js.map +1 -1
  92. package/src/sap/cux/home/BaseSettingsPanel.ts +70 -2
  93. package/src/sap/cux/home/CardsPanel-dbg.js +548 -168
  94. package/src/sap/cux/home/CardsPanel-dbg.js.map +1 -1
  95. package/src/sap/cux/home/CardsPanel.d.ts +121 -15
  96. package/src/sap/cux/home/CardsPanel.d.ts.map +1 -1
  97. package/src/sap/cux/home/CardsPanel.gen.d.ts +78 -0
  98. package/src/sap/cux/home/CardsPanel.js +1 -1
  99. package/src/sap/cux/home/CardsPanel.js.map +1 -1
  100. package/src/sap/cux/home/CardsPanel.ts +450 -97
  101. package/src/sap/cux/home/ContentAdditionDialog-dbg.js +353 -0
  102. package/src/sap/cux/home/ContentAdditionDialog-dbg.js.map +1 -0
  103. package/src/sap/cux/home/ContentAdditionDialog.d.ts +82 -0
  104. package/src/sap/cux/home/ContentAdditionDialog.d.ts.map +1 -0
  105. package/src/sap/cux/home/ContentAdditionDialog.js +6 -0
  106. package/src/sap/cux/home/ContentAdditionDialog.js.map +1 -0
  107. package/src/sap/cux/home/ContentAdditionDialog.ts +214 -0
  108. package/src/sap/cux/home/ErrorPanel-dbg.js +3 -3
  109. package/src/sap/cux/home/ErrorPanel-dbg.js.map +1 -1
  110. package/src/sap/cux/home/ErrorPanel.d.ts.map +1 -1
  111. package/src/sap/cux/home/ErrorPanel.js +1 -1
  112. package/src/sap/cux/home/ErrorPanel.js.map +1 -1
  113. package/src/sap/cux/home/ErrorPanel.ts +4 -2
  114. package/src/sap/cux/home/FavAppPanel-dbg.js +352 -333
  115. package/src/sap/cux/home/FavAppPanel-dbg.js.map +1 -1
  116. package/src/sap/cux/home/FavAppPanel.d.ts.map +1 -1
  117. package/src/sap/cux/home/FavAppPanel.js +1 -1
  118. package/src/sap/cux/home/FavAppPanel.js.map +1 -1
  119. package/src/sap/cux/home/FavAppPanel.ts +63 -54
  120. package/src/sap/cux/home/InsightsAdditionPanel-dbg.js +97 -0
  121. package/src/sap/cux/home/InsightsAdditionPanel-dbg.js.map +1 -0
  122. package/src/sap/cux/home/InsightsAdditionPanel.d.ts +57 -0
  123. package/src/sap/cux/home/InsightsAdditionPanel.d.ts.map +1 -0
  124. package/src/sap/cux/home/InsightsAdditionPanel.js +6 -0
  125. package/src/sap/cux/home/InsightsAdditionPanel.js.map +1 -0
  126. package/src/sap/cux/home/InsightsAdditionPanel.ts +94 -0
  127. package/src/sap/cux/home/InsightsContainer-dbg.js +22 -2
  128. package/src/sap/cux/home/InsightsContainer-dbg.js.map +1 -1
  129. package/src/sap/cux/home/InsightsContainer.d.ts +14 -0
  130. package/src/sap/cux/home/InsightsContainer.d.ts.map +1 -1
  131. package/src/sap/cux/home/InsightsContainer.js +1 -1
  132. package/src/sap/cux/home/InsightsContainer.js.map +1 -1
  133. package/src/sap/cux/home/InsightsContainer.ts +22 -1
  134. package/src/sap/cux/home/InsightsContainerGenericPlaceholder-dbg.js +401 -0
  135. package/src/sap/cux/home/InsightsContainerGenericPlaceholder-dbg.js.map +1 -0
  136. package/src/sap/cux/home/InsightsContainerGenericPlaceholder.d.ts +8 -0
  137. package/src/sap/cux/home/InsightsContainerGenericPlaceholder.d.ts.map +1 -0
  138. package/src/sap/cux/home/InsightsContainerGenericPlaceholder.js +6 -0
  139. package/src/sap/cux/home/InsightsContainerGenericPlaceholder.js.map +1 -0
  140. package/src/sap/cux/home/InsightsContainerGenericPlaceholder.ts +391 -0
  141. package/src/sap/cux/home/KeyUserLayoutSettingsPanel-dbg.js +10 -9
  142. package/src/sap/cux/home/KeyUserLayoutSettingsPanel-dbg.js.map +1 -1
  143. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.d.ts.map +1 -1
  144. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.js +1 -1
  145. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.js.map +1 -1
  146. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.ts +9 -8
  147. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel-dbg.js +2 -2
  148. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel-dbg.js.map +1 -1
  149. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.js +1 -1
  150. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.js.map +1 -1
  151. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.ts +2 -2
  152. package/src/sap/cux/home/KeyUserPagesSettingsPanel-dbg.js +6 -6
  153. package/src/sap/cux/home/KeyUserPagesSettingsPanel-dbg.js.map +1 -1
  154. package/src/sap/cux/home/KeyUserPagesSettingsPanel.js +1 -1
  155. package/src/sap/cux/home/KeyUserPagesSettingsPanel.js.map +1 -1
  156. package/src/sap/cux/home/KeyUserPagesSettingsPanel.ts +6 -6
  157. package/src/sap/cux/home/Layout-dbg.js +58 -33
  158. package/src/sap/cux/home/Layout-dbg.js.map +1 -1
  159. package/src/sap/cux/home/Layout.d.ts +13 -0
  160. package/src/sap/cux/home/Layout.d.ts.map +1 -1
  161. package/src/sap/cux/home/Layout.js +1 -1
  162. package/src/sap/cux/home/Layout.js.map +1 -1
  163. package/src/sap/cux/home/Layout.ts +48 -20
  164. package/src/sap/cux/home/LayoutSettingsPanel-dbg.js +1 -10
  165. package/src/sap/cux/home/LayoutSettingsPanel-dbg.js.map +1 -1
  166. package/src/sap/cux/home/LayoutSettingsPanel.d.ts.map +1 -1
  167. package/src/sap/cux/home/LayoutSettingsPanel.js +1 -1
  168. package/src/sap/cux/home/LayoutSettingsPanel.js.map +1 -1
  169. package/src/sap/cux/home/LayoutSettingsPanel.ts +2 -10
  170. package/src/sap/cux/home/NewsAndPagesContainer-dbg.js +35 -17
  171. package/src/sap/cux/home/NewsAndPagesContainer-dbg.js.map +1 -1
  172. package/src/sap/cux/home/NewsAndPagesContainer.d.ts +7 -0
  173. package/src/sap/cux/home/NewsAndPagesContainer.d.ts.map +1 -1
  174. package/src/sap/cux/home/NewsAndPagesContainer.js +1 -1
  175. package/src/sap/cux/home/NewsAndPagesContainer.js.map +1 -1
  176. package/src/sap/cux/home/NewsAndPagesContainer.ts +40 -16
  177. package/src/sap/cux/home/NewsAndPagesContainerGenericPlaceholder-dbg.js +164 -0
  178. package/src/sap/cux/home/NewsAndPagesContainerGenericPlaceholder-dbg.js.map +1 -0
  179. package/src/sap/cux/home/NewsAndPagesContainerGenericPlaceholder.d.ts +8 -0
  180. package/src/sap/cux/home/NewsAndPagesContainerGenericPlaceholder.d.ts.map +1 -0
  181. package/src/sap/cux/home/NewsAndPagesContainerGenericPlaceholder.js +6 -0
  182. package/src/sap/cux/home/NewsAndPagesContainerGenericPlaceholder.js.map +1 -0
  183. package/src/sap/cux/home/NewsAndPagesContainerGenericPlaceholder.ts +154 -0
  184. package/src/sap/cux/home/NewsGroup-dbg.js +112 -79
  185. package/src/sap/cux/home/NewsGroup-dbg.js.map +1 -1
  186. package/src/sap/cux/home/NewsGroup.d.ts +1 -0
  187. package/src/sap/cux/home/NewsGroup.d.ts.map +1 -1
  188. package/src/sap/cux/home/NewsGroup.js +1 -1
  189. package/src/sap/cux/home/NewsGroup.js.map +1 -1
  190. package/src/sap/cux/home/NewsGroup.ts +136 -100
  191. package/src/sap/cux/home/NewsPanel-dbg.js +541 -173
  192. package/src/sap/cux/home/NewsPanel-dbg.js.map +1 -1
  193. package/src/sap/cux/home/NewsPanel.d.ts +156 -16
  194. package/src/sap/cux/home/NewsPanel.d.ts.map +1 -1
  195. package/src/sap/cux/home/NewsPanel.js +1 -1
  196. package/src/sap/cux/home/NewsPanel.js.map +1 -1
  197. package/src/sap/cux/home/NewsPanel.ts +452 -82
  198. package/src/sap/cux/home/NewsSettingsPanel-dbg.js +61 -20
  199. package/src/sap/cux/home/NewsSettingsPanel-dbg.js.map +1 -1
  200. package/src/sap/cux/home/NewsSettingsPanel.d.ts +14 -0
  201. package/src/sap/cux/home/NewsSettingsPanel.d.ts.map +1 -1
  202. package/src/sap/cux/home/NewsSettingsPanel.js +1 -1
  203. package/src/sap/cux/home/NewsSettingsPanel.js.map +1 -1
  204. package/src/sap/cux/home/NewsSettingsPanel.ts +75 -21
  205. package/src/sap/cux/home/NoDataContainer-dbg.js +3 -3
  206. package/src/sap/cux/home/NoDataContainer-dbg.js.map +1 -1
  207. package/src/sap/cux/home/NoDataContainer.d.ts +1 -0
  208. package/src/sap/cux/home/NoDataContainer.d.ts.map +1 -1
  209. package/src/sap/cux/home/NoDataContainer.js +1 -1
  210. package/src/sap/cux/home/NoDataContainer.js.map +1 -1
  211. package/src/sap/cux/home/NoDataContainer.ts +4 -2
  212. package/src/sap/cux/home/PagePanel-dbg.js +86 -75
  213. package/src/sap/cux/home/PagePanel-dbg.js.map +1 -1
  214. package/src/sap/cux/home/PagePanel.d.ts +25 -3
  215. package/src/sap/cux/home/PagePanel.d.ts.map +1 -1
  216. package/src/sap/cux/home/PagePanel.js +1 -1
  217. package/src/sap/cux/home/PagePanel.js.map +1 -1
  218. package/src/sap/cux/home/PagePanel.ts +91 -76
  219. package/src/sap/cux/home/PageSettingsPanel-dbg.js +16 -15
  220. package/src/sap/cux/home/PageSettingsPanel-dbg.js.map +1 -1
  221. package/src/sap/cux/home/PageSettingsPanel.d.ts.map +1 -1
  222. package/src/sap/cux/home/PageSettingsPanel.js +1 -1
  223. package/src/sap/cux/home/PageSettingsPanel.js.map +1 -1
  224. package/src/sap/cux/home/PageSettingsPanel.ts +15 -14
  225. package/src/sap/cux/home/RecentAppPanel-dbg.js +2 -2
  226. package/src/sap/cux/home/RecentAppPanel-dbg.js.map +1 -1
  227. package/src/sap/cux/home/RecentAppPanel.js +1 -1
  228. package/src/sap/cux/home/RecentAppPanel.js.map +1 -1
  229. package/src/sap/cux/home/RecentAppPanel.ts +2 -2
  230. package/src/sap/cux/home/RecommendedAppPanel-dbg.js +4 -3
  231. package/src/sap/cux/home/RecommendedAppPanel-dbg.js.map +1 -1
  232. package/src/sap/cux/home/RecommendedAppPanel.d.ts.map +1 -1
  233. package/src/sap/cux/home/RecommendedAppPanel.js +1 -1
  234. package/src/sap/cux/home/RecommendedAppPanel.js.map +1 -1
  235. package/src/sap/cux/home/RecommendedAppPanel.ts +4 -2
  236. package/src/sap/cux/home/SettingsDialog-dbg.js +4 -3
  237. package/src/sap/cux/home/SettingsDialog-dbg.js.map +1 -1
  238. package/src/sap/cux/home/SettingsDialog.d.ts.map +1 -1
  239. package/src/sap/cux/home/SettingsDialog.js +1 -1
  240. package/src/sap/cux/home/SettingsDialog.js.map +1 -1
  241. package/src/sap/cux/home/SettingsDialog.ts +4 -2
  242. package/src/sap/cux/home/TaskPanel-dbg.js +16 -12
  243. package/src/sap/cux/home/TaskPanel-dbg.js.map +1 -1
  244. package/src/sap/cux/home/TaskPanel.d.ts +1 -2
  245. package/src/sap/cux/home/TaskPanel.d.ts.map +1 -1
  246. package/src/sap/cux/home/TaskPanel.js +1 -1
  247. package/src/sap/cux/home/TaskPanel.js.map +1 -1
  248. package/src/sap/cux/home/TaskPanel.ts +19 -12
  249. package/src/sap/cux/home/TilesPanel-dbg.js +9 -8
  250. package/src/sap/cux/home/TilesPanel-dbg.js.map +1 -1
  251. package/src/sap/cux/home/TilesPanel.d.ts.map +1 -1
  252. package/src/sap/cux/home/TilesPanel.js +1 -1
  253. package/src/sap/cux/home/TilesPanel.js.map +1 -1
  254. package/src/sap/cux/home/TilesPanel.ts +15 -8
  255. package/src/sap/cux/home/ToDoPanel-dbg.js +34 -25
  256. package/src/sap/cux/home/ToDoPanel-dbg.js.map +1 -1
  257. package/src/sap/cux/home/ToDoPanel.d.ts +0 -7
  258. package/src/sap/cux/home/ToDoPanel.d.ts.map +1 -1
  259. package/src/sap/cux/home/ToDoPanel.js +1 -1
  260. package/src/sap/cux/home/ToDoPanel.js.map +1 -1
  261. package/src/sap/cux/home/ToDoPanel.ts +27 -29
  262. package/src/sap/cux/home/ToDosContainer-dbg.js +27 -18
  263. package/src/sap/cux/home/ToDosContainer-dbg.js.map +1 -1
  264. package/src/sap/cux/home/ToDosContainer.d.ts +7 -0
  265. package/src/sap/cux/home/ToDosContainer.d.ts.map +1 -1
  266. package/src/sap/cux/home/ToDosContainer.js +1 -1
  267. package/src/sap/cux/home/ToDosContainer.js.map +1 -1
  268. package/src/sap/cux/home/ToDosContainer.ts +10 -0
  269. package/src/sap/cux/home/ToDosContainerGenericPlaceholder-dbg.js +84 -0
  270. package/src/sap/cux/home/ToDosContainerGenericPlaceholder-dbg.js.map +1 -0
  271. package/src/sap/cux/home/ToDosContainerGenericPlaceholder.d.ts +8 -0
  272. package/src/sap/cux/home/ToDosContainerGenericPlaceholder.d.ts.map +1 -0
  273. package/src/sap/cux/home/ToDosContainerGenericPlaceholder.js +6 -0
  274. package/src/sap/cux/home/ToDosContainerGenericPlaceholder.js.map +1 -0
  275. package/src/sap/cux/home/ToDosContainerGenericPlaceholder.ts +74 -0
  276. package/src/sap/cux/home/i18n/messagebundle.properties +63 -1
  277. package/src/sap/cux/home/i18n/messagebundle_ar.properties +42 -1
  278. package/src/sap/cux/home/i18n/messagebundle_bg.properties +43 -1
  279. package/src/sap/cux/home/i18n/messagebundle_ca.properties +43 -1
  280. package/src/sap/cux/home/i18n/messagebundle_cnr.properties +43 -1
  281. package/src/sap/cux/home/i18n/messagebundle_cs.properties +43 -1
  282. package/src/sap/cux/home/i18n/messagebundle_cy.properties +43 -1
  283. package/src/sap/cux/home/i18n/messagebundle_da.properties +43 -1
  284. package/src/sap/cux/home/i18n/messagebundle_de.properties +43 -1
  285. package/src/sap/cux/home/i18n/messagebundle_el.properties +44 -2
  286. package/src/sap/cux/home/i18n/messagebundle_en.properties +43 -246
  287. package/src/sap/cux/home/i18n/messagebundle_en_GB.properties +43 -1
  288. package/src/sap/cux/home/i18n/messagebundle_en_US_sappsd.properties +43 -1
  289. package/src/sap/cux/home/i18n/messagebundle_en_US_saprigi.properties +31 -1
  290. package/src/sap/cux/home/i18n/messagebundle_en_US_saptrc.properties +43 -1
  291. package/src/sap/cux/home/i18n/messagebundle_es.properties +43 -1
  292. package/src/sap/cux/home/i18n/messagebundle_es_MX.properties +43 -1
  293. package/src/sap/cux/home/i18n/messagebundle_et.properties +43 -1
  294. package/src/sap/cux/home/i18n/messagebundle_fi.properties +43 -1
  295. package/src/sap/cux/home/i18n/messagebundle_fr.properties +43 -1
  296. package/src/sap/cux/home/i18n/messagebundle_fr_CA.properties +42 -1
  297. package/src/sap/cux/home/i18n/messagebundle_hi.properties +43 -1
  298. package/src/sap/cux/home/i18n/messagebundle_hr.properties +42 -1
  299. package/src/sap/cux/home/i18n/messagebundle_hu.properties +43 -1
  300. package/src/sap/cux/home/i18n/messagebundle_id.properties +47 -5
  301. package/src/sap/cux/home/i18n/messagebundle_it.properties +43 -1
  302. package/src/sap/cux/home/i18n/messagebundle_iw.properties +43 -1
  303. package/src/sap/cux/home/i18n/messagebundle_ja.properties +43 -1
  304. package/src/sap/cux/home/i18n/messagebundle_kk.properties +43 -1
  305. package/src/sap/cux/home/i18n/messagebundle_ko.properties +43 -1
  306. package/src/sap/cux/home/i18n/messagebundle_lt.properties +42 -1
  307. package/src/sap/cux/home/i18n/messagebundle_lv.properties +43 -1
  308. package/src/sap/cux/home/i18n/messagebundle_mk.properties +43 -1
  309. package/src/sap/cux/home/i18n/messagebundle_ms.properties +43 -1
  310. package/src/sap/cux/home/i18n/messagebundle_nl.properties +43 -1
  311. package/src/sap/cux/home/i18n/messagebundle_no.properties +44 -2
  312. package/src/sap/cux/home/i18n/messagebundle_pl.properties +44 -2
  313. package/src/sap/cux/home/i18n/messagebundle_pt.properties +43 -1
  314. package/src/sap/cux/home/i18n/messagebundle_pt_PT.properties +43 -1
  315. package/src/sap/cux/home/i18n/messagebundle_ro.properties +43 -1
  316. package/src/sap/cux/home/i18n/messagebundle_ru.properties +43 -1
  317. package/src/sap/cux/home/i18n/messagebundle_sh.properties +43 -1
  318. package/src/sap/cux/home/i18n/messagebundle_sk.properties +42 -1
  319. package/src/sap/cux/home/i18n/messagebundle_sl.properties +44 -2
  320. package/src/sap/cux/home/i18n/messagebundle_sr.properties +43 -1
  321. package/src/sap/cux/home/i18n/messagebundle_sv.properties +43 -1
  322. package/src/sap/cux/home/i18n/messagebundle_th.properties +43 -2
  323. package/src/sap/cux/home/i18n/messagebundle_tr.properties +42 -1
  324. package/src/sap/cux/home/i18n/messagebundle_uk.properties +43 -1
  325. package/src/sap/cux/home/i18n/messagebundle_vi.properties +42 -1
  326. package/src/sap/cux/home/i18n/messagebundle_zh_CN.properties +43 -1
  327. package/src/sap/cux/home/i18n/messagebundle_zh_TW.properties +42 -1
  328. package/src/sap/cux/home/interface/AppsInterface-dbg.js.map +1 -1
  329. package/src/sap/cux/home/interface/AppsInterface.d.ts +5 -3
  330. package/src/sap/cux/home/interface/AppsInterface.d.ts.map +1 -1
  331. package/src/sap/cux/home/interface/AppsInterface.ts +5 -3
  332. package/src/sap/cux/home/interface/CardsInterface-dbg.js +32 -0
  333. package/src/sap/cux/home/interface/CardsInterface-dbg.js.map +1 -1
  334. package/src/sap/cux/home/interface/CardsInterface.d.ts +320 -55
  335. package/src/sap/cux/home/interface/CardsInterface.d.ts.map +1 -1
  336. package/src/sap/cux/home/interface/CardsInterface.js +5 -1
  337. package/src/sap/cux/home/interface/CardsInterface.js.map +1 -1
  338. package/src/sap/cux/home/interface/CardsInterface.ts +359 -55
  339. package/src/sap/cux/home/library-preload.js +88 -45
  340. package/src/sap/cux/home/library-preload.js.map +1 -1
  341. package/src/sap/cux/home/manifest.json +4 -4
  342. package/src/sap/cux/home/themes/base/AppsContainer.less +12 -0
  343. package/src/sap/cux/home/themes/base/BaseLayout.less +1 -0
  344. package/src/sap/cux/home/themes/base/ContentAdditionDialog.less +69 -0
  345. package/src/sap/cux/home/themes/base/NewsAndPagesContainer.less +37 -12
  346. package/src/sap/cux/home/themes/base/PlaceHolder.less +1374 -0
  347. package/src/sap/cux/home/themes/base/ToDosContainer.less +1 -1
  348. package/src/sap/cux/home/themes/base/library-RTL.css +2 -2
  349. package/src/sap/cux/home/themes/base/library-parameters.json +1 -1
  350. package/src/sap/cux/home/themes/base/library.css +2 -2
  351. package/src/sap/cux/home/themes/base/library.source.less +2 -0
  352. package/src/sap/cux/home/themes/sap_fiori_3/library-RTL.css +2 -2
  353. package/src/sap/cux/home/themes/sap_fiori_3/library-parameters.json +1 -1
  354. package/src/sap/cux/home/themes/sap_fiori_3/library.css +2 -2
  355. package/src/sap/cux/home/themes/sap_fiori_3_dark/library-RTL.css +2 -2
  356. package/src/sap/cux/home/themes/sap_fiori_3_dark/library-parameters.json +1 -1
  357. package/src/sap/cux/home/themes/sap_fiori_3_dark/library.css +2 -2
  358. package/src/sap/cux/home/themes/sap_fiori_3_hcb/AppsContainer.less +1 -0
  359. package/src/sap/cux/home/themes/sap_fiori_3_hcb/library-RTL.css +2 -2
  360. package/src/sap/cux/home/themes/sap_fiori_3_hcb/library-parameters.json +1 -1
  361. package/src/sap/cux/home/themes/sap_fiori_3_hcb/library.css +2 -2
  362. package/src/sap/cux/home/themes/sap_fiori_3_hcb/library.source.less +2 -0
  363. package/src/sap/cux/home/themes/sap_fiori_3_hcw/AppsContainer.less +1 -0
  364. package/src/sap/cux/home/themes/sap_fiori_3_hcw/library-RTL.css +2 -2
  365. package/src/sap/cux/home/themes/sap_fiori_3_hcw/library-parameters.json +1 -1
  366. package/src/sap/cux/home/themes/sap_fiori_3_hcw/library.css +2 -2
  367. package/src/sap/cux/home/themes/sap_fiori_3_hcw/library.source.less +2 -0
  368. package/src/sap/cux/home/themes/sap_horizon/library-RTL.css +2 -2
  369. package/src/sap/cux/home/themes/sap_horizon/library-parameters.json +1 -1
  370. package/src/sap/cux/home/themes/sap_horizon/library.css +2 -2
  371. package/src/sap/cux/home/themes/sap_horizon_dark/library-RTL.css +2 -2
  372. package/src/sap/cux/home/themes/sap_horizon_dark/library-parameters.json +1 -1
  373. package/src/sap/cux/home/themes/sap_horizon_dark/library.css +2 -2
  374. package/src/sap/cux/home/themes/sap_horizon_hcb/AppsContainer.less +1 -0
  375. package/src/sap/cux/home/themes/sap_horizon_hcb/library-RTL.css +2 -2
  376. package/src/sap/cux/home/themes/sap_horizon_hcb/library-parameters.json +1 -1
  377. package/src/sap/cux/home/themes/sap_horizon_hcb/library.css +2 -2
  378. package/src/sap/cux/home/themes/sap_horizon_hcb/library.source.less +2 -0
  379. package/src/sap/cux/home/themes/sap_horizon_hcw/AppsContainer.less +1 -0
  380. package/src/sap/cux/home/themes/sap_horizon_hcw/library-RTL.css +2 -2
  381. package/src/sap/cux/home/themes/sap_horizon_hcw/library-parameters.json +1 -1
  382. package/src/sap/cux/home/themes/sap_horizon_hcw/library.css +2 -2
  383. package/src/sap/cux/home/themes/sap_horizon_hcw/library.source.less +2 -0
  384. package/src/sap/cux/home/utils/AppManager-dbg.js +405 -440
  385. package/src/sap/cux/home/utils/AppManager-dbg.js.map +1 -1
  386. package/src/sap/cux/home/utils/AppManager.d.ts +88 -124
  387. package/src/sap/cux/home/utils/AppManager.d.ts.map +1 -1
  388. package/src/sap/cux/home/utils/AppManager.js +1 -1
  389. package/src/sap/cux/home/utils/AppManager.js.map +1 -1
  390. package/src/sap/cux/home/utils/AppManager.ts +351 -542
  391. package/src/sap/cux/home/utils/Constants-dbg.js +25 -1
  392. package/src/sap/cux/home/utils/Constants-dbg.js.map +1 -1
  393. package/src/sap/cux/home/utils/Constants.d.ts +17 -0
  394. package/src/sap/cux/home/utils/Constants.d.ts.map +1 -1
  395. package/src/sap/cux/home/utils/Constants.js +1 -1
  396. package/src/sap/cux/home/utils/Constants.js.map +1 -1
  397. package/src/sap/cux/home/utils/Constants.ts +20 -1
  398. package/src/sap/cux/home/utils/Device-dbg.js +49 -1
  399. package/src/sap/cux/home/utils/Device-dbg.js.map +1 -1
  400. package/src/sap/cux/home/utils/Device.d.ts +13 -0
  401. package/src/sap/cux/home/utils/Device.d.ts.map +1 -1
  402. package/src/sap/cux/home/utils/Device.js +1 -1
  403. package/src/sap/cux/home/utils/Device.js.map +1 -1
  404. package/src/sap/cux/home/utils/Device.ts +58 -1
  405. package/src/sap/cux/home/utils/InsightsUtils-dbg.js +25 -0
  406. package/src/sap/cux/home/utils/InsightsUtils-dbg.js.map +1 -1
  407. package/src/sap/cux/home/utils/InsightsUtils.d.ts +14 -0
  408. package/src/sap/cux/home/utils/InsightsUtils.d.ts.map +1 -1
  409. package/src/sap/cux/home/utils/InsightsUtils.js +1 -1
  410. package/src/sap/cux/home/utils/InsightsUtils.js.map +1 -1
  411. package/src/sap/cux/home/utils/InsightsUtils.ts +25 -0
  412. package/src/sap/cux/home/utils/PerformanceUtils-dbg.js +5 -2
  413. package/src/sap/cux/home/utils/PerformanceUtils-dbg.js.map +1 -1
  414. package/src/sap/cux/home/utils/PerformanceUtils.d.ts +1 -0
  415. package/src/sap/cux/home/utils/PerformanceUtils.d.ts.map +1 -1
  416. package/src/sap/cux/home/utils/PerformanceUtils.js +1 -1
  417. package/src/sap/cux/home/utils/PerformanceUtils.js.map +1 -1
  418. package/src/sap/cux/home/utils/PerformanceUtils.ts +5 -1
  419. package/src/sap/cux/home/utils/RecommendedCardUtil-dbg.js +1599 -0
  420. package/src/sap/cux/home/utils/RecommendedCardUtil-dbg.js.map +1 -0
  421. package/src/sap/cux/home/utils/RecommendedCardUtil.d.ts +534 -0
  422. package/src/sap/cux/home/utils/RecommendedCardUtil.d.ts.map +1 -0
  423. package/src/sap/cux/home/utils/RecommendedCardUtil.js +6 -0
  424. package/src/sap/cux/home/utils/RecommendedCardUtil.js.map +1 -0
  425. package/src/sap/cux/home/utils/RecommendedCardUtil.ts +1945 -0
  426. package/src/sap/cux/home/utils/SituationUtils-dbg.js +1 -1
  427. package/src/sap/cux/home/utils/SituationUtils-dbg.js.map +1 -1
  428. package/src/sap/cux/home/utils/SituationUtils.js +1 -1
  429. package/src/sap/cux/home/utils/SituationUtils.js.map +1 -1
  430. package/src/sap/cux/home/utils/SituationUtils.ts +1 -1
  431. package/src/sap/cux/home/utils/UshellPersonalizer-dbg.js.map +1 -1
  432. package/src/sap/cux/home/utils/UshellPersonalizer.d.ts +4 -1
  433. package/src/sap/cux/home/utils/UshellPersonalizer.d.ts.map +1 -1
  434. package/src/sap/cux/home/utils/UshellPersonalizer.js.map +1 -1
  435. package/src/sap/cux/home/utils/UshellPersonalizer.ts +2 -1
  436. package/src/sap/cux/home/utils/fragment/appsAdditionContent.fragment.xml +126 -0
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/core/EventBus", "sap/ui/core/format/DateFormat", "sap/ui/model/xml/XMLModel", "sap/ushell/Container", "./BaseNewsPanel", "./MenuItem", "./NewsGroup", "./NewsItem", "./library", "./utils/Device", "./utils/FESRUtil", "./utils/HttpHelper", "./utils/PersonalisationUtils", "./utils/UshellPersonalizer"], function (Log, GenericTile, SlideTile, EventBus, DateFormat, XMLModel, Container, __BaseNewsPanel, __MenuItem, __NewsGroup, __NewsItem, ___library, ___utils_Device, ___utils_FESRUtil, __HttpHelper, __PersonalisationUtils, __UshellPersonalizer) {
5
+ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/core/EventBus", "sap/ui/core/format/DateFormat", "sap/ui/model/xml/XMLModel", "sap/ushell/Container", "./BaseNewsPanel", "./MenuItem", "./NewsGroup", "./NewsItem", "./library", "./utils/Constants", "./utils/DataFormatUtils", "./utils/Device", "./utils/FESRUtil", "./utils/HttpHelper", "./utils/PersonalisationUtils", "./utils/UshellPersonalizer"], function (Log, GenericTile, SlideTile, EventBus, DateFormat, XMLModel, Container, __BaseNewsPanel, __MenuItem, __NewsGroup, __NewsItem, ___library, ___utils_Constants, ___utils_DataFormatUtils, ___utils_Device, ___utils_FESRUtil, __HttpHelper, __PersonalisationUtils, __UshellPersonalizer) {
6
6
  "use strict";
7
7
 
8
8
  function _interopRequireDefault(obj) {
@@ -173,6 +173,8 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
173
173
  const NewsGroup = _interopRequireDefault(__NewsGroup);
174
174
  const NewsItem = _interopRequireDefault(__NewsItem);
175
175
  const NewsType = ___library["NewsType"];
176
+ const DEFAULT_NEWS_URL = ___utils_Constants["DEFAULT_NEWS_URL"];
177
+ const recycleId = ___utils_DataFormatUtils["recycleId"];
176
178
  const DeviceType = ___utils_Device["DeviceType"];
177
179
  const addFESRId = ___utils_FESRUtil["addFESRId"];
178
180
  const HttpHelper = _interopRequireDefault(__HttpHelper);
@@ -181,7 +183,6 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
181
183
  const BASE_URL = "/sap/opu/odata4/ui2/insights_srv/srvd/ui2/",
182
184
  NEWS_FEED_READ_API = BASE_URL + "insights_read_srv/0001/" + "NEWS_FEED",
183
185
  NEWS_FEED_TRANSLATION_API = BASE_URL + "insights_read_srv/0001/" + "NewsFeedColumnTranslation",
184
- NEWS_FEED_COUNT_URL = NEWS_FEED_READ_API + "/$count",
185
186
  DEFAULT_FEED_COUNT = 7,
186
187
  fnImagePlaceholder = function (sPath, N) {
187
188
  return Array.from({
@@ -329,6 +330,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
329
330
  */
330
331
  constructor: function _constructor(id, settings) {
331
332
  BaseNewsPanel.prototype.constructor.call(this, id, settings);
333
+ this._defaultNewsPromise = null;
332
334
  this.customNewsFeedCache = new Map();
333
335
  },
334
336
  /**
@@ -348,7 +350,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
348
350
  mode: "ArticleMode",
349
351
  frameType: "Stretch"
350
352
  })]
351
- }).addStyleClass("newsTileMaxWidth");
353
+ }).addStyleClass("newsTileMaxWidth sapUiSmallMarginTop");
352
354
  addFESRId(this.oNewsTile, "newsSlidePress");
353
355
  this.getNewsWrapper().addContent(this.oNewsTile);
354
356
  this.getNewsWrapper().addStyleClass("newsWrapper");
@@ -361,6 +363,23 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
361
363
  });
362
364
  this.addAggregation("menuItems", this.oManageMenuItem);
363
365
  addFESRId(this.oManageMenuItem, "manageNews");
366
+ let defaultNewsEnabled = this.isURLParamEnabled("default-News");
367
+ // if Default News url param is enabled, show default news only
368
+ if (defaultNewsEnabled) {
369
+ this.setUrl(DEFAULT_NEWS_URL);
370
+ this.setProperty("showCustom", false);
371
+ }
372
+ },
373
+ /**
374
+ *
375
+ * @param paramName name of parameter
376
+ * This method checks if the URL parameter is enabled.
377
+ * @returns {boolean} True if the parameter is enabled, false otherwise.
378
+ * @private
379
+ */
380
+ isURLParamEnabled: function _isURLParamEnabled(paramName) {
381
+ const urlParams = new URLSearchParams(window.location.search);
382
+ return urlParams.get(paramName)?.toUpperCase() === "TRUE";
364
383
  },
365
384
  /**
366
385
  * Retrieves news data asynchronously.
@@ -371,44 +390,82 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
371
390
  getData: function _getData() {
372
391
  try {
373
392
  const _this = this;
374
- function _temp4() {
375
- _this.fireEvent("loaded");
376
- _this._adjustLayout();
393
+ function _temp7() {
394
+ function _temp5() {
395
+ _this.fireEvent("loaded");
396
+ _this.adjustLayout();
397
+ }
398
+ const _temp4 = function () {
399
+ if (sUrl && sUrl !== DEFAULT_NEWS_URL && !_this.getProperty("showCustom")) {
400
+ //rss feed scenario
401
+ return Promise.resolve(_this.initializeXmlModel(sUrl)).then(function (_this$initializeXmlMo) {
402
+ _this.oNewsModel = _this$initializeXmlMo;
403
+ _this.oNewsTile.setModel(_this.oNewsModel);
404
+ _this.oManageMenuItem.setVisible(false);
405
+ });
406
+ } else {
407
+ const _temp3 = function () {
408
+ if (sUrl == DEFAULT_NEWS_URL && !_this.getProperty("showCustom")) {
409
+ // default news scenario
410
+ _this.bNewsLoad = _this.bNewsLoad || false;
411
+ _this.oManageMenuItem.setVisible(true);
412
+ void _this.setCustomNewsFeed("");
413
+ } else {
414
+ const _temp2 = function () {
415
+ if (_this.getProperty("showCustom")) {
416
+ //custom news scenario
417
+ _this.bNewsLoad = _this.bNewsLoad || false;
418
+ _this.oManageMenuItem.setVisible(true);
419
+ const sCustomNewsFeedKey = _this.getCustomFeedKey();
420
+ const _temp = function () {
421
+ if (sCustomNewsFeedKey) {
422
+ return Promise.resolve(_this.setCustomNewsFeed(sCustomNewsFeedKey)).then(function () {});
423
+ } else {
424
+ _this.handleFeedError();
425
+ }
426
+ }();
427
+ if (_temp && _temp.then) return _temp.then(function () {});
428
+ } else {
429
+ _this.handleFeedError();
430
+ }
431
+ }();
432
+ if (_temp2 && _temp2.then) return _temp2.then(function () {});
433
+ }
434
+ }();
435
+ if (_temp3 && _temp3.then) return _temp3.then(function () {});
436
+ }
437
+ }();
438
+ return _temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4);
377
439
  }
378
- const sUrl = _this.getUrl();
379
- const _temp3 = function () {
380
- if (sUrl && !_this.getProperty("showCustom")) {
381
- return Promise.resolve(_this.initializeXmlModel(sUrl)).then(function (_this$initializeXmlMo) {
382
- _this.oNewsModel = _this$initializeXmlMo;
383
- _this.oNewsTile.setModel(_this.oNewsModel);
384
- _this.oManageMenuItem.setVisible(false);
385
- });
386
- } else {
387
- const _temp2 = function () {
388
- if (_this.getProperty("showCustom")) {
389
- _this.bNewsLoad = _this.bNewsLoad || false;
390
- _this.oManageMenuItem.setVisible(true);
391
- const sCustomNewsFeedKey = _this.getCustomFeedKey();
392
- const _temp = function () {
393
- if (sCustomNewsFeedKey) {
394
- return Promise.resolve(_this.setCustomNewsFeed(sCustomNewsFeedKey)).then(function () {});
395
- } else {
396
- _this.handleFeedError();
397
- }
398
- }();
399
- if (_temp && _temp.then) return _temp.then(function () {});
400
- } else {
401
- _this.handleFeedError();
402
- }
403
- }();
404
- if (_temp2 && _temp2.then) return _temp2.then(function () {});
440
+ let sUrl = _this.getUrl();
441
+ let defaultNewsEnabled = _this.isURLParamEnabled("default-News");
442
+ _this.mandatoryNewsFeed = [];
443
+ const _temp6 = function () {
444
+ if (!_this.favNewsFeed) {
445
+ return Promise.resolve(_this.setFavNewsFeed(defaultNewsEnabled)).then(function () {});
405
446
  }
406
447
  }();
407
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
448
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
408
449
  } catch (e) {
409
450
  return Promise.reject(e);
410
451
  }
411
452
  },
453
+ /**
454
+ * Retrieves the current news group data based on the provided id.
455
+ *
456
+ * @param id - The group ID
457
+ * @returns The news group object that matches the extracted group ID, or `undefined`
458
+ * if no matching group is found.
459
+ * @private
460
+ */
461
+ getCurrentNewsGroup: function _getCurrentNewsGroup(id) {
462
+ let aValues = this._defaultNews.value;
463
+ let aGroupId = id.split("-");
464
+ // find the groupid from the sId
465
+ let groupId = aGroupId?.[aGroupId.length - 1];
466
+ let currentGroup = aValues.find(oGroup => oGroup.group_id === groupId);
467
+ return currentGroup;
468
+ },
412
469
  /**
413
470
  * Returns the custom news feed key property of NewsPanel
414
471
  * @returns {string} custom news feed key
@@ -492,7 +549,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
492
549
  loadNewsFeed: function _loadNewsFeed(oDocument, noOfFeeds) {
493
550
  try {
494
551
  const _this3 = this;
495
- function _temp6() {
552
+ function _temp9() {
496
553
  if (!!oDocument?.querySelector("rss") && !!oDocument?.querySelector("item")) {
497
554
  oBindingInfo = {
498
555
  path: "/channel/item/",
@@ -503,7 +560,8 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
503
560
  path: "/entry/",
504
561
  length: noOfFeeds || DEFAULT_FEED_COUNT
505
562
  };
506
- } else if (!!oDocument?.querySelector("customFeed") && !!oDocument?.querySelector("item")) {
563
+ } else if ((!!oDocument?.querySelector("customFeed") || !!oDocument?.querySelector("defaultFeed")) && !!oDocument?.querySelector("item")) {
564
+ _this3.destroyAggregation("newsItems");
507
565
  oBindingInfo = {
508
566
  path: "/item/",
509
567
  length: noOfFeeds || DEFAULT_FEED_COUNT
@@ -515,12 +573,12 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
515
573
  _this3.bindNewsTile(_this3.oNewsTile, oBindingInfo);
516
574
  }
517
575
  let oBindingInfo;
518
- const _temp5 = function () {
519
- if (!oDocument?.querySelector("customFeed")) {
576
+ const _temp8 = function () {
577
+ if (!oDocument?.querySelector("customFeed") && !oDocument?.querySelector("defaultFeed")) {
520
578
  return Promise.resolve(_this3.extractAllImageUrls(oDocument, noOfFeeds || DEFAULT_FEED_COUNT)).then(function () {});
521
579
  }
522
580
  }();
523
- return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
581
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8));
524
582
  } catch (e) {
525
583
  return Promise.reject(e);
526
584
  }
@@ -530,7 +588,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
530
588
  * @returns {void}
531
589
  */
532
590
  handleFeedError: function _handleFeedError() {
533
- if (this.getProperty("showCustom")) {
591
+ if (this.getProperty("showCustom") || this.getUrl() === DEFAULT_NEWS_URL) {
534
592
  this.generateErrorMessage().setVisible(true);
535
593
  this.oNewsTile.setVisible(false);
536
594
  } else {
@@ -553,14 +611,19 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
553
611
  return Promise.reject(e);
554
612
  }
555
613
  },
556
- _adjustLayout: function _adjustLayout() {
614
+ /**
615
+ * Adjust layout based on the device type
616
+ *
617
+ * @private
618
+ */
619
+ adjustLayout: function _adjustLayout() {
557
620
  if (this.getDeviceType() === DeviceType.Mobile) {
558
621
  this.oNewsTile.setHeight("11rem");
559
622
  this.generateErrorMessage().setWidth("100%");
623
+ this.oNewsTile.removeStyleClass("sapUiSmallMarginTop");
560
624
  } else {
561
625
  this.oNewsTile.setHeight("17rem");
562
626
  (this.getNewsWrapper()?.getParent()).setWidth("100%");
563
- this.oNewsTile.addStyleClass("sapUiSmallMarginTopBottom");
564
627
  }
565
628
  },
566
629
  /**
@@ -570,33 +633,38 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
570
633
  */
571
634
  bindNewsTile: function _bindNewsTile(oSlideTile, oBindingInfo) {
572
635
  if (oBindingInfo) {
573
- oSlideTile.bindAggregation("tiles", {
574
- path: oBindingInfo.path,
575
- length: oBindingInfo.length,
576
- templateShareable: false,
577
- factory: (sId, oContext) => {
578
- const newsInfo = oContext.getObject();
579
- let oTile;
580
- if (newsInfo.getElementsByTagName("link").length > 0) {
581
- oTile = new NewsItem("", {
582
- url: newsInfo.getElementsByTagName("link")[0].textContent,
583
- title: newsInfo.getElementsByTagName("title")[0].textContent,
584
- subTitle: newsInfo.getElementsByTagName("description")[0].textContent,
585
- imageUrl: newsInfo.getElementsByTagName("imageUrl")[0].textContent,
586
- footer: this.formatDate(newsInfo.getElementsByTagName("pubDate")[0].textContent)
587
- });
588
- } else {
589
- oTile = new NewsGroup("", {
590
- title: newsInfo.getElementsByTagName("title")[0].textContent,
591
- subTitle: this._i18nBundle.getText("newsFeedDescription"),
592
- imageUrl: newsInfo.getElementsByTagName("imageUrl")[0].textContent,
593
- footer: newsInfo.getElementsByTagName("footer")[0].textContent
594
- });
636
+ if (!oSlideTile.getBinding("tiles")) {
637
+ oSlideTile.bindAggregation("tiles", {
638
+ path: oBindingInfo.path,
639
+ length: oBindingInfo.length,
640
+ templateShareable: false,
641
+ factory: (sId, oContext) => {
642
+ const newsInfo = oContext.getObject();
643
+ let oTile;
644
+ if (newsInfo.getElementsByTagName("link").length > 0) {
645
+ oTile = new NewsItem(recycleId(`${sId}-news-item`), {
646
+ url: newsInfo.getElementsByTagName("link")[0].textContent,
647
+ title: newsInfo.getElementsByTagName("title")[0].textContent,
648
+ subTitle: newsInfo.getElementsByTagName("description")[0].textContent,
649
+ imageUrl: newsInfo.getElementsByTagName("imageUrl")[0].textContent,
650
+ footer: this.formatDate(newsInfo.getElementsByTagName("pubDate")[0].textContent)
651
+ });
652
+ } else {
653
+ let sGroupId = newsInfo.getElementsByTagName("id")?.[0]?.textContent ?? "";
654
+ let newsId = sGroupId ? sId + "-newsgroup-" + sGroupId : sId + "-newsgroup";
655
+ let subTitleNews = newsInfo.getElementsByTagName("subTitle")?.[0]?.textContent ?? "";
656
+ oTile = new NewsGroup(recycleId(newsId), {
657
+ title: newsInfo.getElementsByTagName("title")[0].textContent,
658
+ subTitle: subTitleNews || this._i18nBundle.getText("newsFeedDescription"),
659
+ imageUrl: newsInfo.getElementsByTagName("imageUrl")?.[0]?.textContent,
660
+ footer: newsInfo.getElementsByTagName("footer")?.[0]?.textContent
661
+ });
662
+ }
663
+ this.addAggregation("newsItems", oTile, true);
664
+ return oTile.getTile();
595
665
  }
596
- this.addAggregation("newsItems", oTile, true);
597
- return oTile.getTile();
598
- }
599
- });
666
+ });
667
+ }
600
668
  }
601
669
  },
602
670
  /**
@@ -608,7 +676,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
608
676
  try {
609
677
  const _this5 = this;
610
678
  let i = 0;
611
- const _temp7 = _for(function () {
679
+ const _temp10 = _for(function () {
612
680
  return i < noOfFeeds;
613
681
  }, function () {
614
682
  return i++;
@@ -620,7 +688,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
620
688
  oItemElement.appendChild(oImageUrl);
621
689
  });
622
690
  });
623
- return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(function () {}) : void 0);
691
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(function () {}) : void 0);
624
692
  } catch (e) {
625
693
  return Promise.reject(e);
626
694
  }
@@ -640,10 +708,11 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
640
708
  },
641
709
  /**
642
710
  * Returns the favourite news feed for the custom news
643
- * @returns {any}
711
+ * @returns {IFavNewsFeed}
712
+ * @private
644
713
  */
645
714
  getFavNewsFeed: function _getFavNewsFeed() {
646
- return this.aFavNewsFeed;
715
+ return this.favNewsFeed;
647
716
  },
648
717
  /**
649
718
  * Extracts the image URL from the provided HREF link or link.
@@ -662,64 +731,232 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
662
731
  return Array.isArray(aMatches) && aMatches[1] ? aMatches[1] : fnLoadPlaceholderImage();
663
732
  }).catch(fnLoadPlaceholderImage);
664
733
  },
734
+ /**
735
+ * Checks if the custom file format is CSV based on the custom file name.
736
+ *
737
+ * @param {string} fileName - The custom file name.
738
+ * @returns {boolean} True if the file format is CSV, otherwise false.
739
+ */
740
+ isCSVFileFormat: function _isCSVFileFormat(fileName) {
741
+ return fileName.split(".").pop()?.toLowerCase() === "csv";
742
+ },
743
+ /**
744
+ * Sets the favorite news feed for the user by retrieving personalization data.
745
+ *
746
+ * This method asynchronously fetches the user's personalization data and updates
747
+ * the `favNewsFeed` property with the favorite news feed information.
748
+ *
749
+ * @returns {Promise<void>} A promise that resolves when the favorite news feed is set.
750
+ * @private
751
+ */
752
+ setFavNewsFeed: function _setFavNewsFeed(defaultFeed) {
753
+ try {
754
+ const _this6 = this;
755
+ return Promise.resolve(_this6._getUserPersonalization()).then(function (personalizer) {
756
+ return Promise.resolve(personalizer?.read()).then(function (persData) {
757
+ _this6.favNewsFeed = defaultFeed ? persData?.defaultNewsFeed : persData?.favNewsFeed;
758
+ });
759
+ });
760
+ } catch (e) {
761
+ return Promise.reject(e);
762
+ }
763
+ },
665
764
  /**
666
765
  * This method retrieves the count and feeds of the custom news feed asynchronously.
667
766
  * If the count is not zero, it loads the custom news feed data and returns the feeds.
668
767
  * @param {string} sFeedId - The ID of the custom news feed to set.
669
768
  * @returns {Promise} A promise that resolves to an array of news feeds.
769
+ * @private
670
770
  */
671
771
  setCustomNewsFeed: function _setCustomNewsFeed(sFeedId) {
672
772
  try {
673
- const _this6 = this;
773
+ const _this7 = this;
674
774
  return Promise.resolve(_catch(function () {
675
- _this6.oNewsTile.setVisible(true);
676
- _this6.generateErrorMessage().setVisible(false);
677
- return Promise.resolve(_this6._getUserPersonalization()).then(function (personalizer) {
678
- return Promise.resolve(personalizer?.read()).then(function (persData) {
679
- _this6.aFavNewsFeed = persData?.favNewsFeed;
680
- return Promise.resolve(Promise.all([_this6.getCustomNewsFeedCount(sFeedId), _this6.getCustomNewsFeed(sFeedId, _this6.aFavNewsFeed ? _this6.aFavNewsFeed.showAllPreparationRequired : true)])).then(function (_ref) {
681
- let [iFeedCount, aFeeds] = _ref;
682
- if (aFeeds.length === 0 || iFeedCount === 0) {
683
- throw new Error();
684
- }
685
- //filer selected feeds from all news feed
686
- if (_this6.aFavNewsFeed?.items?.length) {
687
- aFeeds = aFeeds.filter(oNewsFeed => {
688
- return _this6.aFavNewsFeed?.items.includes(oNewsFeed.title);
689
- });
690
- } else if (_this6.aFavNewsFeed?.items?.length === 0) {
691
- _this6.getParent()?.panelLoadedFn("News", {
692
- loaded: true,
693
- count: 0
694
- });
695
- throw new Error("Error: No news feed available");
696
- }
697
- (_this6.getNewsWrapper()?.getParent()).addStyleClass("sapMNewsFlex");
698
- _this6.loadCustomNewsFeed(aFeeds);
699
- });
700
- });
775
+ _this7.oNewsTile.setVisible(true);
776
+ _this7.generateErrorMessage().setVisible(false);
777
+ return Promise.resolve(_this7.setFavNewsFeed(!sFeedId)).then(function () {
778
+ function _temp12() {
779
+ if (aFeeds.length === 0) {
780
+ throw new Error("Error: No news feed available");
781
+ }
782
+ //filer selected feeds from all news feed
783
+ if (_this7.favNewsFeed?.items?.length) {
784
+ aFeeds = aFeeds.filter(oNewsFeed => {
785
+ //return this.favNewsFeed?.items.includes(oNewsFeed.title) || this.mandatoryNewsFeed.includes(oNewsFeed.title);
786
+ return _this7.favNewsFeed?.items.includes(oNewsFeed.title);
787
+ });
788
+ } else if (_this7.favNewsFeed?.items?.length === 0) {
789
+ _this7.getParent()?.panelLoadedFn("News", {
790
+ loaded: true,
791
+ count: 0
792
+ });
793
+ throw new Error("Error: No fav news feed available");
794
+ }
795
+ return Promise.resolve(_this7.loadCustomNewsFeed(aFeeds, sFeedId ? "customFeed" : "defaultFeed")).then(function () {});
796
+ }
797
+ const customFileName = _this7.getProperty("customFileName");
798
+ const showAllPrepRequired = _this7.isCSVFileFormat(customFileName) ? false : _this7.favNewsFeed?.showAllPreparationRequired ?? true;
799
+ if (_this7.isCSVFileFormat(customFileName)) {
800
+ CUSTOM_NEWS_FEED.EXCLUDE_FIELDS.push("PreparationRequired");
801
+ }
802
+ let aFeeds;
803
+ const _temp11 = function () {
804
+ if (sFeedId) {
805
+ return Promise.resolve(_this7.getCustomNewsFeed(sFeedId, showAllPrepRequired)).then(function (_this7$getCustomNewsF) {
806
+ aFeeds = _this7$getCustomNewsF;
807
+ });
808
+ } else {
809
+ return Promise.resolve(_this7.getCustomNewsFeed("", true)).then(function (_this7$getCustomNewsF2) {
810
+ aFeeds = _this7$getCustomNewsF2;
811
+ });
812
+ }
813
+ }();
814
+ return _temp11 && _temp11.then ? _temp11.then(_temp12) : _temp12(_temp11);
701
815
  });
702
816
  }, function (err) {
703
817
  Log.error(err);
704
- _this6.handleFeedError();
818
+ _this7.handleFeedError();
705
819
  }));
706
820
  } catch (e) {
707
821
  return Promise.reject(e);
708
822
  }
709
823
  },
710
824
  /**
711
- * Retrieves the count of custom news feed items identified by the provided feed ID.
712
- * @param {string} sFeedId - The ID of the custom news feed.
713
- * @returns {Promise} A Promise that resolves to the count of custom news feed items.
825
+ * Filters the provided list of news groups to include only those that are marked as mandatory.
826
+ *
827
+ * A news group is considered mandatory if:
828
+ * - Its `mandatory_text` property (at the top level) is set to "TRUE" (case-insensitive).
829
+ * - Any of its associated articles (in the `_group_to_article` array) has a `mandatory_text` property set to "TRUE" (case-insensitive).
830
+ *
831
+ * If any article within a group is marked as mandatory, the group's `mandatory_text` property
832
+ * is updated to "TRUE".
833
+ *
834
+ * @param newsGroups - An array of news groups to filter. Each group is expected to implement the `ICustomNewsFeed` interface.
835
+ * @returns An array of news groups that are marked as mandatory.
836
+ * @private
837
+ */
838
+ filterMandatoryNews: function _filterMandatoryNews(newsGroups) {
839
+ return newsGroups.filter(group => {
840
+ // Check top-level mandatory_text
841
+ const isTopLevelMandatory = group.mandatory_text?.toUpperCase() === "TRUE";
842
+
843
+ // Check if any inner _group_to_article has mandatory_text true
844
+ const isAnyArticleMandatory = group._group_to_article?.some(function (article) {
845
+ //make mandatory_test true at group level if any article is mandatory
846
+ if (article.mandatory_text?.toUpperCase() === "TRUE") {
847
+ group.mandatory_text = "TRUE";
848
+ return true;
849
+ }
850
+ });
851
+ return isTopLevelMandatory || isAnyArticleMandatory;
852
+ });
853
+ },
854
+ /**
855
+ * Retrieves the default news feed details from the given OData response.
856
+ *
857
+ * @param newsResponse - The OData response containing the news feed data.
858
+ * @param showAllPreparationRequired - A boolean flag indicating whether to filter news items that require preparation.
859
+ * @returns An array of default news feed items.
860
+ * @private
861
+ */
862
+ getDefaultNewsFeedDetails: function _getDefaultNewsFeedDetails(newsResponse) {
863
+ let aNews = JSON.parse(JSON.stringify(newsResponse.value || []));
864
+ const aDefaultNews = [];
865
+ const oDefaultFeedDict = {};
866
+ this.mandatoryNewsFeed = [];
867
+ if (aNews?.length > 0) {
868
+ this.mandatoryNewsFeed = this.filterMandatoryNews(aNews).map(oFeed => oFeed.title);
869
+ for (const oFeed of aNews) {
870
+ const title = oFeed.title;
871
+ let subTitle = "";
872
+ if (!oDefaultFeedDict[title]) {
873
+ subTitle = oFeed.subTitle || oFeed.description || "";
874
+ aDefaultNews.push({
875
+ title: title,
876
+ footer: oFeed.footer_text,
877
+ imageUrl: this.getDefaultFeedImage(oFeed),
878
+ id: oFeed.group_id,
879
+ subTitle: subTitle || ""
880
+ });
881
+ oDefaultFeedDict[title] = title;
882
+ }
883
+ }
884
+ }
885
+ return aDefaultNews;
886
+ },
887
+ /**
888
+ * Returns the mandatory news feed details
889
+ * If the mandatory news feed is not set, it returns an empty array.
890
+ *
891
+ * @returns {ICustomNewsFeed[]} The mandatory news feed details.
892
+ * @private
714
893
  */
715
- getCustomNewsFeedCount: function _getCustomNewsFeedCount(sFeedId) {
894
+ getMandatoryDefaultNewsFeed: function _getMandatoryDefaultNewsFeed() {
895
+ return this.mandatoryNewsFeed || [];
896
+ },
897
+ /**
898
+ * Retrieves the default news response, either from cache or by fetching it.
899
+ * @returns {Promise<ODataResponse>} A promise that resolves to the default news data
900
+ * @private
901
+ */
902
+ getDefaultNewsResponse: function _getDefaultNewsResponse() {
903
+ // Return cached data if available
904
+ if (this._defaultNews) {
905
+ return Promise.resolve(this._defaultNews);
906
+ }
907
+ if (!this._defaultNewsPromise) {
908
+ this._defaultNewsPromise = this.fetchDefaultNews();
909
+ }
910
+ return this._defaultNewsPromise;
911
+ },
912
+ /**
913
+ * Fetches the default news data from the server.
914
+ * @returns {Promise<ODataResponse>} A promise that resolves to the fetched news data
915
+ * @throws {Error} If the network request fails or returns a non-OK status
916
+ * @private
917
+ */
918
+ fetchDefaultNews: function _fetchDefaultNews() {
716
919
  try {
717
- const _this7 = this;
718
- let sUrl = encodeURI(NEWS_FEED_COUNT_URL + "?$filter=ChangeId" + " eq " + "'" + sFeedId + "'");
719
- if (!_this7.customNewsFeedCache.has(sUrl)) {
720
- _this7.customNewsFeedCache.set(sUrl, HttpHelper.GetJSON(sUrl));
920
+ const _this8 = this;
921
+ return Promise.resolve(_catch(function () {
922
+ return Promise.resolve(fetch(DEFAULT_NEWS_URL)).then(function (response) {
923
+ if (!response.ok) {
924
+ throw new Error(`HTTP error! status: ${response.status}`);
925
+ }
926
+ return Promise.resolve(response.json()).then(function (_response$json) {
927
+ _this8._defaultNews = _response$json;
928
+ return _this8._defaultNews;
929
+ });
930
+ });
931
+ }, function (error) {
932
+ _this8._defaultNewsPromise = null;
933
+ Log.error(error);
934
+ throw error;
935
+ }));
936
+ } catch (e) {
937
+ return Promise.reject(e);
938
+ }
939
+ },
940
+ /**
941
+ * Retrieves a custom news feed based on the provided feed ID.
942
+ * If no feed ID is provided, it returns the default news feed.
943
+ *
944
+ * @param {string} sFeedId - The ID of the custom news feed to retrieve. If not provided, the default news feed is returned.
945
+ * @param {boolean} showAllPreparationRequired - A flag indicating whether to show all preparation required.
946
+ * @returns {Promise<ICustomNewsFeed[]>} A promise that resolves to an array of custom news feed items.
947
+ * @private
948
+ */
949
+ getCustomNewsFeed: function _getCustomNewsFeed(sFeedId, showAllPreparationRequired) {
950
+ try {
951
+ const _this9 = this;
952
+ if (!sFeedId) {
953
+ return Promise.resolve(_this9.getDefaultNewsResponse()).then(function () {
954
+ let aDefaultgroups = _this9.getDefaultNewsFeedDetails(_this9._defaultNews);
955
+ return aDefaultgroups;
956
+ });
957
+ } else {
958
+ return Promise.resolve(_this9.getCustomFeedData(sFeedId, showAllPreparationRequired));
721
959
  }
722
- return Promise.resolve(_this7.customNewsFeedCache.get(sUrl));
723
960
  } catch (e) {
724
961
  return Promise.reject(e);
725
962
  }
@@ -730,20 +967,21 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
730
967
  * @param {string} sFeedId - The ID of the custom news feed.
731
968
  * @param {boolean} showAllPreparationRequired - Indicates whether to show all preparation required.
732
969
  * @returns {Promise} A Promise that resolves to an array of custom news feed items.
970
+ * @private
733
971
  */
734
- getCustomNewsFeed: function _getCustomNewsFeed(sFeedId, showAllPreparationRequired) {
972
+ getCustomFeedData: function _getCustomFeedData(sFeedId, showAllPreparationRequired) {
735
973
  try {
736
- const _this8 = this;
974
+ const _this10 = this;
737
975
  return Promise.resolve(_catch(function () {
738
- const newsDetailUrl = _this8.getNewsFeedDetailsUrl({
976
+ const newsDetailUrl = _this10.getNewsFeedDetailsUrl({
739
977
  changeId: sFeedId,
740
978
  showAllPreparationRequired
741
979
  });
742
- if (!_this8.customNewsFeedCache.has(newsDetailUrl)) {
743
- _this8.customNewsFeedCache.set(newsDetailUrl, _this8.getAuthNewsFeed(newsDetailUrl));
980
+ if (!_this10.customNewsFeedCache.has(newsDetailUrl)) {
981
+ _this10.customNewsFeedCache.set(newsDetailUrl, _this10.getAuthNewsFeed(newsDetailUrl));
744
982
  }
745
- return Promise.resolve(_this8.customNewsFeedCache.get(newsDetailUrl)).then(function (_this8$customNewsFeed) {
746
- const authorizedNewsFeeds = _this8$customNewsFeed;
983
+ return Promise.resolve(_this10.customNewsFeedCache.get(newsDetailUrl)).then(function (_this10$customNewsFee) {
984
+ const authorizedNewsFeeds = _this10$customNewsFee;
747
985
  const oFeedDict = {};
748
986
  const aFeeds = [];
749
987
  if (authorizedNewsFeeds?.length > 0) {
@@ -753,13 +991,13 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
753
991
  aFeeds.push({
754
992
  title: title.value,
755
993
  footer: oFeed[CUSTOM_NEWS_FEED.VALIDITY].value,
756
- imageUrl: _this8.getCustomFeedImage(title.value)
994
+ imageUrl: _this10.getCustomFeedImage(title.value)
757
995
  });
758
996
  oFeedDict[title.value] = title.value;
759
997
  }
760
998
  });
761
999
  }
762
- return aFeeds;
1000
+ return aFeeds; // group details
763
1001
  });
764
1002
  }, function (err) {
765
1003
  Log.error(err);
@@ -777,8 +1015,10 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
777
1015
  */
778
1016
  getNewsFeedDetailsUrl: function _getNewsFeedDetailsUrl(oNews) {
779
1017
  let sUrl = NEWS_FEED_READ_API + "?$filter=ChangeId eq " + "'" + oNews.changeId + "'";
780
- sUrl = oNews.title ? sUrl + " and LineOfBusiness eq " + "'" + encodeURI(oNews.title) + "'" : sUrl;
781
- sUrl = oNews.showAllPreparationRequired ? sUrl + " and PreparationRequired eq true" : sUrl;
1018
+ const customFileName = this.getProperty("customFileName");
1019
+ if (!this.isCSVFileFormat(customFileName) && oNews.showAllPreparationRequired) {
1020
+ sUrl = sUrl + " and PreparationRequired eq true";
1021
+ }
782
1022
  return sUrl + "&$top=999";
783
1023
  },
784
1024
  /**
@@ -788,13 +1028,13 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
788
1028
  * @param {string} sNewsUrl - The URL of the news feed.
789
1029
  * @returns {Array} The filtered array of news feed items authorized for the user.
790
1030
  */
791
- getAuthNewsFeed: function _getAuthNewsFeed(sNewsUrl) {
1031
+ getAuthNewsFeed: function _getAuthNewsFeed(sNewsUrl, newsTitle) {
792
1032
  try {
793
- const _this9 = this;
1033
+ const _this11 = this;
794
1034
  return Promise.resolve(_catch(function () {
795
- return Promise.resolve(Promise.all([_this9.getAllAvailableApps(), _this9.getNewsFeedDetails(sNewsUrl)])).then(function (_ref2) {
796
- let [aAvailableApps, aNewsFeed] = _ref2;
797
- return aAvailableApps.length === 0 ? aNewsFeed : _this9.arrangeNewsFeeds(aNewsFeed, aAvailableApps);
1035
+ return Promise.resolve(Promise.all([_this11.getAllAvailableApps(), _this11.getNewsFeedDetails(sNewsUrl, newsTitle)])).then(function (_ref) {
1036
+ let [aAvailableApps, aNewsFeed] = _ref;
1037
+ return aAvailableApps.length === 0 ? aNewsFeed : _this11.arrangeNewsFeeds(aNewsFeed, aAvailableApps);
798
1038
  });
799
1039
  }, function (err) {
800
1040
  Log.error(err);
@@ -873,45 +1113,73 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
873
1113
  * @param {string} sUrl - The URL of the news feed details.
874
1114
  * @returns {Array} The array of news feed items with translated and formatted field labels.
875
1115
  */
876
- getNewsFeedDetails: function _getNewsFeedDetails(sUrl) {
1116
+ getNewsFeedDetails: function _getNewsFeedDetails(sUrl, newsTitle) {
877
1117
  try {
878
- const _this10 = this;
879
- if (!_this10.customNewsFeedCache.has(sUrl)) {
880
- _this10.customNewsFeedCache.set(sUrl, HttpHelper.GetJSON(sUrl));
881
- }
882
- const fnFormattedLabel = sLabel => sLabel.replace(/([a-z0-9])([A-Z])/g, "$1 $2");
883
- return Promise.resolve(Promise.all([_this10.customNewsFeedCache.get(sUrl), _this10.getTranslatedText(_this10.getCustomFeedKey())])).then(function (_ref3) {
884
- let [newsResponse, translationResponse] = _ref3;
885
- const aNews = JSON.parse(JSON.stringify(newsResponse.value || []));
886
- const aTranslation = JSON.parse(JSON.stringify(translationResponse.value || []));
887
- return aNews.map(oNews => {
888
- const aFields = Object.keys(oNews);
889
- const aExpandFields = [];
890
- aFields.forEach(oField => {
891
- const oTranslatedField = aTranslation.find(oTranslation => oTranslation?.ColumnName?.toUpperCase() === oField.toUpperCase());
892
- const oTranslatedFieldName = oTranslatedField?.TranslatedName || fnFormattedLabel(oField);
893
- oNews[oField] = {
894
- label: oTranslatedFieldName,
895
- value: oNews[oField]
1118
+ let _exit = false;
1119
+ const _this12 = this;
1120
+ function _temp14(_result3) {
1121
+ if (_exit) return _result3;
1122
+ const fnFormattedLabel = sLabel => sLabel.replace(/([a-z0-9])([A-Z])/g, "$1 $2");
1123
+ return Promise.resolve(Promise.all([HttpHelper.GetJSON(sUrl), _this12.getTranslatedText(_this12.getCustomFeedKey())])).then(function (_ref2) {
1124
+ let [newsResponse, translationResponse] = _ref2;
1125
+ let aNews = JSON.parse(JSON.stringify(newsResponse.value || []));
1126
+ const aTranslation = JSON.parse(JSON.stringify(translationResponse.value || []));
1127
+ aNews = _this12.filterNewsOnTitle(aNews, newsTitle);
1128
+ return aNews.map(oNews => {
1129
+ const aFields = Object.keys(oNews);
1130
+ const aExpandFields = [];
1131
+ aFields.forEach(oField => {
1132
+ const oTranslatedField = aTranslation.find(oTranslation => oTranslation?.ColumnName?.toUpperCase() === oField.toUpperCase());
1133
+ const oTranslatedFieldName = oTranslatedField?.TranslatedName || fnFormattedLabel(oField);
1134
+ oNews[oField] = {
1135
+ label: oTranslatedFieldName,
1136
+ value: oNews[oField]
1137
+ };
1138
+ if (!CUSTOM_NEWS_FEED.EXCLUDE_FIELDS.includes(oField)) {
1139
+ aExpandFields.push(oNews[oField]);
1140
+ }
1141
+ });
1142
+ oNews.Link = {
1143
+ label: _this12._i18nBundle.getText("readMoreLink"),
1144
+ value: oNews[CUSTOM_NEWS_FEED.LINK],
1145
+ text: "Link"
896
1146
  };
897
- if (!CUSTOM_NEWS_FEED.EXCLUDE_FIELDS.includes(oField)) {
898
- aExpandFields.push(oNews[oField]);
899
- }
1147
+ oNews.expanded = aNews.length === 1;
1148
+ oNews.expandFields = aExpandFields;
1149
+ return oNews;
900
1150
  });
901
- oNews.Link = {
902
- label: _this10._i18nBundle.getText("readMoreLink"),
903
- value: oNews[CUSTOM_NEWS_FEED.LINK],
904
- text: "Link"
905
- };
906
- oNews.expanded = aNews.length === 1;
907
- oNews.expandFields = aExpandFields;
908
- return oNews;
909
1151
  });
910
- });
1152
+ }
1153
+ const _temp13 = function () {
1154
+ if (_this12.customNewsFeedCache.has(sUrl)) {
1155
+ return Promise.resolve(_this12.customNewsFeedCache.get(sUrl)).then(function (newsFeedDetails) {
1156
+ const _this12$filterNewsOnT = _this12.filterNewsOnTitle(newsFeedDetails, newsTitle);
1157
+ _exit = true;
1158
+ return _this12$filterNewsOnT;
1159
+ });
1160
+ }
1161
+ }();
1162
+ return Promise.resolve(_temp13 && _temp13.then ? _temp13.then(_temp14) : _temp14(_temp13));
911
1163
  } catch (e) {
912
1164
  return Promise.reject(e);
913
1165
  }
914
1166
  },
1167
+ /**
1168
+ * Filters the news feed data based on the LOB title for the news detail dialog
1169
+ *
1170
+ * @private
1171
+ * @param {ICustomNewsFeed[]} aNews complete news feed data
1172
+ * @param {?string} [newsTitle] title of the line of business to be filtered on
1173
+ * @returns {ICustomNewsFeed[]} filtered news feed for provided LOB title
1174
+ */
1175
+ filterNewsOnTitle: function _filterNewsOnTitle(aNews, newsTitle) {
1176
+ if (newsTitle) {
1177
+ return aNews.filter(newsDetail => {
1178
+ return newsDetail.LineOfBusiness.value === newsTitle;
1179
+ });
1180
+ }
1181
+ return aNews;
1182
+ },
915
1183
  /**
916
1184
  * Retrieves translated text for news feed fields based on the specified feed ID.
917
1185
  * @param {string} sFeedId - The ID of the custom news feed
@@ -935,30 +1203,37 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
935
1203
  * Loads custom news feed into the news panel after parsing JSON feed data to XML format.
936
1204
  * @param {Array} feeds - The array of custom news feed items.
937
1205
  */
938
- loadCustomNewsFeed: function _loadCustomNewsFeed(feeds) {
939
- const oXMLResponse = this.parseJsonToXml(JSON.parse(JSON.stringify(feeds)));
940
- const oParent = this.getParent();
941
- if (!this.oNewsModel) {
942
- this.oNewsModel = new XMLModel(oXMLResponse);
943
- if (!this.bNewsLoad) {
944
- oParent?.panelLoadedFn("News", {
945
- loaded: true,
946
- count: DEFAULT_FEED_COUNT
947
- });
948
- this.bNewsLoad = true;
1206
+ loadCustomNewsFeed: function _loadCustomNewsFeed(feeds, feedType) {
1207
+ try {
1208
+ const _this13 = this;
1209
+ const oXMLResponse = _this13.parseJsonToXml(JSON.parse(JSON.stringify(feeds)), feedType);
1210
+ const oParent = _this13.getParent();
1211
+ if (!_this13.oNewsModel) {
1212
+ _this13.oNewsModel = new XMLModel(oXMLResponse);
1213
+ if (!_this13.bNewsLoad) {
1214
+ oParent?.panelLoadedFn("News", {
1215
+ loaded: true,
1216
+ count: DEFAULT_FEED_COUNT
1217
+ });
1218
+ _this13.bNewsLoad = true;
1219
+ }
1220
+ _this13.oNewsTile.setModel(_this13.oNewsModel);
1221
+ } else {
1222
+ _this13.oNewsTile.unbindAggregation("tiles", false); // Unbind the bound aggregation
1223
+ _this13.oNewsTile.destroyAggregation("tiles"); // Removes old tiles
1224
+ _this13.oNewsModel.setData(oXMLResponse);
949
1225
  }
950
- this.oNewsTile.setModel(this.oNewsModel);
951
- } else {
952
- this.oNewsModel.setData(oXMLResponse);
1226
+ return Promise.resolve(_this13.loadNewsFeed(oXMLResponse, feeds.length)).then(function () {});
1227
+ } catch (e) {
1228
+ return Promise.reject(e);
953
1229
  }
954
- void this.loadNewsFeed(oXMLResponse, feeds.length);
955
1230
  },
956
1231
  /**
957
1232
  * Parses JSON data into XML format.
958
1233
  * @param {JSON[]} json - The JSON data to be parsed into XML.
959
1234
  * @returns {XMLDocument} The XML document representing the parsed JSON data.
960
1235
  */
961
- parseJsonToXml: function _parseJsonToXml(json) {
1236
+ parseJsonToXml: function _parseJsonToXml(json, feedType) {
962
1237
  const _transformJsonForXml = aData => aData.map(data => ({
963
1238
  item: data
964
1239
  }));
@@ -979,7 +1254,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
979
1254
  };
980
1255
  const transformedJson = JSON.parse(JSON.stringify(_transformJsonForXml(json)));
981
1256
  let xml = "<?xml version='1.0' encoding='UTF-8'?>";
982
- const rootToken = "customFeed";
1257
+ const rootToken = feedType;
983
1258
  xml += `<${rootToken}>`;
984
1259
  xml += _jsonToXml(transformedJson);
985
1260
  xml += `</${rootToken}>`;
@@ -991,6 +1266,7 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
991
1266
  * Randomly selects an image from the available images for the feed item.
992
1267
  * @param {string} sFileName - The file name of the custom news feed item.
993
1268
  * @returns {string} The URL of the image for the feed item.
1269
+ * @private
994
1270
  */
995
1271
  getCustomFeedImage: function _getCustomFeedImage(sFileName) {
996
1272
  const sFileBasePath = sap.ui.require.toUrl(CUSTOM_NEWS_FEED.IMAGE_URL);
@@ -1005,6 +1281,98 @@ sap.ui.define(["sap/base/Log", "sap/m/GenericTile", "sap/m/SlideTile", "sap/ui/c
1005
1281
  }
1006
1282
  return sFilePath;
1007
1283
  },
1284
+ /**
1285
+ * Retrieves the default feed image for a given news feed.
1286
+ *
1287
+ * @param {ICustomNewsFeed} oFeed - The custom news feed object.
1288
+ * @returns {string} The base64 encoded image string with the appropriate MIME type, or an empty string if no valid image is found.
1289
+ * @private
1290
+ */
1291
+ getDefaultFeedImage: function _getDefaultFeedImage(oFeed) {
1292
+ const imgId = oFeed?.bg_image_id;
1293
+ const groupImg = oFeed?._group_to_image;
1294
+ if (!groupImg || groupImg.image_id !== imgId) {
1295
+ return "";
1296
+ }
1297
+ let mimeType = groupImg.mime_type;
1298
+ const groupBgImg = groupImg.bg_image;
1299
+ if (!groupBgImg) {
1300
+ return "";
1301
+ }
1302
+ if (mimeType === "application/octet-stream") {
1303
+ mimeType = "image/jpeg";
1304
+ }
1305
+ if (!this.isValidBase64(groupBgImg)) {
1306
+ const base64Data = this.base64UrlToBase64(groupBgImg);
1307
+ return `data:${mimeType};base64,${base64Data}`;
1308
+ }
1309
+ return `data:${mimeType};base64,${groupBgImg}`;
1310
+ },
1311
+ /**
1312
+ * Converts a base64 URL string to a standard base64 string.
1313
+ *
1314
+ * @param {string} base64Url - The base64 URL string to convert.
1315
+ * @returns {string} The converted base64 string.
1316
+ * @private
1317
+ */
1318
+ base64UrlToBase64: function _base64UrlToBase(base64Url) {
1319
+ let base64 = base64Url?.replace(/_/g, "/").replace(/-/g, "+");
1320
+
1321
+ // Add padding if missing (Base64 should be a multiple of 4)
1322
+ while (base64.length % 4 !== 0) {
1323
+ base64 += "=";
1324
+ }
1325
+ return base64;
1326
+ },
1327
+ /**
1328
+ * Checks if a string is a valid base64 encoded string.
1329
+ * @param input The string to validate
1330
+ * @returns boolean indicating if the string is valid base64
1331
+ * @private
1332
+ */
1333
+ isValidBase64: function _isValidBase(input) {
1334
+ // Check if the string exists and isn't empty
1335
+ if (!input || input.length === 0) {
1336
+ return false;
1337
+ }
1338
+
1339
+ // Canonical base64 strings use these characters
1340
+ // A-Z, a-z, 0-9, +, /, and = for padding
1341
+ const base64Regex = /^[A-Za-z0-9+/]*={0,2}$/;
1342
+
1343
+ // Check if the string matches the base64 character set
1344
+ if (!base64Regex.test(input)) {
1345
+ return false;
1346
+ }
1347
+
1348
+ // Check if the length is valid
1349
+ // Base64 strings have a length that is a multiple of 4
1350
+ if (input.length % 4 !== 0) {
1351
+ return false;
1352
+ }
1353
+
1354
+ // Check padding rules
1355
+ if (input.includes("=")) {
1356
+ // If there is padding, it must be at the end
1357
+ const paddingIndex = input.indexOf("=");
1358
+ const lastPaddingIndex = input.lastIndexOf("=");
1359
+ // Padding should only occur at the end
1360
+ if (paddingIndex !== input.length - (input.length - paddingIndex)) {
1361
+ return false;
1362
+ }
1363
+
1364
+ // Can only have 1 or 2 padding characters
1365
+ if (input.length - paddingIndex > 2) {
1366
+ return false;
1367
+ }
1368
+
1369
+ // Make sure all padding is at the end
1370
+ if (paddingIndex !== lastPaddingIndex && lastPaddingIndex !== paddingIndex + 1) {
1371
+ return false;
1372
+ }
1373
+ }
1374
+ return true;
1375
+ },
1008
1376
  _getUserPersonalization: function _getUserPersonalization() {
1009
1377
  const persContainerId = PersonalisationUtils.getPersContainerId(this);
1010
1378
  const ownerComponent = PersonalisationUtils.getOwnerComponent(this);