@ui5/webcomponents-fiori 2.7.0-rc.0 → 2.7.0-rc.1

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 (358) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/cypress/specs/ShellBar.cy.ts +241 -0
  3. package/cypress/specs/Timeline.cy.ts +55 -0
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/DynamicPage.d.ts +0 -11
  6. package/dist/DynamicPage.js +0 -15
  7. package/dist/DynamicPage.js.map +1 -1
  8. package/dist/FlexibleColumnLayout.d.ts +11 -3
  9. package/dist/FlexibleColumnLayout.js +63 -5
  10. package/dist/FlexibleColumnLayout.js.map +1 -1
  11. package/dist/FlexibleColumnLayoutTemplate.js +6 -2
  12. package/dist/FlexibleColumnLayoutTemplate.js.map +1 -1
  13. package/dist/ShellBar.d.ts +87 -37
  14. package/dist/ShellBar.js +492 -195
  15. package/dist/ShellBar.js.map +1 -1
  16. package/dist/ShellBarPopoverTemplate.d.ts +2 -0
  17. package/dist/ShellBarPopoverTemplate.js +8 -0
  18. package/dist/ShellBarPopoverTemplate.js.map +1 -0
  19. package/dist/ShellBarSpacer.d.ts +17 -0
  20. package/dist/ShellBarSpacer.js +38 -0
  21. package/dist/ShellBarSpacer.js.map +1 -0
  22. package/dist/ShellBarTemplate.d.ts +2 -0
  23. package/dist/ShellBarTemplate.js +36 -0
  24. package/dist/ShellBarTemplate.js.map +1 -0
  25. package/dist/TimelineGroupItem.d.ts +1 -2
  26. package/dist/TimelineGroupItem.js +0 -7
  27. package/dist/TimelineGroupItem.js.map +1 -1
  28. package/dist/TimelineGroupItemTemplate.js +12 -1
  29. package/dist/TimelineGroupItemTemplate.js.map +1 -1
  30. package/dist/TimelineItem.d.ts +13 -0
  31. package/dist/TimelineItem.js +29 -2
  32. package/dist/TimelineItem.js.map +1 -1
  33. package/dist/TimelineItemTemplate.js +2 -2
  34. package/dist/TimelineItemTemplate.js.map +1 -1
  35. package/dist/Wizard.d.ts +0 -2
  36. package/dist/Wizard.js +0 -15
  37. package/dist/Wizard.js.map +1 -1
  38. package/dist/bundle.esm.js +1 -0
  39. package/dist/bundle.esm.js.map +1 -1
  40. package/dist/css/themes/DynamicPage.css +1 -1
  41. package/dist/css/themes/DynamicPageHeader.css +1 -1
  42. package/dist/css/themes/DynamicPageHeaderActions.css +1 -1
  43. package/dist/css/themes/DynamicPageTitle.css +1 -1
  44. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  45. package/dist/css/themes/MediaGallery.css +1 -1
  46. package/dist/css/themes/MediaGalleryItem.css +1 -1
  47. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  48. package/dist/css/themes/NotificationListItem.css +1 -1
  49. package/dist/css/themes/NotificationListItemBase.css +1 -1
  50. package/dist/css/themes/NotificationStateIcon.css +1 -1
  51. package/dist/css/themes/Page.css +1 -1
  52. package/dist/css/themes/ProductSwitchItem.css +1 -1
  53. package/dist/css/themes/ShellBar.css +1 -1
  54. package/dist/css/themes/ShellBarPopover.css +1 -1
  55. package/dist/css/themes/SideNavigation.css +1 -1
  56. package/dist/css/themes/SideNavigationGroup.css +1 -1
  57. package/dist/css/themes/SideNavigationItem.css +1 -1
  58. package/dist/css/themes/SideNavigationItemBase.css +1 -1
  59. package/dist/css/themes/SideNavigationPopover.css +1 -1
  60. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  61. package/dist/css/themes/Timeline.css +1 -1
  62. package/dist/css/themes/TimelineGroupItem.css +1 -1
  63. package/dist/css/themes/TimelineItem.css +1 -1
  64. package/dist/css/themes/UploadCollection.css +1 -1
  65. package/dist/css/themes/UploadCollectionItem.css +1 -1
  66. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  67. package/dist/css/themes/Wizard.css +1 -1
  68. package/dist/css/themes/WizardTab.css +1 -1
  69. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  70. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  71. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  72. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  73. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  74. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  75. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  76. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  77. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  78. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  79. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  80. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  81. package/dist/custom-elements-internal.json +132 -3
  82. package/dist/custom-elements.json +83 -3
  83. package/dist/fcl-utils/FCLLayout.d.ts +9 -1
  84. package/dist/fcl-utils/FCLLayout.js +73 -3
  85. package/dist/fcl-utils/FCLLayout.js.map +1 -1
  86. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  87. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  88. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  89. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  90. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  91. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  92. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  93. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  94. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  95. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  96. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  97. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  98. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  99. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  100. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  101. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  102. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  103. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  104. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  105. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  106. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  107. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  108. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  109. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  110. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  111. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  112. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  113. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  114. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  115. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  116. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  117. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  118. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  136. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  137. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  138. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  139. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  140. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  141. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  142. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  143. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  144. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  145. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  146. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  147. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  148. package/dist/generated/i18n/i18n-defaults.d.ts +12 -1
  149. package/dist/generated/i18n/i18n-defaults.js +12 -1
  150. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  151. package/dist/generated/themes/DynamicPage.css.d.ts +1 -1
  152. package/dist/generated/themes/DynamicPage.css.js +1 -1
  153. package/dist/generated/themes/DynamicPage.css.js.map +1 -1
  154. package/dist/generated/themes/DynamicPageHeader.css.d.ts +1 -1
  155. package/dist/generated/themes/DynamicPageHeader.css.js +1 -1
  156. package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -1
  157. package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +1 -1
  158. package/dist/generated/themes/DynamicPageHeaderActions.css.js +1 -1
  159. package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -1
  160. package/dist/generated/themes/DynamicPageTitle.css.d.ts +1 -1
  161. package/dist/generated/themes/DynamicPageTitle.css.js +1 -1
  162. package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -1
  163. package/dist/generated/themes/FlexibleColumnLayout.css.d.ts +1 -1
  164. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  165. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  166. package/dist/generated/themes/MediaGallery.css.d.ts +1 -1
  167. package/dist/generated/themes/MediaGallery.css.js +1 -1
  168. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  169. package/dist/generated/themes/MediaGalleryItem.css.d.ts +1 -1
  170. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  171. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  172. package/dist/generated/themes/NotificationListGroupItem.css.d.ts +1 -1
  173. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  174. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  175. package/dist/generated/themes/NotificationListItem.css.d.ts +1 -1
  176. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  177. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  178. package/dist/generated/themes/NotificationListItemBase.css.d.ts +1 -1
  179. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  180. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  181. package/dist/generated/themes/NotificationStateIcon.css.d.ts +1 -1
  182. package/dist/generated/themes/NotificationStateIcon.css.js +1 -1
  183. package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -1
  184. package/dist/generated/themes/Page.css.d.ts +1 -1
  185. package/dist/generated/themes/Page.css.js +1 -1
  186. package/dist/generated/themes/Page.css.js.map +1 -1
  187. package/dist/generated/themes/ProductSwitchItem.css.d.ts +1 -1
  188. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  189. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  190. package/dist/generated/themes/ShellBar.css.d.ts +1 -1
  191. package/dist/generated/themes/ShellBar.css.js +1 -1
  192. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  193. package/dist/generated/themes/ShellBarPopover.css.d.ts +1 -1
  194. package/dist/generated/themes/ShellBarPopover.css.js +1 -1
  195. package/dist/generated/themes/ShellBarPopover.css.js.map +1 -1
  196. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  197. package/dist/generated/themes/SideNavigation.css.js +1 -1
  198. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  199. package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
  200. package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
  201. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  202. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  203. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  204. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  205. package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
  206. package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
  207. package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
  208. package/dist/generated/themes/SideNavigationPopover.css.d.ts +1 -1
  209. package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
  210. package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
  211. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  212. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  213. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  214. package/dist/generated/themes/Timeline.css.d.ts +1 -1
  215. package/dist/generated/themes/Timeline.css.js +1 -1
  216. package/dist/generated/themes/Timeline.css.js.map +1 -1
  217. package/dist/generated/themes/TimelineGroupItem.css.d.ts +1 -1
  218. package/dist/generated/themes/TimelineGroupItem.css.js +1 -1
  219. package/dist/generated/themes/TimelineGroupItem.css.js.map +1 -1
  220. package/dist/generated/themes/TimelineItem.css.d.ts +1 -1
  221. package/dist/generated/themes/TimelineItem.css.js +1 -1
  222. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  223. package/dist/generated/themes/UploadCollection.css.d.ts +1 -1
  224. package/dist/generated/themes/UploadCollection.css.js +1 -1
  225. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  226. package/dist/generated/themes/UploadCollectionItem.css.d.ts +1 -1
  227. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  228. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  229. package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
  230. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  231. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  232. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  233. package/dist/generated/themes/Wizard.css.js +1 -1
  234. package/dist/generated/themes/Wizard.css.js.map +1 -1
  235. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  236. package/dist/generated/themes/WizardTab.css.js +1 -1
  237. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  238. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  239. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  240. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  241. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  242. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  243. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  244. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  245. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  246. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  247. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  248. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  249. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  250. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  251. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  252. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  253. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  254. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  255. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  256. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
  257. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  258. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  259. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
  260. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  261. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  262. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  263. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  264. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  265. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
  266. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  267. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  268. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  269. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  270. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  271. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
  272. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  273. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  274. package/dist/types/FCLLayout.d.ts +18 -0
  275. package/dist/types/FCLLayout.js +18 -0
  276. package/dist/types/FCLLayout.js.map +1 -1
  277. package/dist/vscode.html-custom-data.json +21 -2
  278. package/dist/web-types.json +41 -6
  279. package/package.json +7 -7
  280. package/src/FlexibleColumnLayoutTemplate.tsx +18 -4
  281. package/src/ShellBarPopoverTemplate.tsx +47 -0
  282. package/src/ShellBarTemplate.tsx +276 -0
  283. package/src/TimelineGroupItemTemplate.tsx +14 -1
  284. package/src/TimelineItemTemplate.tsx +2 -1
  285. package/src/i18n/messagebundle.properties +28 -0
  286. package/src/i18n/messagebundle_ar.properties +2 -0
  287. package/src/i18n/messagebundle_bg.properties +2 -0
  288. package/src/i18n/messagebundle_ca.properties +2 -0
  289. package/src/i18n/messagebundle_cnr.properties +2 -0
  290. package/src/i18n/messagebundle_cs.properties +2 -0
  291. package/src/i18n/messagebundle_cy.properties +2 -0
  292. package/src/i18n/messagebundle_da.properties +2 -0
  293. package/src/i18n/messagebundle_de.properties +2 -0
  294. package/src/i18n/messagebundle_el.properties +2 -0
  295. package/src/i18n/messagebundle_en.properties +6 -0
  296. package/src/i18n/messagebundle_en_GB.properties +2 -0
  297. package/src/i18n/messagebundle_en_US_sappsd.properties +6 -0
  298. package/src/i18n/messagebundle_en_US_saprigi.properties +6 -0
  299. package/src/i18n/messagebundle_en_US_saptrc.properties +6 -0
  300. package/src/i18n/messagebundle_es.properties +2 -0
  301. package/src/i18n/messagebundle_es_MX.properties +2 -0
  302. package/src/i18n/messagebundle_et.properties +2 -0
  303. package/src/i18n/messagebundle_fi.properties +2 -0
  304. package/src/i18n/messagebundle_fr.properties +2 -0
  305. package/src/i18n/messagebundle_fr_CA.properties +2 -0
  306. package/src/i18n/messagebundle_hi.properties +2 -0
  307. package/src/i18n/messagebundle_hr.properties +2 -0
  308. package/src/i18n/messagebundle_hu.properties +2 -0
  309. package/src/i18n/messagebundle_id.properties +2 -0
  310. package/src/i18n/messagebundle_it.properties +2 -0
  311. package/src/i18n/messagebundle_iw.properties +2 -0
  312. package/src/i18n/messagebundle_ja.properties +2 -0
  313. package/src/i18n/messagebundle_kk.properties +2 -0
  314. package/src/i18n/messagebundle_ko.properties +2 -0
  315. package/src/i18n/messagebundle_lt.properties +4 -2
  316. package/src/i18n/messagebundle_lv.properties +2 -0
  317. package/src/i18n/messagebundle_mk.properties +2 -0
  318. package/src/i18n/messagebundle_ms.properties +2 -0
  319. package/src/i18n/messagebundle_nl.properties +2 -0
  320. package/src/i18n/messagebundle_no.properties +2 -0
  321. package/src/i18n/messagebundle_pl.properties +2 -0
  322. package/src/i18n/messagebundle_pt.properties +2 -0
  323. package/src/i18n/messagebundle_pt_PT.properties +2 -0
  324. package/src/i18n/messagebundle_ro.properties +2 -0
  325. package/src/i18n/messagebundle_ru.properties +3 -1
  326. package/src/i18n/messagebundle_sh.properties +2 -0
  327. package/src/i18n/messagebundle_sk.properties +2 -0
  328. package/src/i18n/messagebundle_sl.properties +2 -0
  329. package/src/i18n/messagebundle_sr.properties +2 -0
  330. package/src/i18n/messagebundle_sv.properties +2 -0
  331. package/src/i18n/messagebundle_th.properties +2 -0
  332. package/src/i18n/messagebundle_tr.properties +2 -0
  333. package/src/i18n/messagebundle_uk.properties +2 -0
  334. package/src/i18n/messagebundle_vi.properties +2 -0
  335. package/src/i18n/messagebundle_zh_CN.properties +2 -0
  336. package/src/i18n/messagebundle_zh_TW.properties +2 -0
  337. package/src/themes/DynamicPage.css +51 -46
  338. package/src/themes/DynamicPageHeader.css +0 -2
  339. package/src/themes/FlexibleColumnLayout.css +19 -2
  340. package/src/themes/Page.css +1 -1
  341. package/src/themes/ShellBar.css +139 -80
  342. package/src/themes/ShellBarPopover.css +30 -0
  343. package/src/themes/TimelineItem.css +16 -0
  344. package/src/themes/Wizard.css +37 -24
  345. package/src/themes/base/DynamicPageHeader-parameters.css +0 -3
  346. package/src/themes/base/ShellBar-parameters.css +4 -0
  347. package/src/themes/sap_horizon/parameters-bundle.css +1 -0
  348. package/src/themes/sap_horizon_dark/parameters-bundle.css +1 -0
  349. package/src/themes/sap_horizon_hcb/parameters-bundle.css +1 -0
  350. package/src/themes/sap_horizon_hcw/parameters-bundle.css +1 -0
  351. package/dist/generated/templates/ShellBarPopoverTemplate.lit.d.ts +0 -3
  352. package/dist/generated/templates/ShellBarPopoverTemplate.lit.js +0 -9
  353. package/dist/generated/templates/ShellBarPopoverTemplate.lit.js.map +0 -1
  354. package/dist/generated/templates/ShellBarTemplate.lit.d.ts +0 -3
  355. package/dist/generated/templates/ShellBarTemplate.lit.js +0 -34
  356. package/dist/generated/templates/ShellBarTemplate.lit.js.map +0 -1
  357. package/src/ShellBar.hbs +0 -229
  358. package/src/ShellBarPopover.hbs +0 -35
