@sapudex/web-components 0.147.0 → 0.173.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 (492) hide show
  1. package/.eslintignore +1 -0
  2. package/bundle.esm.js +9 -0
  3. package/dist/AvatarGroup.js +0 -6
  4. package/dist/AvatarGroup.js.map +1 -1
  5. package/dist/Badge.d.ts +21 -14
  6. package/dist/Badge.js +20 -26
  7. package/dist/Badge.js.map +1 -1
  8. package/dist/Breadcrumbs.d.ts +23 -21
  9. package/dist/Breadcrumbs.js +58 -40
  10. package/dist/Breadcrumbs.js.map +1 -1
  11. package/dist/BreadcrumbsItem.js +0 -1
  12. package/dist/BreadcrumbsItem.js.map +1 -1
  13. package/dist/Checkbox.js +0 -1
  14. package/dist/Checkbox.js.map +1 -1
  15. package/dist/CountrySelector.d.ts +2 -2
  16. package/dist/CountrySelector.js +20 -12
  17. package/dist/CountrySelector.js.map +1 -1
  18. package/dist/DatePicker.d.ts +2 -2
  19. package/dist/DatePicker.js.map +1 -1
  20. package/dist/Dropdown.js +0 -3
  21. package/dist/Dropdown.js.map +1 -1
  22. package/dist/Footer.d.ts +53 -10
  23. package/dist/Footer.js +41 -11
  24. package/dist/Footer.js.map +1 -1
  25. package/dist/Link.d.ts +2 -5
  26. package/dist/Link.js +4 -8
  27. package/dist/Link.js.map +1 -1
  28. package/dist/List.d.ts +16 -1
  29. package/dist/List.js +154 -100
  30. package/dist/List.js.map +1 -1
  31. package/dist/ListItem.d.ts +1 -0
  32. package/dist/ListItem.js +3 -0
  33. package/dist/ListItem.js.map +1 -1
  34. package/dist/MastheadItem.d.ts +12 -2
  35. package/dist/MastheadItem.js +34 -7
  36. package/dist/MastheadItem.js.map +1 -1
  37. package/dist/MastheadMenu.d.ts +1 -0
  38. package/dist/MastheadMenu.js +13 -4
  39. package/dist/MastheadMenu.js.map +1 -1
  40. package/dist/MastheadMenuItem.d.ts +10 -0
  41. package/dist/MastheadMenuItem.js +24 -3
  42. package/dist/MastheadMenuItem.js.map +1 -1
  43. package/dist/MastheadMobileMenu.js +2 -2
  44. package/dist/MastheadMobileMenu.js.map +1 -1
  45. package/dist/MastheadProfileMenu.js +2 -2
  46. package/dist/MastheadProfileMenu.js.map +1 -1
  47. package/dist/MastheadShell.d.ts +4 -0
  48. package/dist/MastheadShell.js +21 -5
  49. package/dist/MastheadShell.js.map +1 -1
  50. package/dist/Pagination.d.ts +13 -3
  51. package/dist/Pagination.js +90 -57
  52. package/dist/Pagination.js.map +1 -1
  53. package/dist/PhoneNumberField.d.ts +3 -0
  54. package/dist/PhoneNumberField.js +9 -4
  55. package/dist/PhoneNumberField.js.map +1 -1
  56. package/dist/RangeSlider.js +0 -1
  57. package/dist/RangeSlider.js.map +1 -1
  58. package/dist/Search.d.ts +5 -4
  59. package/dist/Search.js +12 -12
  60. package/dist/Search.js.map +1 -1
  61. package/dist/SearchableListBase.d.ts +7 -1
  62. package/dist/SearchableListBase.js +47 -4
  63. package/dist/SearchableListBase.js.map +1 -1
  64. package/dist/SecondaryNavigation.d.ts +2 -2
  65. package/dist/SecondaryNavigation.js +20 -10
  66. package/dist/SecondaryNavigation.js.map +1 -1
  67. package/dist/SecondaryNavigationItem.d.ts +6 -3
  68. package/dist/SecondaryNavigationItem.js +50 -26
  69. package/dist/SecondaryNavigationItem.js.map +1 -1
  70. package/dist/SecondaryNavigationSubItem.d.ts +1 -0
  71. package/dist/SecondaryNavigationSubItem.js +3 -0
  72. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  73. package/dist/SegmentedButton.d.ts +2 -2
  74. package/dist/SegmentedButton.js.map +1 -1
  75. package/dist/SelectBox.js.map +1 -1
  76. package/dist/SideNavigationGroup.js +0 -1
  77. package/dist/SideNavigationGroup.js.map +1 -1
  78. package/dist/SideNavigationItem.js +0 -1
  79. package/dist/SideNavigationItem.js.map +1 -1
  80. package/dist/SideNavigationSubItem.js +0 -1
  81. package/dist/SideNavigationSubItem.js.map +1 -1
  82. package/dist/Slider.js +0 -1
  83. package/dist/Slider.js.map +1 -1
  84. package/dist/TabNavigation.js +2 -2
  85. package/dist/TabNavigation.js.map +1 -1
  86. package/dist/Tag.d.ts +1 -4
  87. package/dist/Tag.js +1 -5
  88. package/dist/Tag.js.map +1 -1
  89. package/dist/Tile.d.ts +1 -1
  90. package/dist/Tile.js +1 -1
  91. package/dist/Tile.js.map +1 -1
  92. package/dist/Toast.d.ts +0 -1
  93. package/dist/Toast.js +4 -3
  94. package/dist/Toast.js.map +1 -1
  95. package/dist/Wizard.js +1 -1
  96. package/dist/Wizard.js.map +1 -1
  97. package/dist/WizardTab.js +0 -1
  98. package/dist/WizardTab.js.map +1 -1
  99. package/dist/assets/{bundle.esm-6e8e301d.js → bundle.esm-c4ffd46a.js} +187 -189
  100. package/dist/assets/messagebundle_ar-bb470511.js +1 -0
  101. package/dist/assets/messagebundle_bg-a533dfab.js +1 -0
  102. package/dist/assets/messagebundle_cs-c70a7f36.js +1 -0
  103. package/dist/assets/messagebundle_da-e292cac5.js +1 -0
  104. package/dist/assets/messagebundle_de-5c108de6.js +1 -0
  105. package/dist/assets/messagebundle_el-44746e0b.js +1 -0
  106. package/dist/assets/messagebundle_en-4997b226.js +1 -0
  107. package/dist/assets/messagebundle_es-c0c1060f.js +1 -0
  108. package/dist/assets/messagebundle_et-a5f15d3b.js +1 -0
  109. package/dist/assets/messagebundle_fi-f4b8eb82.js +1 -0
  110. package/dist/assets/messagebundle_fr-af18ac46.js +1 -0
  111. package/dist/assets/messagebundle_hr-d893e46d.js +1 -0
  112. package/dist/assets/messagebundle_hu-230c58c9.js +1 -0
  113. package/dist/assets/messagebundle_it-5bf1436c.js +1 -0
  114. package/dist/assets/messagebundle_iw-dd60afc4.js +1 -0
  115. package/dist/assets/messagebundle_ko-c450bda3.js +1 -0
  116. package/dist/assets/messagebundle_lt-87ab0529.js +1 -0
  117. package/dist/assets/messagebundle_lv-fc413852.js +1 -0
  118. package/dist/assets/messagebundle_nl-34d7e236.js +1 -0
  119. package/dist/assets/messagebundle_no-f22648fb.js +1 -0
  120. package/dist/assets/messagebundle_pl-10303f09.js +1 -0
  121. package/dist/assets/messagebundle_pt-b7a40c67.js +1 -0
  122. package/dist/assets/messagebundle_ro-94628623.js +1 -0
  123. package/dist/assets/messagebundle_ru-1f6595ba.js +1 -0
  124. package/dist/assets/messagebundle_sk-89eabac1.js +1 -0
  125. package/dist/assets/messagebundle_sl-d56532f1.js +1 -0
  126. package/dist/assets/messagebundle_sr-cf7f3b32.js +1 -0
  127. package/dist/assets/messagebundle_sv-3a3b20d3.js +1 -0
  128. package/dist/assets/messagebundle_tr-33b16d09.js +1 -0
  129. package/dist/assets/messagebundle_uk-82e1f2c1.js +1 -0
  130. package/dist/assets/messagebundle_zh_CN-15ca05aa.js +1 -0
  131. package/dist/assets/messagebundle_zh_TW-ad6445e7.js +1 -0
  132. package/dist/css/themes/Badge.css +1 -1
  133. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  134. package/dist/css/themes/Button.css +1 -1
  135. package/dist/css/themes/DatePickerPopover.css +1 -1
  136. package/dist/css/themes/FilterMenu.css +1 -1
  137. package/dist/css/themes/Footer.css +1 -1
  138. package/dist/css/themes/MastheadItem.css +1 -1
  139. package/dist/css/themes/MastheadMenu.css +1 -1
  140. package/dist/css/themes/MastheadMenuItem.css +1 -1
  141. package/dist/css/themes/MastheadShell.css +1 -1
  142. package/dist/css/themes/MediaPlayer.css +1 -1
  143. package/dist/css/themes/Modal.css +1 -1
  144. package/dist/css/themes/RatingIndicator.css +1 -1
  145. package/dist/css/themes/ReviewItem.css +1 -1
  146. package/dist/css/themes/Slider.css +1 -1
  147. package/dist/css/themes/TableCell.css +1 -1
  148. package/dist/css/themes/TableCellBase.css +1 -1
  149. package/dist/css/themes/TextArea.css +1 -1
  150. package/dist/custom-elements-internal.json +232 -31
  151. package/dist/custom-elements.json +224 -30
  152. package/dist/features/SearchSuggestionsPopover.d.ts +16 -0
  153. package/dist/features/SearchSuggestionsPopover.js +49 -0
  154. package/dist/features/SearchSuggestionsPopover.js.map +1 -1
  155. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -0
  156. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -0
  157. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -0
  158. package/dist/generated/assets/i18n/messagebundle_da.json +1 -0
  159. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  160. package/dist/generated/assets/i18n/messagebundle_el.json +1 -0
  161. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  162. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  163. package/dist/generated/assets/i18n/messagebundle_et.json +1 -0
  164. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -0
  165. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -0
  167. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -0
  168. package/dist/generated/assets/i18n/messagebundle_it.json +1 -0
  169. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -0
  170. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -0
  171. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -0
  172. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -0
  173. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -0
  174. package/dist/generated/assets/i18n/messagebundle_no.json +1 -0
  175. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -0
  176. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -0
  177. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -0
  178. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -0
  179. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -0
  180. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -0
  181. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -0
  182. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -0
  183. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -0
  184. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -0
  185. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -0
  186. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -0
  187. package/dist/generated/i18n/i18n-defaults.d.ts +7 -1
  188. package/dist/generated/i18n/i18n-defaults.js +7 -1
  189. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  190. package/dist/generated/json-imports/i18n-static.js +86 -2
  191. package/dist/generated/json-imports/i18n-static.js.map +1 -1
  192. package/dist/generated/json-imports/i18n.js +58 -2
  193. package/dist/generated/json-imports/i18n.js.map +1 -1
  194. package/dist/generated/templates/BadgeTemplate.lit.js +4 -4
  195. package/dist/generated/templates/BadgeTemplate.lit.js.map +1 -1
  196. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +3 -3
  197. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +1 -1
  198. package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
  199. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  200. package/dist/generated/templates/FooterTemplate.lit.js +12 -11
  201. package/dist/generated/templates/FooterTemplate.lit.js.map +1 -1
  202. package/dist/generated/templates/ListItemTemplate.lit.js +2 -2
  203. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  204. package/dist/generated/templates/ListTemplate.lit.js +3 -3
  205. package/dist/generated/templates/ListTemplate.lit.js.map +1 -1
  206. package/dist/generated/templates/MastheadItemTemplate.lit.js +17 -16
  207. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  208. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +15 -14
  209. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
  210. package/dist/generated/templates/MastheadMenuTemplate.lit.js +3 -3
  211. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  212. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js +1 -1
  213. package/dist/generated/templates/MastheadProfileMenuTemplate.lit.js.map +1 -1
  214. package/dist/generated/templates/MastheadShellTemplate.lit.js +10 -9
  215. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  216. package/dist/generated/templates/PaginationTemplate.lit.js +3 -3
  217. package/dist/generated/templates/PaginationTemplate.lit.js.map +1 -1
  218. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js +1 -1
  219. package/dist/generated/templates/PhoneNumberFieldTemplate.lit.js.map +1 -1
  220. package/dist/generated/templates/RatingBarTemplate.lit.js +1 -1
  221. package/dist/generated/templates/RatingBarTemplate.lit.js.map +1 -1
  222. package/dist/generated/templates/ReviewItemTemplate.lit.js +1 -1
  223. package/dist/generated/templates/ReviewItemTemplate.lit.js.map +1 -1
  224. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +1 -1
  225. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
  226. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
  227. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  228. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +3 -3
  229. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
  230. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +3 -3
  231. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -1
  232. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +1 -1
  233. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  234. package/dist/generated/templates/StepInputTemplate.lit.js +1 -1
  235. package/dist/generated/templates/StepInputTemplate.lit.js.map +1 -1
  236. package/dist/generated/templates/WizardTemplate.lit.js +1 -1
  237. package/dist/generated/templates/WizardTemplate.lit.js.map +1 -1
  238. package/dist/generated/themes/Badge.css.js +1 -1
  239. package/dist/generated/themes/Badge.css.js.map +1 -1
  240. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  241. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  242. package/dist/generated/themes/Button.css.js +1 -1
  243. package/dist/generated/themes/Button.css.js.map +1 -1
  244. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  245. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  246. package/dist/generated/themes/FilterMenu.css.js +1 -1
  247. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  248. package/dist/generated/themes/Footer.css.js +1 -1
  249. package/dist/generated/themes/Footer.css.js.map +1 -1
  250. package/dist/generated/themes/MastheadItem.css.js +1 -1
  251. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  252. package/dist/generated/themes/MastheadMenu.css.js +1 -1
  253. package/dist/generated/themes/MastheadMenu.css.js.map +1 -1
  254. package/dist/generated/themes/MastheadMenuItem.css.js +1 -1
  255. package/dist/generated/themes/MastheadMenuItem.css.js.map +1 -1
  256. package/dist/generated/themes/MastheadShell.css.js +1 -1
  257. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  258. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  259. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  260. package/dist/generated/themes/Modal.css.js +1 -1
  261. package/dist/generated/themes/Modal.css.js.map +1 -1
  262. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  263. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  264. package/dist/generated/themes/ReviewItem.css.js +1 -1
  265. package/dist/generated/themes/ReviewItem.css.js.map +1 -1
  266. package/dist/generated/themes/Slider.css.js +1 -1
  267. package/dist/generated/themes/Slider.css.js.map +1 -1
  268. package/dist/generated/themes/TableCell.css.js +1 -1
  269. package/dist/generated/themes/TableCell.css.js.map +1 -1
  270. package/dist/generated/themes/TableCellBase.css.js +1 -1
  271. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  272. package/dist/generated/themes/TextArea.css.js +1 -1
  273. package/dist/generated/themes/TextArea.css.js.map +1 -1
  274. package/dist/i18n/messagebundle.properties +10 -0
  275. package/dist/i18n/messagebundle_ar.properties +1 -0
  276. package/dist/i18n/messagebundle_bg.properties +1 -0
  277. package/dist/i18n/messagebundle_cs.properties +1 -0
  278. package/dist/i18n/messagebundle_da.properties +1 -0
  279. package/dist/i18n/messagebundle_de.properties +1 -0
  280. package/dist/i18n/messagebundle_el.properties +1 -0
  281. package/dist/i18n/messagebundle_en.properties +4 -0
  282. package/dist/i18n/messagebundle_es.properties +1 -0
  283. package/dist/i18n/messagebundle_et.properties +1 -0
  284. package/dist/i18n/messagebundle_fi.properties +1 -0
  285. package/dist/i18n/messagebundle_fr.properties +1 -0
  286. package/dist/i18n/messagebundle_hr.properties +1 -0
  287. package/dist/i18n/messagebundle_hu.properties +1 -0
  288. package/dist/i18n/messagebundle_it.properties +1 -0
  289. package/dist/i18n/messagebundle_iw.properties +2 -0
  290. package/dist/i18n/messagebundle_ko.properties +1 -0
  291. package/dist/i18n/messagebundle_lt.properties +1 -0
  292. package/dist/i18n/messagebundle_lv.properties +1 -0
  293. package/dist/i18n/messagebundle_nl.properties +1 -0
  294. package/dist/i18n/messagebundle_no.properties +1 -0
  295. package/dist/i18n/messagebundle_pl.properties +1 -0
  296. package/dist/i18n/messagebundle_pt.properties +1 -0
  297. package/dist/i18n/messagebundle_pt_BR.properties +1 -0
  298. package/dist/i18n/messagebundle_ro.properties +1 -0
  299. package/dist/i18n/messagebundle_ru.properties +1 -0
  300. package/dist/i18n/messagebundle_sk.properties +1 -0
  301. package/dist/i18n/messagebundle_sl.properties +1 -0
  302. package/dist/i18n/messagebundle_sr.properties +2 -0
  303. package/dist/i18n/messagebundle_sv.properties +1 -0
  304. package/dist/i18n/messagebundle_tr.properties +1 -0
  305. package/dist/i18n/messagebundle_uk.properties +1 -0
  306. package/dist/i18n/messagebundle_zh_CN.properties +4 -0
  307. package/dist/i18n/messagebundle_zh_TW.properties +1 -0
  308. package/dist/types/BadgeDesign.d.ts +15 -0
  309. package/dist/types/BadgeDesign.js +18 -0
  310. package/dist/types/BadgeDesign.js.map +1 -0
  311. package/dist/types/IconPlacement.d.ts +5 -0
  312. package/dist/types/IconPlacement.js +7 -0
  313. package/dist/types/IconPlacement.js.map +1 -0
  314. package/dist/types/List.d.ts +8 -0
  315. package/dist/types/List.js.map +1 -1
  316. package/dist/utils/isLetterKeyPressed.d.ts +2 -0
  317. package/dist/utils/isLetterKeyPressed.js +5 -0
  318. package/dist/utils/isLetterKeyPressed.js.map +1 -0
  319. package/dist/utils/listItemLabelStartsWithKeyFocus.d.ts +3 -0
  320. package/dist/utils/listItemLabelStartsWithKeyFocus.js +55 -0
  321. package/dist/utils/listItemLabelStartsWithKeyFocus.js.map +1 -0
  322. package/dist/utils/listItemLabelUtils.d.ts +7 -0
  323. package/dist/utils/listItemLabelUtils.js +36 -0
  324. package/dist/utils/listItemLabelUtils.js.map +1 -0
  325. package/dist/vscode.html-custom-data.json +63 -26
  326. package/dist/web-types.json +113 -38
  327. package/package.json +1 -1
  328. package/src/AvatarGroup.ts +0 -7
  329. package/src/Badge.hbs +16 -5
  330. package/src/Badge.ts +36 -19
  331. package/src/Breadcrumbs.ts +92 -66
  332. package/src/BreadcrumbsItem.ts +0 -1
  333. package/src/BreadcrumbsPopover.hbs +11 -9
  334. package/src/Checkbox.ts +0 -1
  335. package/src/CountrySelector.hbs +0 -1
  336. package/src/CountrySelector.ts +30 -16
  337. package/src/DatePicker.ts +2 -2
  338. package/src/Dropdown.ts +0 -2
  339. package/src/Footer.hbs +52 -28
  340. package/src/Footer.ts +81 -22
  341. package/src/Link.ts +5 -9
  342. package/src/List.hbs +2 -2
  343. package/src/List.ts +182 -112
  344. package/src/ListItem.hbs +2 -2
  345. package/src/ListItem.ts +4 -0
  346. package/src/MastheadItem.hbs +14 -4
  347. package/src/MastheadItem.ts +42 -9
  348. package/src/MastheadMenu.hbs +4 -4
  349. package/src/MastheadMenu.ts +20 -8
  350. package/src/MastheadMenuItem.hbs +10 -2
  351. package/src/MastheadMenuItem.ts +28 -1
  352. package/src/MastheadMobileMenu.ts +2 -2
  353. package/src/MastheadProfileMenu.hbs +1 -0
  354. package/src/MastheadProfileMenu.ts +3 -2
  355. package/src/MastheadShell.hbs +25 -19
  356. package/src/MastheadShell.ts +25 -5
  357. package/src/Pagination.hbs +3 -2
  358. package/src/Pagination.ts +110 -60
  359. package/src/PhoneNumberField.hbs +3 -3
  360. package/src/PhoneNumberField.ts +16 -8
  361. package/src/RangeSlider.ts +0 -1
  362. package/src/RatingBar.hbs +1 -1
  363. package/src/ReviewItem.hbs +1 -1
  364. package/src/Search.hbs +10 -10
  365. package/src/Search.ts +17 -17
  366. package/src/SearchSuggestions.hbs +1 -0
  367. package/src/SearchableListBase.hbs +3 -1
  368. package/src/SearchableListBase.ts +57 -6
  369. package/src/SecondaryNavigation.hbs +1 -0
  370. package/src/SecondaryNavigation.ts +23 -16
  371. package/src/SecondaryNavigationItem.hbs +10 -7
  372. package/src/SecondaryNavigationItem.ts +58 -28
  373. package/src/SecondaryNavigationSubItem.hbs +3 -0
  374. package/src/SecondaryNavigationSubItem.ts +3 -0
  375. package/src/SegmentedButton.ts +2 -2
  376. package/src/SelectBox.ts +1 -1
  377. package/src/SideNavigationGroup.ts +0 -1
  378. package/src/SideNavigationItem.ts +0 -1
  379. package/src/SideNavigationSubItem.ts +0 -1
  380. package/src/Slider.ts +0 -1
  381. package/src/StepInput.hbs +16 -16
  382. package/src/TabNavigation.ts +2 -2
  383. package/src/Tag.ts +1 -5
  384. package/src/Tile.ts +2 -2
  385. package/src/Toast.ts +4 -3
  386. package/src/Wizard.hbs +1 -0
  387. package/src/Wizard.ts +1 -1
  388. package/src/WizardTab.ts +0 -1
  389. package/src/features/SearchSuggestionsPopover.ts +67 -1
  390. package/src/generated/i18n/i18n-defaults.ts +2 -2
  391. package/src/generated/json-imports/i18n-static.ts +86 -2
  392. package/src/generated/json-imports/i18n.ts +59 -3
  393. package/src/generated/templates/BadgeTemplate.lit.ts +3 -3
  394. package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +3 -3
  395. package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
  396. package/src/generated/templates/FooterTemplate.lit.ts +12 -11
  397. package/src/generated/templates/ListItemTemplate.lit.ts +2 -2
  398. package/src/generated/templates/ListTemplate.lit.ts +3 -3
  399. package/src/generated/templates/MastheadItemTemplate.lit.ts +17 -16
  400. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +15 -14
  401. package/src/generated/templates/MastheadMenuTemplate.lit.ts +3 -3
  402. package/src/generated/templates/MastheadProfileMenuTemplate.lit.ts +1 -1
  403. package/src/generated/templates/MastheadShellTemplate.lit.ts +10 -9
  404. package/src/generated/templates/PaginationTemplate.lit.ts +3 -3
  405. package/src/generated/templates/PhoneNumberFieldTemplate.lit.ts +1 -1
  406. package/src/generated/templates/RatingBarTemplate.lit.ts +1 -1
  407. package/src/generated/templates/ReviewItemTemplate.lit.ts +1 -1
  408. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +1 -1
  409. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
  410. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +3 -3
  411. package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +3 -3
  412. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +1 -1
  413. package/src/generated/templates/StepInputTemplate.lit.ts +1 -1
  414. package/src/generated/templates/WizardTemplate.lit.ts +1 -1
  415. package/src/generated/themes/Badge.css.ts +1 -1
  416. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  417. package/src/generated/themes/Button.css.ts +1 -1
  418. package/src/generated/themes/DatePickerPopover.css.ts +1 -1
  419. package/src/generated/themes/FilterMenu.css.ts +1 -1
  420. package/src/generated/themes/Footer.css.ts +1 -1
  421. package/src/generated/themes/MastheadItem.css.ts +1 -1
  422. package/src/generated/themes/MastheadMenu.css.ts +1 -1
  423. package/src/generated/themes/MastheadMenuItem.css.ts +1 -1
  424. package/src/generated/themes/MastheadShell.css.ts +1 -1
  425. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  426. package/src/generated/themes/Modal.css.ts +1 -1
  427. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  428. package/src/generated/themes/ReviewItem.css.ts +1 -1
  429. package/src/generated/themes/Slider.css.ts +1 -1
  430. package/src/generated/themes/TableCell.css.ts +1 -1
  431. package/src/generated/themes/TableCellBase.css.ts +1 -1
  432. package/src/generated/themes/TextArea.css.ts +1 -1
  433. package/src/i18n/messagebundle.properties +10 -0
  434. package/src/i18n/messagebundle_ar.properties +1 -0
  435. package/src/i18n/messagebundle_bg.properties +1 -0
  436. package/src/i18n/messagebundle_cs.properties +1 -0
  437. package/src/i18n/messagebundle_da.properties +1 -0
  438. package/src/i18n/messagebundle_de.properties +1 -0
  439. package/src/i18n/messagebundle_el.properties +1 -0
  440. package/src/i18n/messagebundle_en.properties +4 -0
  441. package/src/i18n/messagebundle_es.properties +1 -0
  442. package/src/i18n/messagebundle_et.properties +1 -0
  443. package/src/i18n/messagebundle_fi.properties +1 -0
  444. package/src/i18n/messagebundle_fr.properties +1 -0
  445. package/src/i18n/messagebundle_hr.properties +1 -0
  446. package/src/i18n/messagebundle_hu.properties +1 -0
  447. package/src/i18n/messagebundle_it.properties +1 -0
  448. package/src/i18n/messagebundle_iw.properties +2 -0
  449. package/src/i18n/messagebundle_ko.properties +1 -0
  450. package/src/i18n/messagebundle_lt.properties +1 -0
  451. package/src/i18n/messagebundle_lv.properties +1 -0
  452. package/src/i18n/messagebundle_nl.properties +1 -0
  453. package/src/i18n/messagebundle_no.properties +1 -0
  454. package/src/i18n/messagebundle_pl.properties +1 -0
  455. package/src/i18n/messagebundle_pt.properties +1 -0
  456. package/src/i18n/messagebundle_pt_BR.properties +1 -0
  457. package/src/i18n/messagebundle_ro.properties +1 -0
  458. package/src/i18n/messagebundle_ru.properties +1 -0
  459. package/src/i18n/messagebundle_sk.properties +1 -0
  460. package/src/i18n/messagebundle_sl.properties +1 -0
  461. package/src/i18n/messagebundle_sr.properties +2 -0
  462. package/src/i18n/messagebundle_sv.properties +1 -0
  463. package/src/i18n/messagebundle_tr.properties +1 -0
  464. package/src/i18n/messagebundle_uk.properties +1 -0
  465. package/src/i18n/messagebundle_zh_CN.properties +4 -0
  466. package/src/i18n/messagebundle_zh_TW.properties +1 -0
  467. package/src/themes/Badge.css +48 -52
  468. package/src/themes/BreadcrumbsPopover.css +1 -0
  469. package/src/themes/Button.css +13 -0
  470. package/src/themes/DatePickerPopover.css +9 -0
  471. package/src/themes/FilterMenu.css +6 -6
  472. package/src/themes/Footer.css +22 -3
  473. package/src/themes/MastheadItem.css +4 -0
  474. package/src/themes/MastheadMenu.css +1 -1
  475. package/src/themes/MastheadMenuItem.css +4 -0
  476. package/src/themes/MastheadShell.css +5 -0
  477. package/src/themes/MediaPlayer.css +2 -1
  478. package/src/themes/Modal.css +1 -0
  479. package/src/themes/ReviewItem.css +0 -2
  480. package/src/themes/TableCell.css +0 -2
  481. package/src/themes/TableCellBase.css +1 -0
  482. package/src/themes/TextArea.css +1 -1
  483. package/src/types/BadgeDesign.ts +17 -0
  484. package/src/types/IconPlacement.ts +6 -0
  485. package/src/types/List.ts +9 -0
  486. package/src/utils/isLetterKeyPressed.ts +5 -0
  487. package/src/utils/listItemLabelStartsWithKeyFocus.ts +74 -0
  488. package/src/utils/listItemLabelUtils.ts +50 -0
  489. package/dist/assets/messagebundle_de-8158912e.js +0 -1
  490. package/dist/assets/messagebundle_en-c677773a.js +0 -1
  491. package/dist/assets/messagebundle_es-8dab6565.js +0 -1
  492. package/dist/assets/messagebundle_fr-669aca6d.js +0 -1
