@sapui5/sap.cux.home 1.136.1 → 1.138.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 (412) hide show
  1. package/package.json +1 -1
  2. package/src/sap/cux/home/.library +1 -1
  3. package/src/sap/cux/home/AdvancedSettingsPanel.d.ts +0 -3
  4. package/src/sap/cux/home/AdvancedSettingsPanel.d.ts.map +1 -1
  5. package/src/sap/cux/home/AdvancedSettingsPanel.js +33 -30
  6. package/src/sap/cux/home/AdvancedSettingsPanel.js.map +1 -1
  7. package/src/sap/cux/home/AdvancedSettingsPanel.ts +13 -7
  8. package/src/sap/cux/home/App.d.ts +1 -2
  9. package/src/sap/cux/home/App.d.ts.map +1 -1
  10. package/src/sap/cux/home/App.js +7 -2
  11. package/src/sap/cux/home/App.js.map +1 -1
  12. package/src/sap/cux/home/App.ts +8 -3
  13. package/src/sap/cux/home/AppsAdditionPanel.d.ts +0 -2
  14. package/src/sap/cux/home/AppsAdditionPanel.d.ts.map +1 -1
  15. package/src/sap/cux/home/AppsAdditionPanel.js +28 -23
  16. package/src/sap/cux/home/AppsAdditionPanel.js.map +1 -1
  17. package/src/sap/cux/home/AppsAdditionPanel.ts +18 -5
  18. package/src/sap/cux/home/AppsContainer.d.ts +0 -1
  19. package/src/sap/cux/home/AppsContainer.d.ts.map +1 -1
  20. package/src/sap/cux/home/AppsContainer.js +22 -25
  21. package/src/sap/cux/home/AppsContainer.js.map +1 -1
  22. package/src/sap/cux/home/AppsContainer.ts +4 -4
  23. package/src/sap/cux/home/BaseApp.d.ts +2 -2
  24. package/src/sap/cux/home/BaseApp.d.ts.map +1 -1
  25. package/src/sap/cux/home/BaseApp.js +10 -3
  26. package/src/sap/cux/home/BaseApp.js.map +1 -1
  27. package/src/sap/cux/home/BaseApp.ts +11 -4
  28. package/src/sap/cux/home/BaseAppPanel.d.ts +0 -2
  29. package/src/sap/cux/home/BaseAppPanel.d.ts.map +1 -1
  30. package/src/sap/cux/home/BaseAppPanel.js +7 -12
  31. package/src/sap/cux/home/BaseAppPanel.js.map +1 -1
  32. package/src/sap/cux/home/BaseAppPanel.ts +2 -4
  33. package/src/sap/cux/home/BaseAppPersPanel.d.ts +3 -3
  34. package/src/sap/cux/home/BaseAppPersPanel.d.ts.map +1 -1
  35. package/src/sap/cux/home/BaseAppPersPanel.js +17 -13
  36. package/src/sap/cux/home/BaseAppPersPanel.js.map +1 -1
  37. package/src/sap/cux/home/BaseAppPersPanel.ts +18 -11
  38. package/src/sap/cux/home/BaseContainer.d.ts +0 -1
  39. package/src/sap/cux/home/BaseContainer.d.ts.map +1 -1
  40. package/src/sap/cux/home/BaseContainer.js +16 -13
  41. package/src/sap/cux/home/BaseContainer.js.map +1 -1
  42. package/src/sap/cux/home/BaseContainer.ts +10 -5
  43. package/src/sap/cux/home/BaseLayout.d.ts +0 -1
  44. package/src/sap/cux/home/BaseLayout.d.ts.map +1 -1
  45. package/src/sap/cux/home/BaseLayout.js +6 -13
  46. package/src/sap/cux/home/BaseLayout.js.map +1 -1
  47. package/src/sap/cux/home/BaseLayout.ts +1 -2
  48. package/src/sap/cux/home/BaseNewsItem.d.ts +1 -2
  49. package/src/sap/cux/home/BaseNewsItem.d.ts.map +1 -1
  50. package/src/sap/cux/home/BaseNewsItem.js +7 -2
  51. package/src/sap/cux/home/BaseNewsItem.js.map +1 -1
  52. package/src/sap/cux/home/BaseNewsItem.ts +8 -3
  53. package/src/sap/cux/home/BaseNewsPanel.d.ts +1 -2
  54. package/src/sap/cux/home/BaseNewsPanel.d.ts.map +1 -1
  55. package/src/sap/cux/home/BaseNewsPanel.js +7 -2
  56. package/src/sap/cux/home/BaseNewsPanel.js.map +1 -1
  57. package/src/sap/cux/home/BaseNewsPanel.ts +8 -3
  58. package/src/sap/cux/home/BasePagePanel.d.ts +1 -2
  59. package/src/sap/cux/home/BasePagePanel.d.ts.map +1 -1
  60. package/src/sap/cux/home/BasePagePanel.gen.d.ts +34 -0
  61. package/src/sap/cux/home/BasePagePanel.js +16 -2
  62. package/src/sap/cux/home/BasePagePanel.js.map +1 -1
  63. package/src/sap/cux/home/BasePagePanel.ts +17 -3
  64. package/src/sap/cux/home/BasePanel.d.ts +0 -1
  65. package/src/sap/cux/home/BasePanel.d.ts.map +1 -1
  66. package/src/sap/cux/home/BasePanel.js +1 -3
  67. package/src/sap/cux/home/BasePanel.js.map +1 -1
  68. package/src/sap/cux/home/BasePanel.ts +0 -1
  69. package/src/sap/cux/home/BaseSettingsDialog.d.ts +0 -1
  70. package/src/sap/cux/home/BaseSettingsDialog.d.ts.map +1 -1
  71. package/src/sap/cux/home/BaseSettingsDialog.js +0 -1
  72. package/src/sap/cux/home/BaseSettingsDialog.js.map +1 -1
  73. package/src/sap/cux/home/BaseSettingsDialog.ts +0 -1
  74. package/src/sap/cux/home/BaseSettingsPanel.d.ts +1 -2
  75. package/src/sap/cux/home/BaseSettingsPanel.d.ts.map +1 -1
  76. package/src/sap/cux/home/BaseSettingsPanel.js +0 -1
  77. package/src/sap/cux/home/BaseSettingsPanel.js.map +1 -1
  78. package/src/sap/cux/home/BaseSettingsPanel.ts +1 -2
  79. package/src/sap/cux/home/CardsPanel.d.ts +0 -1
  80. package/src/sap/cux/home/CardsPanel.d.ts.map +1 -1
  81. package/src/sap/cux/home/CardsPanel.js +103 -104
  82. package/src/sap/cux/home/CardsPanel.js.map +1 -1
  83. package/src/sap/cux/home/CardsPanel.ts +4 -3
  84. package/src/sap/cux/home/ContentAdditionDialog.d.ts +0 -3
  85. package/src/sap/cux/home/ContentAdditionDialog.d.ts.map +1 -1
  86. package/src/sap/cux/home/ContentAdditionDialog.js +3 -7
  87. package/src/sap/cux/home/ContentAdditionDialog.js.map +1 -1
  88. package/src/sap/cux/home/ContentAdditionDialog.ts +3 -7
  89. package/src/sap/cux/home/ErrorPanel.d.ts +1 -2
  90. package/src/sap/cux/home/ErrorPanel.d.ts.map +1 -1
  91. package/src/sap/cux/home/ErrorPanel.gen.d.ts +24 -0
  92. package/src/sap/cux/home/ErrorPanel.js +16 -2
  93. package/src/sap/cux/home/ErrorPanel.js.map +1 -1
  94. package/src/sap/cux/home/ErrorPanel.ts +17 -3
  95. package/src/sap/cux/home/FavAppPanel.d.ts +0 -1
  96. package/src/sap/cux/home/FavAppPanel.d.ts.map +1 -1
  97. package/src/sap/cux/home/FavAppPanel.js +286 -291
  98. package/src/sap/cux/home/FavAppPanel.js.map +1 -1
  99. package/src/sap/cux/home/FavAppPanel.ts +23 -18
  100. package/src/sap/cux/home/FrequentAppPanel.d.ts +0 -1
  101. package/src/sap/cux/home/FrequentAppPanel.d.ts.map +1 -1
  102. package/src/sap/cux/home/FrequentAppPanel.js +1 -4
  103. package/src/sap/cux/home/FrequentAppPanel.js.map +1 -1
  104. package/src/sap/cux/home/FrequentAppPanel.ts +0 -1
  105. package/src/sap/cux/home/Group.d.ts +2 -2
  106. package/src/sap/cux/home/Group.d.ts.map +1 -1
  107. package/src/sap/cux/home/Group.gen.d.ts +47 -1
  108. package/src/sap/cux/home/Group.js +30 -3
  109. package/src/sap/cux/home/Group.js.map +1 -1
  110. package/src/sap/cux/home/Group.ts +26 -6
  111. package/src/sap/cux/home/IToDoPanel.d.ts +1 -2
  112. package/src/sap/cux/home/IToDoPanel.d.ts.map +1 -1
  113. package/src/sap/cux/home/IToDoPanel.js.map +1 -1
  114. package/src/sap/cux/home/IToDoPanel.ts +1 -2
  115. package/src/sap/cux/home/InsightsAdditionPanel.d.ts +0 -4
  116. package/src/sap/cux/home/InsightsAdditionPanel.d.ts.map +1 -1
  117. package/src/sap/cux/home/InsightsAdditionPanel.js +1 -7
  118. package/src/sap/cux/home/InsightsAdditionPanel.js.map +1 -1
  119. package/src/sap/cux/home/InsightsAdditionPanel.ts +1 -8
  120. package/src/sap/cux/home/InsightsCardsSettingsPanel.d.ts +0 -3
  121. package/src/sap/cux/home/InsightsCardsSettingsPanel.d.ts.map +1 -1
  122. package/src/sap/cux/home/InsightsCardsSettingsPanel.js +0 -3
  123. package/src/sap/cux/home/InsightsCardsSettingsPanel.js.map +1 -1
  124. package/src/sap/cux/home/InsightsCardsSettingsPanel.ts +0 -3
  125. package/src/sap/cux/home/InsightsContainer.d.ts +1 -1
  126. package/src/sap/cux/home/InsightsContainer.d.ts.map +1 -1
  127. package/src/sap/cux/home/InsightsContainer.js +19 -3
  128. package/src/sap/cux/home/InsightsContainer.js.map +1 -1
  129. package/src/sap/cux/home/InsightsContainer.ts +17 -4
  130. package/src/sap/cux/home/InsightsTilesSettingsPanel.d.ts +0 -3
  131. package/src/sap/cux/home/InsightsTilesSettingsPanel.d.ts.map +1 -1
  132. package/src/sap/cux/home/InsightsTilesSettingsPanel.js +5 -5
  133. package/src/sap/cux/home/InsightsTilesSettingsPanel.js.map +1 -1
  134. package/src/sap/cux/home/InsightsTilesSettingsPanel.ts +5 -5
  135. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.d.ts +0 -3
  136. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.d.ts.map +1 -1
  137. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.js +0 -3
  138. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.js.map +1 -1
  139. package/src/sap/cux/home/KeyUserLayoutSettingsPanel.ts +0 -3
  140. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.d.ts +0 -3
  141. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.d.ts.map +1 -1
  142. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.js +0 -3
  143. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.js.map +1 -1
  144. package/src/sap/cux/home/KeyUserNewsPagesSettingsPanel.ts +0 -3
  145. package/src/sap/cux/home/KeyUserNewsSettingsPanel.d.ts +0 -3
  146. package/src/sap/cux/home/KeyUserNewsSettingsPanel.d.ts.map +1 -1
  147. package/src/sap/cux/home/KeyUserNewsSettingsPanel.js +22 -13
  148. package/src/sap/cux/home/KeyUserNewsSettingsPanel.js.map +1 -1
  149. package/src/sap/cux/home/KeyUserNewsSettingsPanel.ts +22 -17
  150. package/src/sap/cux/home/KeyUserPagesSettingsPanel.d.ts +0 -3
  151. package/src/sap/cux/home/KeyUserPagesSettingsPanel.d.ts.map +1 -1
  152. package/src/sap/cux/home/KeyUserPagesSettingsPanel.js +0 -3
  153. package/src/sap/cux/home/KeyUserPagesSettingsPanel.js.map +1 -1
  154. package/src/sap/cux/home/KeyUserPagesSettingsPanel.ts +0 -3
  155. package/src/sap/cux/home/KeyUserSettingsDialog.d.ts +0 -3
  156. package/src/sap/cux/home/KeyUserSettingsDialog.d.ts.map +1 -1
  157. package/src/sap/cux/home/KeyUserSettingsDialog.js +1 -4
  158. package/src/sap/cux/home/KeyUserSettingsDialog.js.map +1 -1
  159. package/src/sap/cux/home/KeyUserSettingsDialog.ts +1 -4
  160. package/src/sap/cux/home/Layout.d.ts +0 -1
  161. package/src/sap/cux/home/Layout.d.ts.map +1 -1
  162. package/src/sap/cux/home/Layout.js +7 -10
  163. package/src/sap/cux/home/Layout.js.map +1 -1
  164. package/src/sap/cux/home/Layout.ts +3 -4
  165. package/src/sap/cux/home/LayoutSettingsPanel.d.ts +0 -3
  166. package/src/sap/cux/home/LayoutSettingsPanel.d.ts.map +1 -1
  167. package/src/sap/cux/home/LayoutSettingsPanel.js +0 -3
  168. package/src/sap/cux/home/LayoutSettingsPanel.js.map +1 -1
  169. package/src/sap/cux/home/LayoutSettingsPanel.ts +0 -3
  170. package/src/sap/cux/home/MenuItem.d.ts +0 -1
  171. package/src/sap/cux/home/MenuItem.d.ts.map +1 -1
  172. package/src/sap/cux/home/MenuItem.js +0 -1
  173. package/src/sap/cux/home/MenuItem.js.map +1 -1
  174. package/src/sap/cux/home/MenuItem.ts +0 -1
  175. package/src/sap/cux/home/NewsAndPagesContainer.d.ts +0 -1
  176. package/src/sap/cux/home/NewsAndPagesContainer.d.ts.map +1 -1
  177. package/src/sap/cux/home/NewsAndPagesContainer.js +0 -1
  178. package/src/sap/cux/home/NewsAndPagesContainer.js.map +1 -1
  179. package/src/sap/cux/home/NewsAndPagesContainer.ts +0 -1
  180. package/src/sap/cux/home/NewsGroup.d.ts +0 -3
  181. package/src/sap/cux/home/NewsGroup.d.ts.map +1 -1
  182. package/src/sap/cux/home/NewsGroup.js +1 -4
  183. package/src/sap/cux/home/NewsGroup.js.map +1 -1
  184. package/src/sap/cux/home/NewsGroup.ts +1 -4
  185. package/src/sap/cux/home/NewsItem.d.ts +0 -3
  186. package/src/sap/cux/home/NewsItem.d.ts.map +1 -1
  187. package/src/sap/cux/home/NewsItem.js +0 -3
  188. package/src/sap/cux/home/NewsItem.js.map +1 -1
  189. package/src/sap/cux/home/NewsItem.ts +0 -3
  190. package/src/sap/cux/home/NewsPanel.d.ts +0 -1
  191. package/src/sap/cux/home/NewsPanel.d.ts.map +1 -1
  192. package/src/sap/cux/home/NewsPanel.js +84 -96
  193. package/src/sap/cux/home/NewsPanel.js.map +1 -1
  194. package/src/sap/cux/home/NewsPanel.ts +32 -35
  195. package/src/sap/cux/home/NewsSettingsPanel.d.ts +6 -3
  196. package/src/sap/cux/home/NewsSettingsPanel.d.ts.map +1 -1
  197. package/src/sap/cux/home/NewsSettingsPanel.js +18 -4
  198. package/src/sap/cux/home/NewsSettingsPanel.js.map +1 -1
  199. package/src/sap/cux/home/NewsSettingsPanel.ts +16 -4
  200. package/src/sap/cux/home/NoDataContainer.d.ts +0 -1
  201. package/src/sap/cux/home/NoDataContainer.d.ts.map +1 -1
  202. package/src/sap/cux/home/NoDataContainer.js +0 -1
  203. package/src/sap/cux/home/NoDataContainer.js.map +1 -1
  204. package/src/sap/cux/home/NoDataContainer.ts +0 -1
  205. package/src/sap/cux/home/Page.d.ts +0 -3
  206. package/src/sap/cux/home/Page.d.ts.map +1 -1
  207. package/src/sap/cux/home/Page.gen.d.ts +0 -12
  208. package/src/sap/cux/home/Page.js +0 -7
  209. package/src/sap/cux/home/Page.js.map +1 -1
  210. package/src/sap/cux/home/Page.ts +0 -7
  211. package/src/sap/cux/home/PagePanel.d.ts +0 -4
  212. package/src/sap/cux/home/PagePanel.d.ts.map +1 -1
  213. package/src/sap/cux/home/PagePanel.js +5 -11
  214. package/src/sap/cux/home/PagePanel.js.map +1 -1
  215. package/src/sap/cux/home/PagePanel.ts +4 -9
  216. package/src/sap/cux/home/PageSettingsPanel.d.ts +0 -3
  217. package/src/sap/cux/home/PageSettingsPanel.d.ts.map +1 -1
  218. package/src/sap/cux/home/PageSettingsPanel.js +3 -5
  219. package/src/sap/cux/home/PageSettingsPanel.js.map +1 -1
  220. package/src/sap/cux/home/PageSettingsPanel.ts +3 -5
  221. package/src/sap/cux/home/RecentAppPanel.d.ts +0 -1
  222. package/src/sap/cux/home/RecentAppPanel.d.ts.map +1 -1
  223. package/src/sap/cux/home/RecentAppPanel.js +2 -6
  224. package/src/sap/cux/home/RecentAppPanel.js.map +1 -1
  225. package/src/sap/cux/home/RecentAppPanel.ts +0 -1
  226. package/src/sap/cux/home/RecommendedAppPanel.d.ts +0 -1
  227. package/src/sap/cux/home/RecommendedAppPanel.d.ts.map +1 -1
  228. package/src/sap/cux/home/RecommendedAppPanel.js +0 -1
  229. package/src/sap/cux/home/RecommendedAppPanel.js.map +1 -1
  230. package/src/sap/cux/home/RecommendedAppPanel.ts +0 -1
  231. package/src/sap/cux/home/SettingsDialog.d.ts +0 -3
  232. package/src/sap/cux/home/SettingsDialog.d.ts.map +1 -1
  233. package/src/sap/cux/home/SettingsDialog.js +25 -23
  234. package/src/sap/cux/home/SettingsDialog.js.map +1 -1
  235. package/src/sap/cux/home/SettingsDialog.ts +9 -16
  236. package/src/sap/cux/home/SituationPanel.d.ts +0 -1
  237. package/src/sap/cux/home/SituationPanel.d.ts.map +1 -1
  238. package/src/sap/cux/home/SituationPanel.js +0 -1
  239. package/src/sap/cux/home/SituationPanel.js.map +1 -1
  240. package/src/sap/cux/home/SituationPanel.ts +0 -1
  241. package/src/sap/cux/home/SpaceInsightsPanel.d.ts +207 -0
  242. package/src/sap/cux/home/SpaceInsightsPanel.d.ts.map +1 -0
  243. package/src/sap/cux/home/SpaceInsightsPanel.gen.d.ts +200 -0
  244. package/src/sap/cux/home/SpaceInsightsPanel.js +786 -0
  245. package/src/sap/cux/home/SpaceInsightsPanel.js.map +1 -0
  246. package/src/sap/cux/home/SpaceInsightsPanel.ts +628 -0
  247. package/src/sap/cux/home/SpacePanel.d.ts +117 -0
  248. package/src/sap/cux/home/SpacePanel.d.ts.map +1 -0
  249. package/src/sap/cux/home/SpacePanel.gen.d.ts +77 -0
  250. package/src/sap/cux/home/SpacePanel.js +599 -0
  251. package/src/sap/cux/home/SpacePanel.js.map +1 -0
  252. package/src/sap/cux/home/SpacePanel.ts +461 -0
  253. package/src/sap/cux/home/TaskPanel.d.ts +0 -1
  254. package/src/sap/cux/home/TaskPanel.d.ts.map +1 -1
  255. package/src/sap/cux/home/TaskPanel.js +14 -24
  256. package/src/sap/cux/home/TaskPanel.js.map +1 -1
  257. package/src/sap/cux/home/TaskPanel.ts +6 -11
  258. package/src/sap/cux/home/TilesPanel.d.ts +0 -1
  259. package/src/sap/cux/home/TilesPanel.d.ts.map +1 -1
  260. package/src/sap/cux/home/TilesPanel.js +4 -5
  261. package/src/sap/cux/home/TilesPanel.js.map +1 -1
  262. package/src/sap/cux/home/TilesPanel.ts +3 -3
  263. package/src/sap/cux/home/ToDoPanel.d.ts +11 -1
  264. package/src/sap/cux/home/ToDoPanel.d.ts.map +1 -1
  265. package/src/sap/cux/home/ToDoPanel.js +67 -17
  266. package/src/sap/cux/home/ToDoPanel.js.map +1 -1
  267. package/src/sap/cux/home/ToDoPanel.ts +70 -13
  268. package/src/sap/cux/home/ToDosContainer.d.ts +0 -1
  269. package/src/sap/cux/home/ToDosContainer.d.ts.map +1 -1
  270. package/src/sap/cux/home/ToDosContainer.js +0 -1
  271. package/src/sap/cux/home/ToDosContainer.js.map +1 -1
  272. package/src/sap/cux/home/ToDosContainer.ts +0 -1
  273. package/src/sap/cux/home/i18n/messagebundle.properties +8 -6
  274. package/src/sap/cux/home/i18n/messagebundle_ar.properties +55 -9
  275. package/src/sap/cux/home/i18n/messagebundle_bg.properties +55 -9
  276. package/src/sap/cux/home/i18n/messagebundle_ca.properties +55 -9
  277. package/src/sap/cux/home/i18n/messagebundle_cnr.properties +55 -9
  278. package/src/sap/cux/home/i18n/messagebundle_cs.properties +59 -13
  279. package/src/sap/cux/home/i18n/messagebundle_cy.properties +55 -9
  280. package/src/sap/cux/home/i18n/messagebundle_da.properties +55 -9
  281. package/src/sap/cux/home/i18n/messagebundle_de.properties +55 -9
  282. package/src/sap/cux/home/i18n/messagebundle_el.properties +55 -9
  283. package/src/sap/cux/home/i18n/messagebundle_en.properties +55 -9
  284. package/src/sap/cux/home/i18n/messagebundle_en_GB.properties +55 -9
  285. package/src/sap/cux/home/i18n/messagebundle_en_US_sappsd.properties +55 -9
  286. package/src/sap/cux/home/i18n/messagebundle_en_US_saprigi.properties +46 -6
  287. package/src/sap/cux/home/i18n/messagebundle_en_US_saptrc.properties +55 -9
  288. package/src/sap/cux/home/i18n/messagebundle_es.properties +62 -16
  289. package/src/sap/cux/home/i18n/messagebundle_es_MX.properties +55 -9
  290. package/src/sap/cux/home/i18n/messagebundle_et.properties +55 -9
  291. package/src/sap/cux/home/i18n/messagebundle_fi.properties +54 -8
  292. package/src/sap/cux/home/i18n/messagebundle_fr.properties +55 -9
  293. package/src/sap/cux/home/i18n/messagebundle_fr_CA.properties +55 -9
  294. package/src/sap/cux/home/i18n/messagebundle_hi.properties +55 -9
  295. package/src/sap/cux/home/i18n/messagebundle_hr.properties +55 -9
  296. package/src/sap/cux/home/i18n/messagebundle_hu.properties +56 -10
  297. package/src/sap/cux/home/i18n/messagebundle_id.properties +55 -9
  298. package/src/sap/cux/home/i18n/messagebundle_it.properties +55 -9
  299. package/src/sap/cux/home/i18n/messagebundle_iw.properties +55 -9
  300. package/src/sap/cux/home/i18n/messagebundle_ja.properties +55 -9
  301. package/src/sap/cux/home/i18n/messagebundle_kk.properties +56 -10
  302. package/src/sap/cux/home/i18n/messagebundle_ko.properties +58 -12
  303. package/src/sap/cux/home/i18n/messagebundle_lt.properties +55 -9
  304. package/src/sap/cux/home/i18n/messagebundle_lv.properties +55 -9
  305. package/src/sap/cux/home/i18n/messagebundle_mk.properties +55 -9
  306. package/src/sap/cux/home/i18n/messagebundle_ms.properties +55 -9
  307. package/src/sap/cux/home/i18n/messagebundle_nl.properties +55 -9
  308. package/src/sap/cux/home/i18n/messagebundle_no.properties +55 -9
  309. package/src/sap/cux/home/i18n/messagebundle_pl.properties +56 -10
  310. package/src/sap/cux/home/i18n/messagebundle_pt.properties +55 -9
  311. package/src/sap/cux/home/i18n/messagebundle_pt_PT.properties +55 -9
  312. package/src/sap/cux/home/i18n/messagebundle_ro.properties +55 -9
  313. package/src/sap/cux/home/i18n/messagebundle_ru.properties +55 -9
  314. package/src/sap/cux/home/i18n/messagebundle_sh.properties +55 -9
  315. package/src/sap/cux/home/i18n/messagebundle_sk.properties +55 -9
  316. package/src/sap/cux/home/i18n/messagebundle_sl.properties +55 -9
  317. package/src/sap/cux/home/i18n/messagebundle_sr.properties +55 -9
  318. package/src/sap/cux/home/i18n/messagebundle_sv.properties +55 -9
  319. package/src/sap/cux/home/i18n/messagebundle_th.properties +55 -9
  320. package/src/sap/cux/home/i18n/messagebundle_tr.properties +55 -9
  321. package/src/sap/cux/home/i18n/messagebundle_uk.properties +57 -11
  322. package/src/sap/cux/home/i18n/messagebundle_vi.properties +55 -9
  323. package/src/sap/cux/home/i18n/messagebundle_zh_CN.properties +55 -9
  324. package/src/sap/cux/home/i18n/messagebundle_zh_TW.properties +56 -10
  325. package/src/sap/cux/home/interface/AppsInterface.d.ts +1 -0
  326. package/src/sap/cux/home/interface/AppsInterface.d.ts.map +1 -1
  327. package/src/sap/cux/home/interface/AppsInterface.js.map +1 -1
  328. package/src/sap/cux/home/interface/AppsInterface.ts +1 -0
  329. package/src/sap/cux/home/library.d.ts +3 -4
  330. package/src/sap/cux/home/library.d.ts.map +1 -1
  331. package/src/sap/cux/home/library.js +3 -4
  332. package/src/sap/cux/home/library.js.map +1 -1
  333. package/src/sap/cux/home/library.ts +3 -4
  334. package/src/sap/cux/home/themes/base/ContentAdditionDialog.less +1 -1
  335. package/src/sap/cux/home/themes/base/InsightsContainer.less +4 -0
  336. package/src/sap/cux/home/utils/Accessibility.js +3 -4
  337. package/src/sap/cux/home/utils/Accessibility.js.map +1 -1
  338. package/src/sap/cux/home/utils/Accessibility.ts +2 -2
  339. package/src/sap/cux/home/utils/AnalyticalCardSkeleton.d.ts +0 -1
  340. package/src/sap/cux/home/utils/AnalyticalCardSkeleton.d.ts.map +1 -1
  341. package/src/sap/cux/home/utils/AnalyticalCardSkeleton.js +0 -1
  342. package/src/sap/cux/home/utils/AnalyticalCardSkeleton.js.map +1 -1
  343. package/src/sap/cux/home/utils/AnalyticalCardSkeleton.ts +0 -1
  344. package/src/sap/cux/home/utils/AppManager.d.ts +12 -7
  345. package/src/sap/cux/home/utils/AppManager.d.ts.map +1 -1
  346. package/src/sap/cux/home/utils/AppManager.js +172 -172
  347. package/src/sap/cux/home/utils/AppManager.js.map +1 -1
  348. package/src/sap/cux/home/utils/AppManager.ts +42 -23
  349. package/src/sap/cux/home/utils/BatchHelper.d.ts +0 -3
  350. package/src/sap/cux/home/utils/BatchHelper.d.ts.map +1 -1
  351. package/src/sap/cux/home/utils/BatchHelper.js +5 -10
  352. package/src/sap/cux/home/utils/BatchHelper.js.map +1 -1
  353. package/src/sap/cux/home/utils/BatchHelper.ts +0 -3
  354. package/src/sap/cux/home/utils/CommonUtils.d.ts +9 -0
  355. package/src/sap/cux/home/utils/CommonUtils.d.ts.map +1 -1
  356. package/src/sap/cux/home/utils/CommonUtils.js +23 -2
  357. package/src/sap/cux/home/utils/CommonUtils.js.map +1 -1
  358. package/src/sap/cux/home/utils/CommonUtils.ts +25 -1
  359. package/src/sap/cux/home/utils/Constants.d.ts +4 -5
  360. package/src/sap/cux/home/utils/Constants.d.ts.map +1 -1
  361. package/src/sap/cux/home/utils/Constants.js +5 -5
  362. package/src/sap/cux/home/utils/Constants.js.map +1 -1
  363. package/src/sap/cux/home/utils/Constants.ts +4 -5
  364. package/src/sap/cux/home/utils/DecisionDialog.d.ts +0 -3
  365. package/src/sap/cux/home/utils/DecisionDialog.d.ts.map +1 -1
  366. package/src/sap/cux/home/utils/DecisionDialog.js +0 -3
  367. package/src/sap/cux/home/utils/DecisionDialog.js.map +1 -1
  368. package/src/sap/cux/home/utils/DecisionDialog.ts +0 -3
  369. package/src/sap/cux/home/utils/Device.js +1 -2
  370. package/src/sap/cux/home/utils/Device.js.map +1 -1
  371. package/src/sap/cux/home/utils/FESRUtil.js +1 -1
  372. package/src/sap/cux/home/utils/FESRUtil.js.map +1 -1
  373. package/src/sap/cux/home/utils/FESRUtil.ts +1 -1
  374. package/src/sap/cux/home/utils/FeatureUtils.d.ts +20 -13
  375. package/src/sap/cux/home/utils/FeatureUtils.d.ts.map +1 -1
  376. package/src/sap/cux/home/utils/FeatureUtils.js +38 -33
  377. package/src/sap/cux/home/utils/FeatureUtils.js.map +1 -1
  378. package/src/sap/cux/home/utils/FeatureUtils.ts +39 -32
  379. package/src/sap/cux/home/utils/HttpHelper.d.ts +7 -3
  380. package/src/sap/cux/home/utils/HttpHelper.d.ts.map +1 -1
  381. package/src/sap/cux/home/utils/HttpHelper.js +43 -3
  382. package/src/sap/cux/home/utils/HttpHelper.js.map +1 -1
  383. package/src/sap/cux/home/utils/HttpHelper.ts +25 -3
  384. package/src/sap/cux/home/utils/KeyUserPersonalization.d.ts.map +1 -1
  385. package/src/sap/cux/home/utils/KeyUserPersonalization.js +33 -13
  386. package/src/sap/cux/home/utils/KeyUserPersonalization.js.map +1 -1
  387. package/src/sap/cux/home/utils/KeyUserPersonalization.ts +2 -2
  388. package/src/sap/cux/home/utils/PageManager.d.ts +0 -3
  389. package/src/sap/cux/home/utils/PageManager.d.ts.map +1 -1
  390. package/src/sap/cux/home/utils/PageManager.js +8 -14
  391. package/src/sap/cux/home/utils/PageManager.js.map +1 -1
  392. package/src/sap/cux/home/utils/PageManager.ts +0 -3
  393. package/src/sap/cux/home/utils/PersonalisationUtils.d.ts +0 -3
  394. package/src/sap/cux/home/utils/PersonalisationUtils.d.ts.map +1 -1
  395. package/src/sap/cux/home/utils/PersonalisationUtils.js +1 -5
  396. package/src/sap/cux/home/utils/PersonalisationUtils.js.map +1 -1
  397. package/src/sap/cux/home/utils/PersonalisationUtils.ts +0 -3
  398. package/src/sap/cux/home/utils/SituationUtils.js +1 -2
  399. package/src/sap/cux/home/utils/SituationUtils.js.map +1 -1
  400. package/src/sap/cux/home/utils/TaskUtils.js +1 -2
  401. package/src/sap/cux/home/utils/TaskUtils.js.map +1 -1
  402. package/src/sap/cux/home/utils/UshellPersonalizer.d.ts +0 -3
  403. package/src/sap/cux/home/utils/UshellPersonalizer.d.ts.map +1 -1
  404. package/src/sap/cux/home/utils/UshellPersonalizer.js +0 -3
  405. package/src/sap/cux/home/utils/UshellPersonalizer.js.map +1 -1
  406. package/src/sap/cux/home/utils/UshellPersonalizer.ts +0 -3
  407. package/src/sap/cux/home/utils/fragment/appsAdditionContent.fragment.xml +16 -17
  408. package/src/sap/cux/home/utils/CardSkeleton.d.ts +0 -54
  409. package/src/sap/cux/home/utils/CardSkeleton.d.ts.map +0 -1
  410. package/src/sap/cux/home/utils/CardSkeleton.js +0 -61
  411. package/src/sap/cux/home/utils/CardSkeleton.js.map +0 -1
  412. package/src/sap/cux/home/utils/CardSkeleton.ts +0 -53
