@sapudex/web-components 2.56.0 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/README.md +258 -0
  2. package/cypress/specs/FilterMenu.cy.tsx +209 -19
  3. package/cypress/specs/List.cy.tsx +67 -4
  4. package/cypress/specs/ListItem.cy.tsx +35 -9
  5. package/cypress/specs/SelectBox.cy.tsx +100 -0
  6. package/cypress/specs/TabNavigation.cy.tsx +297 -21
  7. package/cypress/specs/TagGroup.cy.tsx +35 -0
  8. package/dist/Carousel.d.ts +9 -3
  9. package/dist/Carousel.js +35 -6
  10. package/dist/Carousel.js.map +1 -1
  11. package/dist/CarouselTemplate.js +3 -3
  12. package/dist/CarouselTemplate.js.map +1 -1
  13. package/dist/List.d.ts +15 -1
  14. package/dist/List.js +23 -2
  15. package/dist/List.js.map +1 -1
  16. package/dist/ListGroupHeaderBase.d.ts +13 -0
  17. package/dist/ListGroupHeaderBase.js +43 -2
  18. package/dist/ListGroupHeaderBase.js.map +1 -1
  19. package/dist/ListGroupHeaderTemplate.js +26 -7
  20. package/dist/ListGroupHeaderTemplate.js.map +1 -1
  21. package/dist/ListItem.d.ts +0 -3
  22. package/dist/ListItem.js +18 -12
  23. package/dist/ListItem.js.map +1 -1
  24. package/dist/ListItemBase.d.ts +17 -0
  25. package/dist/ListItemBase.js +15 -0
  26. package/dist/ListItemBase.js.map +1 -1
  27. package/dist/ListItemTemplate.js +2 -2
  28. package/dist/ListItemTemplate.js.map +1 -1
  29. package/dist/MastheadCountrySelector.js +5 -5
  30. package/dist/MastheadCountrySelector.js.map +1 -1
  31. package/dist/MastheadCountrySelectorTemplate.d.ts +2 -0
  32. package/dist/MastheadCountrySelectorTemplate.js +15 -0
  33. package/dist/MastheadCountrySelectorTemplate.js.map +1 -0
  34. package/dist/MastheadItem.d.ts +0 -3
  35. package/dist/MastheadItem.js +3 -6
  36. package/dist/MastheadItem.js.map +1 -1
  37. package/dist/MastheadItemTemplate.d.ts +2 -0
  38. package/dist/MastheadItemTemplate.js +41 -0
  39. package/dist/MastheadItemTemplate.js.map +1 -0
  40. package/dist/MastheadMenu.d.ts +1 -0
  41. package/dist/MastheadMenu.js +4 -6
  42. package/dist/MastheadMenu.js.map +1 -1
  43. package/dist/MastheadMenuItem.d.ts +0 -3
  44. package/dist/MastheadMenuItem.js +3 -6
  45. package/dist/MastheadMenuItem.js.map +1 -1
  46. package/dist/MastheadMenuItemTemplate.d.ts +2 -0
  47. package/dist/MastheadMenuItemTemplate.js +36 -0
  48. package/dist/MastheadMenuItemTemplate.js.map +1 -0
  49. package/dist/MastheadMenuTemplate.d.ts +2 -0
  50. package/dist/MastheadMenuTemplate.js +13 -0
  51. package/dist/MastheadMenuTemplate.js.map +1 -0
  52. package/dist/MastheadMobileMenu.js +3 -3
  53. package/dist/MastheadMobileMenu.js.map +1 -1
  54. package/dist/MastheadMobileMenuTemplate.d.ts +2 -0
  55. package/dist/MastheadMobileMenuTemplate.js +33 -0
  56. package/dist/MastheadMobileMenuTemplate.js.map +1 -0
  57. package/dist/MastheadProfileMenu.d.ts +2 -4
  58. package/dist/MastheadProfileMenu.js +5 -20
  59. package/dist/MastheadProfileMenu.js.map +1 -1
  60. package/dist/MastheadProfileMenuTemplate.d.ts +2 -0
  61. package/dist/MastheadProfileMenuTemplate.js +24 -0
  62. package/dist/MastheadProfileMenuTemplate.js.map +1 -0
  63. package/dist/MastheadShell.js +3 -5
  64. package/dist/MastheadShell.js.map +1 -1
  65. package/dist/MastheadShellTemplate.d.ts +2 -0
  66. package/dist/MastheadShellTemplate.js +20 -0
  67. package/dist/MastheadShellTemplate.js.map +1 -0
  68. package/dist/SearchableListBase.d.ts +10 -0
  69. package/dist/SearchableListBase.js +34 -1
  70. package/dist/SearchableListBase.js.map +1 -1
  71. package/dist/SearchableListBaseTemplate.js +35 -4
  72. package/dist/SearchableListBaseTemplate.js.map +1 -1
  73. package/dist/SecondaryNavigation.d.ts +1 -0
  74. package/dist/SecondaryNavigation.js +20 -6
  75. package/dist/SecondaryNavigation.js.map +1 -1
  76. package/dist/SelectBase.js +8 -3
  77. package/dist/SelectBase.js.map +1 -1
  78. package/dist/Tab.d.ts +0 -7
  79. package/dist/Tab.js +4 -19
  80. package/dist/Tab.js.map +1 -1
  81. package/dist/TabHeaderTemplate.d.ts +2 -0
  82. package/dist/TabHeaderTemplate.js +15 -0
  83. package/dist/TabHeaderTemplate.js.map +1 -0
  84. package/dist/TabInOverflowTemplate.d.ts +2 -0
  85. package/dist/TabInOverflowTemplate.js +7 -0
  86. package/dist/TabInOverflowTemplate.js.map +1 -0
  87. package/dist/TabNavigation.d.ts +6 -6
  88. package/dist/TabNavigation.js +56 -42
  89. package/dist/TabNavigation.js.map +1 -1
  90. package/dist/TabNavigationPopoverTemplate.d.ts +2 -0
  91. package/dist/TabNavigationPopoverTemplate.js +9 -0
  92. package/dist/TabNavigationPopoverTemplate.js.map +1 -0
  93. package/dist/TabNavigationTemplate.d.ts +2 -0
  94. package/dist/TabNavigationTemplate.js +10 -0
  95. package/dist/TabNavigationTemplate.js.map +1 -0
  96. package/dist/TabTemplate.d.ts +2 -0
  97. package/dist/TabTemplate.js +5 -0
  98. package/dist/TabTemplate.js.map +1 -0
  99. package/dist/Tag.d.ts +1 -0
  100. package/dist/Tag.js +6 -0
  101. package/dist/Tag.js.map +1 -1
  102. package/dist/TagGroup.js +4 -2
  103. package/dist/TagGroup.js.map +1 -1
  104. package/dist/assets/{InputSuggestions-ChhTxYh4.js → InputSuggestions-CMYjJsHw.js} +1 -1
  105. package/dist/assets/{ListItemStandardExpandableTextTemplate-Bh1HxZfH.js → ListItemStandardExpandableTextTemplate-D2i8wWuR.js} +1 -1
  106. package/dist/assets/{bundle.esm-DCX_ohoZ.js → bundle.esm-BjN47C_y.js} +242 -242
  107. package/dist/assets/messagebundle_ar-BvIvqOKJ.js +1 -0
  108. package/dist/assets/messagebundle_bg-CbE9TJP3.js +1 -0
  109. package/dist/assets/messagebundle_cs-D7sDCnrw.js +1 -0
  110. package/dist/assets/messagebundle_da-BKcG2gb3.js +1 -0
  111. package/dist/assets/messagebundle_de-CqojOAqG.js +1 -0
  112. package/dist/assets/messagebundle_el-DLfp0_Vm.js +1 -0
  113. package/dist/assets/messagebundle_en-B7YJOdQz.js +1 -0
  114. package/dist/assets/messagebundle_es-dcaagZn0.js +1 -0
  115. package/dist/assets/messagebundle_et-XYXhCdvm.js +1 -0
  116. package/dist/assets/messagebundle_fi-Dffg0zEq.js +1 -0
  117. package/dist/assets/messagebundle_fr-CW8ENL86.js +1 -0
  118. package/dist/assets/messagebundle_hr-onMgZwRd.js +1 -0
  119. package/dist/assets/messagebundle_hu-BPDuHAe0.js +1 -0
  120. package/dist/assets/messagebundle_it-BcfXVW1A.js +1 -0
  121. package/dist/assets/messagebundle_ja-EWp-Nkd9.js +1 -0
  122. package/dist/assets/messagebundle_ko-BKQ27UJW.js +1 -0
  123. package/dist/assets/messagebundle_lt-A-f2EeMY.js +1 -0
  124. package/dist/assets/messagebundle_lv-CHVU_rnx.js +1 -0
  125. package/dist/assets/messagebundle_nl-gmf1np1i.js +1 -0
  126. package/dist/assets/messagebundle_no-CazfcIRA.js +1 -0
  127. package/dist/assets/messagebundle_pl-iv_zMkL4.js +1 -0
  128. package/dist/assets/messagebundle_pt-usY49ESJ.js +1 -0
  129. package/dist/assets/messagebundle_pt_PT-DTLEUiTC.js +1 -0
  130. package/dist/assets/messagebundle_ro-BHeGIHaV.js +1 -0
  131. package/dist/assets/messagebundle_ru-DJB1z_R0.js +1 -0
  132. package/dist/assets/messagebundle_sk-DlNIpzr3.js +1 -0
  133. package/dist/assets/messagebundle_sl-Day075Cf.js +1 -0
  134. package/dist/assets/messagebundle_sr-iI_TwIHf.js +1 -0
  135. package/dist/assets/messagebundle_sv-BPj73b5X.js +1 -0
  136. package/dist/assets/messagebundle_tr-DpdBqQtI.js +1 -0
  137. package/dist/assets/messagebundle_uk-CT4EqEBF.js +1 -0
  138. package/dist/assets/messagebundle_zh_CN-B_42cWcu.js +1 -0
  139. package/dist/assets/messagebundle_zh_TW-D25iNCcy.js +1 -0
  140. package/dist/css/themes/Button.css +1 -1
  141. package/dist/css/themes/Carousel.css +1 -1
  142. package/dist/css/themes/ListGroupHeader.css +1 -1
  143. package/dist/css/themes/PromoTile.css +1 -1
  144. package/dist/css/themes/Switch.css +1 -1
  145. package/dist/css/themes/TabInOverflow.css +1 -1
  146. package/dist/css/themes/TabNavigation.css +1 -1
  147. package/dist/css/themes/Tooltip.css +1 -1
  148. package/dist/custom-elements-internal.json +12 -12
  149. package/dist/custom-elements.json +12 -12
  150. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  151. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  152. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  153. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  154. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  155. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  156. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  157. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  158. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  159. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  160. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  161. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  162. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  163. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  165. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  168. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  169. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  171. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  173. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  174. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  175. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  176. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  177. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  178. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  179. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  180. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  181. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  182. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  183. package/dist/generated/i18n/i18n-defaults.d.ts +3 -9
  184. package/dist/generated/i18n/i18n-defaults.js +3 -9
  185. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  186. package/dist/generated/themes/Button.css.d.ts +1 -1
  187. package/dist/generated/themes/Button.css.js +1 -1
  188. package/dist/generated/themes/Button.css.js.map +1 -1
  189. package/dist/generated/themes/Carousel.css.d.ts +1 -1
  190. package/dist/generated/themes/Carousel.css.js +1 -1
  191. package/dist/generated/themes/Carousel.css.js.map +1 -1
  192. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  193. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  194. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  195. package/dist/generated/themes/PromoTile.css.d.ts +1 -1
  196. package/dist/generated/themes/PromoTile.css.js +1 -1
  197. package/dist/generated/themes/PromoTile.css.js.map +1 -1
  198. package/dist/generated/themes/Switch.css.d.ts +1 -1
  199. package/dist/generated/themes/Switch.css.js +1 -1
  200. package/dist/generated/themes/Switch.css.js.map +1 -1
  201. package/dist/generated/themes/TabInOverflow.css.d.ts +1 -1
  202. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  203. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  204. package/dist/generated/themes/TabNavigation.css.d.ts +1 -1
  205. package/dist/generated/themes/TabNavigation.css.js +1 -1
  206. package/dist/generated/themes/TabNavigation.css.js.map +1 -1
  207. package/dist/generated/themes/Tooltip.css.d.ts +1 -1
  208. package/dist/generated/themes/Tooltip.css.js +1 -1
  209. package/dist/generated/themes/Tooltip.css.js.map +1 -1
  210. package/dist/messagebundle.properties +4 -10
  211. package/dist/messagebundle_ar.properties +0 -6
  212. package/dist/messagebundle_bg.properties +0 -8
  213. package/dist/messagebundle_cs.properties +0 -8
  214. package/dist/messagebundle_da.properties +0 -8
  215. package/dist/messagebundle_de.properties +0 -8
  216. package/dist/messagebundle_el.properties +0 -8
  217. package/dist/messagebundle_en.properties +2 -8
  218. package/dist/messagebundle_es.properties +0 -8
  219. package/dist/messagebundle_et.properties +0 -8
  220. package/dist/messagebundle_fi.properties +0 -8
  221. package/dist/messagebundle_fr.properties +0 -8
  222. package/dist/messagebundle_hr.properties +0 -8
  223. package/dist/messagebundle_hu.properties +0 -8
  224. package/dist/messagebundle_it.properties +0 -8
  225. package/dist/messagebundle_ja.properties +0 -8
  226. package/dist/messagebundle_ko.properties +0 -8
  227. package/dist/messagebundle_lt.properties +0 -8
  228. package/dist/messagebundle_lv.properties +0 -8
  229. package/dist/messagebundle_nl.properties +0 -8
  230. package/dist/messagebundle_no.properties +0 -8
  231. package/dist/messagebundle_pl.properties +0 -8
  232. package/dist/messagebundle_pt.properties +0 -8
  233. package/dist/messagebundle_pt_PT.properties +0 -8
  234. package/dist/messagebundle_ro.properties +0 -8
  235. package/dist/messagebundle_ru.properties +0 -8
  236. package/dist/messagebundle_sk.properties +0 -8
  237. package/dist/messagebundle_sl.properties +0 -7
  238. package/dist/messagebundle_sr.properties +0 -8
  239. package/dist/messagebundle_sv.properties +0 -8
  240. package/dist/messagebundle_tr.properties +0 -8
  241. package/dist/messagebundle_uk.properties +0 -8
  242. package/dist/messagebundle_zh_CN.properties +0 -8
  243. package/dist/messagebundle_zh_TW.properties +0 -8
  244. package/dist/vscode.html-custom-data.json +10 -2
  245. package/dist/web-types.json +6 -6
  246. package/package.json +1 -1
  247. package/src/Carousel.ts +51 -8
  248. package/src/CarouselTemplate.tsx +7 -7
  249. package/src/List.ts +24 -2
  250. package/src/ListGroupHeaderBase.ts +44 -2
  251. package/src/ListGroupHeaderTemplate.tsx +74 -23
  252. package/src/ListItem.ts +18 -15
  253. package/src/ListItemBase.ts +30 -0
  254. package/src/ListItemTemplate.tsx +4 -4
  255. package/src/MastheadCountrySelector.ts +5 -5
  256. package/src/MastheadCountrySelectorTemplate.tsx +98 -0
  257. package/src/MastheadItem.ts +3 -6
  258. package/src/MastheadItemTemplate.tsx +178 -0
  259. package/src/MastheadMenu.ts +5 -6
  260. package/src/MastheadMenuItem.ts +3 -7
  261. package/src/MastheadMenuItemTemplate.tsx +123 -0
  262. package/src/MastheadMenuTemplate.tsx +142 -0
  263. package/src/MastheadMobileMenu.ts +3 -3
  264. package/src/MastheadMobileMenuTemplate.tsx +274 -0
  265. package/src/MastheadProfileMenu.ts +10 -23
  266. package/src/MastheadProfileMenuTemplate.tsx +143 -0
  267. package/src/MastheadShell.ts +3 -5
  268. package/src/MastheadShellTemplate.tsx +228 -0
  269. package/src/SearchableListBase.ts +37 -1
  270. package/src/SearchableListBaseTemplate.tsx +38 -2
  271. package/src/SecondaryNavigation.ts +21 -6
  272. package/src/SelectBase.ts +8 -3
  273. package/src/Tab.ts +4 -24
  274. package/src/TabHeaderTemplate.tsx +153 -0
  275. package/src/TabInOverflowTemplate.tsx +68 -0
  276. package/src/TabNavigation.ts +64 -46
  277. package/src/TabNavigationPopoverTemplate.tsx +27 -0
  278. package/src/TabNavigationTemplate.tsx +98 -0
  279. package/src/TabTemplate.tsx +7 -0
  280. package/src/Tag.ts +7 -0
  281. package/src/TagGroup.ts +4 -2
  282. package/src/generated/i18n/i18n-defaults.ts +2 -2
  283. package/src/generated/themes/Button.css.ts +1 -1
  284. package/src/generated/themes/Carousel.css.ts +1 -1
  285. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  286. package/src/generated/themes/PromoTile.css.ts +1 -1
  287. package/src/generated/themes/Switch.css.ts +1 -1
  288. package/src/generated/themes/TabInOverflow.css.ts +1 -1
  289. package/src/generated/themes/TabNavigation.css.ts +1 -1
  290. package/src/generated/themes/Tooltip.css.ts +1 -1
  291. package/src/i18n/messagebundle.properties +4 -10
  292. package/src/i18n/messagebundle_ar.properties +0 -6
  293. package/src/i18n/messagebundle_bg.properties +0 -8
  294. package/src/i18n/messagebundle_cs.properties +0 -8
  295. package/src/i18n/messagebundle_da.properties +0 -8
  296. package/src/i18n/messagebundle_de.properties +0 -8
  297. package/src/i18n/messagebundle_el.properties +0 -8
  298. package/src/i18n/messagebundle_en.properties +2 -8
  299. package/src/i18n/messagebundle_es.properties +0 -8
  300. package/src/i18n/messagebundle_et.properties +0 -8
  301. package/src/i18n/messagebundle_fi.properties +0 -8
  302. package/src/i18n/messagebundle_fr.properties +0 -8
  303. package/src/i18n/messagebundle_hr.properties +0 -8
  304. package/src/i18n/messagebundle_hu.properties +0 -8
  305. package/src/i18n/messagebundle_it.properties +0 -8
  306. package/src/i18n/messagebundle_ja.properties +0 -8
  307. package/src/i18n/messagebundle_ko.properties +0 -8
  308. package/src/i18n/messagebundle_lt.properties +0 -8
  309. package/src/i18n/messagebundle_lv.properties +0 -8
  310. package/src/i18n/messagebundle_nl.properties +0 -8
  311. package/src/i18n/messagebundle_no.properties +0 -8
  312. package/src/i18n/messagebundle_pl.properties +0 -8
  313. package/src/i18n/messagebundle_pt.properties +0 -8
  314. package/src/i18n/messagebundle_pt_PT.properties +0 -8
  315. package/src/i18n/messagebundle_ro.properties +0 -8
  316. package/src/i18n/messagebundle_ru.properties +0 -8
  317. package/src/i18n/messagebundle_sk.properties +0 -8
  318. package/src/i18n/messagebundle_sl.properties +0 -7
  319. package/src/i18n/messagebundle_sr.properties +0 -8
  320. package/src/i18n/messagebundle_sv.properties +0 -8
  321. package/src/i18n/messagebundle_tr.properties +0 -8
  322. package/src/i18n/messagebundle_uk.properties +0 -8
  323. package/src/i18n/messagebundle_zh_CN.properties +0 -8
  324. package/src/i18n/messagebundle_zh_TW.properties +0 -8
  325. package/src/themes/Button.css +2 -1
  326. package/src/themes/Carousel.css +17 -10
  327. package/src/themes/ListGroupHeader.css +50 -7
  328. package/src/themes/PromoTile.css +1 -0
  329. package/src/themes/Switch.css +2 -2
  330. package/src/themes/TabInOverflow.css +9 -4
  331. package/src/themes/TabNavigation.css +1 -0
  332. package/src/themes/Tooltip.css +5 -4
  333. package/dist/assets/messagebundle_ar-BUZ_gTvQ.js +0 -1
  334. package/dist/assets/messagebundle_bg-4ainC3nj.js +0 -1
  335. package/dist/assets/messagebundle_cs-CFtmLavu.js +0 -1
  336. package/dist/assets/messagebundle_da-BHL-qTPd.js +0 -1
  337. package/dist/assets/messagebundle_de-SMiMT-ST.js +0 -1
  338. package/dist/assets/messagebundle_el-ChAszJ4A.js +0 -1
  339. package/dist/assets/messagebundle_en-B0P3kkb6.js +0 -1
  340. package/dist/assets/messagebundle_es-LGmRBKqB.js +0 -1
  341. package/dist/assets/messagebundle_et-yYsmBPXN.js +0 -1
  342. package/dist/assets/messagebundle_fi-DeMNrHC9.js +0 -1
  343. package/dist/assets/messagebundle_fr-qEm5Eykz.js +0 -1
  344. package/dist/assets/messagebundle_hr-NBdiYo-T.js +0 -1
  345. package/dist/assets/messagebundle_hu-CBV3ISbF.js +0 -1
  346. package/dist/assets/messagebundle_it-BML2SC0W.js +0 -1
  347. package/dist/assets/messagebundle_ja-zyFfZHcj.js +0 -1
  348. package/dist/assets/messagebundle_ko-BCPaSqNp.js +0 -1
  349. package/dist/assets/messagebundle_lt-DB4b6FVx.js +0 -1
  350. package/dist/assets/messagebundle_lv-tAOia5tU.js +0 -1
  351. package/dist/assets/messagebundle_nl-BKUpVV-D.js +0 -1
  352. package/dist/assets/messagebundle_no-BZQfeWxT.js +0 -1
  353. package/dist/assets/messagebundle_pl-CsXeN1y6.js +0 -1
  354. package/dist/assets/messagebundle_pt-D9rap3lj.js +0 -1
  355. package/dist/assets/messagebundle_pt_PT-CQ5YAsmx.js +0 -1
  356. package/dist/assets/messagebundle_ro-BTNJ9YdP.js +0 -1
  357. package/dist/assets/messagebundle_ru-BTDmH8CB.js +0 -1
  358. package/dist/assets/messagebundle_sk-Lb4jvtpc.js +0 -1
  359. package/dist/assets/messagebundle_sl-BZi2bKSy.js +0 -1
  360. package/dist/assets/messagebundle_sr-B9TYgxO1.js +0 -1
  361. package/dist/assets/messagebundle_sv-DWlY9RTQ.js +0 -1
  362. package/dist/assets/messagebundle_tr-DOeCmUdx.js +0 -1
  363. package/dist/assets/messagebundle_uk-CCv57GhV.js +0 -1
  364. package/dist/assets/messagebundle_zh_CN-CHwH3F3-.js +0 -1
  365. package/dist/assets/messagebundle_zh_TW-FO0BCkub.js +0 -1
  366. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.d.ts +0 -3
  367. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +0 -13
  368. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +0 -1
  369. package/dist/generated/templates/MastheadItemTemplate.lit.d.ts +0 -3
  370. package/dist/generated/templates/MastheadItemTemplate.lit.js +0 -43
  371. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +0 -1
  372. package/dist/generated/templates/MastheadMenuItemTemplate.lit.d.ts +0 -3
  373. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +0 -21
  374. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +0 -1
  375. package/dist/generated/templates/MastheadMenuTemplate.lit.d.ts +0 -3
  376. package/dist/generated/templates/MastheadMenuTemplate.lit.js +0 -25
  377. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +0 -1
  378. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.d.ts +0 -3
  379. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +0 -37
  380. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +0 -1
  381. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.d.ts +0 -3
  382. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +0 -18
  383. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +0 -1
  384. package/dist/generated/templates/MastheadShellTemplate.lit.d.ts +0 -3
  385. package/dist/generated/templates/MastheadShellTemplate.lit.js +0 -28
  386. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +0 -1
  387. package/dist/generated/templates/TabHeaderTemplate.lit.d.ts +0 -3
  388. package/dist/generated/templates/TabHeaderTemplate.lit.js +0 -52
  389. package/dist/generated/templates/TabHeaderTemplate.lit.js.map +0 -1
  390. package/dist/generated/templates/TabInOverflowTemplate.lit.d.ts +0 -3
  391. package/dist/generated/templates/TabInOverflowTemplate.lit.js +0 -15
  392. package/dist/generated/templates/TabInOverflowTemplate.lit.js.map +0 -1
  393. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.d.ts +0 -3
  394. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js +0 -8
  395. package/dist/generated/templates/TabNavigationPopoverTemplate.lit.js.map +0 -1
  396. package/dist/generated/templates/TabNavigationTemplate.lit.d.ts +0 -3
  397. package/dist/generated/templates/TabNavigationTemplate.lit.js +0 -16
  398. package/dist/generated/templates/TabNavigationTemplate.lit.js.map +0 -1
  399. package/dist/generated/templates/TabTemplate.lit.d.ts +0 -3
  400. package/dist/generated/templates/TabTemplate.lit.js +0 -7
  401. package/dist/generated/templates/TabTemplate.lit.js.map +0 -1
  402. package/src/MastheadCountrySelector.hbs +0 -76
  403. package/src/MastheadItem.hbs +0 -136
  404. package/src/MastheadMenu.hbs +0 -131
  405. package/src/MastheadMenuItem.hbs +0 -102
  406. package/src/MastheadMobileMenu.hbs +0 -253
  407. package/src/MastheadProfileMenu.hbs +0 -121
  408. package/src/MastheadShell.hbs +0 -223
  409. package/src/Tab.hbs +0 -1
  410. package/src/TabHeader.hbs +0 -141
  411. package/src/TabInOverflow.hbs +0 -59
  412. package/src/TabNavigation.hbs +0 -86
  413. package/src/TabNavigationPopover.hbs +0 -18
  414. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +0 -17
  415. package/src/generated/templates/MastheadItemTemplate.lit.ts +0 -47
  416. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +0 -25
  417. package/src/generated/templates/MastheadMenuTemplate.lit.ts +0 -29
  418. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +0 -41
  419. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +0 -22
  420. package/src/generated/templates/MastheadShellTemplate.lit.ts +0 -32
  421. package/src/generated/templates/TabHeaderTemplate.lit.ts +0 -56
  422. package/src/generated/templates/TabInOverflowTemplate.lit.ts +0 -19
  423. package/src/generated/templates/TabNavigationPopoverTemplate.lit.ts +0 -12
  424. package/src/generated/templates/TabNavigationTemplate.lit.ts +0 -20
  425. package/src/generated/templates/TabTemplate.lit.ts +0 -11