@@ -2,8 +2,12 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
4
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
5
- import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
6
5
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
6
+ import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
+ import {
8
+ isDown, isUp,
9
+ } from "@ui5/webcomponents-base/dist/Keys.js";
10
+ import { cleanLabel } from "./utils/listItemLabelUtils.js";
7
11
  import Search from "./Search.js";
8
12
  import UDExListItemBase from "./ListItemBase.js";
9
13
  import UDExListGroupHeaderBase from "./ListGroupHeaderBase.js";
@@ -277,7 +281,7 @@ class UDExSearchableListBase extends UI5Element {
277
281
  }
278
282
 
279
283
  checkAndUpdateLabel(item: UDExListItemBase | UDExListGroupHeaderBase, str: string): boolean {
280
- const cleanedLabel = this.cleanLabel(item.label);
284
+ const cleanedLabel = cleanLabel(item.label);
281
285
  if (this.isIncludes(cleanedLabel, str)) {
282
286
  item.label = this.addSearchTermTag(cleanedLabel, str);
283
287
  return true;
@@ -285,10 +289,6 @@ class UDExSearchableListBase extends UI5Element {
285
289
  return false;
286
290
  }
287
291
 
288
- cleanLabel(str: string): string {
289
- return str.replace(/<\/?b[^>]*>/g, "");
290
- }
291
-
292
292
  addSearchTermTag(text: string, str: string): string {
293
293
  return text.replace(new RegExp(`(${str})`, "i"), "<b>$&</b>");
294
294
  }
@@ -314,6 +314,15 @@ class UDExSearchableListBase extends UI5Element {
314
314
  }
315
315
  }
316
316
 
317
+ handleKeyDown(e: KeyboardEvent) {
318
+ if (isUp(e)) {
319
+ this.handlePreviousItemFocus(e);
320
+ }
321
+ if (isDown(e)) {
322
+ this.handleNextListItemFocus(e);
323
+ }
324
+ }
325
+
317
326
  getSlottedItems(items: Array<UDExListItemBase | UDExListGroupHeaderBase>): Array<UDExListItemBase | UDExListGroupHeaderBase> {
318
327
  const arr: Array<UDExListItemBase | UDExListGroupHeaderBase> = [];
319
328
  items.forEach(item => {
@@ -354,10 +363,44 @@ class UDExSearchableListBase extends UI5Element {
354
363
  });
355
364
  }
356
365
 
366
+ // moves focus to next list item
367
+ handlePreviousItemFocus(e: KeyboardEvent) {
368
+ const item = e.target as HTMLElement;
369
+ const listItems = this.getDomListItems();
370
+ const currentSelectIndex = this.getCurrentIndex(item);
371
+ const previousSelectIndex = currentSelectIndex - 1;
372
+ if (currentSelectIndex > 0) {
373
+ e.preventDefault();
374
+ (listItems[previousSelectIndex] as HTMLElement).focus();
375
+ }
376
+ }
377
+
378
+ // moves focus to previous list item
379
+ handleNextListItemFocus(e: KeyboardEvent) {
380
+ const item = e.target as HTMLElement;
381
+ const listItems = this.getDomListItems();
382
+ const lastItemIndex = listItems.length - 1;
383
+ const currentSelectIndex = this.getCurrentIndex(item);
384
+ const nextSelectIndex = currentSelectIndex + 1;
385
+ if (nextSelectIndex <= lastItemIndex) {
386
+ e.preventDefault();
387
+ (listItems[nextSelectIndex] as HTMLElement).focus();
388
+ }
389
+ }
390
+
391
+ getCurrentIndex(item: Element): number {
392
+ return this.getDomListItems().indexOf(item);
393
+ }
394
+
357
395
  getSearch(): Search {
358
396
  return this.shadowRoot!.querySelector<Search>("udex-search")!;
359
397
  }
360
398
 
399
+ getDomListItems(): Element[] {
400
+ const elementList = this.shadowRoot!.querySelector("udex-list") as HTMLElement;
401
+ return elementList ? Array.from(elementList.querySelectorAll("udex-list-item")) : [];
402
+ }
403
+
361
404
  setItemsModeAndControl(items: Array<UDExFilterMenuItem>) {
362
405
  items.forEach(item => {
363
406
  item.mode = this.mode;
@@ -429,6 +472,14 @@ class UDExSearchableListBase extends UI5Element {
429
472
  return items.length > SHOW_SEARCH_AFTER_COUNT && !this.modeRadioGroup;
430
473
  }
431
474
 
475
+ get roleForGroupList(): string {
476
+ return this._filteredItems.some(element => element.isGroup) ? "group" : "none";
477
+ }
478
+
479
+ get accessibleRoleForList(): string {
480
+ return this._filteredItems.some(element => element.isGroup) ? "group" : "list";
481
+ }
482
+
432
483
  static async onDefine(): Promise<void> {
433
484
  UDExSearchableListBase.i18nBundle = await getI18nBundle("@udex/web-components");
434
485
  }
@@ -58,6 +58,7 @@
58
58
  </div>
59
59
  </div>
60
60
  <udex-secondary-navigation-item
61
+ @keydown="{{handleKeyDown}}"
61
62
  class="udex-secondary-navigation__mobile-nav"
62
63
  role="button"
63
64
  aria-label="{{mobileMenuOpenerAriaLabel}}"
@@ -8,18 +8,14 @@ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
8
8
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
9
9
  import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
10
10
  import {
11
- isLeft,
12
- isRight,
13
- isEscape,
11
+ isEscape, isLeft, isRight, isDown,
14
12
  } from "@ui5/webcomponents-base/dist/Keys.js";
15
13
  import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
16
14
  import UDExSecondaryNavigationItem from "./SecondaryNavigationItem.js";
17
15
  import UDExSecondaryNavigationSubItem from "./SecondaryNavigationSubItem.js";
18
16
  import UDExSecondaryNavigationItemBase, { NavItem } from "./SecondaryNavigationItemBase.js";
19
17
  import { MORE } from "./generated/i18n/i18n-defaults.js";
20
-
21
18
  import SecondaryNavigationTemplate from "./generated/templates/SecondaryNavigationTemplate.lit.js";
22
-
23
19
  // Styles
24
20
  import SecondaryNavigationCss from "./generated/themes/SecondaryNavigation.css.js";
25
21
 
@@ -229,30 +225,41 @@ class UDExSecondaryNavigation extends UI5Element {
229
225
 
230
226
  handleKeyDown(e: KeyboardEvent): void {
231
227
  e.stopPropagation();
228
+ const item = e.target as UDExSecondaryNavigationItem;
229
+
232
230
  if (isLeft(e)) {
233
- this.focusPrevNavItem(e);
231
+ return this.focusPrevNavItem(e);
234
232
  }
235
233
  if (isRight(e)) {
236
- this.focusNextNavItem(e);
234
+ return this.focusNextNavItem(e);
235
+ }
236
+ if (isEscape(e) && item.hasNestedItems) {
237
+ return item.closeDropdown();
237
238
  }
238
- if (isEscape(e)) {
239
- (e.target as UDExSecondaryNavigationItem).closeDropdown();
239
+ if (isDown(e) && item.hasNestedItems) {
240
+ item.openDropdown();
240
241
  }
241
242
  }
242
243
 
243
244
  focusPrevNavItem(e: KeyboardEvent): void {
244
245
  const item = e.target as UDExSecondaryNavigationItem;
245
246
  const currentSelectedIndex = this.getCurrentIndex(item);
246
- const lastItemIndex = this.domNavItems.length - 1;
247
- const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;
248
- this.domNavItems[previousSelectIndex]?.focus();
247
+ const previousSelectIndex = currentSelectedIndex - 1;
248
+ if (currentSelectedIndex > 0) {
249
+ e.preventDefault();
250
+ this.domNavItems[previousSelectIndex]?.focus();
251
+ }
249
252
  }
250
253
 
251
254
  focusNextNavItem(e: KeyboardEvent): void {
252
255
  const item = e.target as UDExSecondaryNavigationItem;
253
256
  const currentSelectedIndex = this.getCurrentIndex(item);
254
- const nextSelectIndex = currentSelectedIndex + 1 > this.domNavItems.length - 1 ? 0 : currentSelectedIndex + 1;
255
- this.domNavItems[nextSelectIndex].focus();
257
+ const lastItemIndex = this.domNavItems.length - 1;
258
+ const nextSelectIndex = currentSelectedIndex + 1;
259
+ if (nextSelectIndex < lastItemIndex) {
260
+ e.preventDefault();
261
+ this.domNavItems[nextSelectIndex].focus();
262
+ }
256
263
  }
257
264
 
258
265
  getItemWidth(item: NavItem): number {
@@ -369,7 +376,7 @@ class UDExSecondaryNavigation extends UI5Element {
369
376
  document.addEventListener("mousedown", this.outsideClickListener);
370
377
  }
371
378
 
372
- outsideClickListener = (e: MouseEvent): void => {
379
+ outsideClickListener = (e: Event): void => {
373
380
  if (this.isMobileScreen && e.target !== this) {
374
381
  this.closeMobileDropdown();
375
382
  return;
@@ -384,7 +391,7 @@ class UDExSecondaryNavigation extends UI5Element {
384
391
  this.mobileNav?.closeDropdown();
385
392
  }
386
393
 
387
- handleDesktopDropdown(e: MouseEvent): void {
394
+ handleDesktopDropdown(e: Event): void {
388
395
  const isClickedNavItem = e.composedPath().includes(this._clickedNavItem);
389
396
  if (!isClickedNavItem && this._clickedNavItem) {
390
397
  this._clickedNavItem.closeDropdown();
@@ -6,19 +6,20 @@
6
6
  href="{{path}}"
7
7
  target="{{target}}"
8
8
  @keydown="{{handleItemLinkKeyDown}}"
9
- @click="{{onItemClick}}">
9
+ @click="{{fireNavItemClickEvent}}">
10
10
  {{itemLabel}}
11
11
  </a>
12
12
  {{else}}
13
13
  <button
14
14
  class="udex-secondary-navigation__item"
15
15
  role="{{itemRole}}"
16
+ tabindex="0"
16
17
  ?active="{{isActive}}"
17
18
  aria-haspopup="{{hasNestedItems}}"
18
19
  aria-expanded="{{isOpen}}"
19
20
  aria-label="{{ariaLabel}}"
20
- @keydown="{{handleItemButtonKeyDown}}"
21
- @click="{{onItemClick}}">
21
+ @keydown="{{handleItemEnterOrSpaceKeys}}"
22
+ @click="{{openDropdown}}">
22
23
  <span class="udex-secondary-navigation__item-text-wrap">
23
24
  {{itemLabel}}
24
25
  {{#if _subTitle}}
@@ -37,10 +38,10 @@
37
38
  </button>
38
39
  {{#if isOpen}}
39
40
  <div
40
- class="udex-secondary-navigation__dropdown"
41
- @keydown="{{handleSubItemKeyDown}}">
41
+ class="udex-secondary-navigation__dropdown">
42
42
  <ul role="menu"
43
- class="udex-secondary-navigation__dropdown-list">
43
+ class="udex-secondary-navigation__dropdown-list"
44
+ @keydown="{{handleSubItemKeyDown}}">
44
45
  {{#each _processedItems}}
45
46
  <li role="none">
46
47
  <udex-secondary-navigation-sub-item
@@ -58,7 +59,9 @@
58
59
  </li>
59
60
  {{/each}}
60
61
  </ul>
61
- <slot></slot>
62
+ <div @keydown="{{handleButtonsEscKey}}">
63
+ <slot></slot>
64
+ </div>
62
65
  </div>
63
66
  {{/if}}
64
67
  {{/if}}
@@ -14,7 +14,7 @@ import {
14
14
  isSpace,
15
15
  isEnter,
16
16
  isHome,
17
- isEnd,
17
+ isEnd, isTabNext, isTabPrevious,
18
18
  } from "@ui5/webcomponents-base/dist/Keys.js";
19
19
  import UDExSecondaryNavigationSubItem from "./SecondaryNavigationSubItem.js";
20
20
  import UDExSecondaryNavigationItemBase, { NavItem } from "./SecondaryNavigationItemBase.js";
@@ -159,18 +159,6 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
159
159
  this._subTitle = this.subActiveItemTitle || this._subTitle;
160
160
  }
161
161
 
162
- onItemClick(): void {
163
- if (this.hasNestedItems) {
164
- this.setDropdownItems();
165
- this.toggleDropdown();
166
- }
167
-
168
- this.fireEvent("nav-item-click", {
169
- item: this,
170
- index: this.index,
171
- });
172
- }
173
-
174
162
  onSubItemClick(e: Event): void {
175
163
  const { index } = e.target as UDExSecondaryNavigationSubItem;
176
164
  const clickedItem = this._processedItems[index];
@@ -178,6 +166,7 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
178
166
  if (clickedItem.items) {
179
167
  this.setDropdownHistory();
180
168
  this.setNestedItems(clickedItem);
169
+ this.onShouldFocusFirstSubItem();
181
170
  }
182
171
 
183
172
  this.fireEvent("sub-item-click", {
@@ -190,8 +179,14 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
190
179
  this.setPrevNestedItems();
191
180
  }
192
181
 
193
- toggleDropdown(): void {
194
- this.isOpen = !this.isOpen;
182
+ openDropdown(): void {
183
+ if (this.hasNestedItems) {
184
+ this.setDropdownItems();
185
+ this.isOpen = !this.isOpen;
186
+ this.onShouldFocusFirstSubItem();
187
+ }
188
+
189
+ this.fireNavItemClickEvent();
195
190
  }
196
191
 
197
192
  closeDropdown(): void {
@@ -200,12 +195,11 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
200
195
 
201
196
  handleItemLinkKeyDown(e: KeyboardEvent): void {
202
197
  if (isEnter(e) || isSpace(e)) {
203
- e.preventDefault();
204
- this.onItemClick();
198
+ this.openDropdown();
205
199
  }
206
200
  }
207
201
 
208
- handleItemButtonKeyDown(e: KeyboardEvent): void {
202
+ handleItemEnterOrSpaceKeys(e: KeyboardEvent): void {
209
203
  if (isEnter(e) || isSpace(e)) {
210
204
  this.onShouldFocusFirstSubItem();
211
205
  }
@@ -242,23 +236,41 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
242
236
  e.preventDefault();
243
237
  this.handleEnterAndSpace(e);
244
238
  }
239
+ if (isTabPrevious(e) && this._isMobileView) {
240
+ this.closeDropdown();
241
+ }
242
+ if ((isTabPrevious(e) || isTabNext(e)) && !this._isMobileView) {
243
+ this.closeDropdown();
244
+ }
245
+ }
246
+
247
+ handleButtonsEscKey(e: KeyboardEvent): void {
248
+ if (isEscape(e) && this._isMobileView) {
249
+ this.handleEscapeKey();
250
+ }
245
251
  }
246
252
 
247
253
  handleUpArrow(e: KeyboardEvent): void {
248
254
  const { index } = e.target as UDExSecondaryNavigationSubItem;
249
255
  const lastIndex = this.domNavItems.length - 1;
250
- const previousIndex = index - 1 < 0 ? lastIndex : index - 1;
251
- if (!(lastIndex === previousIndex)) {
252
- this.domNavItems[previousIndex].focus();
253
- }
256
+ const previousSelectIndex = index - 1 < 0 ? lastIndex : index - 1;
257
+ const previousItem = this.domNavItems[previousSelectIndex];
258
+ const currentItem = this.domNavItems[index];
259
+
260
+ this.unsetTabIndex(currentItem);
261
+ this.setTabIndex(previousItem);
262
+ previousItem.focus();
254
263
  }
255
264
 
256
265
  handleDownArrow(e: KeyboardEvent): void {
257
266
  const { index } = e.target as UDExSecondaryNavigationSubItem;
258
267
  const nextIndex = index + 1 > this.domNavItems.length - 1 ? 0 : index + 1;
259
- if (!(nextIndex === 0)) {
260
- this.domNavItems[nextIndex].focus();
261
- }
268
+ const nextItem = this.domNavItems[nextIndex];
269
+ const currentItem = this.domNavItems[index];
270
+
271
+ this.unsetTabIndex(currentItem);
272
+ this.setTabIndex(nextItem);
273
+ nextItem.focus();
262
274
  }
263
275
 
264
276
  handleLeftArrow(e: KeyboardEvent): void {
@@ -270,10 +282,10 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
270
282
  }
271
283
 
272
284
  handleRightArrow(e: KeyboardEvent): void {
273
- const { hasItems, isBack } = e.target as UDExSecondaryNavigationSubItem;
285
+ const { hasItems, isBack, index } = e.target as UDExSecondaryNavigationSubItem;
274
286
  if (hasItems && !isBack) {
275
287
  this.onSubItemClick(e);
276
- this.onShouldFocusFirstSubItem();
288
+ this.unsetTabIndex(this.domNavItems[index]);
277
289
  }
278
290
  }
279
291
 
@@ -300,6 +312,13 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
300
312
  this.focus();
301
313
  }
302
314
 
315
+ fireNavItemClickEvent(): void {
316
+ this.fireEvent("nav-item-click", {
317
+ item: this,
318
+ index: this.index,
319
+ });
320
+ }
321
+
303
322
  setDropdownHistory(): void {
304
323
  this._dropdownHistory.push(this._processedItems);
305
324
  }
@@ -331,8 +350,19 @@ class UDExSecondaryNavigationItem extends UDExSecondaryNavigationItemBase {
331
350
  }
332
351
  }
333
352
 
353
+ setTabIndex(item: UDExSecondaryNavigationSubItem): void {
354
+ item._tabIndex = "0";
355
+ }
356
+
357
+ unsetTabIndex(item: UDExSecondaryNavigationSubItem): void {
358
+ item._tabIndex = "-1";
359
+ }
360
+
334
361
  onFirstSubItemFocus(): void {
335
- this.domNavItems[0].focus();
362
+ const firstSubItem = this.domNavItems[0];
363
+
364
+ firstSubItem.focus();
365
+ this.setTabIndex(firstSubItem);
336
366
  }
337
367
 
338
368
  onLastSubItemFocus(): void {
@@ -1,5 +1,6 @@
1
1
  {{#if isBack}}
2
2
  <button
3
+ tabindex="{{_tabIndex}}"
3
4
  @click="{{onBackItemClick}}"
4
5
  role="menuitem"
5
6
  aria-label="{{backButtonAriaLabel}}"
@@ -15,6 +16,7 @@
15
16
  {{else}}
16
17
  {{#if isButton}}
17
18
  <button
19
+ tabindex="{{_tabIndex}}"
18
20
  @click="{{onItemClick}}"
19
21
  role="menuitem"
20
22
  aria-haspopup="{{hasItems}}"
@@ -32,6 +34,7 @@
32
34
  </button>
33
35
  {{else}}
34
36
  <a
37
+ tabindex="{{_tabIndex}}"
35
38
  @click="{{onItemClick}}"
36
39
  role="menuitem"
37
40
  href="{{path}}"
@@ -88,6 +88,9 @@ class UDExSecondaryNavigationSubItem extends UDExSecondaryNavigationItemBase {
88
88
  @property({ type: Object, multiple: true })
89
89
  nestedItems!: Array<NavItem>;
90
90
 
91
+ @property({ type: String, defaultValue: "-1" })
92
+ _tabIndex!: string;
93
+
91
94
  static i18nBundle: any;
92
95
 
93
96
  static async onDefine(): Promise<void> {
@@ -72,7 +72,7 @@ class UDExSegmentedButton extends SegmentedButton {
72
72
  this.style.setProperty(getScopedVarName("--udex-segmented-button-items-count"), `${items.length}`);
73
73
  }
74
74
 
75
- _onmousedown(e: MouseEvent) {
75
+ _onmousedown(e: Event) {
76
76
  const eventTarget = e.target as SegmentedButtonItem;
77
77
  const isTargetSegmentedButtonItem = eventTarget.hasAttribute("udex-segmented-button-item");
78
78
 
@@ -83,7 +83,7 @@ class UDExSegmentedButton extends SegmentedButton {
83
83
  }
84
84
  }
85
85
 
86
- _selectItem(e: MouseEvent | KeyboardEvent) {
86
+ _selectItem(e: Event | KeyboardEvent) {
87
87
  // Method to be update with @ui5/webcomponents v.2.0 , due to ToggleButton dependency change (pressed -> selected)
88
88
  const target = e.target as SegmentedButtonItem;
89
89
  const isTargetSegmentedButtonItem = target.hasAttribute("udex-segmented-button-item");
package/src/SelectBox.ts CHANGED
@@ -482,7 +482,7 @@ class UDExSelectBox extends UDExSearchableListBase {
482
482
  }
483
483
 
484
484
  handleOutsideClick(): void {
485
- document.addEventListener("click", (e: MouseEvent) => {
485
+ document.addEventListener("click", (e: Event) => {
486
486
  if (this._tokenizer?.tokens.length > 0 && e.target !== this) {
487
487
  this._tokenizer.expanded = false;
488
488
  }
@@ -26,7 +26,6 @@ import SideNavigationGroupCss from "./generated/themes/SideNavigationGroup.css.j
26
26
  tag: "udex-side-navigation-group",
27
27
  renderer: litRender,
28
28
  styles: [SideNavigationGroup.styles, SideNavigationGroupCss],
29
- dependencies: [],
30
29
  })
31
30
 
32
31
  class UDExSideNavigationGroup extends SideNavigationGroup {}
@@ -26,7 +26,6 @@ import SideNavigationItemCss from "./generated/themes/SideNavigationItem.css.js"
26
26
  tag: "udex-side-navigation-item",
27
27
  renderer: litRender,
28
28
  styles: [SideNavigationItem.styles, SideNavigationItemCss],
29
- dependencies: [],
30
29
  })
31
30
 
32
31
  class UDExSideNavigationItem extends SideNavigationItem {
@@ -26,7 +26,6 @@ import SideNavigationSubItemCss from "./generated/themes/SideNavigationSubItem.c
26
26
  tag: "udex-side-navigation-sub-item",
27
27
  renderer: litRender,
28
28
  styles: [SideNavigationSubItem.styles, SideNavigationSubItemCss],
29
- dependencies: [],
30
29
  })
31
30
 
32
31
  class UDExSideNavigationSubItem extends SideNavigationSubItem {}
package/src/Slider.ts CHANGED
@@ -28,7 +28,6 @@ import SliderCss from "./generated/themes/Slider.css.js";
28
28
  tag: "udex-slider",
29
29
  renderer: litRender,
30
30
  styles: [SliderBase.styles, SliderCss],
31
- dependencies: [],
32
31
  })
33
32
  class UDExSlider extends Slider {
34
33
  onEnterDOM(): void {
package/src/StepInput.hbs CHANGED
@@ -20,21 +20,6 @@
20
20
  step="{{step}}"
21
21
  ></udex-text-field>
22
22
  {{#unless displayonly}}
23
- <udex-control-button
24
- class="udex-step-input__button udex-step-input__button_inc"
25
- title="{{incIconTitle}}"
26
- accessible-name="{{incIconTitle}}"
27
- icon="add"
28
- size="Large"
29
- design="{{valueState}}"
30
- @click="{{_incValue}}"
31
- @mousedown="{{_incSpin}}"
32
- @mouseup="{{_resetSpin}}"
33
- @mouseout="{{_resetSpinOut}}"
34
- ?disabled="{{_incIconInactive}}"
35
- ?active="{{incIconActive}}"
36
- ?readonly="{{readonly}}"
37
- ></udex-control-button>
38
23
  <udex-control-button
39
24
  class="udex-step-input__button udex-step-input__button_dec"
40
25
  title="{{decIconTitle}}"
@@ -50,5 +35,20 @@
50
35
  ?active="{{decIconActive}}"
51
36
  ?readonly="{{readonly}}"
52
37
  ></udex-control-button>
38
+ <udex-control-button
39
+ class="udex-step-input__button udex-step-input__button_inc"
40
+ title="{{incIconTitle}}"
41
+ accessible-name="{{incIconTitle}}"
42
+ icon="add"
43
+ size="Large"
44
+ design="{{valueState}}"
45
+ @click="{{_incValue}}"
46
+ @mousedown="{{_incSpin}}"
47
+ @mouseup="{{_resetSpin}}"
48
+ @mouseout="{{_resetSpinOut}}"
49
+ ?disabled="{{_incIconInactive}}"
50
+ ?active="{{incIconActive}}"
51
+ ?readonly="{{readonly}}"
52
+ ></udex-control-button>
53
53
  {{/unless}}
54
- </div>
54
+ </div>
@@ -261,12 +261,12 @@ class UDExTabNavigation extends UI5Element {
261
261
  onAfterRendering(): void {
262
262
  if (this.items.length) {
263
263
  this.setItemsInHeader();
264
- this.initOutsideClick();
265
264
  this.setVisibleTabs();
266
265
  this.applyTabIndex();
267
266
  } else {
268
- throw new Error("You have to add the 'udex-tab' as a default slot to the udex-tab-navigation.");
267
+ console.warn("You have to add the 'udex-tab' as a default slot to the udex-tab-navigation.");
269
268
  }
269
+ this.initOutsideClick();
270
270
  }
271
271
 
272
272
  initOutsideClick() {
package/src/Tag.ts CHANGED
@@ -11,6 +11,7 @@ import TagTemplate from "./generated/templates/TagTemplate.lit.js";
11
11
 
12
12
  // Styles
13
13
  import TagCss from "./generated/themes/Tag.css";
14
+ import IconPlacement from "./types/IconPlacement.js";
14
15
 
15
16
  export enum TagType {
16
17
  Text = "Text",
@@ -19,11 +20,6 @@ export enum TagType {
19
20
  Grey = "Grey"
20
21
  }
21
22
 
22
- export enum IconPlacement {
23
- Start = "Start",
24
- End = "End"
25
- }
26
-
27
23
  export enum TagSize {
28
24
  Small = "Small",
29
25
  Medium = "Medium"
package/src/Tile.ts CHANGED
@@ -35,7 +35,7 @@ type AnchorNode = HTMLAnchorElement | undefined | null;
35
35
  */
36
36
  @event("click", {
37
37
  detail: {
38
- originalEvent: { type: MouseEvent },
38
+ originalEvent: { type: Event },
39
39
  },
40
40
  })
41
41
  class UDExTile extends UI5Element {
@@ -126,7 +126,7 @@ class UDExTile extends UI5Element {
126
126
  }
127
127
  }
128
128
 
129
- _onclick(e: MouseEvent) {
129
+ _onclick(e: Event) {
130
130
  e.stopImmediatePropagation();
131
131
 
132
132
  if (this.interactive) {
package/src/Toast.ts CHANGED
@@ -2,12 +2,13 @@ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement
2
2
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
3
3
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
4
4
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
+ import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
5
6
  import Toast from "@ui5/webcomponents/dist/Toast.js";
6
- import "@ui5/webcomponents/dist/Icon.js";
7
+ import Icon from "@ui5/webcomponents/dist/Icon.js";
7
8
  import "@ui5/webcomponents-icons/dist/sys-enter-2.js";
8
9
  import "@ui5/webcomponents-icons/dist/error.js";
9
10
  import "@ui5/webcomponents-icons/dist/alert.js";
10
- import { isDesktop } from "@ui5/webcomponents-base/dist/Device.js";
11
+ import UDExButton from "./Button.js";
11
12
 
12
13
  import ToastTemplate from "./generated/templates/ToastTemplate.lit.js";
13
14
 
@@ -43,7 +44,7 @@ export enum ToastValueState {
43
44
  renderer: litRender,
44
45
  styles: [Toast.styles, ToastCss],
45
46
  template: ToastTemplate,
46
- dependencies: [Toast],
47
+ dependencies: [Icon, UDExButton],
47
48
  })
48
49
 
49
50
  /**
package/src/Wizard.hbs CHANGED
@@ -3,6 +3,7 @@
3
3
  aria-label="{{ariaLabelText}}"
4
4
  role="region"
5
5
  ?indeterminate="{{indeterminate}}"
6
+ part="ui5-wiz-root"
6
7
  >
7
8
  <nav class="ui5-wiz-nav" part="navigator" aria-label="{{navAriaLabelText}}" tabindex="-1">
8
9
  <div class="ui5-wiz-nav-list" role="list" aria-label="{{listAriaLabelText}}" aria-describedby="wiz-nav-descr" aria-controls="{{_id}}-wiz-content">
package/src/Wizard.ts CHANGED
@@ -49,7 +49,7 @@ const RESPONSIVE_BREAKPOINTS: ResponsiveBreakpoints = {
49
49
  renderer: litRender,
50
50
  template: WizardTemplate,
51
51
  styles: [wizardCss, WizardCss],
52
- dependencies: [Wizard, UDExWizardTab, UDExWizardStep],
52
+ dependencies: [...Wizard.dependencies, UDExWizardTab, UDExWizardStep],
53
53
  })
54
54
 
55
55
  class UDExWizard extends Wizard {
package/src/WizardTab.ts CHANGED
@@ -37,7 +37,6 @@ export enum WindowSize {
37
37
  tag: "udex-wizard-tab",
38
38
  renderer: litRender,
39
39
  styles: [wizardTabCss, WizardTabCss],
40
- dependencies: [UI5WizardTab],
41
40
  })
42
41
  class UDExWizardTab extends UI5WizardTab {
43
42
  /**