@@ -0,0 +1,628 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
+ */
5
+
6
+ import Log from "sap/base/Log";
7
+ import GridContainer from "sap/f/GridContainer";
8
+ import GridContainerItemLayoutData from "sap/f/GridContainerItemLayoutData";
9
+ import Button from "sap/m/Button";
10
+ import GenericTile from "sap/m/GenericTile";
11
+ import HeaderContainer from "sap/m/HeaderContainer";
12
+ import VBox from "sap/m/VBox";
13
+ import { LoadState } from "sap/m/library";
14
+ import Event from "sap/ui/base/Event";
15
+ import ManagedObject from "sap/ui/base/ManagedObject";
16
+ import Control from "sap/ui/core/Control";
17
+ import type { MetadataOptions } from "sap/ui/core/Element";
18
+ import UI5Element from "sap/ui/core/Element";
19
+ import Lib from "sap/ui/core/Lib";
20
+ import Context from "sap/ui/model/Context";
21
+ import JSONModel from "sap/ui/model/json/JSONModel";
22
+ import Container from "sap/ushell/Container";
23
+ import S4MyHome from "sap/ushell/api/S4MyHome";
24
+ import VisualizationInstantiation from "sap/ushell/services/VisualizationInstantiation";
25
+ import BasePanel from "./BasePanel";
26
+ import InsightsContainer from "./InsightsContainer";
27
+ import MenuItem from "./MenuItem";
28
+ import { $SpaceInsightsPanelSettings } from "./SpaceInsightsPanel";
29
+ import { ICustomVisualization, ISectionAndVisualization } from "./interface/AppsInterface";
30
+ import { ISpace } from "./interface/PageSpaceInterface";
31
+ import AppManager from "./utils/AppManager";
32
+ import { filterVisualizations, getPageManagerInstance } from "./utils/CommonUtils";
33
+ import { recycleId } from "./utils/DataFormatUtils";
34
+ import { DeviceType, fetchElementProperties } from "./utils/Device";
35
+ import { createShowMoreActionButton, createShowMoreMenuItem, getAssociatedFullScreenMenuItem } from "./utils/InsightsUtils";
36
+ import PageManager from "./utils/PageManager";
37
+
38
+ export enum tilesMenuItems {
39
+ REFRESH = "tiles-refresh",
40
+ ADD_APPS = "tiles-addSmartApps",
41
+ EDIT_TILES = "tiles-editTiles"
42
+ }
43
+
44
+ export enum tilesContainerMenuItems {
45
+ REFRESH = "container-tiles-refresh",
46
+ ADD_APPS = "container-tiles-addSmartApps",
47
+ EDIT_TILES = "container-tiles-editTiles",
48
+ SHOW_MORE = "tilesContainerFullScreenMenuItem"
49
+ }
50
+
51
+ export enum tilesActionButtons {
52
+ ADD_TILES = "tiles-addTilesButton"
53
+ }
54
+
55
+ export enum tilesContainerActionButtons {
56
+ ADD_TILES = "container-tiles-addTilesButton",
57
+ SHOW_MORE = "tilesContanerFullScreenActionButton"
58
+ }
59
+
60
+ export enum DisplayFormat {
61
+ Standard = "standard",
62
+ StandardWide = "standardWide"
63
+ }
64
+
65
+ const StandardTileWidth = 176;
66
+ const StandardWideTileWidth = 368;
67
+ const Gap = 16;
68
+
69
+ /**
70
+ *
71
+ * Tiles Panel class for managing and storing Space Insights Tiles.
72
+ *
73
+ * @extends sap.cux.home.BasePanel
74
+ *
75
+ * @author SAP SE
76
+ * @version 0.0.1
77
+ *
78
+ * @internal
79
+ * @public
80
+ * @ui5-experimental-since 1.138.0
81
+ *
82
+ * @alias sap.cux.home.SpaceInsightsPanel
83
+ */
84
+
85
+ export default class SpaceInsightsPanel extends BasePanel {
86
+ constructor(idOrSettings?: string | $SpaceInsightsPanelSettings);
87
+ constructor(id?: string, settings?: $SpaceInsightsPanelSettings);
88
+ /**
89
+ * Constructor for a new Tiles Panel.
90
+ *
91
+ * @param {string} [id] ID for the new control, generated automatically if an ID is not provided
92
+ * @param {object} [settings] Initial settings for the new control
93
+ */
94
+ public constructor(id?: string, settings?: $SpaceInsightsPanelSettings) {
95
+ super(id, settings);
96
+ }
97
+ private _oData!: Record<string, unknown>;
98
+ private appManagerInstance!: AppManager;
99
+ private VizInstantiationService!: VisualizationInstantiation;
100
+ private tilesContainer!: GridContainer;
101
+ private tilesMobileContainer!: HeaderContainer;
102
+ private _tilesWrapper!: VBox;
103
+ private aInsightsApps!: ICustomVisualization[] | GenericTile[];
104
+ private _controlModel!: JSONModel;
105
+ public _controlMap!: Map<string, Control | Element | UI5Element>;
106
+ private _containerMenuItems!: MenuItem[];
107
+ private _containerActionButtons!: Button[];
108
+ private insightsContainer!: InsightsContainer;
109
+ private _appSwitched!: boolean;
110
+ private _headerVisible: boolean = false;
111
+ private pageManager!: PageManager;
112
+ private allSpaces!: ISpace[];
113
+ private spaceTitle!: string | undefined;
114
+ static readonly metadata: MetadataOptions = {
115
+ library: "sap.cux.home",
116
+ properties: {
117
+ /**
118
+ * Specifies the space whose apps should be loaded.
119
+ */
120
+ spaceId: { type: "string", group: "Data", defaultValue: "" },
121
+ /**
122
+ * Title for the tiles panel
123
+ */
124
+ title: { type: "string", group: "Misc", defaultValue: "" },
125
+ /**
126
+ * The name of the URL parameter used to expand the container into full-screen mode.
127
+ */
128
+ fullScreenName: { type: "string", group: "Misc", defaultValue: "SI3", visibility: "hidden" }
129
+ },
130
+ defaultAggregation: "tiles",
131
+ aggregations: {
132
+ /**
133
+ * Aggregation of tiles available within the tiles Panel
134
+ */
135
+ tiles: { type: "sap.cux.home.App", multiple: true, singularName: "tile", visibility: "hidden" }
136
+ },
137
+ events: {
138
+ handleHidePanel: {
139
+ parameters: {}
140
+ },
141
+ handleUnhidePanel: {
142
+ parameters: {}
143
+ }
144
+ }
145
+ };
146
+
147
+ /**
148
+ * Initializes the Tiles Panel.
149
+ *
150
+ * @private
151
+ * @override
152
+ */
153
+ init() {
154
+ super.init();
155
+ this._controlMap = new Map();
156
+ //Initialise Tiles Model
157
+ this._oData = {
158
+ tiles: [] as ICustomVisualization[],
159
+ activateInsightsTiles: true,
160
+ activateInsightsTilesOnPhone: false,
161
+ activateInsightsTilesOnDesktop: false
162
+ };
163
+ this._controlModel = new JSONModel(this._oData);
164
+ this.appManagerInstance = AppManager.getInstance();
165
+ this.pageManager = getPageManagerInstance(this);
166
+ this.setProperty("enableFullScreen", true);
167
+
168
+ this._createTilesFlexWrapper();
169
+ Container.getServiceAsync<VisualizationInstantiation>("VisualizationInstantiation")
170
+ .then((VizInstantiationService) => {
171
+ this.VizInstantiationService = VizInstantiationService;
172
+ })
173
+ .catch((error) => {
174
+ Log.error(error instanceof Error ? error.message : String(error));
175
+ });
176
+
177
+ // Toggles the activity of tiles
178
+ this._toggleTileActivity();
179
+ }
180
+
181
+ public setTitle(title: string) {
182
+ if (!this.spaceTitle) this.spaceTitle = title;
183
+ return this.setProperty("title", title);
184
+ }
185
+
186
+ public getTitle(): string {
187
+ if (this.spaceTitle) return this.spaceTitle;
188
+ return this.getProperty("title") as string;
189
+ }
190
+
191
+ /**
192
+ * Toggles the activity of tiles on route change.
193
+ *
194
+ * @private
195
+ * @returns {void}
196
+ */
197
+ private _toggleTileActivity(): void {
198
+ const toggleUserActions = async (event: Event<{ isMyHomeRoute: boolean }>) => {
199
+ const show = event.getParameter("isMyHomeRoute");
200
+ this._controlModel.setProperty("/activateInsightsTiles", show);
201
+ if (show) {
202
+ if (this._appSwitched) {
203
+ await this.refreshData(true);
204
+ this._appSwitched = false;
205
+ }
206
+ } else {
207
+ this._appSwitched = true;
208
+ }
209
+ };
210
+
211
+ try {
212
+ S4MyHome.attachRouteMatched({}, toggleUserActions, this);
213
+ } catch (error) {
214
+ Log.warning(error instanceof Error ? error.message : String(error));
215
+ }
216
+ }
217
+
218
+ /**
219
+ * Displays placeholder tiles while loading.
220
+ *
221
+ * @private
222
+ * @returns {void}
223
+ */
224
+ private _showPlaceHolders() {
225
+ const placeholderArray = new Array(this._calculatePlaceholderTileCount()).fill(LoadState.Loading) as LoadState[];
226
+ this.aInsightsApps = placeholderArray.map((tileState: LoadState, index: number) => {
227
+ return new GenericTile(recycleId(`${this.getId()}--placeHolderTile--${index}`), {
228
+ sizeBehavior: "Responsive",
229
+ state: tileState,
230
+ frameType: "OneByOne",
231
+ mode: "IconMode",
232
+ visible: true,
233
+ renderOnThemeChange: true,
234
+ ariaRole: "listitem",
235
+ dropAreaOffset: 8
236
+ }).setLayoutData?.(
237
+ new GridContainerItemLayoutData(recycleId(`${this.getId()}--placeHolderTileLayoutData--${index}`), {
238
+ columns: 2
239
+ })
240
+ );
241
+ });
242
+ this._controlModel.setProperty("/tiles", this.aInsightsApps);
243
+ }
244
+
245
+ /**
246
+ * Clears the placeholder tiles.
247
+ *
248
+ * @private
249
+ * @returns {void}
250
+ */
251
+ private _clearPlaceHolders() {
252
+ this._controlModel.setProperty("/tiles", []);
253
+ }
254
+
255
+ /**
256
+ * Renders the panel.
257
+ *
258
+ * @private
259
+ * @returns {Promise<void>} A promise that resolves when the panel is rendered.
260
+ */
261
+ public async renderPanel(): Promise<void> {
262
+ try {
263
+ return await this.refreshData();
264
+ } catch (error) {
265
+ console.error(error);
266
+ this.fireHandleHidePanel();
267
+ } finally {
268
+ this.fireEvent("loaded");
269
+ }
270
+ return Promise.resolve();
271
+ }
272
+
273
+ private async fetchDynamicAppInSpace(): Promise<ICustomVisualization[]> {
274
+ const spaceId = this.getProperty("spaceId") as string;
275
+ this.allSpaces = this.allSpaces || (await this.pageManager.fetchAllAvailableSpaces());
276
+ const space = this.allSpaces.find((space) => space.id === spaceId);
277
+
278
+ if (!space || space.children.length === 0) return [];
279
+ let allVisualizations: ISectionAndVisualization[] = [];
280
+
281
+ if (space && space.children.length > 0) {
282
+ for (const child of space.children) {
283
+ const visualizations = await this.appManagerInstance.fetchFavVizs(true, true, child.id);
284
+ allVisualizations.push(...visualizations);
285
+ }
286
+ }
287
+
288
+ //Filter out dynamic tiles
289
+ allVisualizations = filterVisualizations(allVisualizations, true);
290
+
291
+ return allVisualizations;
292
+ }
293
+
294
+ /**
295
+ * Refreshes the data in the panel.
296
+ *
297
+ * @private
298
+ * @param {boolean} [refreshTiles=false] - Whether to refresh the tiles.
299
+ * @returns {Promise<void>} A promise that resolves when the data is refreshed.
300
+ */
301
+ public async refreshData(refreshTiles: boolean = false) {
302
+ const panelName = this.getMetadata().getName();
303
+ this.aInsightsApps = await this.fetchDynamicAppInSpace();
304
+ const bIsSmartBusinessTilePresent = this.aInsightsApps.some((oApp) => oApp.isSmartBusinessTile);
305
+ if (bIsSmartBusinessTilePresent) {
306
+ await Lib.load({ name: "sap.cloudfnd.smartbusiness.lib.reusetiles" });
307
+ }
308
+ this._clearPlaceHolders();
309
+ this._controlModel.setProperty("/tiles", this.aInsightsApps);
310
+ if (this.aInsightsApps?.length) {
311
+ this.fireHandleUnhidePanel();
312
+ if (refreshTiles) {
313
+ const isMobile = this.getDeviceType() === DeviceType.Mobile;
314
+ const container = isMobile ? this.tilesMobileContainer : this.tilesContainer;
315
+ const sDefaultAggreName = container.getMetadata().getDefaultAggregationName();
316
+ const dynamicTiles = (container.getAggregation(sDefaultAggreName) as ManagedObject[]) || [];
317
+ dynamicTiles.forEach((tiles) => (tiles as ICustomVisualization).refresh?.());
318
+ }
319
+ this._getInsightsContainer().updatePanelsItemCount(this.aInsightsApps.length, panelName);
320
+ if (this._headerVisible) {
321
+ this.setProperty("title", `${this.spaceTitle} (${this.aInsightsApps.length})`);
322
+ }
323
+ } else {
324
+ this.fireHandleHidePanel();
325
+ }
326
+ }
327
+
328
+ /**
329
+ * Generates the wrapper for the tiles container, if it doesn't already exist
330
+ *
331
+ * @private
332
+ * @override
333
+ * @returns {sap.m.VBox} The tiles Vbox wrapper.
334
+ */
335
+ private _createTilesFlexWrapper() {
336
+ if (!this._tilesWrapper) {
337
+ this._tilesWrapper = new VBox(`${this.getId()}-tilesWrapper`, {
338
+ renderType: "Bare",
339
+ width: "100%",
340
+ items: [this._createMobileFlexWrapper(), this._createWrapperFlexBox()]
341
+ });
342
+ this._showPlaceHolders();
343
+ this._tilesWrapper.setModel(this._controlModel);
344
+ this._addContent(this._tilesWrapper);
345
+ }
346
+ }
347
+
348
+ /**
349
+ * Generates wrapper for displaying tiles in mobile mode.
350
+ * @private
351
+ * @returns {sap.m.HeaderContainer} The generated tiles wrapper.
352
+ */
353
+
354
+ private _createMobileFlexWrapper(): HeaderContainer {
355
+ // Check if the mobile container already exists
356
+ if (!this.tilesMobileContainer) {
357
+ // Create the HeaderContainer with required properties
358
+ this.tilesMobileContainer = new HeaderContainer(`${this.getId()}-insightsTilesMobileContainer`, {
359
+ scrollStep: 0,
360
+ scrollStepByItem: 1,
361
+ gridLayout: true,
362
+ scrollTime: 1000,
363
+ showDividers: false,
364
+ visible: "{/isPhone}"
365
+ }).addStyleClass("sectionMarginTopTilesInsight sapMHeaderContainerAlign sapMHeaderContainerMarginBottom tilesBoxShadow");
366
+
367
+ // Attach aggregation to the container
368
+ this._attachAggregationToContainer(this.tilesMobileContainer);
369
+ }
370
+ // Return the existing or newly created container
371
+ return this.tilesMobileContainer;
372
+ }
373
+
374
+ /**
375
+ * Generates app wrapper (GridContainer) for displaying tiles.
376
+ * @private
377
+ * @returns {sap.m.GridContainer} The generated tiles wrapper.
378
+ */
379
+
380
+ private _createWrapperFlexBox(): GridContainer {
381
+ // Check if the tilesContainer already exists
382
+ if (!this.tilesContainer) {
383
+ // Create the GridContainer with required properties
384
+ this.tilesContainer = new GridContainer(`${this.getId()}-insightsTilesContainer`, {
385
+ visible: "{= !${/isPhone}}"
386
+ }).addStyleClass("insightTiles sapUiSmallMarginTop sapUiSmallMarginBottom");
387
+ // Attach aggregation to the container
388
+ this._attachAggregationToContainer(this.tilesContainer);
389
+ }
390
+ // Return the existing or newly created container
391
+ return this.tilesContainer;
392
+ }
393
+
394
+ /**
395
+ * Updates the activation flags for Insights Tiles based on the device type and viewport.
396
+ *
397
+ *
398
+ * @private
399
+ * @returns {void}
400
+ */
401
+ private _updateTilesActivity(): void {
402
+ // Activate Insights Tiles based on container in viewport
403
+ const isPhoneScreen: boolean = this.getDeviceType() === DeviceType.Mobile;
404
+ // Explicitly type the property being retrieved
405
+ const bActivateInsightsTiles: boolean = Boolean(this._controlModel.getProperty("/activateInsightsTiles"));
406
+ this._controlModel.setProperty("/activateInsightsTilesOnPhone", bActivateInsightsTiles && isPhoneScreen);
407
+ this._controlModel.setProperty("/activateInsightsTilesOnDesktop", bActivateInsightsTiles && !isPhoneScreen);
408
+ }
409
+ /**
410
+ * Attaches necessary aggregations and configurations to the provided container.
411
+ *
412
+ * @private
413
+ * @param {GridContainer | HeaderContainer} tilesContainer - The container to which the aggregation and events are to be attached.
414
+ * @returns {void}
415
+ *
416
+ */
417
+ private _attachAggregationToContainer(tilesContainer: GridContainer | HeaderContainer) {
418
+ tilesContainer.setModel(this._controlModel);
419
+ const sDefaultAggreName = tilesContainer.getMetadata().getDefaultAggregationName();
420
+ const isPhoneScreen = this.getDeviceType() === DeviceType.Mobile;
421
+ tilesContainer.bindAggregation(sDefaultAggreName, {
422
+ path: "/tiles",
423
+ factory: (id: string, context: Context): ManagedObject => {
424
+ const oApp = context.getObject() as ICustomVisualization;
425
+ if (oApp instanceof GenericTile) {
426
+ return oApp;
427
+ }
428
+ const oVisualization = this.VizInstantiationService.instantiateVisualization(oApp.visualization) as ICustomVisualization;
429
+ oVisualization.setLayoutData?.(
430
+ new GridContainerItemLayoutData(`${this.getId()}-itemLayoutData-${id}`, {
431
+ minRows: 2,
432
+ columns: oVisualization.getDisplayFormat?.() === DisplayFormat.Standard ? 2 : 4
433
+ })
434
+ );
435
+ oVisualization?.bindProperty?.(
436
+ "active",
437
+ isPhoneScreen ? "/activateInsightsTilesOnPhone" : "/activateInsightsTilesOnDesktop"
438
+ );
439
+ return oVisualization as ManagedObject;
440
+ }
441
+ });
442
+ }
443
+
444
+ /**
445
+ * Hides the header of the tiles panel.
446
+ * @private
447
+ */
448
+ public handleHideHeader() {
449
+ this._headerVisible = false;
450
+ this.setProperty("title", "");
451
+ this._toggleHeaderActions(false);
452
+ }
453
+
454
+ /**
455
+ * Adds the header to the tiles panel.
456
+ * @private
457
+ */
458
+ public handleAddHeader() {
459
+ this._headerVisible = true;
460
+ this.setProperty("title", `${this.spaceTitle} (${this.aInsightsApps.length})`);
461
+ this._toggleHeaderActions(true);
462
+ }
463
+
464
+ /**
465
+ * Calculates the number of visible tiles that can fit within the available width of the parent container.
466
+ *
467
+ * @private
468
+ * @param {ICustomVisualization[]} insightsApps - An array of custom visualizations to be displayed as tiles.
469
+ * @returns {number} - The number of visible tiles.
470
+ */
471
+ private _calculateVisibleTileCount(insightsApps: ICustomVisualization[]): number {
472
+ const layout = this._getInsightsContainer()?._getLayout();
473
+ const layoutDomRef = layout?.getDomRef();
474
+ const apps = insightsApps || [];
475
+ let count = 0;
476
+
477
+ if (layoutDomRef && apps.length) {
478
+ const isHeaderVisible = layout.getProperty("showHeader") as boolean;
479
+ const sectionNodeIndex = isHeaderVisible ? 1 : 0;
480
+ const sectionDomRef = layoutDomRef.childNodes[sectionNodeIndex] as Element;
481
+ const domProperties = fetchElementProperties(sectionDomRef, ["width", "padding-left", "padding-right"]);
482
+ let availableWidth = domProperties.width - domProperties["padding-left"] - domProperties["padding-right"];
483
+ const widthMap = {} as Record<DisplayFormat, number>;
484
+
485
+ widthMap[DisplayFormat.Standard] = StandardTileWidth + Gap;
486
+ widthMap[DisplayFormat.StandardWide] = StandardWideTileWidth + Gap;
487
+
488
+ let nextTileWidth = widthMap[(apps[count].visualization?.displayFormatHint ?? DisplayFormat.Standard) as DisplayFormat];
489
+ do {
490
+ availableWidth -= nextTileWidth;
491
+ ++count;
492
+ nextTileWidth = widthMap[(apps[count]?.visualization?.displayFormatHint ?? DisplayFormat.Standard) as DisplayFormat];
493
+ } while (availableWidth > nextTileWidth);
494
+ }
495
+
496
+ return count || 1;
497
+ }
498
+
499
+ private _calculatePlaceholderTileCount(): number {
500
+ const layoutDomRef = this._getInsightsContainer()?._getLayout()?.getDomRef();
501
+ let count = 0;
502
+ if (layoutDomRef) {
503
+ const sectionDomRef = layoutDomRef.childNodes[0] as Element;
504
+ const domProperties = fetchElementProperties(sectionDomRef, ["width", "padding-left", "padding-right"]);
505
+ let availableWidth = domProperties.width - domProperties["padding-left"] - domProperties["padding-right"];
506
+ const width = StandardTileWidth + Gap;
507
+
508
+ count = Math.floor(availableWidth / width);
509
+ }
510
+
511
+ return count || 1;
512
+ }
513
+
514
+ /**
515
+ * Adjusts the layout of the tiles panel based on the current layout and device type.
516
+ *
517
+ * @private
518
+ * @override
519
+ */
520
+ public _adjustLayout() {
521
+ const layout = this._getInsightsContainer()?._getLayout();
522
+ const isMobileDevice = this.getDeviceType() === DeviceType.Mobile;
523
+
524
+ if (layout) {
525
+ const visibleTileCount = isMobileDevice
526
+ ? this.aInsightsApps?.length
527
+ : this._calculateVisibleTileCount(this.aInsightsApps as ICustomVisualization[]);
528
+ const isElementExpanded = layout._getCurrentExpandedElementName() === this.getProperty("fullScreenName");
529
+ this._controlModel.setProperty(
530
+ "/tiles",
531
+ isElementExpanded ? this.aInsightsApps : this.aInsightsApps?.slice(0, visibleTileCount)
532
+ );
533
+ this._controlModel.setProperty("/isPhone", isMobileDevice);
534
+ this._updateTilesActivity();
535
+ //Show/Hide Full Screen Button if panel header is visible otherwise update visibility of container Full Screen Button
536
+ const showFullScreenButton = isElementExpanded || this.aInsightsApps.length > visibleTileCount;
537
+ if (this._headerVisible) {
538
+ if (!isMobileDevice) {
539
+ (this.getAggregation("actionButtons") as Button[])?.forEach((actionButton) => {
540
+ if (actionButton.getId().includes(tilesActionButtons.ADD_TILES)) {
541
+ this._getInsightsContainer().toggleActionButton(actionButton, true);
542
+ }
543
+ });
544
+ }
545
+ this._getInsightsContainer()?.toggleFullScreenElements(this, showFullScreenButton);
546
+ } else {
547
+ const fullScreenButton = getAssociatedFullScreenMenuItem(this);
548
+ const fullScreenText = fullScreenButton?.getTitle() ?? "";
549
+ this._getInsightsContainer()?.updateMenuItem(
550
+ this._controlMap.get(`${this.getId()}-${tilesContainerMenuItems.SHOW_MORE}`) as MenuItem,
551
+ showFullScreenButton,
552
+ fullScreenText
553
+ );
554
+ this._getInsightsContainer()?.updateActionButton(
555
+ this._controlMap.get(`${this.getId()}-${tilesContainerActionButtons.SHOW_MORE}`) as Button,
556
+ showFullScreenButton,
557
+ fullScreenText
558
+ );
559
+ }
560
+ }
561
+ }
562
+
563
+ /**
564
+ * Retrieves the InsightsContainer instance associated with this TilesPanel.
565
+ *
566
+ * @private
567
+ * @returns {InsightsContainer} The InsightsContainer instance.
568
+ */
569
+ private _getInsightsContainer(): InsightsContainer {
570
+ if (!this.insightsContainer) {
571
+ this.insightsContainer = this.getParent() as InsightsContainer;
572
+ }
573
+ return this.insightsContainer;
574
+ }
575
+
576
+ /**
577
+ * Retrieves the menu items for the container.
578
+ *
579
+ * @private
580
+ * @returns {MenuItem[]} An array of MenuItem instances.
581
+ */
582
+ public getContainerMenuItems(): MenuItem[] {
583
+ if (!this._containerMenuItems) {
584
+ const containerShowMore = createShowMoreMenuItem(this, tilesContainerMenuItems.SHOW_MORE, "containerTilesShowMore");
585
+ this._controlMap.set(`${this.getId()}-${tilesContainerMenuItems.SHOW_MORE}`, containerShowMore);
586
+ this._containerMenuItems = [containerShowMore];
587
+ }
588
+ return this._containerMenuItems;
589
+ }
590
+
591
+ /**
592
+ * Retrieves the action buttons for the container.
593
+ *
594
+ * @private
595
+ * @returns {Button[]} An array of Button instances.
596
+ */
597
+ public getContainerActionButtons(): Button[] {
598
+ if (!this._containerActionButtons) {
599
+ this._containerActionButtons = [];
600
+
601
+ const containerFullScreenActionButton = createShowMoreActionButton(
602
+ this,
603
+ tilesContainerActionButtons.SHOW_MORE,
604
+ "containerTilesShowMore"
605
+ );
606
+ if (containerFullScreenActionButton) {
607
+ this._controlMap.set(`${this.getId()}-${tilesContainerActionButtons.SHOW_MORE}`, containerFullScreenActionButton);
608
+ this._containerActionButtons.push(containerFullScreenActionButton);
609
+ }
610
+ }
611
+ return this._containerActionButtons;
612
+ }
613
+
614
+ /**
615
+ * Toggles the visibility of the header actions.
616
+ *
617
+ * @param {boolean} bShow - Whether to show or hide the header actions.
618
+ * @private
619
+ */
620
+ private _toggleHeaderActions(bShow: boolean) {
621
+ (this.getAggregation("menuItems") as MenuItem[])?.forEach((menuItem) => {
622
+ this._getInsightsContainer()?.toggleMenuListItem(menuItem, bShow);
623
+ });
624
+ (this.getAggregation("actionButtons") as Button[])?.forEach((actionButton) =>
625
+ this._getInsightsContainer()?.toggleActionButton(actionButton, bShow)
626
+ );
627
+ }
628
+ }