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

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 (397) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/cypress/specs/FCL.cy.ts +44 -7
  3. package/cypress/specs/ShellBar.cy.ts +0 -1
  4. package/cypress/specs/SideNavigation.cy.ts +522 -25
  5. package/cypress/specs/Timeline.cy.ts +244 -4
  6. package/cypress/specs/UserMenu.cy.ts +20 -0
  7. package/dist/.tsbuildinfo +1 -1
  8. package/dist/FlexibleColumnLayoutTemplate.js +7 -5
  9. package/dist/FlexibleColumnLayoutTemplate.js.map +1 -1
  10. package/dist/MediaGallery.d.ts +1 -1
  11. package/dist/MediaGallery.js +3 -3
  12. package/dist/MediaGallery.js.map +1 -1
  13. package/dist/MediaGalleryItem.d.ts +1 -2
  14. package/dist/MediaGalleryItem.js +8 -9
  15. package/dist/MediaGalleryItem.js.map +1 -1
  16. package/dist/MediaGalleryItemTemplate.d.ts +2 -0
  17. package/dist/MediaGalleryItemTemplate.js +7 -0
  18. package/dist/MediaGalleryItemTemplate.js.map +1 -0
  19. package/dist/MediaGalleryTemplate.d.ts +2 -0
  20. package/dist/MediaGalleryTemplate.js +10 -0
  21. package/dist/MediaGalleryTemplate.js.map +1 -0
  22. package/dist/NavigationMenu.d.ts +34 -0
  23. package/dist/NavigationMenu.js +64 -0
  24. package/dist/NavigationMenu.js.map +1 -0
  25. package/dist/NavigationMenuItem.d.ts +78 -0
  26. package/dist/NavigationMenuItem.js +84 -0
  27. package/dist/NavigationMenuItem.js.map +1 -0
  28. package/dist/NavigationMenuItemTemplate.d.ts +3 -0
  29. package/dist/NavigationMenuItemTemplate.js +44 -0
  30. package/dist/NavigationMenuItemTemplate.js.map +1 -0
  31. package/dist/NavigationMenuTemplate.d.ts +2 -0
  32. package/dist/NavigationMenuTemplate.js +15 -0
  33. package/dist/NavigationMenuTemplate.js.map +1 -0
  34. package/dist/NotificationListGroupItem.d.ts +1 -1
  35. package/dist/NotificationListGroupItem.js +1 -1
  36. package/dist/NotificationListGroupItem.js.map +1 -1
  37. package/dist/NotificationListItem.d.ts +1 -1
  38. package/dist/NotificationListItem.js +1 -1
  39. package/dist/NotificationListItem.js.map +1 -1
  40. package/dist/ShellBar.js +1 -1
  41. package/dist/ShellBar.js.map +1 -1
  42. package/dist/SideNavigation.d.ts +1 -1
  43. package/dist/SideNavigation.js +1 -1
  44. package/dist/SideNavigation.js.map +1 -1
  45. package/dist/SideNavigationItem.d.ts +3 -2
  46. package/dist/SideNavigationItem.js +22 -3
  47. package/dist/SideNavigationItem.js.map +1 -1
  48. package/dist/SideNavigationItemTemplate.js +3 -7
  49. package/dist/SideNavigationItemTemplate.js.map +1 -1
  50. package/dist/SideNavigationPopoverTemplate.js +4 -4
  51. package/dist/SideNavigationPopoverTemplate.js.map +1 -1
  52. package/dist/SideNavigationSelectableItemBase.d.ts +44 -2
  53. package/dist/SideNavigationSelectableItemBase.js +52 -3
  54. package/dist/SideNavigationSelectableItemBase.js.map +1 -1
  55. package/dist/SideNavigationSubItemTemplate.js +1 -1
  56. package/dist/SideNavigationSubItemTemplate.js.map +1 -1
  57. package/dist/Timeline.d.ts +60 -3
  58. package/dist/Timeline.js +157 -7
  59. package/dist/Timeline.js.map +1 -1
  60. package/dist/TimelineItem.js +0 -1
  61. package/dist/TimelineItem.js.map +1 -1
  62. package/dist/TimelineItemTemplate.js +1 -1
  63. package/dist/TimelineItemTemplate.js.map +1 -1
  64. package/dist/TimelineTemplate.js +14 -2
  65. package/dist/TimelineTemplate.js.map +1 -1
  66. package/dist/UserMenu.d.ts +8 -0
  67. package/dist/UserMenu.js +11 -0
  68. package/dist/UserMenu.js.map +1 -1
  69. package/dist/UserMenuTemplate.js +2 -1
  70. package/dist/UserMenuTemplate.js.map +1 -1
  71. package/dist/bundle.esm.js +2 -0
  72. package/dist/bundle.esm.js.map +1 -1
  73. package/dist/css/themes/DynamicPage.css +1 -1
  74. package/dist/css/themes/DynamicPageHeader.css +1 -1
  75. package/dist/css/themes/DynamicPageHeaderActions.css +1 -1
  76. package/dist/css/themes/DynamicPageTitle.css +1 -1
  77. package/dist/css/themes/FlexibleColumnLayout.css +1 -1
  78. package/dist/css/themes/MediaGallery.css +1 -1
  79. package/dist/css/themes/MediaGalleryItem.css +1 -1
  80. package/dist/css/themes/NavigationMenu.css +1 -0
  81. package/dist/css/themes/NavigationMenuItem.css +1 -0
  82. package/dist/css/themes/NotificationListGroupItem.css +1 -1
  83. package/dist/css/themes/NotificationListItem.css +1 -1
  84. package/dist/css/themes/NotificationListItemBase.css +1 -1
  85. package/dist/css/themes/NotificationStateIcon.css +1 -1
  86. package/dist/css/themes/Page.css +1 -1
  87. package/dist/css/themes/ProductSwitchItem.css +1 -1
  88. package/dist/css/themes/ShellBar.css +1 -1
  89. package/dist/css/themes/ShellBarPopover.css +1 -1
  90. package/dist/css/themes/SideNavigation.css +1 -1
  91. package/dist/css/themes/SideNavigationGroup.css +1 -1
  92. package/dist/css/themes/SideNavigationItem.css +1 -1
  93. package/dist/css/themes/SideNavigationItemBase.css +1 -1
  94. package/dist/css/themes/SideNavigationPopover.css +1 -1
  95. package/dist/css/themes/SideNavigationSubItem.css +1 -1
  96. package/dist/css/themes/Timeline.css +1 -1
  97. package/dist/css/themes/TimelineGroupItem.css +1 -1
  98. package/dist/css/themes/TimelineItem.css +1 -1
  99. package/dist/css/themes/UploadCollection.css +1 -1
  100. package/dist/css/themes/UploadCollectionItem.css +1 -1
  101. package/dist/css/themes/ViewSettingsDialog.css +1 -1
  102. package/dist/css/themes/Wizard.css +1 -1
  103. package/dist/css/themes/WizardTab.css +1 -1
  104. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  105. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  106. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  107. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  108. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  109. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  110. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  111. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  112. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  113. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  114. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  115. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  116. package/dist/custom-elements-internal.json +464 -6
  117. package/dist/custom-elements.json +419 -6
  118. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  119. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  120. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  121. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  122. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  123. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  124. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  125. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  126. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  127. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  128. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  129. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  130. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  131. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  132. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  133. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  134. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  135. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  136. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  137. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  138. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  139. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  140. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  141. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  142. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  143. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  144. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  145. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  146. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  147. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  148. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  149. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  150. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  152. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  153. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  154. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  155. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  156. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  157. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  158. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  159. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  160. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  161. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  162. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  163. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  165. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  168. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  169. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  170. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  171. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  172. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  173. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  174. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  175. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  176. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  177. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  178. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  179. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  180. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  181. package/dist/generated/i18n/i18n-defaults.js +3 -2
  182. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  183. package/dist/generated/themes/DynamicPage.css.d.ts +1 -1
  184. package/dist/generated/themes/DynamicPage.css.js +1 -1
  185. package/dist/generated/themes/DynamicPage.css.js.map +1 -1
  186. package/dist/generated/themes/DynamicPageHeader.css.d.ts +1 -1
  187. package/dist/generated/themes/DynamicPageHeader.css.js +1 -1
  188. package/dist/generated/themes/DynamicPageHeader.css.js.map +1 -1
  189. package/dist/generated/themes/DynamicPageHeaderActions.css.d.ts +1 -1
  190. package/dist/generated/themes/DynamicPageHeaderActions.css.js +1 -1
  191. package/dist/generated/themes/DynamicPageHeaderActions.css.js.map +1 -1
  192. package/dist/generated/themes/DynamicPageTitle.css.d.ts +1 -1
  193. package/dist/generated/themes/DynamicPageTitle.css.js +1 -1
  194. package/dist/generated/themes/DynamicPageTitle.css.js.map +1 -1
  195. package/dist/generated/themes/FlexibleColumnLayout.css.d.ts +1 -1
  196. package/dist/generated/themes/FlexibleColumnLayout.css.js +1 -1
  197. package/dist/generated/themes/FlexibleColumnLayout.css.js.map +1 -1
  198. package/dist/generated/themes/MediaGallery.css.d.ts +1 -1
  199. package/dist/generated/themes/MediaGallery.css.js +1 -1
  200. package/dist/generated/themes/MediaGallery.css.js.map +1 -1
  201. package/dist/generated/themes/MediaGalleryItem.css.d.ts +1 -1
  202. package/dist/generated/themes/MediaGalleryItem.css.js +1 -1
  203. package/dist/generated/themes/MediaGalleryItem.css.js.map +1 -1
  204. package/dist/generated/themes/NavigationMenu.css.d.ts +2 -0
  205. package/dist/generated/themes/NavigationMenu.css.js +8 -0
  206. package/dist/generated/themes/NavigationMenu.css.js.map +1 -0
  207. package/dist/generated/themes/NavigationMenuItem.css.d.ts +2 -0
  208. package/dist/generated/themes/NavigationMenuItem.css.js +8 -0
  209. package/dist/generated/themes/NavigationMenuItem.css.js.map +1 -0
  210. package/dist/generated/themes/NotificationListGroupItem.css.d.ts +1 -1
  211. package/dist/generated/themes/NotificationListGroupItem.css.js +1 -1
  212. package/dist/generated/themes/NotificationListGroupItem.css.js.map +1 -1
  213. package/dist/generated/themes/NotificationListItem.css.d.ts +1 -1
  214. package/dist/generated/themes/NotificationListItem.css.js +1 -1
  215. package/dist/generated/themes/NotificationListItem.css.js.map +1 -1
  216. package/dist/generated/themes/NotificationListItemBase.css.d.ts +1 -1
  217. package/dist/generated/themes/NotificationListItemBase.css.js +1 -1
  218. package/dist/generated/themes/NotificationListItemBase.css.js.map +1 -1
  219. package/dist/generated/themes/NotificationStateIcon.css.d.ts +1 -1
  220. package/dist/generated/themes/NotificationStateIcon.css.js +1 -1
  221. package/dist/generated/themes/NotificationStateIcon.css.js.map +1 -1
  222. package/dist/generated/themes/Page.css.d.ts +1 -1
  223. package/dist/generated/themes/Page.css.js +1 -1
  224. package/dist/generated/themes/Page.css.js.map +1 -1
  225. package/dist/generated/themes/ProductSwitchItem.css.d.ts +1 -1
  226. package/dist/generated/themes/ProductSwitchItem.css.js +1 -1
  227. package/dist/generated/themes/ProductSwitchItem.css.js.map +1 -1
  228. package/dist/generated/themes/ShellBar.css.d.ts +1 -1
  229. package/dist/generated/themes/ShellBar.css.js +1 -1
  230. package/dist/generated/themes/ShellBar.css.js.map +1 -1
  231. package/dist/generated/themes/ShellBarPopover.css.d.ts +1 -1
  232. package/dist/generated/themes/ShellBarPopover.css.js +1 -1
  233. package/dist/generated/themes/ShellBarPopover.css.js.map +1 -1
  234. package/dist/generated/themes/SideNavigation.css.d.ts +1 -1
  235. package/dist/generated/themes/SideNavigation.css.js +1 -1
  236. package/dist/generated/themes/SideNavigation.css.js.map +1 -1
  237. package/dist/generated/themes/SideNavigationGroup.css.d.ts +1 -1
  238. package/dist/generated/themes/SideNavigationGroup.css.js +1 -1
  239. package/dist/generated/themes/SideNavigationGroup.css.js.map +1 -1
  240. package/dist/generated/themes/SideNavigationItem.css.d.ts +1 -1
  241. package/dist/generated/themes/SideNavigationItem.css.js +1 -1
  242. package/dist/generated/themes/SideNavigationItem.css.js.map +1 -1
  243. package/dist/generated/themes/SideNavigationItemBase.css.d.ts +1 -1
  244. package/dist/generated/themes/SideNavigationItemBase.css.js +1 -1
  245. package/dist/generated/themes/SideNavigationItemBase.css.js.map +1 -1
  246. package/dist/generated/themes/SideNavigationPopover.css.d.ts +1 -1
  247. package/dist/generated/themes/SideNavigationPopover.css.js +1 -1
  248. package/dist/generated/themes/SideNavigationPopover.css.js.map +1 -1
  249. package/dist/generated/themes/SideNavigationSubItem.css.d.ts +1 -1
  250. package/dist/generated/themes/SideNavigationSubItem.css.js +1 -1
  251. package/dist/generated/themes/SideNavigationSubItem.css.js.map +1 -1
  252. package/dist/generated/themes/Timeline.css.d.ts +1 -1
  253. package/dist/generated/themes/Timeline.css.js +1 -1
  254. package/dist/generated/themes/Timeline.css.js.map +1 -1
  255. package/dist/generated/themes/TimelineGroupItem.css.d.ts +1 -1
  256. package/dist/generated/themes/TimelineGroupItem.css.js +1 -1
  257. package/dist/generated/themes/TimelineGroupItem.css.js.map +1 -1
  258. package/dist/generated/themes/TimelineItem.css.d.ts +1 -1
  259. package/dist/generated/themes/TimelineItem.css.js +1 -1
  260. package/dist/generated/themes/TimelineItem.css.js.map +1 -1
  261. package/dist/generated/themes/UploadCollection.css.d.ts +1 -1
  262. package/dist/generated/themes/UploadCollection.css.js +1 -1
  263. package/dist/generated/themes/UploadCollection.css.js.map +1 -1
  264. package/dist/generated/themes/UploadCollectionItem.css.d.ts +1 -1
  265. package/dist/generated/themes/UploadCollectionItem.css.js +1 -1
  266. package/dist/generated/themes/UploadCollectionItem.css.js.map +1 -1
  267. package/dist/generated/themes/ViewSettingsDialog.css.d.ts +1 -1
  268. package/dist/generated/themes/ViewSettingsDialog.css.js +1 -1
  269. package/dist/generated/themes/ViewSettingsDialog.css.js.map +1 -1
  270. package/dist/generated/themes/Wizard.css.d.ts +1 -1
  271. package/dist/generated/themes/Wizard.css.js +1 -1
  272. package/dist/generated/themes/Wizard.css.js.map +1 -1
  273. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  274. package/dist/generated/themes/WizardTab.css.js +1 -1
  275. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  276. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.d.ts +1 -1
  277. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  278. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  279. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.d.ts +1 -1
  280. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  281. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  282. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.d.ts +1 -1
  283. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  284. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  285. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.d.ts +1 -1
  286. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  287. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  288. package/dist/generated/themes/sap_horizon/parameters-bundle.css.d.ts +1 -1
  289. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  290. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  291. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.d.ts +1 -1
  292. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  293. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  294. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.d.ts +1 -1
  295. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  296. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  297. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.d.ts +1 -1
  298. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  299. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  300. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.d.ts +1 -1
  301. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  302. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  303. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.d.ts +1 -1
  304. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  305. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  306. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.d.ts +1 -1
  307. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  308. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  309. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.d.ts +1 -1
  310. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  311. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  312. package/dist/types/SideNavigationItemDesign.d.ts +22 -0
  313. package/dist/types/SideNavigationItemDesign.js +24 -0
  314. package/dist/types/SideNavigationItemDesign.js.map +1 -0
  315. package/dist/types/TimelineGrowingMode.d.ts +19 -0
  316. package/dist/types/TimelineGrowingMode.js +21 -0
  317. package/dist/types/TimelineGrowingMode.js.map +1 -0
  318. package/dist/vscode.html-custom-data.json +76 -7
  319. package/dist/web-types.json +140 -15
  320. package/package.json +7 -7
  321. package/src/FlexibleColumnLayoutTemplate.tsx +7 -5
  322. package/src/MediaGalleryItemTemplate.tsx +22 -0
  323. package/src/MediaGalleryTemplate.tsx +50 -0
  324. package/src/NavigationMenuItemTemplate.tsx +144 -0
  325. package/src/NavigationMenuTemplate.tsx +68 -0
  326. package/src/SideNavigationItemTemplate.tsx +1 -2
  327. package/src/SideNavigationPopoverTemplate.tsx +10 -2
  328. package/src/SideNavigationSubItemTemplate.tsx +1 -0
  329. package/src/TimelineItemTemplate.tsx +1 -1
  330. package/src/TimelineTemplate.tsx +56 -9
  331. package/src/UserMenuTemplate.tsx +2 -0
  332. package/src/i18n/messagebundle.properties +3 -0
  333. package/src/i18n/messagebundle_ar.properties +26 -0
  334. package/src/i18n/messagebundle_bg.properties +27 -1
  335. package/src/i18n/messagebundle_ca.properties +26 -0
  336. package/src/i18n/messagebundle_cnr.properties +26 -0
  337. package/src/i18n/messagebundle_cs.properties +26 -0
  338. package/src/i18n/messagebundle_cy.properties +26 -0
  339. package/src/i18n/messagebundle_da.properties +26 -0
  340. package/src/i18n/messagebundle_de.properties +27 -1
  341. package/src/i18n/messagebundle_el.properties +26 -0
  342. package/src/i18n/messagebundle_en.properties +20 -0
  343. package/src/i18n/messagebundle_en_GB.properties +26 -0
  344. package/src/i18n/messagebundle_en_US_sappsd.properties +20 -0
  345. package/src/i18n/messagebundle_en_US_saprigi.properties +20 -0
  346. package/src/i18n/messagebundle_en_US_saptrc.properties +20 -0
  347. package/src/i18n/messagebundle_es.properties +26 -0
  348. package/src/i18n/messagebundle_es_MX.properties +26 -0
  349. package/src/i18n/messagebundle_et.properties +26 -0
  350. package/src/i18n/messagebundle_fi.properties +26 -0
  351. package/src/i18n/messagebundle_fr.properties +26 -0
  352. package/src/i18n/messagebundle_fr_CA.properties +26 -0
  353. package/src/i18n/messagebundle_hi.properties +26 -0
  354. package/src/i18n/messagebundle_hr.properties +26 -0
  355. package/src/i18n/messagebundle_hu.properties +26 -0
  356. package/src/i18n/messagebundle_id.properties +26 -0
  357. package/src/i18n/messagebundle_it.properties +29 -3
  358. package/src/i18n/messagebundle_iw.properties +26 -0
  359. package/src/i18n/messagebundle_ja.properties +26 -0
  360. package/src/i18n/messagebundle_kk.properties +26 -0
  361. package/src/i18n/messagebundle_ko.properties +26 -0
  362. package/src/i18n/messagebundle_lt.properties +26 -0
  363. package/src/i18n/messagebundle_lv.properties +26 -0
  364. package/src/i18n/messagebundle_mk.properties +26 -0
  365. package/src/i18n/messagebundle_ms.properties +26 -0
  366. package/src/i18n/messagebundle_nl.properties +26 -0
  367. package/src/i18n/messagebundle_no.properties +26 -0
  368. package/src/i18n/messagebundle_pl.properties +26 -0
  369. package/src/i18n/messagebundle_pt.properties +26 -0
  370. package/src/i18n/messagebundle_pt_PT.properties +26 -0
  371. package/src/i18n/messagebundle_ro.properties +26 -0
  372. package/src/i18n/messagebundle_ru.properties +26 -0
  373. package/src/i18n/messagebundle_sh.properties +26 -0
  374. package/src/i18n/messagebundle_sk.properties +26 -0
  375. package/src/i18n/messagebundle_sl.properties +26 -0
  376. package/src/i18n/messagebundle_sr.properties +26 -0
  377. package/src/i18n/messagebundle_sv.properties +26 -0
  378. package/src/i18n/messagebundle_th.properties +26 -0
  379. package/src/i18n/messagebundle_tr.properties +26 -0
  380. package/src/i18n/messagebundle_uk.properties +26 -0
  381. package/src/i18n/messagebundle_vi.properties +27 -1
  382. package/src/i18n/messagebundle_zh_CN.properties +26 -0
  383. package/src/i18n/messagebundle_zh_TW.properties +26 -0
  384. package/src/themes/NavigationMenu.css +17 -0
  385. package/src/themes/NavigationMenuItem.css +67 -0
  386. package/src/themes/NotificationListItem.css +1 -0
  387. package/src/themes/SideNavigationItemBase.css +13 -0
  388. package/src/themes/Timeline.css +43 -0
  389. package/src/themes/TimelineItem.css +1 -0
  390. package/dist/generated/templates/MediaGalleryItemTemplate.lit.d.ts +0 -3
  391. package/dist/generated/templates/MediaGalleryItemTemplate.lit.js +0 -10
  392. package/dist/generated/templates/MediaGalleryItemTemplate.lit.js.map +0 -1
  393. package/dist/generated/templates/MediaGalleryTemplate.lit.d.ts +0 -3
  394. package/dist/generated/templates/MediaGalleryTemplate.lit.js +0 -13
  395. package/dist/generated/templates/MediaGalleryTemplate.lit.js.map +0 -1
  396. package/src/MediaGallery.hbs +0 -46
  397. package/src/MediaGalleryItem.hbs +0 -20
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.7.0-rc.2](https://github.com/SAP/ui5-webcomponents/compare/v2.7.0-rc.1...v2.7.0-rc.2) (2025-01-30)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **ui5-side-navigation-item:** correct color for actions in overflow menu ([#10678](https://github.com/SAP/ui5-webcomponents/issues/10678)) ([a96d5ff](https://github.com/SAP/ui5-webcomponents/commit/a96d5ff937807c895b8956882c8f4995fcda8aa1))
12
+ * **ui5-side-navigation:** don't toggle expanded state of items in popover ([#10691](https://github.com/SAP/ui5-webcomponents/issues/10691)) ([4c49c96](https://github.com/SAP/ui5-webcomponents/commit/4c49c96317159fbde9a69c09e8454be99a14a8c8))
13
+ * **ui5-timeline-item:** correct wrapping on long text ([#10483](https://github.com/SAP/ui5-webcomponents/issues/10483)) ([bf4c816](https://github.com/SAP/ui5-webcomponents/commit/bf4c816a38d2206b0c472c05846d74c81edc9e6e))
14
+
15
+
16
+ ### Features
17
+
18
+ * **ui5-side-navigation:** add actions and unselectable items ([#10482](https://github.com/SAP/ui5-webcomponents/issues/10482)) ([9fb9bae](https://github.com/SAP/ui5-webcomponents/commit/9fb9bae3ce086320aed83117aa8641fc06ad5587))
19
+ * **ui5-timeline:** introduce "growing" property ([#10470](https://github.com/SAP/ui5-webcomponents/issues/10470)) ([c39c0e8](https://github.com/SAP/ui5-webcomponents/commit/c39c0e845dceadb1383c49ea8d2f60cd98df3fc0))
20
+ * **ui5-user-menu:** introduce `show-edit-button` property ([#10619](https://github.com/SAP/ui5-webcomponents/issues/10619)) ([6adec46](https://github.com/SAP/ui5-webcomponents/commit/6adec468c2edf41df608d26511a9b7cbf58381f7))
21
+
22
+
23
+
24
+
25
+
6
26
  # [2.7.0-rc.1](https://github.com/SAP/ui5-webcomponents/compare/v2.7.0-rc.0...v2.7.0-rc.1) (2025-01-23)
7
27
 
8
28
 
@@ -15,28 +15,65 @@ describe("Columns resize", () => {
15
15
  `);
16
16
  });
17
17
 
18
- it("toggles _resizing property during separator drag'n'drop", () => {
18
+ it("separator drag'n'drop", () => {
19
+ let oldWidthFirstCol: number;
20
+ let widthAfterMove: number;
21
+
19
22
  cy.get("[ui5-flexible-column-layout]")
20
23
  .as("fcl");
21
24
 
22
25
  cy.get("[ui5-flexible-column-layout]")
23
26
  .shadow()
24
27
  .find(".ui5-fcl-separator-start")
28
+ .should("be.visible")
25
29
  .as("separator");
26
30
 
31
+ cy.get("[ui5-flexible-column-layout]")
32
+ .shadow()
33
+ .find(".ui5-fcl-column--start")
34
+ .then($el => {
35
+ oldWidthFirstCol = $el.width()!;
36
+ });
37
+
27
38
  // act: mock the user starting to drag the separator
28
39
  cy.get("@separator")
29
40
  .realMouseDown();
30
41
 
31
- // assert that the property is set
32
- cy.get("@fcl")
33
- .should("have.prop", "_resizing", true);
42
+ // act: mock the user starting to drag the separator
43
+ cy.get("@separator")
44
+ .realMouseMove(200, 0);
45
+
46
+ cy.get("[ui5-flexible-column-layout]")
47
+ .shadow()
48
+ .find(".ui5-fcl-column--start")
49
+ .should($el => {
50
+ widthAfterMove = $el.width()!;
51
+
52
+ expect(oldWidthFirstCol).to.be.lt(widthAfterMove);
53
+ });
34
54
 
35
55
  // act: mock the user releasing the mouse button; use "then" to ensure it happens after the above check has completed
36
56
  cy.get("@separator")
37
57
  .realMouseUp();
38
- // assert that the property is reset
39
- cy.get("@fcl")
40
- .should("have.prop", "_resizing", false);
58
+
59
+ for (let i = 0; i < 5; i++) {
60
+ cy.get("@separator")
61
+ .realMouseMove(i * 50, 0);
62
+ }
63
+
64
+ for (let i = 0; i < 5; i++) {
65
+ cy.get("@separator")
66
+ .realMouseMove(i * -100, 0);
67
+ }
68
+
69
+ cy.get("@separator")
70
+ .realMouseMove(-400, 0);
71
+
72
+ cy.get("[ui5-flexible-column-layout]")
73
+ .shadow()
74
+ .find(".ui5-fcl-column--start")
75
+ .should($el => {
76
+ expect(widthAfterMove).to.be.equal($el.width()!);
77
+ });
41
78
  });
42
79
  });
@@ -8,7 +8,6 @@ import "@ui5/webcomponents/dist/Switch.js";
8
8
  import "@ui5/webcomponents/dist/Tag.js";
9
9
  import "@ui5/webcomponents/dist/Avatar.js";
10
10
  import "@ui5/webcomponents/dist/Input.js";
11
- import "@ui5/webcomponents/dist/features/InputSuggestions.js";
12
11
  import "@ui5/webcomponents/dist/SuggestionItem.js";
13
12
  import "@ui5/webcomponents/dist/SuggestionItemCustom.js";
14
13
  import "@ui5/webcomponents/dist/SuggestionItemGroup.js";
@@ -3,36 +3,533 @@ import "../../src/SideNavigation.js";
3
3
  import "../../src/SideNavigationItem.js";
4
4
  import "../../src/SideNavigationSubItem.js";
5
5
 
6
- const sample = html` <ui5-side-navigation>
7
- <ui5-side-navigation-item
8
- id="item1"
9
- text="Home"
10
- icon="home"
11
- tooltip="Home tooltip"
12
- ></ui5-side-navigation-item>
13
- <ui5-side-navigation-item id="item2" text="People" icon="group">
14
- <ui5-side-navigation-sub-item
15
- id="item21"
16
- text="From My Team"
17
- icon="employee-approvals"
18
- tooltip="From My Team tooltip"
19
- ></ui5-side-navigation-sub-item>
20
- <ui5-side-navigation-sub-item
21
- id="item22"
22
- text="From Other Teams"
23
- icon="employee-rejections"
24
- ></ui5-side-navigation-sub-item>
25
- </ui5-side-navigation-item>
26
- </ui5-side-navigation>`;
6
+ describe("Side Navigation Rendering", () => {
7
+ it("Tests rendering in collapsed mode", () => {
8
+ cy.mount(html`
9
+ <ui5-side-navigation id="sideNav" collapsed>
10
+ <ui5-side-navigation-item text="1" id="parentItem">
11
+ <ui5-side-navigation-sub-item text="1.1"></ui5-side-navigation-sub-item>
12
+ <ui5-side-navigation-sub-item text="1.2" design="Action"></ui5-side-navigation-sub-item>
13
+ </ui5-side-navigation-item>
14
+ <ui5-side-navigation-item text="2" id="parentItem2" design="Action">
15
+ <ui5-side-navigation-sub-item text="2.1"></ui5-side-navigation-sub-item>
16
+ </ui5-side-navigation-item>
17
+ </ui5-side-navigation>
18
+ `);
19
+
20
+ cy.get("#parentItem").realClick();
21
+ cy.get("#sideNav")
22
+ .shadow()
23
+ .find("[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='1.2']")
24
+ .should("have.attr", "design", "Action");
25
+
26
+ cy.get("#parentItem2").realClick();
27
+ cy.get("#sideNav")
28
+ .shadow()
29
+ .find("[ui5-responsive-popover] [ui5-side-navigation-item][text='2']")
30
+ .should("have.attr", "design", "Action");
31
+ });
32
+
33
+ it("Tests rendering of overflow items", () => {
34
+ cy.mount(html`
35
+ <ui5-side-navigation id="sideNav" collapsed>
36
+ <ui5-side-navigation-item text="dummy item"></ui5-side-navigation-item>
37
+ <ui5-side-navigation-item text="1" design="Action"></ui5-side-navigation-item>
38
+ <ui5-side-navigation-item text="2" href="https://sap.com" target="_blank" design="Action"></ui5-side-navigation-item>
39
+ <ui5-side-navigation-item text="3">
40
+ <ui5-side-navigation-sub-item text="3.1" design="Action"></ui5-side-navigation-sub-item>
41
+ </ui5-side-navigation-item>
42
+ </ui5-side-navigation>
43
+ `);
44
+
45
+ cy.get("#sideNav")
46
+ .invoke("attr", "style", "height: 100px");
47
+
48
+ cy.get("#sideNav")
49
+ .shadow()
50
+ .find(".ui5-sn-item-overflow:not(.ui5-sn-item-hidden)")
51
+ .realClick();
52
+
53
+ cy.get("#sideNav")
54
+ .shadow()
55
+ .find(".ui5-side-navigation-overflow-menu [ui5-navigation-menu-item][text='1']")
56
+ .should("have.attr", "design", "Action");
57
+
58
+ cy.get("#sideNav")
59
+ .shadow()
60
+ .find(".ui5-side-navigation-overflow-menu [ui5-navigation-menu-item][text='2']")
61
+ .should("have.attr", "design", "Action");
62
+
63
+ cy.get("#sideNav")
64
+ .shadow()
65
+ .find(".ui5-side-navigation-overflow-menu [ui5-navigation-menu-item][text='3.1']")
66
+ .should("have.attr", "design", "Action");
67
+ });
68
+ });
27
69
 
28
70
  describe("Side Navigation interaction", () => {
29
- it("Tests that expand works", () => {
30
- cy.mount(sample);
71
+ it("Tests expanding and collapsing of items", () => {
72
+ cy.mount(html`
73
+ <ui5-side-navigation>
74
+ <ui5-side-navigation-item id="item1" text="1" icon="group">
75
+ <ui5-side-navigation-sub-item text="1.1"></ui5-side-navigation-sub-item>
76
+ <ui5-side-navigation-sub-item text="1.2"></ui5-side-navigation-sub-item>
77
+ </ui5-side-navigation-item>
78
+ </ui5-side-navigation>
79
+ `);
80
+
81
+ // act
82
+ cy.get("#item1").shadow().find(".ui5-sn-item-toggle-icon").realClick();
83
+
84
+ // assert
85
+ cy.get("#item1").should("have.attr", "expanded");
31
86
 
32
87
  // act
33
- cy.get("#item2").shadow().find(".ui5-sn-item-toggle-icon").realClick();
88
+ cy.get("#item1").shadow().find(".ui5-sn-item-toggle-icon").realClick();
89
+
90
+ // assert
91
+ cy.get("#item1").should("not.have.attr", "expanded");
92
+ });
93
+
94
+ it("Tests expanding and collapsing of unselectable items", () => {
95
+ cy.mount(html`
96
+ <ui5-side-navigation>
97
+ <ui5-side-navigation-item id="item1" text="1" unselectable>
98
+ <ui5-side-navigation-sub-item text="2"></ui5-side-navigation-sub-item>
99
+ </ui5-side-navigation-item>
100
+ </ui5-side-navigation>
101
+ `);
102
+
103
+ // act
104
+ cy.get("#item1").shadow().find(".ui5-sn-item-toggle-icon").realClick();
105
+
106
+ // assert
107
+ cy.get("#item1").should("have.attr", "expanded");
108
+
109
+ // act
110
+ cy.get("#item1").shadow().find(".ui5-sn-item-toggle-icon").realClick();
111
+
112
+ // assert
113
+ cy.get("#item1").should("not.have.attr", "expanded");
114
+
115
+ // act
116
+ cy.get("#item1").shadow().find(".ui5-sn-item-text").realClick();
117
+
118
+ // assert
119
+ cy.get("#item1").should("have.attr", "expanded");
120
+
121
+ // act
122
+ cy.get("#item1").shadow().find(".ui5-sn-item-text").realClick();
123
+
124
+ // assert
125
+ cy.get("#item1").should("not.have.attr", "expanded");
126
+ });
127
+
128
+ it("Tests expanding and collapsing of unselectable items with Space and Enter", () => {
129
+ cy.mount(html`
130
+ <ui5-side-navigation>
131
+ <ui5-side-navigation-item id="focusStart" text="focus start"></ui5-side-navigation-item>
132
+ <ui5-side-navigation-item id="unselectableItem" text="1" unselectable>
133
+ <ui5-side-navigation-sub-item text="1.2"></ui5-side-navigation-sub-item>
134
+ </ui5-side-navigation-item>
135
+ </ui5-side-navigation>
136
+ `);
137
+
138
+ // act
139
+ cy.get("#focusStart").realClick();
140
+ cy.realPress("ArrowDown");
141
+ cy.realPress("Space");
142
+
143
+ // assert
144
+ cy.get("#unselectableItem").should("be.focused").and("have.attr", "expanded");
145
+
146
+ // act
147
+ cy.realPress("Space");
148
+
149
+ // assert
150
+ cy.get("#unselectableItem").should("be.focused").and("not.have.attr", "expanded");
151
+
152
+ // act
153
+ cy.realPress("Enter");
154
+
155
+ // assert
156
+ cy.get("#unselectableItem").should("be.focused").and("have.attr", "expanded");
157
+
158
+ // act
159
+ cy.realPress("Enter");
160
+
161
+ // assert
162
+ cy.get("#unselectableItem").should("be.focused").and("not.have.attr", "expanded");
163
+ });
164
+
165
+ it("Tests expanding and collapsing of unselectable parent item when SideNavigation is collapsed", () => {
166
+ cy.mount(html`
167
+ <ui5-side-navigation id="sideNav" collapsed>
168
+ <ui5-side-navigation-item id="item1" text="1" unselectable>
169
+ <ui5-side-navigation-sub-item text="1.1"></ui5-side-navigation-sub-item>
170
+ </ui5-side-navigation-item>
171
+ </ui5-side-navigation>
172
+ `);
173
+
174
+ // act
175
+ cy.get("#item1").realClick();
176
+
177
+ // assert
178
+ cy.get("#sideNav")
179
+ .shadow()
180
+ .find("[ui5-responsive-popover] [ui5-side-navigation-item][text='1']")
181
+ .should("have.attr", "expanded");
34
182
 
35
183
  // assert
36
- cy.get("#item2").should("have.attr", "expanded");
184
+ cy.get("#sideNav")
185
+ .shadow()
186
+ .find("[ui5-responsive-popover] [ui5-side-navigation-item][text='1']")
187
+ .realClick();
188
+
189
+ // assert
190
+ cy.get("#sideNav")
191
+ .shadow()
192
+ .find("[ui5-responsive-popover] [ui5-side-navigation-item][text='1']")
193
+ .should("have.attr", "expanded");
194
+ });
195
+
196
+ it("Tests isSelectable", () => {
197
+ cy.mount(`
198
+ <ui5-side-navigation>
199
+ <ui5-side-navigation-item id="item1" text="1"></ui5-side-navigation-item>
200
+ <ui5-side-navigation-item id="item2" text="2" disabled></ui5-side-navigation-item>
201
+ <ui5-side-navigation-item id="item3" text="3" design="Action"></ui5-side-navigation-item>
202
+ <ui5-side-navigation-item id="item4" text="4" href="https://sap.com"></ui5-side-navigation-item>
203
+ <ui5-side-navigation-item id="item5" text="5" unselectable></ui5-side-navigation-item>
204
+ <ui5-side-navigation-item>
205
+ <ui5-side-navigation-sub-item id="item6" text="6"></ui5-side-navigation-sub-item>
206
+ <ui5-side-navigation-sub-item id="item7" text="7" unselectable></ui5-side-navigation-sub-item>
207
+ </ui5-side-navigation-item>
208
+ </ui5-side-navigation>
209
+ `);
210
+
211
+ // assert
212
+ [
213
+ { id: "item1", expectedIsSelectable: true },
214
+ { id: "item2", expectedIsSelectable: false },
215
+ { id: "item3", expectedIsSelectable: true },
216
+ { id: "item4", expectedIsSelectable: true },
217
+ { id: "item5", expectedIsSelectable: false },
218
+ { id: "item6", expectedIsSelectable: true },
219
+ { id: "item7", expectedIsSelectable: false },
220
+ ].forEach(({ id, expectedIsSelectable }) => {
221
+ cy.get(`#${id}`)
222
+ .invoke("prop", "isSelectable")
223
+ .should("equal", expectedIsSelectable);
224
+ });
225
+ });
226
+
227
+ it("Tests 'click' event", () => {
228
+ cy.mount(html`
229
+ <ui5-side-navigation id="sideNav">
230
+ <ui5-side-navigation-item id="item" text="1"></ui5-side-navigation-item>
231
+ <ui5-side-navigation-item id="unselectableItem" text="2" unselectable></ui5-side-navigation-item>
232
+ <ui5-side-navigation-item id="parentItem" text="3">
233
+ <ui5-side-navigation-sub-item text="3.1"></ui5-side-navigation-sub-item>
234
+ </ui5-side-navigation-item>
235
+ <ui5-side-navigation-item text="4" expanded>
236
+ <ui5-side-navigation-sub-item id="childItem" text="4.1"></ui5-side-navigation-sub-item>
237
+ </ui5-side-navigation-item>
238
+ <ui5-side-navigation-item id="unselectableParentItem" text="5" unselectable>
239
+ <ui5-side-navigation-sub-item id="text9" text="5.1"></ui5-side-navigation-sub-item>
240
+ </ui5-side-navigation-item>
241
+ </ui5-side-navigation>
242
+ `);
243
+
244
+ [
245
+ { element: cy.get("#item"), expectedCallCount: 1 },
246
+ { element: cy.get("#unselectableItem"), expectedCallCount: 1 },
247
+ { element: cy.get("#parentItem"), expectedCallCount: 1 },
248
+ { element: cy.get("#childItem"), expectedCallCount: 1 },
249
+ { element: cy.get("#unselectableParentItem"), expectedCallCount: 1 },
250
+ { element: cy.get("#unselectableParentItem").shadow().find(".ui5-sn-item-toggle-icon"), expectedCallCount: 0 },
251
+ ].forEach(({ element, expectedCallCount }) => {
252
+ cy.get("#sideNav")
253
+ .then(sideNav => {
254
+ sideNav.get(0).addEventListener("click", cy.stub().as("clickHandler"));
255
+ });
256
+ // act
257
+ element.realClick();
258
+
259
+ // assert
260
+ cy.get("@clickHandler").should("have.callCount", expectedCallCount);
261
+ });
262
+ });
263
+
264
+ it("Tests 'click' event with Enter and Space", () => {
265
+ cy.mount(html`
266
+ <ui5-side-navigation id="sideNav">
267
+ <ui5-side-navigation-item id="item" text="1"></ui5-side-navigation-item>
268
+ <ui5-side-navigation-item id="unselectableItem" text="2" unselectable></ui5-side-navigation-item>
269
+ <ui5-side-navigation-item id="parentItem" text="3">
270
+ <ui5-side-navigation-sub-item text="3.1"></ui5-side-navigation-sub-item>
271
+ </ui5-side-navigation-item>
272
+ <ui5-side-navigation-item text="4" expanded>
273
+ <ui5-side-navigation-sub-item id="childItem" text="4.1"></ui5-side-navigation-sub-item>
274
+ </ui5-side-navigation-item>
275
+ <ui5-side-navigation-item id="unselectableParentItem" text="5" unselectable>
276
+ <ui5-side-navigation-sub-item id="text9" text="5.1"></ui5-side-navigation-sub-item>
277
+ </ui5-side-navigation-item>
278
+ </ui5-side-navigation>
279
+ `);
280
+
281
+ [
282
+ { selector: "#item", expectedCallCount: 2 },
283
+ { selector: "#unselectableItem", expectedCallCount: 2 },
284
+ { selector: "#parentItem", expectedCallCount: 2 },
285
+ { selector: "#childItem", expectedCallCount: 2 },
286
+ { selector: "#unselectableParentItem", expectedCallCount: 2 },
287
+ ].forEach(({ selector, expectedCallCount }) => {
288
+ cy.get("#sideNav")
289
+ .then(sideNav => {
290
+ sideNav.get(0).addEventListener("click", cy.stub().as("clickHandler"));
291
+ });
292
+
293
+ cy.get(selector)
294
+ .shadow()
295
+ .find(".ui5-sn-item")
296
+ .as("sn-item")
297
+ .should("have.attr", "tabindex");
298
+
299
+ // act
300
+ cy.get("@sn-item")
301
+ .focus();
302
+
303
+ cy.realPress("Space")
304
+ .realPress("Enter");
305
+
306
+ // assert
307
+ cy.get("@clickHandler").should("have.callCount", expectedCallCount);
308
+ });
309
+ });
310
+
311
+ it("Tests 'selection-change' event", () => {
312
+ cy.mount(html`
313
+ <ui5-side-navigation id="sideNav">
314
+ <ui5-side-navigation-item id="item" text="1"></ui5-side-navigation-item>
315
+ <ui5-side-navigation-item id="unselectableItem" text="2" unselectable></ui5-side-navigation-item>
316
+ <ui5-side-navigation-item id="parentItem" text="3">
317
+ <ui5-side-navigation-sub-item text="3.1"></ui5-side-navigation-sub-item>
318
+ </ui5-side-navigation-item>
319
+ <ui5-side-navigation-item text="4" expanded>
320
+ <ui5-side-navigation-sub-item id="childItem" text="4.1"></ui5-side-navigation-sub-item>
321
+ </ui5-side-navigation-item>
322
+ <ui5-side-navigation-item id="unselectableParentItem" text="5" unselectable>
323
+ <ui5-side-navigation-sub-item id="text9" text="5.1"></ui5-side-navigation-sub-item>
324
+ </ui5-side-navigation-item>
325
+ </ui5-side-navigation>
326
+ `);
327
+
328
+ [
329
+ { element: cy.get("#item"), expectedCallCount: 1 },
330
+ { element: cy.get("#unselectableItem"), expectedCallCount: 0 },
331
+ { element: cy.get("#parentItem"), expectedCallCount: 1 },
332
+ { element: cy.get("#childItem"), expectedCallCount: 1 },
333
+ { element: cy.get("#unselectableParentItem"), expectedCallCount: 0 },
334
+ { element: cy.get("#unselectableParentItem").shadow().find(".ui5-sn-item-toggle-icon"), expectedCallCount: 0 },
335
+ ].forEach(({ element, expectedCallCount }) => {
336
+ cy.get("#sideNav")
337
+ .then(sideNav => {
338
+ sideNav.get(0).addEventListener("ui5-selection-change", cy.stub().as("selectionChangeHandler"));
339
+ });
340
+ // act
341
+ element.realClick();
342
+
343
+ // assert
344
+ cy.get("@selectionChangeHandler").should("have.callCount", expectedCallCount);
345
+ });
346
+ });
347
+
348
+ it("Tests 'selection-change' event when SideNavigation is collapsed", () => {
349
+ cy.mount(html`
350
+ <ui5-side-navigation id="sideNav" collapsed>
351
+ <ui5-side-navigation-item text="1"></ui5-side-navigation-item>
352
+ <ui5-side-navigation-item id="parentItem" text="2">
353
+ <ui5-side-navigation-sub-item text="2.1"></ui5-side-navigation-sub-item>
354
+ <ui5-side-navigation-sub-item text="2.2" unselectable></ui5-side-navigation-sub-item>
355
+ </ui5-side-navigation-item>
356
+ </ui5-side-navigation>
357
+ `);
358
+
359
+ cy.get("#parentItem").realClick();
360
+ [
361
+ {
362
+ element: cy.get("#sideNav").shadow().find("[ui5-responsive-popover] [ui5-side-navigation-item][text='2']").shadow()
363
+ .find(".ui5-sn-item"),
364
+ expectedCallCount: 1,
365
+ },
366
+ {
367
+ element: cy.get("#sideNav").shadow().find("[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='2.1']"),
368
+ expectedCallCount: 1,
369
+ },
370
+ {
371
+ element: cy.get("#sideNav").shadow().find("[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='2.2']"),
372
+ expectedCallCount: 0,
373
+ },
374
+ ].forEach(({ element, expectedCallCount }) => {
375
+ cy.get("#sideNav")
376
+ .then(sideNav => {
377
+ sideNav.get(0).addEventListener("ui5-selection-change", cy.stub().as("selectionChangeHandler"));
378
+ });
379
+
380
+ // act
381
+ cy.get("#parentItem").realClick();
382
+ element.realClick();
383
+
384
+ // assert
385
+ cy.get("@selectionChangeHandler").should("have.callCount", expectedCallCount);
386
+ });
387
+ });
388
+ });
389
+
390
+ describe("Side Navigation Accessibility", () => {
391
+ it("SideNavigationItem ariaHasPopup", () => {
392
+ cy.mount(html`
393
+ <ui5-side-navigation>
394
+ <ui5-side-navigation-item id="item1" text="1"></ui5-side-navigation-item>
395
+ <ui5-side-navigation-item id="item2" text="2" expanded>
396
+ <ui5-side-navigation-sub-item id="childItem" text="2.1"></ui5-side-navigation-sub-item>
397
+ </ui5-side-navigation-item>
398
+ </ui5-side-navigation>
399
+ `);
400
+
401
+ cy.get("#item1")
402
+ .shadow()
403
+ .find(".ui5-sn-item")
404
+ .should("not.have.attr", "aria-haspopup");
405
+
406
+ cy.get("#item1")
407
+ .invoke("prop", "accessibilityAttributes", {
408
+ hasPopup: "dialog",
409
+ });
410
+
411
+ cy.get("#item1")
412
+ .shadow()
413
+ .find(".ui5-sn-item")
414
+ .should("have.attr", "aria-haspopup", "dialog");
415
+
416
+ cy.get("#childItem")
417
+ .shadow()
418
+ .find(".ui5-sn-item")
419
+ .should("not.have.attr", "aria-haspopup");
420
+
421
+ cy.get("#childItem")
422
+ .invoke("prop", "accessibilityAttributes", {
423
+ hasPopup: "dialog",
424
+ });
425
+
426
+ cy.get("#childItem")
427
+ .shadow()
428
+ .find(".ui5-sn-item")
429
+ .should("have.attr", "aria-haspopup", "dialog");
430
+ });
431
+
432
+ it("SideNavigationItem with sub items ariaHasPopup in collapsed SideNavigation", () => {
433
+ cy.mount(html`
434
+ <ui5-side-navigation id="sideNav" collapsed>
435
+ <ui5-side-navigation-item id="item1" text="1">
436
+ <ui5-side-navigation-sub-item id="childItem" text="1.1"></ui5-side-navigation-sub-item>
437
+ </ui5-side-navigation-item>
438
+ </ui5-side-navigation>
439
+ `);
440
+ cy.get("#item1").realClick();
441
+
442
+ // assert
443
+ cy.get("#item1")
444
+ .shadow()
445
+ .find(".ui5-sn-item")
446
+ .should("have.attr", "aria-haspopup", "tree");
447
+
448
+ cy.get("#sideNav")
449
+ .shadow()
450
+ .find("[ui5-responsive-popover] [ui5-side-navigation-item][text='1']")
451
+ .shadow()
452
+ .find(".ui5-sn-item")
453
+ .should("not.have.attr", "aria-haspopup");
454
+
455
+ cy.get("#sideNav")
456
+ .shadow()
457
+ .find("[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='1.1']")
458
+ .shadow()
459
+ .find(".ui5-sn-item")
460
+ .should("not.have.attr", "aria-haspopup");
461
+
462
+ // act
463
+ cy.get("#item1")
464
+ .invoke("prop", "accessibilityAttributes", {
465
+ hasPopup: "dialog",
466
+ });
467
+ cy.get("#childItem")
468
+ .invoke("prop", "accessibilityAttributes", {
469
+ hasPopup: "dialog",
470
+ });
471
+
472
+ // reopen the popover
473
+ cy.get("#item1").realClick().realClick();
474
+
475
+ // assert
476
+ cy.get("#item1")
477
+ .shadow()
478
+ .find(".ui5-sn-item")
479
+ .should("have.attr", "aria-haspopup", "tree");
480
+
481
+ cy.get("#sideNav")
482
+ .shadow()
483
+ .find("[ui5-responsive-popover] [ui5-side-navigation-item][text='1']")
484
+ .shadow()
485
+ .find(".ui5-sn-item")
486
+ .should("have.attr", "aria-haspopup", "dialog");
487
+
488
+ cy.get("#sideNav")
489
+ .shadow()
490
+ .find("[ui5-responsive-popover] [ui5-side-navigation-sub-item][text='1.1']")
491
+ .shadow()
492
+ .find(".ui5-sn-item")
493
+ .should("have.attr", "aria-haspopup", "dialog");
494
+ });
495
+
496
+ it("SideNavigationItem aria-role in collapsed SideNavigation", () => {
497
+ cy.mount(html`
498
+ <ui5-side-navigation id="sideNav" collapsed>
499
+ <ui5-side-navigation-item id="item" text="1"></ui5-side-navigation-item>
500
+ <ui5-side-navigation-item id="unselectableItem" text="2" unselectable></ui5-side-navigation-item>
501
+ </ui5-side-navigation>
502
+ `);
503
+
504
+ // assert
505
+ cy.get("#item")
506
+ .shadow()
507
+ .find(".ui5-sn-item")
508
+ .should("have.attr", "role", "menuitemradio");
509
+
510
+ cy.get("#unselectableItem")
511
+ .shadow()
512
+ .find(".ui5-sn-item")
513
+ .should("have.attr", "role", "menuitem");
514
+ });
515
+
516
+ it("SideNavigationItem aria-checked in collapsed SideNavigation", () => {
517
+ cy.mount(html`
518
+ <ui5-side-navigation id="sideNav" collapsed>
519
+ <ui5-side-navigation-item id="item" text="1"></ui5-side-navigation-item>
520
+ <ui5-side-navigation-item id="unselectableItem" text="2" unselectable></ui5-side-navigation-item>
521
+ </ui5-side-navigation>
522
+ `);
523
+
524
+ // assert
525
+ cy.get("#item")
526
+ .shadow()
527
+ .find(".ui5-sn-item")
528
+ .should("have.attr", "aria-checked");
529
+
530
+ cy.get("#unselectableItem")
531
+ .shadow()
532
+ .find(".ui5-sn-item")
533
+ .should("not.have.attr", "aria-checked");
37
534
  });
38
535
  });