package/src/ListItem.ts CHANGED
@@ -398,27 +398,38 @@ class UDExListItem extends UDExListItemBase {
398
398
  }
399
399
 
400
400
  get ariaSelectedValue(): "true" | "false" | undefined {
401
- if (this.effectiveRole !== "treeitem") {
401
+ // RadioGroup conveys its state through the radio control, never aria-selected.
402
+ if (this.modeRadioGroup) {
403
+ return undefined;
404
+ }
405
+ // MultiSelect treeitems convey state via aria-checked (see ariaCheckedValue).
406
+ // Every other selectable node — listbox options in both SingleSelect AND
407
+ // MultiSelect, plus SingleSelect treeitems — announces its state natively
408
+ // through aria-selected so the screen reader re-reads it when focus is on the
409
+ // item and when Enter/Space toggles it.
410
+ if (this.roleItem === "treeitem" && this.modeMultiSelect) {
402
411
  return undefined;
403
412
  }
404
- // Only SingleSelect treeitems expose aria-selected; MultiSelect uses aria-checked.
405
- if (this.modeMultiSelect) {
413
+ // Gated on the actual rendered role of the [part=item] div — never the
414
+ // presentational inner div used in aria-activedescendant mode (SelectBox sets
415
+ // aria-selected on the host).
416
+ if (this.roleItem !== "treeitem" && this.roleItem !== "option") {
406
417
  return undefined;
407
418
  }
408
419
  return this.selected ? "true" : "false";
409
420
  }
410
421
 
411
422
  get ariaExpandedValue(): "true" | "false" | undefined {
423
+ // aria-expanded is exposed ONLY on collapsible headers — a node the user can
424
+ // actually expand/collapse. Non-collapsible group headers must NOT report an
425
+ // expanded/collapsed state (nothing to toggle); the tree hierarchy is conveyed
426
+ // structurally by the nested role="group", not by aria-expanded.
412
427
  if (!this.collapsible) {
413
428
  return undefined;
414
429
  }
415
430
  return this.expanded ? "true" : "false";
416
431
  }
417
432
 
418
- get checkboxAriaHidden(): boolean {
419
- return this.effectiveRole === "treeitem";
420
- }
421
-
422
433
  get _ariaDisabled(): boolean | undefined {
423
434
  return this.disabled ? true : undefined;
424
435
  }
@@ -450,14 +461,6 @@ class UDExListItem extends UDExListItemBase {
450
461
  return `${this.selected ? translate(UDExListItem, SELECTED) : translate(UDExListItem, UNSELECTED)} `;
451
462
  }
452
463
 
453
- get itemDescribedBy(): string {
454
- return `${this._id}-invisibleText-describedby`;
455
- }
456
-
457
- get itemState(): string {
458
- return this.selected ? "Selected" : "Not selected";
459
- }
460
-
461
464
  get ratingAriaLabel(): string {
462
465
  const ratingText = this.ratingCount ? `${translate(UDExListItem, RATING_COUNT_TITLE)} ${this.ratingCount}` : "";
463
466
  const totalText = this.totalCount ? `${translate(UDExListItem, TOTAL)} ${this.totalCount}` : "";
@@ -240,6 +240,27 @@ class UDExListItemBase extends UI5Element {
240
240
  @property({ type: Boolean })
241
241
  _useHostAriaRole: boolean = false;
242
242
 
243
+ /**
244
+ * Explicit 1-based position of this treeitem within its own group, for a grouped
245
+ * tree structure. The sibling-group tree markup makes JAWS/NVDA compute a flattened
246
+ * posinset/setsize across all groups; setting these explicitly restores the
247
+ * per-group count so each item announces "N of <items in this group>".
248
+ * Only rendered on real treeitems (never in aria-activedescendant mode).
249
+ *
250
+ * @private
251
+ */
252
+ @property({ type: Number })
253
+ _ariaPosInSet?: number;
254
+
255
+ /**
256
+ * Explicit set size (number of treeitems within this item's own group) — the
257
+ * companion to {@link _ariaPosInSet}.
258
+ *
259
+ * @private
260
+ */
261
+ @property({ type: Number })
262
+ _ariaSetSize?: number;
263
+
243
264
  /**
244
265
  * Defines the tab index of the component.
245
266
  *
@@ -311,6 +332,15 @@ class UDExListItemBase extends UI5Element {
311
332
 
312
333
  handleCollapseIconMouseDown(e: MouseEvent) {
313
334
  e.stopPropagation();
335
+ // In aria-activedescendant mode (SelectBox) DOM focus must stay on the search
336
+ // input. Preventing the mousedown default stops the chevron/header body div from
337
+ // stealing focus, which would otherwise trigger a focusout→refocus + scroll-into-view
338
+ // that shifts the chevron out from under the pointer and eats the first click.
339
+ // Real-focus components (FilterMenu/List) leave _useHostAriaRole false and are
340
+ // unaffected. The click still fires, so collapse/expand happens on the first click.
341
+ if (this._useHostAriaRole) {
342
+ e.preventDefault();
343
+ }
314
344
  }
315
345
 
316
346
  handleCollapseIconClick(e: MouseEvent | KeyboardEvent) {
@@ -126,7 +126,6 @@ function ContentList(this: UDExListItem) {
126
126
  )}
127
127
  </div>
128
128
  <div class="hidden" id={`${this._id}-invisibleText`}>{this.accessibleListItemName}</div>
129
- <div class="hidden" id={`${this._id}-invisibleText-describedby`}>{this.itemState}</div>
130
129
  </div>
131
130
  );
132
131
  }
@@ -144,6 +143,8 @@ export default function ListItemTemplate(this: UDExListItem) {
144
143
  aria-checked={this.ariaCheckedValue}
145
144
  aria-selected={this.ariaSelectedValue}
146
145
  aria-expanded={this.ariaExpandedValue}
146
+ aria-posinset={this._ariaPosInSet || undefined}
147
+ aria-setsize={this._ariaSetSize || undefined}
147
148
  onFocusIn={this.handleFocusIn}
148
149
  onFocusOut={this.handleFocusOut}
149
150
  onClick={this.handleItemClick}
@@ -152,8 +153,7 @@ export default function ListItemTemplate(this: UDExListItem) {
152
153
  onKeyUp={this.handleKeyUp}
153
154
  onKeyDown={this.handleKeyDown}
154
155
  {...({ divider: this.divider, "_id": this._id } as object)}
155
- data-selected={this.selected}
156
- aria-describedby={this.itemDescribedBy}>
156
+ data-selected={this.selected}>
157
157
  {this.modeMultiSelect && (
158
158
  <UDExCheckbox
159
159
  class="udex-list__checkbox"
@@ -163,7 +163,7 @@ export default function ListItemTemplate(this: UDExListItem) {
163
163
  accessible-name={`checkbox ${this.stateAccessibleName}`}
164
164
  checked={this.selected}
165
165
  disabled={this.disabled}
166
- aria-hidden={this.checkboxAriaHidden ? "true" : undefined}
166
+ aria-hidden="true"
167
167
  />
168
168
  )}
169
169
  {this.modeRadioGroup && (
@@ -1,7 +1,7 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
5
5
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
6
6
  import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
7
7
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
@@ -9,8 +9,8 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
9
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
10
10
  import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
11
11
  import UDExMastheadMenuItem from "./MastheadMenuItem.js";
12
- import UDExSearch, { Mode as UDExSearchMode } from "./Search.js";
13
- import MastheadCountrySelectorTemplate from "./generated/templates/MastheadCountrySelectorTemplate.lit.js";
12
+ import { Mode as UDExSearchMode } from "./Search.js";
13
+ import MastheadCountrySelectorTemplate from "./MastheadCountrySelectorTemplate.js";
14
14
  import AnalyticsName from "./types/AnalyticsName.js";
15
15
  import { BreakpointUtils } from "./utils/Breakpoints.js";
16
16
  import type UDExMastheadShell from "./MastheadShell.js";
@@ -77,10 +77,10 @@ type UDExMastheadCountrySelectorSearchEventDetail = {
77
77
  */
78
78
  @customElement({
79
79
  tag: "udex-masthead-country-selector",
80
- renderer: litRender,
80
+ renderer: jsxRenderer,
81
81
  styles: MastheadCountrySelectorCss,
82
82
  template: MastheadCountrySelectorTemplate,
83
- dependencies: [UI5Icon, UDExMastheadMenuItem, UDExSearch],
83
+ dependencies: [UI5Icon, UDExMastheadMenuItem],
84
84
  })
85
85
 
86
86
  /**
@@ -0,0 +1,98 @@
1
+ import type UDExMastheadCountrySelector from "./MastheadCountrySelector.js";
2
+ import UDExMastheadMenuItem from "./MastheadMenuItem.js";
3
+ import UDExSearch from "./Search.js";
4
+
5
+ export default function MastheadCountrySelectorTemplate(this: UDExMastheadCountrySelector) {
6
+ return (
7
+ <div class="udex-masthead-country-selector">
8
+ {this._isActiveRegionOpen ? activeRegionView.call(this) : regionsView.call(this)}
9
+ </div>
10
+ );
11
+ }
12
+
13
+ function activeRegionView(this: UDExMastheadCountrySelector) {
14
+ return (
15
+ <>
16
+ <span class="udex-masthead-country-selector__title">{this.countryTitle}</span>
17
+ {!this.isSingleMode && (
18
+ <UDExMastheadMenuItem
19
+ class="udex-masthead-country-selector__region-back-item"
20
+ accessible-role="button"
21
+ onClick={this.backToRegions}
22
+ label={this._activeRegion?.title}
23
+ type="Button"
24
+ part="menu-item"
25
+ icon-start={true}
26
+ {...{ "_accessible-name": this.backToRegionListAccessibleName, "is-back": "" }}>
27
+ </UDExMastheadMenuItem>
28
+ )}
29
+ {!this.hideSearch && (
30
+ <>
31
+ <UDExSearch
32
+ class="udex-masthead-country-selector__search"
33
+ onui5-handle-value-search={this.handleSearch}
34
+ onui5-handle-value-reset={this.handleSearchReset}
35
+ onui5-submit-search-value={this.handleSearch}
36
+ language-voice={this.languageVoice}
37
+ label={this.searchLabel}
38
+ mode={this.homeSearchMode}
39
+ show-voice-button={this.showSearchVoiceButton}
40
+ non-interactive-submit-button={true}
41
+ show-submit-button={true}>
42
+ </UDExSearch>
43
+ <span aria-live="polite" aria-atomic="true" class="hidden">{this._accSearchResultInfo}</span>
44
+ </>
45
+ )}
46
+ <div class="udex-masthead-country-selector__list-container">
47
+ <div class="udex-masthead-country-selector__list-wrap" onScroll={this.handleCountryListShadowVisible}>
48
+ <ul class="udex-masthead-country-selector__list udex-masthead-country-selector__list_countries" role="menu">
49
+ {this._activeCountries.map((country, index) => (
50
+ <li role="none" key={index}>
51
+ <UDExMastheadMenuItem
52
+ class="udex-masthead-country-selector__item udex-masthead-country-selector__item_countries"
53
+ onClick={this.handleCountryClick as any}
54
+ url={country.url}
55
+ label={country.displayTitle}
56
+ index={index}
57
+ part="menu-item"
58
+ {...{
59
+ "_country-code": country.countryCode,
60
+ "is-nav-item": "",
61
+ ...(country.active ? { "_is-active-country": "" } : {}),
62
+ }}>
63
+ </UDExMastheadMenuItem>
64
+ </li>
65
+ ))}
66
+ </ul>
67
+ </div>
68
+ </div>
69
+ </>
70
+ );
71
+ }
72
+
73
+ function regionsView(this: UDExMastheadCountrySelector) {
74
+ return (
75
+ <>
76
+ <span class="udex-masthead-country-selector__title">{this.regionTitle}</span>
77
+ <ul class="udex-masthead-country-selector__list">
78
+ {this.regionsData.map((region, index) => (
79
+ <li key={index}>
80
+ <UDExMastheadMenuItem
81
+ onClick={this.handleRegionClick as any}
82
+ index={index}
83
+ accessible-role="button"
84
+ class="udex-masthead-country-selector__item udex-masthead-country-selector__item_region"
85
+ aria-haspopup="true"
86
+ type="Button"
87
+ part="menu-item"
88
+ has-border={true}
89
+ icon-end={true}
90
+ label={region.title}
91
+ {...{ "is-nav-item": "" }}>
92
+ </UDExMastheadMenuItem>
93
+ </li>
94
+ ))}
95
+ </ul>
96
+ </>
97
+ );
98
+ }
@@ -7,21 +7,18 @@ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
7
7
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
8
8
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
9
9
  import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
10
- import "@ui5/webcomponents-icons/dist/search.js";
11
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
10
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
12
11
  import { isEscape, isTabNext } from "@ui5/webcomponents-base/dist/Keys.js";
13
12
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
14
13
  import {
15
14
  OPENS_IN_A_NEW_WINDOW, PROFILE, CART, COUNTRY_SELECTOR, SUPPORT, SEARCH,
16
15
  } from "./generated/i18n/i18n-defaults.js";
17
16
  import UDExMastheadMenu from "./MastheadMenu.js";
18
- import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
19
- import "@ui5/webcomponents-icons/dist/world.js";
20
17
  import type UDExAvatar from "./Avatar.js";
21
18
  import type UDExMastheadShell from "./MastheadShell.js";
22
19
  import type UDExMastheadProfileMenu from "./MastheadProfileMenu.js";
23
20
  import type UDExMastheadMobileMenu from "./MastheadMobileMenu.js";
24
- import MastheadItemTemplate from "./generated/templates/MastheadItemTemplate.lit.js";
21
+ import MastheadItemTemplate from "./MastheadItemTemplate.js";
25
22
  import { UDExTarget } from "./types/common.js";
26
23
  import { BreakpointUtils } from "./utils/Breakpoints.js";
27
24
  import parseArrayFromString from "./utils/parseArrayFromString.js";
@@ -94,7 +91,7 @@ type UDExMastheadDropdownEventDetail = {
94
91
  */
95
92
  @customElement({
96
93
  tag: "udex-masthead-item",
97
- renderer: litRender,
94
+ renderer: jsxRenderer,
98
95
  languageAware: true,
99
96
  styles: MastheadItemCss,
100
97
  template: MastheadItemTemplate,
@@ -0,0 +1,178 @@
1
+ import type UDExMastheadItem from "./MastheadItem.js";
2
+ import type { AriaRole } from "@ui5/webcomponents-base";
3
+ import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
4
+ import IconMode from "@ui5/webcomponents/dist/types/IconMode.js";
5
+ import UDExBadge from "./Badge.js";
6
+ import arrowDownIcon from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
7
+ import worldIcon from "@ui5/webcomponents-icons/dist/world.js";
8
+ import { UDExNumberBadgeDesign, UDExSizeBadgeDesign, UDExTypeBadgeDesign } from "./types/BadgeDesign.js";
9
+
10
+ export default function MastheadItemTemplate(this: UDExMastheadItem) {
11
+ if (this.hasHref) {
12
+ return link.call(this);
13
+ }
14
+ if (this.isProfileBtn) {
15
+ return profileButton.call(this);
16
+ }
17
+ return button.call(this);
18
+ }
19
+
20
+ function link(this: UDExMastheadItem) {
21
+ return (
22
+ <>
23
+ <a
24
+ id={this._id}
25
+ class={this.additionalClass}
26
+ role={this.accessibleRoleName as AriaRole}
27
+ aria-label={this.accessibleLabel}
28
+ target={this.target}
29
+ href={this.href}
30
+ aria-describedby={this.ariaDescribedBy}
31
+ onClick={this.handleItemClick as any}
32
+ onMouseDown={this.handleMouseDown}
33
+ onMouseUp={this.handleMouseUp}
34
+ tabindex={0}>
35
+ {content.call(this)}
36
+ {badge.call(this)}
37
+ </a>
38
+ {this.isTargetBlank && (
39
+ <span id="new-win-desc" class="udex-masthead-hidden-text">
40
+ {this.openInNewWindowText}
41
+ </span>
42
+ )}
43
+ </>
44
+ );
45
+ }
46
+
47
+ function profileButton(this: UDExMastheadItem) {
48
+ return (
49
+ <>
50
+ <button
51
+ class={`udex-masthead-item__btn udex-masthead-item__profile-btn ${this.additionalClass}`}
52
+ id={this._id}
53
+ tabindex={0}
54
+ aria-expanded={this.buttonAriaExpanded}
55
+ aria-describedby={this.ariaDescribedBy}
56
+ aria-controls={`${this._id}_dropdown`}
57
+ aria-label={this.accessibleLabel}
58
+ onKeyDown={this.handleKeyDown}
59
+ onClick={this.handleItemClick as any}
60
+ onclick-default={this.handleItemClick}
61
+ onMouseDown={this.handleMouseDown}
62
+ onMouseUp={this.handleMouseUp}>
63
+ {content.call(this)}
64
+ {badge.call(this)}
65
+ </button>
66
+ {dropdown.call(this)}
67
+ </>
68
+ );
69
+ }
70
+
71
+ function button(this: UDExMastheadItem) {
72
+ return (
73
+ <>
74
+ <button
75
+ role={this.accessibleRoleName as AriaRole}
76
+ id={this._id}
77
+ class={`udex-masthead-item__btn ${this.additionalClass}`}
78
+ tabindex={0}
79
+ aria-expanded={this.buttonAriaExpanded}
80
+ aria-controls={`${this._id}_dropdown`}
81
+ aria-describedby={this.ariaDescribedBy}
82
+ aria-label={this.accessibleLabel}
83
+ onKeyDown={this.handleKeyDown}
84
+ onMouseDown={this.handleMouseDown}
85
+ onMouseUp={this.handleMouseUp}
86
+ onClick={this.handleItemClick as any}>
87
+ {content.call(this)}
88
+ {badge.call(this)}
89
+ </button>
90
+ {dropdown.call(this)}
91
+ </>
92
+ );
93
+ }
94
+
95
+ function content(this: UDExMastheadItem) {
96
+ if (this.icon) {
97
+ return (
98
+ <UI5Icon
99
+ class="udex-masthead-item__icon"
100
+ name={this.icon}
101
+ show-tooltip={this.iconAltText}
102
+ accessible-name={this.iconAltText}
103
+ mode={IconMode.Decorative}>
104
+ </UI5Icon>
105
+ );
106
+ }
107
+
108
+ if (this.image) {
109
+ return (
110
+ <>
111
+ {this.imageLoadError ? (
112
+ <UI5Icon
113
+ class="udex-masthead-item__icon"
114
+ name={worldIcon}
115
+ mode={IconMode.Decorative}>
116
+ </UI5Icon>
117
+ ) : (
118
+ <div class="udex-masthead-item__image-wrap">
119
+ <img
120
+ class="udex-masthead-item__image"
121
+ id={`${this._id}_image-alt`}
122
+ src={this.image}
123
+ aria-hidden={this.isCountrySelectorBtn}
124
+ alt={this.imageAlt}
125
+ onError={this.handleImageError}
126
+ />
127
+ </div>
128
+ )}
129
+ {this.imageAlt && (
130
+ <span id="image-desc" class="udex-masthead-hidden-text">
131
+ {this.imageAlt}
132
+ </span>
133
+ )}
134
+ </>
135
+ );
136
+ }
137
+
138
+ return (
139
+ <span class="udex-masthead-item__text">
140
+ <slot></slot>
141
+ {this.hasArrowDown && (
142
+ <UI5Icon
143
+ class="udex-masthead-item__dropdown-icon"
144
+ name={arrowDownIcon}
145
+ mode={IconMode.Decorative}>
146
+ </UI5Icon>
147
+ )}
148
+ </span>
149
+ );
150
+ }
151
+
152
+ function dropdown(this: UDExMastheadItem) {
153
+ return this.isDropdownOpened ? (
154
+ <div
155
+ class="udex-masthead-item__dropdown"
156
+ id={`${this._id}_dropdown`}
157
+ onKeyDown={this.handleKeyDown}
158
+ onFocusOut={this.handleFocusout}>
159
+ <div class="udex-masthead-item__dropdown-holder">
160
+ <slot name="dropdown"></slot>
161
+ </div>
162
+ </div>
163
+ ) : (
164
+ <div id={`${this._id}_dropdown`}></div>
165
+ );
166
+ }
167
+
168
+ function badge(this: UDExMastheadItem) {
169
+ return this.numberBadge ? (
170
+ <UDExBadge
171
+ class="udex-masthead-item__badge"
172
+ type={UDExTypeBadgeDesign.Number}
173
+ numberDesign={UDExNumberBadgeDesign.Red}
174
+ size={UDExSizeBadgeDesign.Small}>
175
+ {this.numberBadge}
176
+ </UDExBadge>
177
+ ) : undefined;
178
+ }
@@ -1,7 +1,7 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
5
5
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
6
6
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
7
  import Icon from "@ui5/webcomponents/dist/Icon.js";
@@ -11,11 +11,9 @@ import "@ui5/webcomponents-icons/dist/action.js";
11
11
  import {
12
12
  isTabNext, isTabPrevious, isHome, isEnd,
13
13
  } from "@ui5/webcomponents-base/dist/Keys.js";
14
- import UDExBadge from "./Badge.js";
15
14
  import UDExMastheadMenuItem, { UDExItemType } from "./MastheadMenuItem.js";
16
15
  import type UDExMastheadItem from "./MastheadItem.js";
17
- import UDExDivider from "./Divider.js";
18
- import MastheadMenuTemplate from "./generated/templates/MastheadMenuTemplate.lit.js";
16
+ import MastheadMenuTemplate from "./MastheadMenuTemplate.js";
19
17
  import parseArrayFromString from "./utils/parseArrayFromString.js";
20
18
  import AnalyticsName from "./types/AnalyticsName.js";
21
19
  import { OVERVIEW } from "./generated/i18n/i18n-defaults.js";
@@ -31,6 +29,7 @@ export type Item = {
31
29
  title: string;
32
30
  url?: string;
33
31
  externalLink: boolean;
32
+ badge?: string;
34
33
  isDivider?: boolean;
35
34
  subItems?: Item[];
36
35
  };
@@ -74,10 +73,10 @@ type UDExMastheadMenuMenuItemClickEventDetail = {
74
73
  */
75
74
  @customElement({
76
75
  tag: "udex-masthead-menu",
77
- renderer: litRender,
76
+ renderer: jsxRenderer,
78
77
  styles: MastheadMenuCss,
79
78
  template: MastheadMenuTemplate,
80
- dependencies: [Icon, UDExBadge, UDExMastheadMenuItem, UDExDivider],
79
+ dependencies: [Icon, UDExMastheadMenuItem],
81
80
  })
82
81
 
83
82
  /**
@@ -1,20 +1,16 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
4
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
5
5
  import Icon from "@ui5/webcomponents/dist/Icon.js";
6
6
  import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
7
7
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
8
8
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
- import "@ui5/webcomponents-icons/dist/action.js";
10
-
11
- import "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
12
- import "@ui5/webcomponents-icons/dist/slim-arrow-left.js";
13
9
  import { OPENS_IN_A_NEW_WINDOW } from "./generated/i18n/i18n-defaults.js";
14
10
  import { UDExTarget } from "./types/common.js";
15
11
  import translate from "./utils/translate.js";
16
12
 
17
- import MastheadMenuItemTemplate from "./generated/templates/MastheadMenuItemTemplate.lit.js";
13
+ import MastheadMenuItemTemplate from "./MastheadMenuItemTemplate.js";
18
14
 
19
15
  // Styles
20
16
  import MastheadMenuItemCss from "./generated/themes/MastheadMenuItem.css.js";
@@ -45,7 +41,7 @@ export enum UDExItemType {
45
41
  @customElement({
46
42
  tag: "udex-masthead-menu-item",
47
43
  languageAware: true,
48
- renderer: litRender,
44
+ renderer: jsxRenderer,
49
45
  styles: MastheadMenuItemCss,
50
46
  template: MastheadMenuItemTemplate,
51
47
  dependencies: [Icon],
@@ -0,0 +1,123 @@
1
+ import type UDExMastheadMenuItem from "./MastheadMenuItem.js";
2
+ import type { AriaRole } from "@ui5/webcomponents-base";
3
+ import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
4
+ import IconMode from "@ui5/webcomponents/dist/types/IconMode.js";
5
+ import UDExBadge from "./Badge.js";
6
+ import { UDExNumberBadgeDesign, UDExSizeBadgeDesign, UDExTypeBadgeDesign } from "./types/BadgeDesign.js";
7
+ import actionIcon from "@ui5/webcomponents-icons/dist/action.js";
8
+ import slimArrowRightIcon from "@ui5/webcomponents-icons/dist/slim-arrow-right.js";
9
+ import slimArrowLeftIcon from "@ui5/webcomponents-icons/dist/slim-arrow-left.js";
10
+ import type { Booleanish } from "@ui5/webcomponents-base/thirdparty/preact/jsx.js";
11
+
12
+ export default function MastheadMenuItemTemplate(this: UDExMastheadMenuItem) {
13
+ if (this.isActive) {
14
+ return activeItem.call(this);
15
+ }
16
+ if (this.isButtonType) {
17
+ return buttonItem.call(this);
18
+ }
19
+ return spanItem.call(this);
20
+ }
21
+
22
+ function activeItem(this: UDExMastheadMenuItem) {
23
+ return (
24
+ <>
25
+ <a
26
+ class={`udex-masthead-menu-item ${this.rootClass}`}
27
+ aria-describedby={this.ariaDescribedby || undefined}
28
+ role={this.accessibleRoleText as AriaRole}
29
+ href={this.url}
30
+ part={this.partAttr}
31
+ target={this.targetLink}
32
+ tabindex={Number(this._tabIndex)}>
33
+ {this.iconStart && arrowLeft()}
34
+ <span class={this.labelClass}>
35
+ {label.call(this)}
36
+ </span>
37
+ {this.iconEnd && arrowRight()}
38
+ </a>
39
+ {this.externalLink && (
40
+ <span id="new-win-desc" class="udex-masthead-hidden-text">
41
+ {this.openInNewWindowText}
42
+ </span>
43
+ )}
44
+ {this.badge && (
45
+ <UDExBadge
46
+ class="udex-masthead-menu-item-badge"
47
+ part="badge"
48
+ type={UDExTypeBadgeDesign.Number}
49
+ number-design={UDExNumberBadgeDesign.Blue}
50
+ size={UDExSizeBadgeDesign.Small}>
51
+ {this.badge}
52
+ </UDExBadge>
53
+ )}
54
+ </>
55
+ );
56
+ }
57
+
58
+ function buttonItem(this: UDExMastheadMenuItem) {
59
+ return (
60
+ <button
61
+ {...{ "_id": this.id }}
62
+ part="menu-item-button"
63
+ class={`udex-masthead-menu-item ${this.rootClass}`}
64
+ aria-label={this._accessibleName}
65
+ aria-haspopup={this.ariaHasPopup as Booleanish}
66
+ role={this.accessibleRoleText as AriaRole}
67
+ tabindex={Number(this._tabIndex)}>
68
+ {this.iconStart && arrowLeft()}
69
+ {this.label}
70
+ {this.iconEnd && arrowRight()}
71
+ </button>
72
+ );
73
+ }
74
+
75
+ function spanItem(this: UDExMastheadMenuItem) {
76
+ return (
77
+ <span class={`udex-masthead-menu-item ${this.rootClass}`} part="menu-item">
78
+ {this.iconStart && arrowLeft()}
79
+ {this.label}
80
+ {this.iconEnd && arrowRight()}
81
+ </span>
82
+ );
83
+ }
84
+
85
+ function label(this: UDExMastheadMenuItem) {
86
+ return this.externalLink ? (
87
+ <>
88
+ {this.leadingWordsOfLabel}
89
+ <span class="udex-masthead-menu-item__text-with-icon">
90
+ {this.lastWordOfLabel}
91
+ <UI5Icon
92
+ class="udex-masthead-menu-item__icon udex-masthead-menu-item_icon-action"
93
+ name={actionIcon}
94
+ mode={IconMode.Decorative}>
95
+ </UI5Icon>
96
+ </span>
97
+ </>
98
+ ) : (
99
+ <span>{this.label}</span>
100
+ );
101
+ }
102
+
103
+ function arrowLeft() {
104
+ return (
105
+ <UI5Icon
106
+ class="udex-masthead-menu-item__icon udex-masthead-menu-item_icon-left"
107
+ part="left"
108
+ name={slimArrowLeftIcon}
109
+ mode={IconMode.Decorative}>
110
+ </UI5Icon>
111
+ );
112
+ }
113
+
114
+ function arrowRight() {
115
+ return (
116
+ <UI5Icon
117
+ class="udex-masthead-menu-item__icon udex-masthead-menu-item_icon-right"
118
+ part="right"
119
+ name={slimArrowRightIcon}
120
+ mode={IconMode.Decorative}>
121
+ </UI5Icon>
122
+ );
123
+ }