package/dist/ShellBar.js CHANGED
@@ -12,27 +12,34 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
12
12
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
13
13
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
14
14
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
15
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
15
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
16
16
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
17
- import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/Keys.js";
17
+ import { isSpace, isEnter, isLeft, isRight, } from "@ui5/webcomponents-base/dist/Keys.js";
18
+ import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
18
19
  import ListItemStandard from "@ui5/webcomponents/dist/ListItemStandard.js";
19
20
  import List from "@ui5/webcomponents/dist/List.js";
20
21
  import Popover from "@ui5/webcomponents/dist/Popover.js";
21
22
  import Button from "@ui5/webcomponents/dist/Button.js";
23
+ import Menu from "@ui5/webcomponents/dist/Menu.js";
22
24
  import Icon from "@ui5/webcomponents/dist/Icon.js";
23
25
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
24
- import "@ui5/webcomponents-icons/dist/search.js";
25
- import "@ui5/webcomponents-icons/dist/bell.js";
26
- import "@ui5/webcomponents-icons/dist/overflow.js";
27
- import "@ui5/webcomponents-icons/dist/grid.js";
28
- import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
26
+ import search from "@ui5/webcomponents-icons/dist/search.js";
27
+ import da from "@ui5/webcomponents-icons/dist/da.js";
28
+ import bell from "@ui5/webcomponents-icons/dist/bell.js";
29
+ import overflow from "@ui5/webcomponents-icons/dist/overflow.js";
30
+ import grid from "@ui5/webcomponents-icons/dist/grid.js";
31
+ import throttle from "@ui5/webcomponents-base/dist/util/throttle.js";
32
+ import { getScopedVarName } from "@ui5/webcomponents-base/dist/CustomElementsScope.js";
33
+ import getActiveElement from "@ui5/webcomponents-base/dist/util/getActiveElement.js";
29
34
  // Templates
30
- import ShellBarTemplate from "./generated/templates/ShellBarTemplate.lit.js";
35
+ import ShellBarTemplate from "./ShellBarTemplate.js";
31
36
  // Styles
32
37
  import shellBarStyles from "./generated/themes/ShellBar.css.js";
33
38
  import ShellBarPopoverCss from "./generated/themes/ShellBarPopover.css.js";
34
- import { SHELLBAR_LABEL, SHELLBAR_LOGO, SHELLBAR_NOTIFICATIONS, SHELLBAR_CANCEL, SHELLBAR_PROFILE, SHELLBAR_PRODUCTS, SHELLBAR_SEARCH, SHELLBAR_OVERFLOW, } from "./generated/i18n/i18n-defaults.js";
35
- const HANDLE_RESIZE_DEBOUNCE_RATE = 200; // ms
39
+ import { SHELLBAR_LABEL, SHELLBAR_LOGO, SHELLBAR_NOTIFICATIONS, SHELLBAR_NOTIFICATIONS_NO_COUNT, SHELLBAR_CANCEL, SHELLBAR_PROFILE, SHELLBAR_PRODUCTS, SHELLBAR_SEARCH, SHELLBAR_SEARCH_FIELD, SHELLBAR_OVERFLOW, SHELLBAR_LOGO_AREA, SHELLBAR_ADDITIONAL_CONTEXT, SHELLBAR_SEARCHFIELD_DESCRIPTION, SHELLBAR_SEARCH_BTN_OPEN, SHELLBAR_PRODUCT_SWITCH_BTN, } from "./generated/i18n/i18n-defaults.js";
40
+ const RESIZE_THROTTLE_RATE = 40; // ms
41
+ // actions always visible in lean mode, order is important
42
+ const PREDEFINED_PLACE_ACTIONS = ["feedback", "sys-help"];
36
43
  /**
37
44
  * @class
38
45
  * ### Overview
@@ -140,47 +147,134 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
140
147
  * @since 1.10.0
141
148
  */
142
149
  this.accessibilityAttributes = {};
150
+ /**
151
+ * @private
152
+ */
153
+ this.breakpointSize = "S";
143
154
  /**
144
155
  * @private
145
156
  */
146
157
  this.withLogo = false;
147
- this._menuPopoverItems = [];
148
158
  this._menuPopoverExpanded = false;
149
159
  this._overflowPopoverExpanded = false;
150
- this._fullWidthSearch = false;
151
- this._isXXLBreakpoint = false;
152
- this._menuPopoverItems = [];
160
+ this.hasVisibleStartContent = false;
161
+ this.hasVisibleEndContent = false;
162
+ this._cachedHiddenContent = [];
163
+ this._lastOffsetWidth = 0;
164
+ this._observableContent = [];
165
+ this._searchBarAutoOpen = false;
166
+ this._searchBarAutoClosed = false;
167
+ this._searchIconPressed = false;
153
168
  this._hiddenIcons = [];
154
169
  this._itemsInfo = [];
155
170
  this._isInitialRendering = true;
171
+ this._overflowNotifications = null;
156
172
  // marks if preventDefault() is called in item's press handler
157
173
  this._defaultItemPressPrevented = false;
158
- this.menuItemsObserver = new MutationObserver(() => {
159
- this._updateClonedMenuItems();
174
+ this.additionalContextObserver = new MutationObserver(() => {
175
+ this._updateAdditionalContextItems();
160
176
  });
161
177
  this._headerPress = () => {
162
- this._updateClonedMenuItems();
163
178
  if (this.hasMenuItems) {
164
179
  const menuPopover = this._getMenuPopover();
165
180
  menuPopover.opener = this.shadowRoot.querySelector(".ui5-shellbar-menu-button");
166
181
  menuPopover.open = true;
167
182
  }
168
183
  };
169
- this._handleResize = () => {
170
- this._debounce(() => {
171
- this.menuPopover = this._getMenuPopover();
172
- this.overflowPopover = this._getOverflowPopover();
173
- this.overflowPopover.open = false;
184
+ this._handleResize = throttle(() => {
185
+ this.menuPopover = this._getMenuPopover();
186
+ this.overflowPopover = this._getOverflowPopover();
187
+ this.overflowPopover.open = false;
188
+ if (this._lastOffsetWidth !== this.offsetWidth) {
174
189
  this._overflowActions();
175
- }, HANDLE_RESIZE_DEBOUNCE_RATE);
176
- };
190
+ if (this._searchBarAutoOpen) {
191
+ this._searchBarInitialState();
192
+ }
193
+ }
194
+ }, RESIZE_THROTTLE_RATE);
195
+ }
196
+ _searchBarInitialState() {
197
+ const spacerWidth = this.shadowRoot.querySelector(".ui5-shellbar-spacer") ? this.shadowRoot.querySelector(".ui5-shellbar-spacer").getBoundingClientRect().width : 0;
198
+ const searchFieldWidth = this.domCalculatedValues("--_ui5_shellbar_search_field_width");
199
+ if (this._searchIconPressed || document.activeElement === this.searchField[0]) {
200
+ return;
201
+ }
202
+ if (this._showFullWidthSearch) {
203
+ this.showSearchField = false;
204
+ this._searchBarAutoClosed = true;
205
+ return;
206
+ }
207
+ if ((spacerWidth <= 0 || this.additionalContextHidden.length !== 0) && this.showSearchField === true) {
208
+ this.showSearchField = false;
209
+ this._searchBarAutoClosed = true;
210
+ }
211
+ if (spacerWidth > searchFieldWidth && this.additionalContextHidden.length === 0 && this.showSearchField === false) {
212
+ this.showSearchField = true;
213
+ this._searchBarAutoClosed = false;
214
+ }
215
+ }
216
+ _onKeyDown(e) {
217
+ const items = this._getVisibleAndInteractiveItems();
218
+ const activeElement = getActiveElement();
219
+ const currentIndex = items.findIndex(el => el === activeElement);
220
+ if (isLeft(e) || isRight(e)) {
221
+ e.preventDefault(); // Prevent the default behavior to avoid any further automatic focus movemen
222
+ // Focus navigation based on the key pressed
223
+ if (isLeft(e)) {
224
+ this._focusPreviousItem(items, currentIndex);
225
+ }
226
+ else if (isRight(e)) {
227
+ this._focusNextItem(items, currentIndex);
228
+ }
229
+ }
177
230
  }
178
- _debounce(fn, delay) {
179
- clearTimeout(this._debounceInterval);
180
- this._debounceInterval = setTimeout(() => {
181
- this._debounceInterval = null;
182
- fn();
183
- }, delay);
231
+ _focusNextItem(items, currentIndex) {
232
+ if (currentIndex < items.length - 1) {
233
+ (items[currentIndex + 1]).focus(); // Focus the next element
234
+ }
235
+ }
236
+ _focusPreviousItem(items, currentIndex) {
237
+ if (currentIndex > 0) {
238
+ (items[currentIndex - 1]).focus(); // Focus the previous element
239
+ }
240
+ }
241
+ _isVisible(element) {
242
+ const style = getComputedStyle(element);
243
+ return style.display !== "none" && style.visibility !== "hidden" && element.offsetWidth > 0 && element.offsetHeight > 0;
244
+ }
245
+ _isInteractive(element) {
246
+ const component = element;
247
+ if (component.isUI5Element) {
248
+ const dom = component.getFocusDomRef();
249
+ return dom?.tabIndex === 0;
250
+ }
251
+ return element.tabIndex === 0;
252
+ }
253
+ _getNavigableContent() {
254
+ return [
255
+ ...this.startButton,
256
+ ...this.logo,
257
+ ...this.shadowRoot.querySelectorAll(".ui5-shellbar-logo"),
258
+ ...this.shadowRoot.querySelectorAll(".ui5-shellbar-logo-area"),
259
+ ...this.shadowRoot.querySelectorAll(".ui5-shellbar-menu-button"),
260
+ ...this.additionalContext,
261
+ ...this._getRightChildItems(),
262
+ ];
263
+ }
264
+ _getRightChildItems() {
265
+ return [
266
+ ...this.searchField,
267
+ ...this.shadowRoot.querySelectorAll(".ui5-shellbar-search-item-for-arrow-nav"),
268
+ ...this.assistant,
269
+ ...this.shadowRoot.querySelectorAll(".ui5-shellbar-items-for-arrow-nav"),
270
+ ];
271
+ }
272
+ _getVisibleAndInteractiveItems() {
273
+ const items = this._getNavigableContent();
274
+ const visibleAndInteractiveItems = items.filter(item => {
275
+ return this._isVisible(item) && this._isInteractive(item);
276
+ });
277
+ return visibleAndInteractiveItems;
184
278
  }
185
279
  _menuItemPress(e) {
186
280
  const shouldContinue = this.fireDecoratorEvent("menu-item-click", {
@@ -227,6 +321,16 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
227
321
  this._logoPress();
228
322
  }
229
323
  }
324
+ _calculateCSSREMValue(styleSet, propertyName) {
325
+ return Number(styleSet.getPropertyValue(propertyName).replace("rem", "")) * parseInt(getComputedStyle(document.body).getPropertyValue("font-size"));
326
+ }
327
+ _parsePxValue(styleSet, propertyName) {
328
+ return Number(styleSet.getPropertyValue(propertyName).replace("px", ""));
329
+ }
330
+ domCalculatedValues(cssVar) {
331
+ const shellbarComputerStyle = getComputedStyle(this.getDomRef());
332
+ return this._calculateCSSREMValue(shellbarComputerStyle, getScopedVarName(cssVar)); // px
333
+ }
230
334
  onBeforeRendering() {
231
335
  this.withLogo = this.hasLogo;
232
336
  this._hiddenIcons = this._itemsInfo.filter(info => {
@@ -237,11 +341,23 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
237
341
  const shouldStayOnScreen = isOverflowIcon || (isImageIcon && this.hasProfile);
238
342
  return isHidden && isSet && !shouldStayOnScreen;
239
343
  });
240
- this._observeMenuItems();
344
+ this._observeAdditionalContextItems();
345
+ this._updateSeparatorsVisibility();
346
+ }
347
+ get additionalContextSorted() {
348
+ return this.additionalContext.sort((a, b) => {
349
+ return parseInt(a.getAttribute("data-hide-order") || "0") - parseInt(b.getAttribute("data-hide-order") || "0");
350
+ }).map(item => this.shadowRoot.querySelector(`#${item.slot}`)).filter(item => item !== null);
351
+ }
352
+ get additionalContextContainer() {
353
+ return this.shadowRoot.querySelector(".ui5-shellbar-overflow-container-additional-content");
241
354
  }
242
355
  onAfterRendering() {
243
- this._overflowActions();
244
- this._fullWidthSearch = this._showFullWidthSearch;
356
+ requestAnimationFrame(() => {
357
+ this._lastOffsetWidth = this.offsetWidth;
358
+ this._overflowActions();
359
+ });
360
+ this._searchBarAutoOpen = this._searchBarAutoClosed || (this.showSearchField && !this._searchIconPressed);
245
361
  }
246
362
  /**
247
363
  * Closes the overflow area.
@@ -261,68 +377,109 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
261
377
  if (this.breakpointSize !== mappedSize) {
262
378
  this.breakpointSize = mappedSize;
263
379
  }
264
- this._isXXLBreakpoint = this.breakpointSize === "XXL";
265
- return mappedSize;
266
380
  }
267
- _handleSizeS() {
268
- const hasIcons = this.showNotifications || this.showProductSwitch || !!this.searchField.length || !!this.items.length;
269
- const newItems = this._getAllItems(hasIcons).map((info) => {
270
- const isOverflowIcon = info.classes.indexOf("ui5-shellbar-overflow-button") !== -1;
271
- const isImageIcon = info.classes.indexOf("ui5-shellbar-image-button") !== -1;
272
- const shouldStayOnScreen = isOverflowIcon || (isImageIcon && this.hasProfile);
273
- return {
274
- ...info,
275
- classes: `${info.classes} ${shouldStayOnScreen ? "" : "ui5-shellbar-hidden-button"} ui5-shellbar-button`,
276
- styles: {
277
- order: shouldStayOnScreen ? 1 : -1,
278
- },
279
- };
280
- });
281
- this._updateItemsInfo(newItems);
381
+ _hideOverflowItems(hiddenItems, items) {
382
+ for (let i = 0; hiddenItems > 0 && i < items.length; i++) {
383
+ // start from last item
384
+ const item = items[items.length - 1 - i];
385
+ if (item.classes.indexOf("ui5-shellbar-no-overflow-button") === -1) {
386
+ item.classes = `${item.classes} ui5-shellbar-hidden-button`;
387
+ hiddenItems--;
388
+ }
389
+ }
390
+ // assistant is a slot, still described in the itemsInfo for the purpose of the overflow
391
+ // so if marked as hidden, it should be hidden separately
392
+ this._updateAssistantIconVisibility(items);
393
+ return hiddenItems;
394
+ }
395
+ _hideAdditionalContext() {
396
+ const container = this.additionalContextContainer;
397
+ const totalWidth = container?.offsetWidth || 0;
398
+ const additionalContextSorted = this.additionalContextSorted.toReversed();
399
+ let usedWidth = 0;
400
+ for (let i = 0; i < additionalContextSorted.length; i++) {
401
+ const item = additionalContextSorted[i];
402
+ item.classList.remove("ui5-shellbar-hidden-button");
403
+ const itemWidth = item.offsetWidth + parseInt(getComputedStyle(item).getPropertyValue("margin-inline-start"));
404
+ usedWidth += itemWidth;
405
+ if (usedWidth > totalWidth) {
406
+ item.classList.add("ui5-shellbar-hidden-button");
407
+ }
408
+ }
282
409
  }
283
410
  _handleActionsOverflow() {
284
- const rightContainerRect = this.shadowRoot.querySelector(".ui5-shellbar-overflow-container-right").getBoundingClientRect();
285
- let overflowSelector = ".ui5-shellbar-button:not(.ui5-shellbar-overflow-button):not(.ui5-shellbar-invisible-button)";
286
- if (this.showSearchField) {
287
- overflowSelector += ",.ui5-shellbar-search-field";
288
- }
289
- const elementsToOverflow = this.shadowRoot.querySelectorAll(overflowSelector);
290
- const isRTL = this.effectiveDir === "rtl";
291
- const overflowButtons = [...elementsToOverflow].filter(icon => {
292
- const iconRect = (icon).getBoundingClientRect();
293
- if (isRTL) {
294
- return (iconRect.left + iconRect.width) > (rightContainerRect.left + rightContainerRect.width);
295
- }
296
- return iconRect.left < rightContainerRect.left;
297
- });
298
- const showOverflowButton = !!overflowButtons.length;
299
- const items = this._getAllItems(showOverflowButton).filter(item => item.show);
300
- const itemsByPriority = items.sort((item1, item2) => {
301
- if (item1.priority > item2.priority) {
302
- return 1;
411
+ const itemsToOverflow = this.itemsToOverflow;
412
+ const container = this.shadowRoot.querySelector(".ui5-shellbar-overflow-container-right");
413
+ const searchFieldWidth = this.searchField[0] ? this.searchField[0].offsetWidth : 0;
414
+ const nonDisappearingItems = Array.from(container.querySelectorAll(".ui5-shellbar-no-overflow-button"));
415
+ const nonDisappearingItemsWidth = nonDisappearingItems.reduce((acc, el) => acc + el.offsetWidth + this.domCalculatedValues("--_ui5-shellbar-overflow-button-margin"), 0);
416
+ let totalWidth = container.offsetWidth - nonDisappearingItemsWidth - this.separatorsWidth;
417
+ if (this.additionalContext.length === 0) {
418
+ totalWidth -= searchFieldWidth;
419
+ }
420
+ let usedWidth = 0;
421
+ let hiddenItems = 0;
422
+ let restoreVisibility = false;
423
+ // first check how many items can fit without overflowing
424
+ for (let i = 0; i < itemsToOverflow.length; i++) {
425
+ // reset item visibility before calculating
426
+ const item = itemsToOverflow[i];
427
+ const isAdditionalContext = this.additionalContextSorted.includes(item);
428
+ if (item.classList.contains("ui5-shellbar-hidden-button")) {
429
+ item.classList.remove("ui5-shellbar-hidden-button");
430
+ restoreVisibility = true;
303
431
  }
304
- if (item1.priority < item2.priority) {
305
- return -1;
432
+ // exlcude the gap if an item is in the additional context as the wrapped element's width is already including the gap
433
+ const gap = isAdditionalContext ? 0 : parseInt(getComputedStyle(item).getPropertyValue("margin-inline-start"));
434
+ const itemWidth = item.offsetWidth + gap;
435
+ if (restoreVisibility) {
436
+ item.classList.add("ui5-shellbar-hidden-button");
437
+ restoreVisibility = false;
306
438
  }
307
- return 0;
308
- });
309
- for (let i = 0; i < itemsByPriority.length; i++) {
310
- if (i < overflowButtons.length) {
311
- itemsByPriority[i].classes = `${itemsByPriority[i].classes} ui5-shellbar-hidden-button`;
312
- itemsByPriority[i].styles = {
313
- order: -1,
314
- };
439
+ usedWidth += itemWidth;
440
+ if (usedWidth > totalWidth) {
441
+ // as soon as we find an item that doesn't fit, we stop
442
+ // and sum the rest of the items as hidden
443
+ hiddenItems = itemsToOverflow.length - i;
444
+ break;
315
445
  }
316
446
  }
317
- return itemsByPriority;
447
+ // never show only one item in the overflow
448
+ if (hiddenItems === 1) {
449
+ hiddenItems++;
450
+ }
451
+ const showOverflowButton = hiddenItems > 0;
452
+ const items = this._getAllItems(showOverflowButton, hiddenItems === itemsToOverflow.length).filter(item => item.show && item.classes.indexOf("ui5-shellbar-no-overflow-button") === -1);
453
+ // start hiding the actions on the right (overflow actions) first
454
+ this._hideOverflowItems(hiddenItems, items);
455
+ // last, start hiding the items that are in the additional context
456
+ this._hideAdditionalContext();
457
+ if (JSON.stringify(this.additionalContextHidden) !== JSON.stringify(this._cachedHiddenContent)) {
458
+ this.fireDecoratorEvent("content-item-visibility-change", { items: this.additionalContextHidden });
459
+ }
460
+ this._cachedHiddenContent = this.additionalContextHidden;
461
+ return items;
318
462
  }
319
463
  _overflowActions() {
320
- const size = this._handleBarBreakpoints();
321
- if (size === "S") {
322
- return this._handleSizeS();
323
- }
464
+ this._handleBarBreakpoints();
324
465
  const newItems = this._handleActionsOverflow();
466
+ this._updateSeparatorsVisibility();
325
467
  this._updateItemsInfo(newItems);
468
+ this._updateOverflowNotifications();
469
+ }
470
+ _updateAssistantIconVisibility(items) {
471
+ if (this.assistant.length) {
472
+ const assistantWrapper = this.shadowRoot.getElementById("assistant");
473
+ const assistantInfo = items.find(item => item.text === "Assistant");
474
+ assistantWrapper && assistantWrapper.classList.remove("ui5-shellbar-hidden-button");
475
+ if (assistantInfo && assistantInfo.classes.indexOf("ui5-shellbar-hidden-button") > 0) {
476
+ assistantWrapper && assistantWrapper.classList.add("ui5-shellbar-hidden-button");
477
+ }
478
+ }
479
+ }
480
+ _updateSeparatorsVisibility() {
481
+ this.hasVisibleStartContent = this._hasVisibleStartContent;
482
+ this.hasVisibleEndContent = this._hasVisibleEndContent;
326
483
  }
327
484
  _toggleActionPopover() {
328
485
  const overflowButton = this.shadowRoot.querySelector(".ui5-shellbar-overflow-button");
@@ -335,12 +492,14 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
335
492
  if (isDesktop()) {
336
493
  this.setAttribute("desktop", "");
337
494
  }
495
+ if (this._searchBarAutoOpen) {
496
+ setTimeout(() => this._searchBarInitialState(), 100);
497
+ }
338
498
  }
339
499
  onExitDOM() {
340
- this.menuItemsObserver.disconnect();
500
+ this.additionalContextObserver.disconnect();
501
+ this._observableContent = [];
341
502
  ResizeHandler.deregister(this, this._handleResize);
342
- clearTimeout(this._debounceInterval);
343
- this._debounceInterval = null;
344
503
  }
345
504
  _handleSearchIconPress() {
346
505
  const searchButtonRef = this.shadowRoot.querySelector(".ui5-shellbar-search-button");
@@ -348,10 +507,12 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
348
507
  targetRef: searchButtonRef,
349
508
  searchFieldVisible: this.showSearchField,
350
509
  });
510
+ this._searchIconPressed = true;
351
511
  if (defaultPrevented) {
352
512
  return;
353
513
  }
354
514
  this.showSearchField = !this.showSearchField;
515
+ this._searchBarAutoOpen = this.showSearchField;
355
516
  if (!this.showSearchField) {
356
517
  return;
357
518
  }
@@ -459,24 +620,50 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
459
620
  * Returns all items that will be placed in the right of the bar as icons / dom elements.
460
621
  * @param showOverflowButton Determines if overflow button should be visible (not overflowing)
461
622
  */
462
- _getAllItems(showOverflowButton) {
623
+ _getAllItems(showOverflowButton, showSearchButton = true) {
463
624
  let domOrder = -1;
464
- const search = {
465
- icon: "search",
466
- text: this._searchText,
467
- classes: `${this.searchField.length ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-search-button ui5-shellbar-button`,
468
- priority: 4,
469
- domOrder: this.searchField.length ? (++domOrder) : -1,
470
- styles: {
471
- order: this.searchField.length ? 1 : -10,
472
- },
473
- id: `${this._id}-item-${1}`,
474
- press: this._handleSearchIconPress.bind(this),
475
- show: !!this.searchField.length,
476
- };
477
625
  const items = [
478
- ...this.items.map((item) => {
626
+ {
627
+ icon: search,
628
+ text: this._searchText,
629
+ classes: `${this.searchField.length ? "" : "ui5-shellbar-invisible-button"} ${showSearchButton ? "" : "ui5-shellbar-no-overflow-button"} ui5-shellbar-search-button ui5-shellbar-button`,
630
+ domOrder: this.searchField.length ? (++domOrder) : -1,
631
+ id: `${this._id}-item-${1}`,
632
+ press: this._handleSearchIconPress.bind(this),
633
+ show: !!this.searchField.length,
634
+ tooltip: this._searchText,
635
+ },
636
+ {
637
+ icon: da,
638
+ text: "Assistant",
639
+ classes: `${this.assistant.length ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-button`,
640
+ id: `${this._id}-item-${4}`,
641
+ show: !!this.assistant.length,
642
+ domOrder: this.assistant.length ? (++domOrder) : -1,
643
+ press: () => { },
644
+ tooltip: this.assistant.length ? (this.assistant[0].getAttribute("text") || this.assistant[0].getAttribute("title") || undefined) : undefined,
645
+ },
646
+ {
647
+ icon: bell,
648
+ title: this._notificationsText,
649
+ text: ShellBar_1.i18nBundle.getText(SHELLBAR_NOTIFICATIONS_NO_COUNT),
650
+ count: this.notificationsCount,
651
+ classes: `${this.showNotifications ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-bell-button ui5-shellbar-button`,
652
+ id: `${this._id}-item-${2}`,
653
+ show: this.showNotifications,
654
+ domOrder: this.showNotifications ? (++domOrder) : -1,
655
+ press: this._handleNotificationsPress.bind(this),
656
+ tooltip: this._notificationsText,
657
+ },
658
+ // sort feedback and help to always be last
659
+ ...this.items.sort((a, b) => {
660
+ const aIndex = PREDEFINED_PLACE_ACTIONS.indexOf(a.icon || "");
661
+ const bIndex = PREDEFINED_PLACE_ACTIONS.indexOf(b.icon || "");
662
+ return aIndex - bIndex;
663
+ }).map((item) => {
479
664
  item._getRealDomRef = () => this.getDomRef().querySelector(`*[data-ui5-stable=${item.stableDomRef}]`);
665
+ // check if included for lean mode
666
+ const show = !!item.icon || false;
480
667
  return {
481
668
  icon: item.icon,
482
669
  id: item._id,
@@ -484,75 +671,46 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
484
671
  refItemid: item._id,
485
672
  text: item.text,
486
673
  classes: "ui5-shellbar-custom-item ui5-shellbar-button",
487
- priority: 1,
488
674
  domOrder: (++domOrder),
489
- styles: {
490
- order: 2,
491
- },
492
- show: true,
675
+ show,
493
676
  press: this._handleCustomActionPress.bind(this),
494
677
  custom: true,
495
678
  title: item.title,
496
679
  stableDomRef: item.stableDomRef,
680
+ tooltip: item.title || item.text,
497
681
  };
498
682
  }),
499
683
  {
500
- icon: "bell",
501
- text: this._notificationsText,
502
- classes: `${this.showNotifications ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-bell-button ui5-shellbar-button`,
503
- priority: 3,
504
- styles: {
505
- order: this.showNotifications ? 3 : -10,
506
- },
507
- id: `${this._id}-item-${2}`,
508
- show: this.showNotifications,
509
- domOrder: this.showNotifications ? (++domOrder) : -1,
510
- press: this._handleNotificationsPress.bind(this),
511
- },
512
- {
513
- icon: "overflow",
684
+ icon: overflow,
514
685
  text: "Overflow",
515
- classes: `${showOverflowButton ? "" : "ui5-shellbar-hidden-button"} ui5-shellbar-overflow-button-shown ui5-shellbar-overflow-button ui5-shellbar-button`,
516
- priority: 5,
517
- order: 4,
518
- styles: {
519
- order: showOverflowButton ? 4 : -1,
520
- },
686
+ classes: `${showOverflowButton ? "" : "ui5-shellbar-hidden-button"} ui5-shellbar-no-overflow-button ui5-shellbar-overflow-button ui5-shellbar-button`,
521
687
  domOrder: showOverflowButton ? (++domOrder) : -1,
522
688
  id: `${this.id}-item-${5}`,
523
689
  press: this._handleOverflowPress.bind(this),
524
690
  show: true,
691
+ tooltip: this._overflowText,
525
692
  },
526
693
  {
527
694
  text: "Person",
528
- classes: `${this.hasProfile ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-image-button ui5-shellbar-button`,
529
- priority: 4,
530
- styles: {
531
- order: this.hasProfile ? 5 : -10,
532
- },
695
+ classes: `${this.hasProfile ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-no-overflow-button ui5-shellbar-image-button ui5-shellbar-button`,
533
696
  profile: true,
534
697
  id: `${this._id}-item-${3}`,
535
698
  domOrder: this.hasProfile ? (++domOrder) : -1,
536
699
  show: this.hasProfile,
537
700
  press: this._handleProfilePress.bind(this),
701
+ tooltip: this._profileText,
538
702
  },
539
703
  {
540
- icon: "grid",
704
+ icon: grid,
541
705
  text: this._productsText,
542
- classes: `${this.showProductSwitch ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-button ui5-shellbar-button-product-switch`,
543
- priority: 2,
544
- styles: {
545
- order: this.showProductSwitch ? 6 : -10,
546
- },
706
+ classes: `${this.showProductSwitch ? "" : "ui5-shellbar-invisible-button"} ui5-shellbar-no-overflow-button ui5-shellbar-button ui5-shellbar-image-button ui5-shellbar-button-product-switch`,
547
707
  id: `${this._id}-item-${4}`,
548
708
  show: this.showProductSwitch,
549
709
  domOrder: this.showProductSwitch ? (++domOrder) : -1,
550
710
  press: this._handleProductSwitchPress.bind(this),
711
+ tooltip: this._productsText,
551
712
  },
552
713
  ];
553
- if (this.midContent.length < 1 && items[0].text !== this._searchText) {
554
- items.unshift(search);
555
- }
556
714
  return items;
557
715
  }
558
716
  _updateItemsInfo(newItems) {
@@ -561,25 +719,41 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
561
719
  this._itemsInfo = newItems;
562
720
  }
563
721
  }
564
- _updateClonedMenuItems() {
565
- this._menuPopoverItems = [];
566
- this.menuItems.forEach(item => {
567
- // clone the menuItem and remove the slot="menuItems",
568
- // otherwise would not be slotted in the internal ui5-li
569
- const clonedItem = item.cloneNode(true);
570
- clonedItem.removeAttribute("slot");
571
- this._menuPopoverItems.push(clonedItem);
722
+ _updateOverflowNotifications() {
723
+ const notificationsArr = [];
724
+ let overflowNotifications = null;
725
+ this._itemsInfo.forEach(item => {
726
+ if (item.count && this.isIconHidden(item.icon)) {
727
+ notificationsArr.push(item.count);
728
+ }
572
729
  });
730
+ if (notificationsArr.length === 1) {
731
+ overflowNotifications = notificationsArr[0];
732
+ }
733
+ else if (notificationsArr.length > 1) {
734
+ overflowNotifications = " ";
735
+ }
736
+ this._overflowNotifications = overflowNotifications;
573
737
  }
574
- _observeMenuItems() {
575
- this.menuItems.forEach(item => {
576
- this.menuItemsObserver.observe(item, {
577
- characterData: true,
578
- childList: true,
579
- subtree: true,
580
- attributes: true,
581
- });
738
+ _updateAdditionalContextItems() {
739
+ this._handleActionsOverflow();
740
+ }
741
+ _observeAdditionalContextItems() {
742
+ if (JSON.stringify(this.additionalContext) === JSON.stringify(this._observableContent)) {
743
+ return false;
744
+ }
745
+ this.additionalContext.forEach(item => {
746
+ if (!this._observableContent.includes(item)) {
747
+ this.additionalContextObserver.observe(item, {
748
+ characterData: false,
749
+ childList: false,
750
+ subtree: false,
751
+ attributes: true,
752
+ attributeFilter: ["data-hide-order"],
753
+ });
754
+ }
582
755
  });
756
+ this._observableContent = this.additionalContext;
583
757
  }
584
758
  _getOverflowPopover() {
585
759
  return this.shadowRoot.querySelector(".ui5-shellbar-overflow-popover");
@@ -599,46 +773,43 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
599
773
  wrapper: {
600
774
  "ui5-shellbar-root": true,
601
775
  "ui5-shellbar-with-searchfield": this.hasSearchField,
776
+ "ui5-shellbar-with-full-searchfield": this.hasSearchField && this.showSearchField && this._showFullWidthSearch,
602
777
  },
603
778
  button: {
604
779
  "ui5-shellbar-menu-button--interactive": this.hasMenuItems,
605
- "ui5-shellbar-menu-button": true,
606
780
  },
607
- items: {
608
- notification: {
609
- "ui5-shellbar-hidden-button": this.isIconHidden("bell"),
610
- },
611
- product: {
612
- "ui5-shellbar-hidden-button": this.isIconHidden("grid"),
613
- },
614
- search: {
615
- "ui5-shellbar-hidden-button": this.isIconHidden("search"),
616
- },
617
- overflow: {
618
- "ui5-shellbar-hidden-button": this.isIconHidden("overflow"),
619
- },
781
+ notification: {
782
+ "ui5-shellbar-hidden-button": this.isIconHidden("bell"),
783
+ },
784
+ search: {
785
+ "ui5-shellbar-hidden-button": this.isIconHidden("search"),
786
+ "ui5-shellbar-no-overflow-button": this.breakpointSize !== "S",
787
+ },
788
+ overflow: {
789
+ "ui5-shellbar-hidden-button": this._hiddenIcons.length === 0,
790
+ },
791
+ assistant: {
792
+ "ui5-shellbar-hidden-button": this.isIconHidden("assistant"),
620
793
  },
621
794
  };
622
795
  }
623
796
  get styles() {
624
797
  return {
625
- items: {
626
- notification: {
627
- "order": this.isIconHidden("bell") ? "-1" : "3",
628
- },
629
- overflow: {
630
- "order": this.isIconHidden("overflow") ? "-1" : "4",
631
- },
632
- profile: {
633
- "order": this.hasProfile ? "5" : "-1",
634
- },
635
- product: {
636
- "order": this.isIconHidden("grid") ? "-1" : "6",
637
- },
638
- },
639
798
  searchField: {
640
799
  "display": this.correctSearchFieldStyles,
641
800
  },
801
+ additionalContext: {
802
+ start: {
803
+ separator: {
804
+ "visibility": this.hasVisibleStartContent ? "" : "hidden",
805
+ },
806
+ },
807
+ end: {
808
+ separator: {
809
+ "visibility": this.hasVisibleEndContent ? "" : "hidden",
810
+ },
811
+ },
812
+ },
642
813
  };
643
814
  }
644
815
  get correctSearchFieldStyles() {
@@ -654,7 +825,7 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
654
825
  return !!this.logo.length;
655
826
  }
656
827
  get showLogoInMenuButton() {
657
- return this.hasLogo && this.breakpointSize === "S";
828
+ return this.hasLogo && (this.breakpointSize === "S");
658
829
  }
659
830
  get showTitleInMenuButton() {
660
831
  return this.primaryTitle && !(this.showLogoInMenuButton);
@@ -680,6 +851,9 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
680
851
  get hasMenuItems() {
681
852
  return this.menuItems.length > 0;
682
853
  }
854
+ get imageBtnText() {
855
+ return getEffectiveAriaLabelText(this);
856
+ }
683
857
  get _shellbarText() {
684
858
  return ShellBar_1.i18nBundle.getText(SHELLBAR_LABEL);
685
859
  }
@@ -692,10 +866,82 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
692
866
  get _cancelBtnText() {
693
867
  return ShellBar_1.i18nBundle.getText(SHELLBAR_CANCEL);
694
868
  }
869
+ get _logoAreaText() {
870
+ const primaryTitle = this.primaryTitle ?? "";
871
+ const secondaryTitle = this.secondaryTitle ?? "";
872
+ return ShellBar_1.i18nBundle.getText(SHELLBAR_LOGO_AREA, primaryTitle, secondaryTitle);
873
+ }
874
+ get _additionalContextText() {
875
+ return ShellBar_1.i18nBundle.getText(SHELLBAR_ADDITIONAL_CONTEXT);
876
+ }
877
+ get _searchFieldDescription() {
878
+ return ShellBar_1.i18nBundle.getText(SHELLBAR_SEARCHFIELD_DESCRIPTION);
879
+ }
880
+ get _additionalContextRole() {
881
+ if (this.additionalContext.length === 1) {
882
+ return;
883
+ }
884
+ return "group";
885
+ }
886
+ get additionalContext() {
887
+ return [...this.startContent, ...this.endContent];
888
+ }
889
+ get startContent() {
890
+ // return all items before the ui5-shellbar-spacer
891
+ const startContent = [];
892
+ for (let i = 0; i < this.content.length; i++) {
893
+ const child = this.content[i];
894
+ if (child.hasAttribute("ui5-shellbar-spacer")) {
895
+ break;
896
+ }
897
+ startContent.push(child);
898
+ }
899
+ return startContent;
900
+ }
901
+ get endContent() {
902
+ // return all items after the ui5-shellbar-spacer
903
+ const endContent = [];
904
+ let spacerFound = false;
905
+ for (let i = 0; i < this.content.length; i++) {
906
+ const child = this.content[i];
907
+ if (spacerFound) {
908
+ endContent.push(child);
909
+ }
910
+ if (child.hasAttribute("ui5-shellbar-spacer")) {
911
+ spacerFound = true;
912
+ }
913
+ }
914
+ return endContent;
915
+ }
916
+ get _rightChildRole() {
917
+ const items = this._getRightChildItems();
918
+ const visibleItems = items.filter(item => {
919
+ return this._isVisible(item);
920
+ });
921
+ if (visibleItems.length === 1) {
922
+ return;
923
+ }
924
+ return "toolbar";
925
+ }
926
+ get _searchFieldExpanded() {
927
+ return this.showSearchField;
928
+ }
929
+ get _searchFieldText() {
930
+ return ShellBar_1.i18nBundle.getText(SHELLBAR_SEARCH_FIELD);
931
+ }
932
+ get _searchBtnOpen() {
933
+ return ShellBar_1.i18nBundle.getText(SHELLBAR_SEARCH_BTN_OPEN);
934
+ }
935
+ get _productSwitchBtnText() {
936
+ return ShellBar_1.i18nBundle.getText(SHELLBAR_PRODUCT_SWITCH_BTN);
937
+ }
695
938
  get _showFullWidthSearch() {
696
- const size = this._handleBarBreakpoints();
939
+ const size = this.breakpointSize;
697
940
  const searchBtnHidden = !!this.shadowRoot.querySelector(".ui5-shellbar-search-button.ui5-shellbar-hidden-button");
698
- return ((size === "S") || searchBtnHidden);
941
+ return size === "S" || searchBtnHidden || this._lessSearchSpace;
942
+ }
943
+ get isSearchFieldVisible() {
944
+ return this.searchField[0]?.offsetWidth || 0;
699
945
  }
700
946
  get _profileText() {
701
947
  return this.accessibilityAttributes.profile?.name || ShellBar_1.i18nBundle.getText(SHELLBAR_PROFILE);
@@ -709,6 +955,41 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
709
955
  get _overflowText() {
710
956
  return ShellBar_1.i18nBundle.getText(SHELLBAR_OVERFLOW);
711
957
  }
958
+ get hasAdditionalContext() {
959
+ return this.additionalContext.length > 0;
960
+ }
961
+ get _hasVisibleStartContent() {
962
+ return this.startContent.some(item => this.shadowRoot.getElementById(item.slot) && !this.shadowRoot.getElementById(item.slot).classList.contains("ui5-shellbar-hidden-button"));
963
+ }
964
+ get _hasVisibleEndContent() {
965
+ return this.endContent.some(item => this.shadowRoot.getElementById(item.slot) && !this.shadowRoot.getElementById(item.slot).classList.contains("ui5-shellbar-hidden-button"));
966
+ }
967
+ get itemsToOverflow() {
968
+ const overflowActions = Array.from(this.shadowRoot.querySelectorAll(".ui5-shellbar-button:not(.ui5-shellbar-overflow-button):not(.ui5-shellbar-invisible-button):not(.ui5-shellbar-cancel-button):not(.ui5-shellbar-no-overflow-button)"));
969
+ return [...this.additionalContextSorted.toReversed(), this.assistant[0], ...overflowActions.toReversed()].filter(Boolean);
970
+ }
971
+ get separatorsWidth() {
972
+ const separatorsWidth = this.separators.reduce((acc, el) => acc + (el?.offsetWidth + this.domCalculatedValues("--_ui5-shellbar-content-margin-start")) || 0, 0);
973
+ return separatorsWidth;
974
+ }
975
+ get searchFieldActualWidth() {
976
+ return this.shadowRoot.querySelector("[ui5-input]")?.offsetWidth || 0;
977
+ }
978
+ get separators() {
979
+ const start = this.shadowRoot.querySelector(".ui5-shellbar-separator-start");
980
+ const end = this.shadowRoot.querySelector(".ui5-shellbar-separator-end");
981
+ return [start, end];
982
+ }
983
+ get additionalContextHidden() {
984
+ return [...this.endContent, ...this.startContent].filter(item => this.shadowRoot.getElementById(item.slot) && this.shadowRoot.getElementById(item.slot).classList.contains("ui5-shellbar-hidden-button"));
985
+ }
986
+ get _lessSearchSpace() {
987
+ const targetContainer = this.shadowRoot.querySelector(".ui5-shellbar-spacer");
988
+ const targetWidth = targetContainer?.offsetWidth || 0;
989
+ const searchFieldWidth = this.domCalculatedValues("--_ui5_shellbar_search_field_width");
990
+ const isFullSearchOpen = this.classList.contains("ui5-shellbar-with-full-searchfield");
991
+ return this.breakpointSize === "M" && ((this.hasAdditionalContext && targetWidth <= 0) || (!isFullSearchOpen && targetWidth <= searchFieldWidth));
992
+ }
712
993
  get accInfo() {
713
994
  const overflowExpanded = this.accessibilityAttributes.overflow?.expanded;
714
995
  return {
@@ -749,7 +1030,10 @@ let ShellBar = ShellBar_1 = class ShellBar extends UI5Element {
749
1030
  };
750
1031
  }
751
1032
  get accLogoRole() {
752
- return this.accessibilityAttributes.logo?.role || "button";
1033
+ return this.accessibilityAttributes.logo?.role || "link";
1034
+ }
1035
+ get isSBreakPoint() {
1036
+ return this.breakpointSize === "S";
753
1037
  }
754
1038
  };
755
1039
  __decorate([
@@ -782,9 +1066,6 @@ __decorate([
782
1066
  __decorate([
783
1067
  property({ type: Object })
784
1068
  ], ShellBar.prototype, "_itemsInfo", void 0);
785
- __decorate([
786
- property({ type: Array, noAttribute: true })
787
- ], ShellBar.prototype, "_menuPopoverItems", void 0);
788
1069
  __decorate([
789
1070
  property({ type: Boolean, noAttribute: true })
790
1071
  ], ShellBar.prototype, "_menuPopoverExpanded", void 0);
@@ -793,10 +1074,10 @@ __decorate([
793
1074
  ], ShellBar.prototype, "_overflowPopoverExpanded", void 0);
794
1075
  __decorate([
795
1076
  property({ type: Boolean, noAttribute: true })
796
- ], ShellBar.prototype, "_fullWidthSearch", void 0);
1077
+ ], ShellBar.prototype, "hasVisibleStartContent", void 0);
797
1078
  __decorate([
798
1079
  property({ type: Boolean, noAttribute: true })
799
- ], ShellBar.prototype, "_isXXLBreakpoint", void 0);
1080
+ ], ShellBar.prototype, "hasVisibleEndContent", void 0);
800
1081
  __decorate([
801
1082
  slot()
802
1083
  ], ShellBar.prototype, "assistant", void 0);
@@ -821,6 +1102,9 @@ __decorate([
821
1102
  __decorate([
822
1103
  slot()
823
1104
  ], ShellBar.prototype, "midContent", void 0);
1105
+ __decorate([
1106
+ slot({ type: HTMLElement, individualSlots: true })
1107
+ ], ShellBar.prototype, "content", void 0);
824
1108
  __decorate([
825
1109
  i18n("@ui5/webcomponents-fiori")
826
1110
  ], ShellBar, "i18nBundle", void 0);
@@ -829,7 +1113,7 @@ ShellBar = ShellBar_1 = __decorate([
829
1113
  tag: "ui5-shellbar",
830
1114
  fastNavigation: true,
831
1115
  languageAware: true,
832
- renderer: litRender,
1116
+ renderer: jsxRenderer,
833
1117
  template: ShellBarTemplate,
834
1118
  styles: [shellBarStyles, ShellBarPopoverCss],
835
1119
  dependencies: [
@@ -838,6 +1122,7 @@ ShellBar = ShellBar_1 = __decorate([
838
1122
  List,
839
1123
  Popover,
840
1124
  ListItemStandard,
1125
+ Menu,
841
1126
  ],
842
1127
  })
843
1128
  /**
@@ -908,6 +1193,18 @@ ShellBar = ShellBar_1 = __decorate([
908
1193
  cancelable: true,
909
1194
  bubbles: true,
910
1195
  })
1196
+ /**
1197
+ * Fired, when an item from the startContent or endContent slots is hidden or shown.
1198
+ * **Note:** The `content-item-visibility-change` event is in an experimental state and is a subject to change.
1199
+ *
1200
+ * @param {Array<HTMLElement>} array of all the items that are hidden
1201
+ * @public
1202
+ * @since 2.7.0
1203
+ */
1204
+ ,
1205
+ event("content-item-visibility-change", {
1206
+ bubbles: true,
1207
+ })
911
1208
  ], ShellBar);
912
1209
  ShellBar.define();
913
1210
  export default ShellBar;